:root {
  color-scheme: dark;
  --bg: #070b14;
  --panel: #0e1422;
  --panel-2: #121a2a;
  --line: #243047;
  --text: #eef3fb;
  --muted: #8f9bb0;
  --good: #42d392;
  --bad: #ff6677;
  --accent: #7aa2ff;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  background: radial-gradient(circle at 20% 0%, #121a31 0, var(--bg) 38%);
  color: var(--text);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", sans-serif;
}
.topbar {
  max-width: 1440px;
  margin: 0 auto;
  padding: 28px 28px 16px;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
}
.eyebrow { color: var(--accent); font-size:calc(12px * var(--ui-font-scale)); letter-spacing: 1.5px; font-weight: 800; }
h1 { margin: 7px 0 0; font-size:calc(34px * var(--ui-font-scale)); line-height: 1.15; }
.version { color: var(--muted); font-size:calc(13px * var(--ui-font-scale)); padding: 8px 11px; border: 1px solid var(--line); border-radius: 10px; }
.page-shell { max-width: 1440px; margin: 0 auto; padding: 0 28px 48px; }
.notice { margin: 10px 0 16px; padding: 12px 14px; background: #0d1830; border: 1px solid #23355d; border-radius: 12px; color: #c7d6f4; font-size:calc(14px * var(--ui-font-scale)); }
.panel { background: rgba(14,20,34,.94); border: 1px solid var(--line); border-radius: 16px; margin: 14px 0; padding: 18px; min-height: 96px; box-shadow: 0 10px 30px rgba(0,0,0,.18); }
.panel.htmx-swapping { opacity: .78; transition: opacity .08s ease; }
.panel-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 15px; }
.panel-head h2 { margin: 0; font-size:calc(19px * var(--ui-font-scale)); }
.panel-head p { margin: 5px 0 0; color: var(--muted); font-size:calc(12px * var(--ui-font-scale)); }
/* V1.18.5: move section refresh/help text to the right side of the title to save vertical space. */
.compact-section-head { align-items: center; margin-bottom: 12px; }
.compact-section-head > h2 { flex: 0 0 auto; }
.section-head-right { margin-left: auto; display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; }
.section-meta { color: var(--muted); font-size:calc(12px * var(--ui-font-scale)); line-height: 1.2; white-space: nowrap; }
@media (max-width: 900px) {
  .compact-section-head { align-items: flex-start; flex-wrap: wrap; }
  .section-head-right { width: 100%; margin-left: 0; justify-content: space-between; flex-wrap: wrap; }
  .section-meta { white-space: normal; }
}
.status-pill { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 999px; padding: 7px 11px; font-size:calc(13px * var(--ui-font-scale)); }
.dot, .mini-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 7px; }
.ok .dot, .mini-dot.ok { background: var(--good); box-shadow: 0 0 0 3px rgba(66,211,146,.12); }
.bad .dot, .mini-dot.bad { background: var(--bad); box-shadow: 0 0 0 3px rgba(255,102,119,.12); }
.metric-grid { display: grid; grid-template-columns: repeat(7, minmax(120px, 1fr)); gap: 10px; }
.metric { background: var(--panel-2); border: 1px solid #1d2940; border-radius: 12px; padding: 13px; }
.metric span { display: block; color: var(--muted); font-size:calc(12px * var(--ui-font-scale)); margin-bottom: 7px; }
.metric strong { font-size:calc(19px * var(--ui-font-scale)); font-variant-numeric: tabular-nums; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: separate; border-spacing: 0; font-size:calc(13px * var(--ui-font-scale)); }
th, td { text-align: left; padding: 11px 12px; border-bottom: 1px solid #1d2940; white-space: nowrap; }
th { color: var(--muted); font-size:calc(11px * var(--ui-font-scale)); text-transform: uppercase; letter-spacing: .4px; }
tbody tr:last-child td { border-bottom: 0; }
.exchange { font-weight: 800; letter-spacing: .2px; }
.loading { color: var(--muted); padding: 15px 2px; }
@media (max-width: 1100px) { .metric-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 720px) {
  .topbar, .page-shell { padding-left: 14px; padding-right: 14px; }
  h1 { font-size:calc(27px * var(--ui-font-scale)); }
  .metric-grid { grid-template-columns: repeat(2, 1fr); }
}

/* V1.15-P2 homepage migration */
.compact-notice { margin-top: 4px; }
.count-badge { color: var(--muted); border: 1px solid var(--line); border-radius: 999px; padding: 6px 10px; font-size:calc(12px * var(--ui-font-scale)); }
.dense-table { font-size:calc(12.5px * var(--ui-font-scale)); }
.dense-table th, .dense-table td { padding: 9px 10px; }
.stock { font-weight: 800; color: #f5f8ff; }
.positive { color: #62e6a7 !important; font-weight: 700; }
.negative { color: #ff7a89 !important; font-weight: 700; }
.neutral { color: var(--text); }
.state-tag { display: inline-flex; border-radius: 999px; padding: 4px 8px; border: 1px solid var(--line); font-size:calc(11px * var(--ui-font-scale)); }
.state-tag.ok-tag { color: #7cebb6; background: rgba(66,211,146,.08); }
.state-tag.warn { color: #ffd27a; background: rgba(255,194,92,.08); }
.empty-state { padding: 20px 4px; color: var(--muted); }
.mini-metric-grid { display:grid; grid-template-columns:repeat(5,minmax(100px,1fr)); gap:10px; margin-bottom:14px; }
.mini-metric { background:var(--panel-2); border:1px solid #1d2940; border-radius:11px; padding:11px 13px; }
.mini-metric span { display:block; color:var(--muted); font-size:calc(11px * var(--ui-font-scale)); margin-bottom:5px; }
.mini-metric strong { font-size:calc(18px * var(--ui-font-scale)); }
.secondary-btn { cursor:pointer; background:#131d30; color:var(--text); border:1px solid #2a3a58; border-radius:9px; padding:7px 12px; font-weight:700; }
.secondary-btn:hover { background:#192741; }
.wide-metrics { grid-template-columns:repeat(8,minmax(110px,1fr)); }
.overview-metrics { grid-template-columns:repeat(5,minmax(130px,1fr)); }
@media (max-width: 1250px) { .wide-metrics { grid-template-columns:repeat(4,1fr); } .overview-metrics { grid-template-columns:repeat(3,1fr); } }
@media (max-width: 720px) { .mini-metric-grid { grid-template-columns:repeat(2,1fr); } .wide-metrics { grid-template-columns:repeat(2,1fr); } .overview-metrics { grid-template-columns:repeat(2,1fr); } }
.partial-error { outline: 1px solid rgba(255,102,119,.35); }

/* V1.15-P3 manual lifecycle logs */
.subnav { display:flex; gap:8px; flex-wrap:wrap; margin:12px 0 14px; }
.subnav a { color:var(--muted); text-decoration:none; border:1px solid var(--line); border-radius:9px; padding:8px 11px; font-size:calc(13px * var(--ui-font-scale)); }
.subnav a:hover,.subnav a.active { color:var(--text); background:#15213a; border-color:#38517d; }
.link-btn { display:inline-block; text-decoration:none; }
.disabled { opacity:.35; cursor:not-allowed; }
.filter-row { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin:8px 0 14px; }
.filter-row label { color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); display:flex; flex-direction:column; gap:6px; min-width:150px; }
.filter-row select { background:#0c1321; color:var(--text); border:1px solid var(--line); border-radius:8px; padding:8px 10px; }
.pager { display:flex; gap:9px; align-items:center; flex-wrap:wrap; margin:10px 0 14px; }
.pager-text { color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); margin-left:6px; }
.reason-cell { min-width:280px; white-space:normal; line-height:1.45; }
.text-btn { background:transparent; color:#9ab6ff; border:0; cursor:pointer; font-weight:700; padding:4px 2px; }
.text-btn:hover { color:#c8d7ff; text-decoration:underline; }
.detail-panel { min-height:82px; }
.detail-summary { padding:10px 12px; border:1px solid #2a3853; background:#0c1526; border-radius:10px; margin-bottom:12px; }
.detail-grid { display:grid; grid-template-columns:repeat(5,minmax(120px,1fr)); gap:8px; margin:10px 0 12px; }
.detail-grid div { background:var(--panel-2); border:1px solid #1d2940; border-radius:9px; padding:9px 10px; min-width:0; }
.detail-grid span { display:block; color:var(--muted); font-size:calc(11px * var(--ui-font-scale)); margin-bottom:4px; }
.detail-grid strong { display:block; font-size:calc(12px * var(--ui-font-scale)); overflow-wrap:anywhere; }
details { border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:#0b111d; }
summary { cursor:pointer; color:#cbd7ee; font-weight:700; }
.json-block { overflow:auto; max-height:520px; white-space:pre-wrap; overflow-wrap:anywhere; color:#dbe5f6; font-size:calc(12px * var(--ui-font-scale)); line-height:1.5; }
@media (max-width:900px) { .detail-grid { grid-template-columns:repeat(2,1fr); } }
.mainnav { display:flex; gap:8px; flex-wrap:wrap; margin:0 0 12px; }
.mainnav a { color:#b7c5df; text-decoration:none; border:1px solid #263654; background:#0d1525; border-radius:9px; padding:8px 12px; font-size:calc(13px * var(--ui-font-scale)); font-weight:700; }
.mainnav a:hover { background:#17243c; color:#fff; }
.error-notice { border-color:rgba(255,102,119,.45); color:#ffd4da; }

/* V1.15-P4 reconciliation + manual operator requests */
.action-row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin:10px 0 12px; }
.action-message-slot:empty { display:none; }
.warn-notice { border-color:rgba(255,194,92,.4); color:#ffe0a3; }
.success-notice { border-color:rgba(66,211,146,.42); color:#b9f6d7; }
.recon-table .route-cell { white-space:normal; min-width:190px; line-height:1.35; }
.muted-text { color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); }
.manual-action-card { background:#0b1321; border:1px solid #2c3b58; border-radius:12px; padding:15px; }
.manual-action-card h3 { margin:0 0 10px; }
.recon-detail-grid { grid-template-columns:repeat(5,minmax(130px,1fr)); }
.warning-text { color:#ffd79c; line-height:1.55; font-size:calc(13px * var(--ui-font-scale)); }
.clear-form { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.clear-form label { color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); }
.confirm-input { background:#090f1a; color:var(--text); border:1px solid #34435f; border-radius:8px; padding:8px 10px; min-width:180px; }
.danger-btn { cursor:pointer; background:#37141c; color:#ffdbe0; border:1px solid #71303d; border-radius:9px; padding:8px 12px; font-weight:800; }
.danger-btn:hover { background:#4a1a25; }
@media (max-width:900px) { .recon-detail-grid { grid-template-columns:repeat(2,1fr); } }

/* V1.15-P5 settings / safety / API / diagnostics */
.settings-form { display:block; }
.settings-group { margin:12px 0; background:#0a111e; }
.settings-group summary { font-size:calc(15px * var(--ui-font-scale)); }
.settings-grid { display:grid; grid-template-columns:repeat(3,minmax(220px,1fr)); gap:12px; padding:14px 2px 2px; }
.setting-field,.credential-card label { display:flex; flex-direction:column; gap:7px; color:#cbd6ea; font-size:calc(12px * var(--ui-font-scale)); }
.setting-field small { color:#697891; font-size:calc(10px * var(--ui-font-scale)); overflow-wrap:anywhere; }
.setting-field input[type="number"],.credential-card input { width:100%; background:#090f1a; color:var(--text); border:1px solid #34435f; border-radius:8px; padding:9px 10px; }
.setting-field input[type="checkbox"] { width:18px; height:18px; accent-color:#7aa2ff; }
.sticky-actions { position:sticky; bottom:12px; display:flex; gap:12px; align-items:center; margin-top:14px; padding:12px; background:rgba(7,11,20,.92); border:1px solid var(--line); border-radius:12px; backdrop-filter:blur(8px); }
.credential-grid { display:grid; grid-template-columns:repeat(3,minmax(260px,1fr)); gap:12px; }
.credential-card { background:#0a111e; border:1px solid var(--line); border-radius:12px; padding:14px; }
.credential-card h3 { margin:0; }
.credential-card form { display:flex; flex-direction:column; gap:10px; }
button:disabled { opacity:.45; cursor:not-allowed; }
@media (max-width:1100px) { .settings-grid,.credential-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:720px) { .settings-grid,.credential-grid { grid-template-columns:1fr; } }

/* V1.15-P6.1: fixed sidebar, wider workspace, Streamlit-like dark palette, modal details */
:root {
  --bg: #0e1117;
  --panel: #161b22;
  --panel-2: #20252e;
  --line: #303641;
  --text: #fafafa;
  --muted: #a7adb8;
  --accent: #ff4b4b;
  --sidebar-width: 178px;
}
body {
  background: var(--bg);
  min-height: 100vh;
}
.sidebar {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--sidebar-width);
  height: 100vh;
  padding: 18px 12px;
  background: #11151b;
  border-right: 1px solid var(--line);
  z-index: 50;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
}
.sidebar-brand { padding: 4px 8px 16px; border-bottom: 1px solid #292f38; margin-bottom: 12px; }
.sidebar-title { margin-top: 6px; font-size:calc(17px * var(--ui-font-scale)); font-weight: 800; }
.sidebar-version { color: var(--muted); font-size:calc(11px * var(--ui-font-scale)); margin-top: 5px; }
.app-main { margin-left: var(--sidebar-width); min-width: 0; }
.topbar {
  max-width: none;
  margin: 0;
  padding: 18px 18px 8px;
  align-items: center;
}
.topbar h1 { font-size:calc(27px * var(--ui-font-scale)); margin-top: 4px; }
.page-shell {
  max-width: none;
  width: 100%;
  margin: 0;
  padding: 0 18px 36px;
}
.mainnav.sidebar-nav { display: flex; flex-direction: column; gap: 5px; margin: 0; flex: 1 1 auto; }
.mainnav.sidebar-nav a {
  width: 100%;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid transparent;
  background: transparent;
  color: #c7cbd2;
  font-size:calc(14px * var(--ui-font-scale));
}
.mainnav.sidebar-nav a:hover { background: #1c2129; color: #fff; border-color: #303641; }
.mainnav.sidebar-nav a.active {
  color: #fff;
  background: #262730;
  border-color: #4a4f58;
  box-shadow: inset 3px 0 0 var(--accent);
}
.panel {
  background: var(--panel);
  border-color: var(--line);
  box-shadow: none;
  border-radius: 10px;
  margin: 10px 0;
  padding: 14px;
}
.notice { background: #171c24; border-color: #303641; color: #d5d8dc; border-radius: 9px; }
.metric, .mini-metric { background: var(--panel-2); border-color: #343a44; }
.secondary-btn { background: #262730; border-color: #424852; }
.secondary-btn:hover { background: #31333d; }
.filter-row select, .setting-field input[type="number"], .credential-card input { background: #171b22; border-color: #3a414c; }

.home-top-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(480px, .95fr);
  gap: 10px;
  align-items: stretch;
  margin-top: 10px;
}
.home-top-panel { margin: 0; height: 100%; }
.home-top-grid .wide-metrics.overview-metrics { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.home-top-grid .metric strong { font-size:calc(17px * var(--ui-font-scale)); }

.opportunity-scroll {
  height: 530px;
  overflow: auto;
  border: 1px solid #2b313a;
  border-radius: 8px;
}
.opportunity-scroll table { margin: 0; }
.opportunity-scroll thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #20252e;
  box-shadow: 0 1px 0 #343a44;
}
.opportunity-scroll .dense-table th,
.opportunity-scroll .dense-table td { height: 33px; padding-top: 7px; padding-bottom: 7px; }
.opportunity-empty { min-height: 500px; display: flex; align-items: center; justify-content: center; }

.modal { position: fixed; inset: 0; z-index: 1000; display: none; }
.modal.open { display: block; }
.modal-backdrop { position: absolute; inset: 0; background: rgba(0,0,0,.68); }
.modal-dialog {
  position: relative;
  width: min(1180px, calc(100vw - 54px));
  max-height: calc(100vh - 54px);
  margin: 27px auto;
  background: #161b22;
  border: 1px solid #3b424d;
  border-radius: 12px;
  box-shadow: 0 22px 70px rgba(0,0,0,.52);
  overflow: auto;
}
.modal-content { padding: 20px; min-height: 140px; }
.modal-close {
  position: sticky;
  float: right;
  top: 10px;
  margin: 10px 10px 0 0;
  z-index: 3;
  width: 34px;
  height: 34px;
  border-radius: 8px;
  border: 1px solid #454b55;
  background: #262730;
  color: #fff;
  font-size:calc(22px * var(--ui-font-scale));
  cursor: pointer;
}
.modal-head { padding-right: 42px; }
.position-detail-grid { grid-template-columns: repeat(4, minmax(150px, 1fr)); }
body.modal-open { overflow: hidden; }

@media (max-width: 1250px) {
  .home-top-grid { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  :root { --sidebar-width: 150px; }
  .page-shell, .topbar { padding-left: 12px; padding-right: 12px; }
  .position-detail-grid { grid-template-columns: repeat(2, minmax(130px,1fr)); }
}


/* V1.15-P6.2 */
.mainnav.sidebar-nav a.active { color:#fff; background:transparent; border-color:#4a4f58; box-shadow:inset 3px 0 0 #8b93a1; }
.log-table-scroll { max-height:620px; overflow:auto; border:1px solid #2b313a; border-radius:8px; }
.log-table-scroll table { margin:0; }
.log-table-scroll thead th, .history-table-scroll thead th { position:sticky; top:0; z-index:4; background:#20252e; box-shadow:0 1px 0 #343a44; }
.position-table-wrap { overflow-x:auto; }
.position-table-wrap table { min-width:1880px; }
.position-detail-leg-table { width:100%; min-width:920px; }
.history-table-scroll { max-height:680px; overflow:auto; border:1px solid #2b313a; border-radius:8px; }
.history-table-scroll table { margin:0; min-width:1650px; }
.history-filters { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin:8px 0 14px; }
.history-filters label { color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); display:flex; flex-direction:column; gap:6px; min-width:150px; }
.history-filters input,.history-filters select { background:#171b22; color:var(--text); border:1px solid #3a414c; border-radius:8px; padding:8px 10px; }
.history-filters .check-label { min-width:auto; flex-direction:row; align-items:center; gap:7px; padding-bottom:8px; }


/* V1.15-P6.3 */
.json-toolbar { display:flex; align-items:center; gap:10px; margin:10px 0 8px; }
.compact-btn { padding:6px 10px; min-height:auto; font-size:calc(12px * var(--ui-font-scale)); }
.history-metric-grid { grid-template-columns:repeat(6,minmax(135px,1fr)); }
.settings-section { margin:14px 0 18px; }
.settings-section-head h3 { margin:0 0 4px; }
.settings-section-head p { margin:0; color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); }
.level-table-scroll { overflow-x:auto; margin-top:12px; border:1px solid #2b313a; border-radius:9px; }
.level-settings-table { min-width:1600px; margin:0; }
.level-settings-table th { white-space:nowrap; }
.level-settings-table td { padding:7px 8px; }
.table-setting-input {
  width:100%; min-width:108px; box-sizing:border-box;
  background:#171b22; color:var(--text); border:1px solid #3a414c;
  border-radius:6px; padding:7px 8px;
}
.compact-settings-group { background:#171b22; border:1px solid #303641; border-radius:9px; padding:9px 12px; }
.compact-settings-group summary { cursor:pointer; font-weight:700; }
.compact-settings-grid { grid-template-columns:repeat(4,minmax(180px,1fr)); gap:9px 12px; padding-top:10px; }
.compact-setting-field { gap:5px; }
.compact-setting-field > span:first-child { font-size:calc(12px * var(--ui-font-scale)); color:#c9ced8; }
.compact-setting-field input[type="number"] {
  width:100%; box-sizing:border-box; background:#11151b; color:var(--text);
  border:1px solid #353b45; border-radius:7px; padding:7px 9px;
}
.toggle-line { display:flex; align-items:center; gap:7px; min-height:34px; }
.toggle-line em { color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); font-style:normal; }
@media (max-width:1500px) {
  .compact-settings-grid { grid-template-columns:repeat(3,minmax(180px,1fr)); }
}
@media (max-width:1100px) {
  .compact-settings-grid { grid-template-columns:repeat(2,minmax(180px,1fr)); }
  .history-metric-grid { grid-template-columns:repeat(3,1fr); }
}


/* V1.15-P6.4: softer dark theme + WS readability */
:root {
  --bg: #0e1117;
  --panel: #151a21;
  --panel-2: #1d222a;
  --line: #2d333d;
  --text: #d6d9de;
  --muted: #9299a4;
  --good: #72c69c;
  --bad: #dc7d87;
  --accent: #9aa3b2;
}
body { color: var(--text); }
h1, h2, h3, h4, .sidebar-title { color:#e1e4e8; }
.stock, .exchange { color:#e3e6ea; }
th { color:#9aa1ac; }
td { color:#d0d4da; }
.mainnav.sidebar-nav a { color:#b9bec7; }
.mainnav.sidebar-nav a:hover { color:#dfe2e6; background:#1a1e24; }
.mainnav.sidebar-nav a.active {
  color:#e0e3e7;
  background:transparent;
  border-color:#444a53;
  box-shadow:inset 3px 0 0 #777f8b;
}
.notice { color:#c4c9d0; }
.metric strong, .mini-metric strong { color:#dce0e5; }
.secondary-btn { color:#d7dbe0; }
.modal-close { color:#d7dbe0; }

.state-tag.bad-tag {
  color:#e6a0a8;
  background:rgba(196,88,100,.08);
  border-color:rgba(196,88,100,.30);
}
.ws-status-table td,
.ws-status-table th {
  font-variant-numeric: tabular-nums;
}
.ws-status-table td { color:#ced2d8; }
.ws-status-table .exchange { color:#e0e3e7; }


/* V1.15-P6.5: sidebar unread / attention dots */
.mainnav.sidebar-nav a.nav-alert-link {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.nav-dot {
  flex:0 0 auto;
  width:8px;
  height:8px;
  border-radius:50%;
  display:inline-block;
}
.nav-dot[hidden] { display:none !important; }
.nav-dot-green {
  background:#55b982;
  box-shadow:0 0 0 3px rgba(85,185,130,.10);
}
.nav-dot-red {
  background:#d86670;
  box-shadow:0 0 0 3px rgba(216,102,112,.12);
}


/* V1.15-P6.6 final FastAPI cutover */
:root {
  --text: #c3c7cd;
  --muted: #858c96;
}
body { color:#c3c7cd; }
h1, h2, h3, h4, .sidebar-title { color:#d0d4d9; }
.stock, .exchange { color:#d3d7dc; }
th { color:#858c96; }
td { color:#b9bec5; }
.mainnav.sidebar-nav a { color:#aeb4bc; }
.mainnav.sidebar-nav a:hover,
.mainnav.sidebar-nav a.active { color:#cdd1d6; }
.metric strong, .mini-metric strong { color:#ced2d7; }
.notice { color:#b7bcc3; }
.topbar { display:none !important; }

.exchange-link {
  color:#aebbd0;
  text-decoration:none;
  border-bottom:1px dotted #566173;
}
.exchange-link:hover {
  color:#c8d3e3;
  border-bottom-color:#8a99ad;
}

.home-control-row {
  min-height:46px;
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  margin:10px 0 6px;
}
#emergency-control { min-width:360px; }
.emergency-control-card {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
}
.emergency-open-state {
  color:#858c96;
  font-size:calc(12px * var(--ui-font-scale));
}
.emergency-stop-btn,
.emergency-resume-btn {
  cursor:pointer;
  border-radius:8px;
  padding:8px 12px;
  font-weight:700;
  font-size:calc(12px * var(--ui-font-scale));
}
.emergency-stop-btn {
  color:#d7a6ab;
  background:#24191c;
  border:1px solid #6c3b42;
}
.emergency-stop-btn:hover { background:#2d1d21; }
.emergency-resume-btn {
  color:#b4d2c2;
  background:#18231e;
  border:1px solid #3d6652;
}
.emergency-resume-btn:hover { background:#1d2b24; }
.emergency-on {
  padding:7px 9px;
  border:1px solid #63363d;
  border-radius:9px;
  background:#201619;
}
.emergency-status {
  display:flex;
  flex-direction:column;
  gap:2px;
  margin-right:4px;
}
.emergency-status strong { color:#d49199; font-size:calc(12px * var(--ui-font-scale)); }
.emergency-status span { color:#9e9295; font-size:calc(11px * var(--ui-font-scale)); }
.emergency-confirm {
  display:flex;
  align-items:center;
  gap:5px;
  color:#aaaeb4;
  font-size:calc(11px * var(--ui-font-scale));
}
.emergency-pending,
.control-inline-message {
  color:#aeb3ba;
  font-size:calc(12px * var(--ui-font-scale));
  text-align:right;
}
.control-error { color:#d58a92; }
.control-ok { color:#93b7a3; }

@media (max-width:900px) {
  .home-control-row { grid-template-columns:1fr; }
  #emergency-control { min-width:0; }
}


/* V1.15-P6.7: hierarchical sidebar */
.mainnav.sidebar-nav {
  gap: 4px;
}

.mainnav.sidebar-nav a.nav-level-1 {
  min-height: 40px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:9px 11px;
  font-size:calc(13px * var(--ui-font-scale));
  font-weight:600;
  border-radius:7px;
}

.nav-group {
  margin: 3px 0 5px;
  padding: 3px 0 4px;
}

.nav-group-title {
  padding: 8px 11px 5px;
  color: #777f89;
  font-size:calc(11px * var(--ui-font-scale));
  font-weight: 700;
  letter-spacing: .08em;
  user-select: none;
}

.nav-group.group-active .nav-group-title {
  color: #969da6;
}

.nav-submenu {
  display:flex;
  flex-direction:column;
  gap:2px;
  position:relative;
  padding-left:9px;
}

.nav-submenu::before {
  content:"";
  position:absolute;
  left:11px;
  top:4px;
  bottom:4px;
  width:1px;
  background:#2b3037;
}

.mainnav.sidebar-nav a.nav-level-2 {
  min-height:35px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-left:8px;
  padding:7px 10px 7px 17px;
  border-radius:7px;
  font-size:calc(12px * var(--ui-font-scale));
  font-weight:500;
  color:#9da3ab;
  position:relative;
}

.mainnav.sidebar-nav a.nav-level-2::before {
  content:"";
  position:absolute;
  left:-6px;
  top:50%;
  width:9px;
  height:1px;
  background:#343941;
}

.mainnav.sidebar-nav a.nav-level-2:hover {
  background:#181c22;
  color:#bcc1c8;
  border-color:#30353d;
}

.mainnav.sidebar-nav a.nav-level-2.active {
  background:#1a1e24;
  color:#c6cbd1;
  border-color:#383e47;
  box-shadow:none;
}

.mainnav.sidebar-nav a.nav-level-2.active::after {
  content:"";
  position:absolute;
  left:4px;
  top:9px;
  bottom:9px;
  width:2px;
  border-radius:2px;
  background:#747d88;
}

.mainnav.sidebar-nav a.nav-level-1.active {
  background:#181c22;
  color:#c8cdd2;
  border-color:#383e47;
  box-shadow:none;
}

.mainnav.sidebar-nav a.nav-level-1.active::before {
  content:"";
  width:2px;
  align-self:stretch;
  border-radius:2px;
  background:#747d88;
  margin-right:7px;
}


/* V1.15-P6.8: active nav does not shift text; stronger contrast */
.mainnav.sidebar-nav a.nav-level-1,
.mainnav.sidebar-nav a.nav-level-2 {
  position: relative;
}

.mainnav.sidebar-nav a.nav-level-1.active,
.mainnav.sidebar-nav a.nav-level-2.active {
  background: #232830;
  border-color: #444b55;
  color: #d1d5da;
  box-shadow: none;
}

/* Override P6.7 flex pseudo element that consumed horizontal space */
.mainnav.sidebar-nav a.nav-level-1.active::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 8px;
  bottom: 8px;
  width: 3px;
  margin: 0;
  align-self: auto;
  border-radius: 3px;
  background: #7f8894;
}

.mainnav.sidebar-nav a.nav-level-2.active::after {
  content: "";
  position: absolute;
  left: 4px;
  top: 8px;
  bottom: 8px;
  width: 3px;
  border-radius: 3px;
  background: #7f8894;
}

.mainnav.sidebar-nav a.nav-level-1:hover,
.mainnav.sidebar-nav a.nav-level-2:hover {
  background: #1c2128;
}

/* Keep original text alignment regardless of active state */
.mainnav.sidebar-nav a.nav-level-1 > span:first-child,
.mainnav.sidebar-nav a.nav-level-2 > span:first-child {
  margin-left: 0;
}


/* V1.15-P6.9: definitive sidebar active layout reset */
.mainnav.sidebar-nav a.nav-level-1,
.mainnav.sidebar-nav a.nav-level-2 {
  box-sizing: border-box;
  position: relative;
}

/* Normal first-level items keep their text at the left at all times. */
.mainnav.sidebar-nav a.nav-level-1:not(.nav-alert-link) {
  justify-content: flex-start !important;
}

/* Alert rows need right-side dots, but the label still starts at the left. */
.mainnav.sidebar-nav a.nav-level-1.nav-alert-link,
.mainnav.sidebar-nav a.nav-level-2.nav-alert-link {
  justify-content: space-between !important;
}

/* Remove any layout-consuming pseudo-element behavior from previous versions. */
.mainnav.sidebar-nav a.nav-level-1.active::before,
.mainnav.sidebar-nav a.nav-level-2.active::after {
  position: absolute !important;
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  flex: none !important;
  align-self: auto !important;
}

/* First-level active indicator: overlay only, never part of flex layout. */
.mainnav.sidebar-nav a.nav-level-1.active::before {
  content: "";
  left: 8px;
  top: 9px;
  bottom: 9px;
  width: 3px;
  height: auto;
  border-radius: 3px;
  background: #87909c;
}

/* Keep exactly the same label x-position before/after selection. */
.mainnav.sidebar-nav a.nav-level-1 {
  padding-left: 20px !important;
}
.mainnav.sidebar-nav a.nav-level-1 > span:first-child {
  display: inline-block;
  margin: 0 !important;
  transform: none !important;
}

/* Stronger selected contrast, still dark and restrained. */
.mainnav.sidebar-nav a.nav-level-1.active,
.mainnav.sidebar-nav a.nav-level-2.active {
  background: #272d35 !important;
  border-color: #4d5560 !important;
  color: #d0d4d9 !important;
  box-shadow: none !important;
}

/* Second-level text position is also stable. */
.mainnav.sidebar-nav a.nav-level-2 {
  padding-left: 18px !important;
}
.mainnav.sidebar-nav a.nav-level-2 > span:first-child {
  margin: 0 !important;
  transform: none !important;
}


/* V1.15-P6.11: brand logo + current-position sorting */
.sidebar-brand-row { display:flex; align-items:center; gap:10px; }
.sidebar-logo { width:58px; height:58px; flex:0 0 58px; object-fit:contain; filter:drop-shadow(0 4px 9px rgba(0,0,0,.28)); }
.sidebar-brand-copy { min-width:0; }
.sidebar-brand-copy .sidebar-title { white-space:nowrap; }
.sortable-table thead th[data-sort-type] { cursor:pointer; user-select:none; white-space:nowrap; }
.sortable-table thead th[data-sort-type]::after { content:'↕'; display:inline-block; margin-left:5px; font-size:calc(10px * var(--ui-font-scale)); opacity:.28; }
.sortable-table thead th[data-sort-dir='asc']::after { content:'▲'; opacity:.85; }
.sortable-table thead th[data-sort-dir='desc']::after { content:'▼'; opacity:.85; }
.sortable-table thead th[data-sort-type]:hover { color:#cdd3dc; }

/* V1.15-P6.12 notification settings restored */
.notification-test-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:12px 0 2px; }
.notification-test-actions form { margin:0; }
.compact-setting-field input[type="text"], .compact-setting-field input[type="password"] { width:100%; min-height:34px; }

/* V1.15-P6.19: compact API management */
.api-management-panel { padding:13px 14px 14px; }
.api-management-head { align-items:flex-start; margin-bottom:8px; }
.api-management-head h2 { font-size:calc(18px * var(--ui-font-scale)); }
.api-management-head p { max-width:860px; margin-top:4px; line-height:1.45; }
.api-head-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.api-head-actions form { margin:0; }
.compact-api-notice { margin:7px 0 8px; padding:8px 10px; font-size:calc(12px * var(--ui-font-scale)); }
.api-hint-line { color:var(--muted); font-size:calc(11px * var(--ui-font-scale)); margin:2px 0 10px; }
.compact-credential-grid { grid-template-columns:repeat(3,minmax(300px,1fr)); gap:9px; }
.compact-credential-card { padding:10px 11px; border-radius:9px; background:#171b22; }
.credential-card-head { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:8px; }
.credential-title-wrap { display:flex; align-items:baseline; gap:7px; min-width:0; }
.compact-credential-card h3 { font-size:calc(14px * var(--ui-font-scale)); line-height:1.2; }
.credential-source { color:var(--muted); font-size:calc(10px * var(--ui-font-scale)); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:120px; }
.compact-credential-form { gap:7px !important; }
.credential-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px 8px; }
.credential-fields.has-passphrase { grid-template-columns:repeat(3,minmax(0,1fr)); }
.compact-credential-card label { gap:4px; font-size:calc(11px * var(--ui-font-scale)); min-width:0; }
.compact-credential-card label > span { color:#c9ced8; }
.compact-credential-card input { min-width:0; height:32px; padding:6px 8px; border-radius:6px; font-size:calc(12px * var(--ui-font-scale)); }
.compact-credential-card input::placeholder { color:#626975; font-size:calc(10px * var(--ui-font-scale)); }
.credential-actions { display:flex; gap:7px; align-items:center; margin-top:1px; }
.credential-actions .compact-btn { padding:5px 9px; font-size:calc(11px * var(--ui-font-scale)); border-radius:7px; }
.api-cache-details { margin:10px 0; }
.api-cache-details summary { font-size:calc(13px * var(--ui-font-scale)); }
.api-json-block { max-height:420px; margin:6px 0 0; font-size:calc(11px * var(--ui-font-scale)); line-height:1.42; background:#11151b; border:1px solid #2d333d; border-radius:7px; padding:9px 10px; }
@media (max-width:1450px) {
  .compact-credential-grid { grid-template-columns:repeat(2,minmax(300px,1fr)); }
}
@media (max-width:980px) {
  .api-management-head { flex-direction:column; }
  .api-head-actions { justify-content:flex-start; }
  .compact-credential-grid { grid-template-columns:1fr; }
}
@media (max-width:620px) {
  .credential-fields, .credential-fields.has-passphrase { grid-template-columns:1fr; }
}

/* P6.20 Fast Admission formatted cache */
.fast-cache-body { margin-top:9px; }
.fast-cache-toolbar { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:9px; }
.fast-overview-grid { display:grid; grid-template-columns:repeat(6,minmax(120px,1fr)); gap:7px; margin-bottom:10px; }
.fast-metric { background:#11151b; border:1px solid #2d333d; border-radius:7px; padding:8px 9px; min-width:0; }
.fast-metric span { display:block; color:var(--muted); font-size:calc(10px * var(--ui-font-scale)); margin-bottom:3px; }
.fast-metric strong { display:block; color:#dce3ee; font-size:calc(12px * var(--ui-font-scale)); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fast-cache-section-title { font-size:calc(12px * var(--ui-font-scale)); font-weight:700; margin:4px 0 6px; color:#d7dde7; }
.fast-cache-table-wrap { border:1px solid #2d333d; border-radius:7px; background:#11151b; }
.fast-cache-table { width:100%; border-collapse:collapse; font-size:calc(10.5px * var(--ui-font-scale)); white-space:nowrap; }
.fast-cache-table th { color:#9fa8b7; background:#171b22; font-size:calc(10px * var(--ui-font-scale)); padding:7px 8px; text-align:left; border-bottom:1px solid #303641; }
.fast-cache-table td { color:#cbd1dc; padding:7px 8px; border-bottom:1px solid #252b34; vertical-align:middle; }
.fast-cache-table tbody tr:last-child td { border-bottom:0; }
.fast-cache-table .state-tag { font-size:calc(9px * var(--ui-font-scale)); padding:2px 6px; }
.fast-reason-cell { max-width:210px; overflow:hidden; text-overflow:ellipsis; }
.mono-num { font-variant-numeric:tabular-nums; }
.fast-cache-meta-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-top:9px; }
.fast-meta-card { background:#11151b; border:1px solid #2d333d; border-radius:7px; padding:8px 9px; min-width:0; }
.fast-meta-card h4 { margin:0 0 6px; font-size:calc(11px * var(--ui-font-scale)); color:#dce3ee; }
.fast-meta-card div { display:grid; grid-template-columns:82px minmax(0,1fr); gap:7px; padding:2px 0; font-size:calc(10px * var(--ui-font-scale)); }
.fast-meta-card div span { color:var(--muted); }
.fast-meta-card div strong { color:#cbd1dc; font-weight:600; min-width:0; }
.ellipsis-text { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fast-raw-details { margin-top:9px; border-top:1px solid #2d333d; padding-top:7px; }
.fast-raw-details > summary { cursor:pointer; color:#aeb7c5; font-size:calc(11px * var(--ui-font-scale)); font-weight:600; }
.good-text { color:#55dca5 !important; }
.warn-text { color:#ffd166 !important; }
@media (max-width:1450px) { .fast-overview-grid { grid-template-columns:repeat(3,minmax(140px,1fr)); } }
@media (max-width:900px) { .fast-overview-grid,.fast-cache-meta-grid { grid-template-columns:1fr; } .fast-cache-toolbar { align-items:flex-start; } }


/* V1.15-P6.22: denser API credential rows */
.credential-card-head { margin-bottom:7px; }
.credential-title-wrap { align-items:center; gap:8px; flex-wrap:nowrap; width:100%; }
.credential-title-wrap .state-tag { margin-left:auto; flex:0 0 auto; }
.credential-source { max-width:90px; }
.credential-fields, .credential-fields.has-passphrase { display:flex; flex-direction:column; gap:6px; }
.compact-credential-card label.credential-field-row { display:grid; grid-template-columns:82px minmax(0,1fr); align-items:center; gap:8px; margin:0; }
.compact-credential-card label.credential-field-row > span { white-space:nowrap; font-size:calc(11px * var(--ui-font-scale)); }
.compact-credential-card label.credential-field-row input { width:100%; }
@media (max-width:620px) {
  .compact-credential-card label.credential-field-row { grid-template-columns:76px minmax(0,1fr); }
}
.recon-action-stack { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.recon-action-stack form { margin:0; }


/* V1.15-P6.32 reconciliation operation workflow */
.recon-op-card { max-width: 820px; margin: 0 auto; }
.recon-op-section { margin: 14px 0; padding: 12px 14px; border: 1px solid #303641; border-radius: 9px; background: #151a21; }
.recon-op-label { font-weight: 700; color: #e3e6ea; margin-bottom: 8px; }
.recon-op-steps { margin: 0; padding-left: 22px; color: #c5cad1; line-height: 1.8; }
.recon-op-steps .active-step { color: #ffffff; font-weight: 700; }
.recon-op-actions { justify-content: flex-end; margin-top: 16px; }
.recon-progress { display:flex; align-items:center; gap:10px; padding:12px 0 4px; }
.recon-spinner { width:16px; height:16px; border:2px solid #4a515b; border-top-color:#e2e6eb; border-radius:50%; animation:recon-spin .8s linear infinite; }
@keyframes recon-spin { to { transform:rotate(360deg); } }
.primary-btn { cursor:pointer; background:#e6e8eb; color:#111318; border:1px solid #e6e8eb; border-radius:9px; padding:8px 13px; font-weight:800; }
.primary-btn:hover { background:#ffffff; border-color:#ffffff; }

/* V1.15-P6.33 reconciliation layout + modal click-scope hotfix */
.reconciliation-metric-grid { grid-template-columns: repeat(6, minmax(100px, 1fr)); }
@media (max-width: 1150px) { .reconciliation-metric-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { .reconciliation-metric-grid { grid-template-columns: repeat(2, 1fr); } }

/* V1.15-P6.34: reconciliation red dot follows current reconciliation only; deploy target updated to 38.54.56.78. */


/* P8.6: stable homepage table geometry */
.fixed-exchanges-table { width:100%; table-layout:fixed; }
.fixed-exchanges-table th, .fixed-exchanges-table td { overflow:hidden; text-overflow:ellipsis; }
.position-table-wrap .fixed-positions-table {
  width:100%;
  min-width:2060px;
  max-width:none;
  table-layout:fixed;
}
.fixed-positions-table th, .fixed-positions-table td { overflow:hidden; text-overflow:ellipsis; }
/* V1.18.4: current positions fill the available panel width on wide screens while
   retaining a 1980px minimum for readable headers on narrower screens. */
.fixed-positions-table th, .fixed-positions-table td { padding-left:7px; padding-right:7px; }

/* V1.17.49: keep the detail action pinned visually to the far-right edge of its column. */
.fixed-positions-table th:last-child,
.fixed-positions-table td:last-child {
  text-align:right;
}
.position-subvalue { color:var(--muted); font-weight:500; white-space:nowrap; }
.position-volume-sep { color:var(--muted); padding:0 2px; }
.opportunity-scroll .fixed-opportunities-table { width:100%; min-width:1120px; table-layout:fixed; }
.fixed-opportunities-table th, .fixed-opportunities-table td { overflow:hidden; text-overflow:ellipsis; }

/* V1.15-P8.14: sidebar server start time */
.sidebar-footer {
  margin-top: auto;
  padding: 14px 10px 6px;
  border-top: 1px solid #292f38;
}
.sidebar-footer-label {
  color: var(--muted);
  font-size:calc(11px * var(--ui-font-scale));
  margin-bottom: 5px;
}
.sidebar-footer-value {
  color: #d7dbe1;
  font-size:calc(12px * var(--ui-font-scale));
  line-height: 1.45;
  word-break: break-word;
}


/* V1.15-P8.17: exchange position history table only */
.exchange-history-table { width: 100%; min-width: 1320px; table-layout: fixed; }
.exchange-history-table th, .exchange-history-table td { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.exchange-history-table th:nth-child(1), .exchange-history-table td:nth-child(1) { width: 9%; }
.exchange-history-table th:nth-child(2), .exchange-history-table td:nth-child(2) { width: 5%; }
.exchange-history-table th:nth-child(3), .exchange-history-table td:nth-child(3) { width: 13%; }
.exchange-history-table th:nth-child(4), .exchange-history-table td:nth-child(4) { width: 13%; }
.exchange-history-table th:nth-child(5), .exchange-history-table td:nth-child(5) { width: 8%; }
.exchange-history-table th:nth-child(6), .exchange-history-table td:nth-child(6) { width: 7.5%; }
.exchange-history-table th:nth-child(7), .exchange-history-table td:nth-child(7) { width: 7.5%; }
.exchange-history-table th:nth-child(8), .exchange-history-table td:nth-child(8) { width: 7%; }
.exchange-history-table th:nth-child(9), .exchange-history-table td:nth-child(9) { width: 8.5%; }
.exchange-history-table th:nth-child(10), .exchange-history-table td:nth-child(10) { width: 7%; }
.exchange-history-table th:nth-child(11), .exchange-history-table td:nth-child(11) { width: 8.5%; }
.exchange-history-table th:nth-child(12), .exchange-history-table td:nth-child(12) { width: 6%; }
/* V1.15-P8.20: per-exchange history refresh */
.exchange-history-title-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.exchange-history-title-row h2 { margin:0; }
.exchange-history-title-row form { margin:0; }
.exchange-history-refresh-btn { padding:6px 10px; font-size:calc(12px * var(--ui-font-scale)); }


/* V1.15-P8.23: exchange real profit ledger */
.exchange-profit-head { align-items:flex-end; }
.exchange-profit-sync-form { display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; }
.exchange-profit-sync-form label { display:flex; flex-direction:column; gap:6px; color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); }
.exchange-profit-sync-form input { background:#171b22; color:var(--text); border:1px solid #3a414c; border-radius:8px; padding:8px 10px; }
.exchange-profit-metrics { grid-template-columns:repeat(6,minmax(130px,1fr)); margin-top:12px; }
.exchange-profit-table { width:100%; min-width:1050px; table-layout:fixed; }
.exchange-profit-table th,.exchange-profit-table td { overflow:hidden; text-overflow:ellipsis; }
.exchange-profit-table th:nth-child(1),.exchange-profit-table td:nth-child(1){width:42px;}
.exchange-profit-table th:nth-child(2),.exchange-profit-table td:nth-child(2){width:90px;}
.exchange-profit-table th:nth-child(3),.exchange-profit-table td:nth-child(3){width:110px;}
.exchange-profit-table th:nth-child(4),.exchange-profit-table td:nth-child(4){width:100px;}
.exchange-profit-table th:nth-child(5),.exchange-profit-table td:nth-child(5){width:115px;}
.exchange-profit-table th:nth-child(6),.exchange-profit-table td:nth-child(6){width:100px;}
.exchange-profit-table th:nth-child(7),.exchange-profit-table td:nth-child(7){width:120px;}
.exchange-profit-table th:nth-child(8),.exchange-profit-table td:nth-child(8){width:105px;}
.exchange-profit-table th:nth-child(9),.exchange-profit-table td:nth-child(9){width:75px;}
.exchange-profit-table th:nth-child(10),.exchange-profit-table td:nth-child(10){width:170px;}
.exchange-profit-stock-row { cursor:pointer; }
.exchange-profit-stock-row:hover { background:#1c2129; }
.exchange-profit-detail-row > td { padding:8px 16px 14px; background:#11161d; }
.exchange-profit-detail-table { width:100%; table-layout:fixed; background:#151a21; border:1px solid #2b313a; }
.exchange-profit-sync-table { width:100%; min-width:1050px; table-layout:fixed; }
.exchange-profit-sync-table th,.exchange-profit-sync-table td { overflow:hidden; text-overflow:ellipsis; }
.profit-sync-error { white-space:normal; line-height:1.4; min-width:280px; }
@media (max-width:1100px) { .exchange-profit-metrics { grid-template-columns:repeat(3,1fr); } }
@media (max-width:720px) { .exchange-profit-metrics { grid-template-columns:repeat(2,1fr); } }

.log-repeat{margin-top:4px;font-size:calc(11px * var(--ui-font-scale));line-height:1.35;opacity:.72;white-space:nowrap;}

/* P8.27.8.6.2 overview equal row heights */
.home-top-grid .wide-metrics.overview-metrics { grid-auto-rows: 92px; }
.home-top-grid .wide-metrics.overview-metrics .metric { height: 92px; }

/* P8.27.8.7 exchange profit per-stock inclusion controls */
.exchange-profit-table .profit-select-col { width:42px; text-align:center; padding-left:8px; padding-right:8px; }
.exchange-profit-table .profit-stock-checkbox { width:16px; height:16px; margin:0; vertical-align:middle; accent-color:#7aa2ff; cursor:pointer; }
.exchange-profit-table .exchange-profit-stock-row.profit-stock-excluded > td:not(.profit-select-col) { opacity:.42; }


/* V1.18.2: current positions leg layout. Each leg uses two compact columns:
   exchange + 24H volume, then floating PnL + notional(quantity). */
.fixed-positions-table td.position-combined-cell { overflow:visible; text-overflow:clip; }
.fixed-positions-table td.position-combined-cell .position-subvalue { margin-left:3px; }
.fixed-positions-table td.position-leg-cell,
.fixed-positions-table td.position-leg-pnl-cell {
  overflow:hidden;
  text-overflow:clip;
  white-space:normal;
  vertical-align:middle;
  line-height:1.2;
}
.fixed-positions-table td.position-leg-cell .position-leg-exchange,
.fixed-positions-table td.position-leg-pnl-cell .position-leg-pnl {
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  margin-bottom:5px;
}
.fixed-positions-table td.position-leg-cell .position-leg-meta,
.fixed-positions-table td.position-leg-pnl-cell .position-leg-notional {
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:clip;
  font-weight:500;
  font-size:0.92em;
}
.fixed-positions-table td.position-leg-pnl-cell .position-subvalue {
  margin-left:3px;
}

/* V1.16: explicit text-dot marker for scanner stocks that already have a position.
   Using a glyph instead of an empty background span avoids table/CSS rendering
   differences hiding the marker. */
.fixed-opportunities-table .stock .opportunity-position-dot {
  display:inline;
  margin-left:6px;
  vertical-align:baseline;
  color:#55d995;
  font-size:calc(13px * var(--ui-font-scale));
  line-height:1;
  text-shadow:0 0 6px rgba(85,217,149,.45);
}

/* V1.16.16: ADD/EXIT log filters and pager share one row. */
.log-filter-row { align-items: flex-end; }
.log-position-filter {
  min-width: 130px;
  background: #171b22;
  color: var(--text);
  border: 1px solid #3a414c;
  border-radius: 8px;
  padding: 8px 10px;
}
.log-inline-pager {
  margin: 0 0 0 auto;
  align-self: flex-end;
  flex-wrap: nowrap;
  white-space: nowrap;
}
.log-inline-pager .pager-text { margin-left: 4px; }
@media (max-width: 1250px) {
  .log-inline-pager { margin-left: 0; width: 100%; flex-wrap: wrap; }
}
/* V1.16.17: current positions show Position ID to the right without moving stock name */
.fixed-positions-table td.position-stock-cell {
  position: relative;
}
.fixed-positions-table td.position-stock-cell .position-stock-name {
  display: inline;
}
.fixed-positions-table td.position-stock-cell .position-stock-id {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  font-size:calc(9px * var(--ui-font-scale));
  font-weight: 500;
  letter-spacing: 0;
}


/* V1.16.18 lifecycle log ↔ Fault Registry correlation */
.log-freeze-badge{display:inline-block;margin-top:4px;padding:2px 7px;border:1px solid rgba(245,184,65,.28);border-radius:999px;background:rgba(245,184,65,.08);color:#d9b35b;font-size:calc(12px * var(--ui-font-scale));font-weight:700;white-space:nowrap}
.log-freeze-detail{border-color:rgba(245,184,65,.28);background:rgba(245,184,65,.06)}

.entry-phase-audit{margin:14px 0;padding:14px;border:1px solid rgba(148,163,184,.18);border-radius:10px;background:rgba(15,23,42,.22)}
.entry-phase-audit-head,.entry-phase-card-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.entry-phase-audit-head{margin-bottom:12px}.entry-phase-audit-head>span,.entry-phase-card-head>span{font-size:calc(12px * var(--ui-font-scale));color:var(--muted,#94a3b8)}
.entry-phase-card{margin-top:12px;padding:12px;border:1px solid rgba(148,163,184,.14);border-radius:8px;background:rgba(2,6,23,.20)}
.entry-phase-card-head{margin-bottom:10px}.compact-phase-grid{margin-bottom:10px}.entry-phase-leg-table{font-size:calc(12px * var(--ui-font-scale))}.entry-phase-leg-table th,.entry-phase-leg-table td{white-space:nowrap}


/* V1.16.25: lifecycle log header stats inline with title; all log pagers inline with filters. */
.log-title-line {
  display: flex;
  align-items: baseline;
  gap: 14px;
  min-width: 0;
  flex-wrap: wrap;
}
.panel-head .log-title-line p {
  margin: 0;
  white-space: nowrap;
}
@media (max-width: 900px) {
  .log-title-line { align-items: flex-start; flex-direction: column; gap: 4px; }
}
.recon-action-picker{display:flex;align-items:center;gap:6px;min-width:280px}
.recon-action-picker .recon-action-select{min-width:220px;max-width:320px;height:34px;padding:4px 8px;border:1px solid var(--border,#303846);border-radius:7px;background:var(--panel,#151a21);color:inherit}

/* V1.17.13 Level parameter analysis */
.level-analysis-run-form { display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; }
.level-analysis-run-form label { display:flex; flex-direction:column; gap:5px; color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); }
.level-analysis-run-form select { min-width:130px; height:36px; padding:0 10px; border:1px solid #303641; border-radius:8px; background:#11161d; color:#e8eaed; }
.level-analysis-metrics { grid-template-columns:repeat(5,minmax(120px,1fr)); }
.level-analysis-summary-scroll,.level-analysis-table-scroll { overflow-x:auto; }
.level-analysis-summary-table,.level-analysis-table { min-width:1050px; width:100%; }
.level-analysis-card { margin-top:14px; }
.analysis-confidence { display:inline-flex; align-items:center; padding:4px 8px; border-radius:999px; font-size:calc(11px * var(--ui-font-scale)); white-space:nowrap; border:1px solid #3b414b; }
.analysis-confidence.low { color:#ffd18a; border-color:rgba(255,194,92,.38); background:rgba(255,194,92,.07); }
.analysis-confidence.medium { color:#bcd6ff; border-color:rgba(98,157,255,.38); background:rgba(98,157,255,.07); }
.analysis-confidence.high { color:#b9f6d7; border-color:rgba(66,211,146,.38); background:rgba(66,211,146,.07); }
.analysis-change { color:#b9f6d7; font-weight:700; }
.analysis-reason { min-width:360px; color:var(--muted); white-space:normal; line-height:1.5; }
@media (max-width:900px) { .level-analysis-metrics { grid-template-columns:repeat(2,1fr); } .level-analysis-run-form { width:100%; } }

/* V1.17.49 settings system control */
.system-control-card { margin-top:16px; padding:14px; background:#0a111e; border:1px solid var(--line); border-radius:12px; }
.system-control-card h3 { margin:0 0 5px; }
.system-control-card p { margin:0; color:var(--muted); font-size:calc(12px * var(--ui-font-scale)); line-height:1.5; }
.system-process-grid { display:grid; grid-template-columns:repeat(3,minmax(150px,1fr)); gap:10px; margin-top:13px; }
.system-process-item { background:#111824; border:1px solid #303641; border-radius:10px; padding:11px 12px; }
.system-process-item span,.system-process-item small { display:block; color:var(--muted); font-size:calc(11px * var(--ui-font-scale)); }
.system-process-item strong { display:block; margin:5px 0; font-size:calc(14px * var(--ui-font-scale)); }
.system-restart-row { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-top:13px; }
@media (max-width:720px) { .system-process-grid { grid-template-columns:1fr; } }

/* V1.19.0-C.2 Instrument Market & Readiness Audit */
.instrument-metrics { display:grid; grid-template-columns:repeat(6,minmax(120px,1fr)); gap:10px; margin-bottom:14px; }
.instrument-collision-alert { border:1px solid rgba(255,181,71,.55); background:rgba(255,181,71,.08); border-radius:12px; padding:12px 14px; margin:10px 0 14px; color:var(--text); font-size:calc(13px * var(--ui-font-scale)); line-height:1.6; }
.instrument-collision-list { display:flex; flex-wrap:wrap; gap:7px; margin-top:8px; }
.instrument-collision-chip { display:inline-flex; border:1px solid rgba(255,181,71,.45); border-radius:999px; padding:3px 9px; font-size:calc(12px * var(--ui-font-scale)); }
.instrument-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:10px 0 12px; }
.instrument-search { min-width:260px; }
.instrument-toolbar select { min-width:130px; }
.instrument-market-table { min-width:1240px; width:100%; table-layout:fixed; }
.instrument-market-table th:first-child, .instrument-market-table td:first-child { width:120px; }
.instrument-market-table th:nth-child(2), .instrument-market-table td:nth-child(2) { width:85px; }
.instrument-market-table th:last-child, .instrument-market-table td:last-child { width:135px; }
.instrument-exchange-cell { text-align:center; vertical-align:middle; }
.instrument-market-present { font-size:calc(11px * var(--ui-font-scale)); color:var(--muted); margin-bottom:3px; }
.instrument-cache-state { display:inline-flex; align-items:center; justify-content:center; border-radius:999px; padding:3px 7px; border:1px solid var(--line); font-size:calc(11px * var(--ui-font-scale)); font-weight:600; white-space:nowrap; }
.instrument-cache-state.ready { color:#7ee2a8; border-color:rgba(126,226,168,.38); background:rgba(126,226,168,.08); }
.instrument-cache-state.warming { color:#ffd27d; border-color:rgba(255,210,125,.4); background:rgba(255,210,125,.08); }
.instrument-cache-state.not_ready, .instrument-cache-state.stale { color:#ff9a9a; border-color:rgba(255,154,154,.38); background:rgba(255,154,154,.08); }
.instrument-cache-state.conflict { color:#ffd27d; border-color:rgba(255,210,125,.4); background:rgba(255,210,125,.08); }
.instrument-cache-age { margin-top:3px; font-size:calc(10px * var(--ui-font-scale)); color:var(--muted); }
.instrument-no-market { color:var(--muted); }
.instrument-type-tag { display:inline-flex; border-radius:999px; padding:3px 8px; border:1px solid var(--line); font-size:calc(11px * var(--ui-font-scale)); }
.instrument-type-tag.stock { color:#a8c7ff; }
.instrument-type-tag.crypto { color:#e7c67a; }
.collision-row td:first-child { box-shadow:inset 3px 0 0 rgba(255,181,71,.65); }
@media (max-width: 1100px) { .instrument-metrics { grid-template-columns:repeat(3,minmax(120px,1fr)); } }
@media (max-width: 720px) { .instrument-metrics { grid-template-columns:repeat(2,minmax(120px,1fr)); } .instrument-search { min-width:100%; width:100%; } }

/* crypto_pair_perp_arbitrage V0.1.0 pair card workspace */
.pair-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0 14px}.pair-toolbar input,.pair-toolbar select{background:#171b22;color:var(--text);border:1px solid #3a414c;border-radius:8px;padding:8px 10px}.pair-card-grid{display:grid;grid-template-columns:repeat(3,minmax(300px,1fr));gap:12px}.pair-card-grid.opened{grid-template-columns:repeat(2,minmax(380px,1fr))}.pair-card{background:#171c24;border:1px solid #303641;border-radius:11px;padding:14px;min-width:0}.pair-card.near{border-color:#6b5b32;box-shadow:inset 3px 0 0 #e0b84f}.pair-card.open{border-color:#315847;box-shadow:inset 3px 0 0 #42d392}.pair-card.attention{border-color:#71303d;box-shadow:inset 3px 0 0 #ff6677}.pair-card-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:12px}.pair-name{font-size:calc(18px * var(--ui-font-scale));font-weight:800;letter-spacing:.2px}.pair-sub{font-size:calc(11px * var(--ui-font-scale));color:var(--muted);margin-top:4px}.pair-status{font-size:calc(11px * var(--ui-font-scale));padding:4px 8px;border-radius:999px;border:1px solid #424852;color:#d9dde5}.pair-status.open{color:#7cebb6;border-color:#315847}.pair-status.waiting{color:#ffd27a;border-color:#6b5b32}.pair-kpi{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.pair-kpi>div{background:#20252e;border:1px solid #343a44;border-radius:8px;padding:9px}.pair-kpi span{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-bottom:4px}.pair-kpi strong{font-size:calc(16px * var(--ui-font-scale));font-variant-numeric:tabular-nums}.pair-direction{display:flex;gap:8px;margin:9px 0}.leg-chip{flex:1;background:#20252e;border:1px solid #343a44;border-radius:8px;padding:8px 9px;font-size:calc(12px * var(--ui-font-scale))}.leg-chip.long strong{color:#62e6a7}.leg-chip.short strong{color:#ff7a89}.pair-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;margin:10px 0;font-size:calc(12px * var(--ui-font-scale))}.pair-meta span{color:var(--muted)}.pair-plan{border-top:1px solid #303641;margin-top:10px;padding-top:9px}.pair-plan-row{display:grid;grid-template-columns:72px 1fr 1fr;gap:8px;font-size:calc(12px * var(--ui-font-scale));padding:4px 0}.pair-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.pair-section-count{font-size:calc(12px * var(--ui-font-scale));color:var(--muted)}
@media(max-width:1180px){.pair-card-grid,.pair-card-grid.opened{grid-template-columns:repeat(2,minmax(300px,1fr))}}@media(max-width:760px){.pair-card-grid,.pair-card-grid.opened{grid-template-columns:1fr}.pair-kpi{grid-template-columns:repeat(2,1fr)}}

/* V0.1.5 production readiness */
.status-grid{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:10px;margin-bottom:8px}.status-grid>div{background:var(--panel-2);border:1px solid var(--line);border-radius:9px;padding:11px}.status-grid small{display:block;color:var(--muted);margin-bottom:5px}.status-grid strong{font-size:calc(17px * var(--ui-font-scale))}@media(max-width:800px){.status-grid{grid-template-columns:repeat(2,1fr)}}

/* V0.1.9 research readability + pair trend charts */
.page-subtitle{margin:6px 0 0;color:var(--muted);font-size:calc(12px * var(--ui-font-scale))}.research-summary{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:10px;margin:8px 0 10px}.research-summary-item{background:#151a21;border:1px solid #2d333d;border-radius:10px;padding:12px 14px}.research-summary-item span{display:block;color:var(--muted);font-size:calc(11px * var(--ui-font-scale));margin-bottom:5px}.research-summary-item strong{font-size:calc(15px * var(--ui-font-scale));color:#e1e4e8}.research-panel{padding-top:12px}.research-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.research-search{min-width:320px;flex:0 1 440px}.research-toolbar input,.research-toolbar select{height:36px;background:#11161d;color:var(--text);border:1px solid #363d47;border-radius:7px;padding:0 10px}.research-table-wrap{border:1px solid #2b313a;border-radius:9px;overflow:auto;max-height:calc(100vh - 260px)}.research-table{min-width:1180px;margin:0}.research-table thead th{position:sticky;top:0;z-index:2;background:#20252e;box-shadow:0 1px 0 #343a44;padding-top:10px;padding-bottom:10px}.research-table td{vertical-align:middle;padding-top:10px;padding-bottom:10px}.research-table tbody tr:hover{background:#1a1f27}.research-pair-name{font-weight:800;color:#e3e7ec;font-size:calc(14px * var(--ui-font-scale))}.research-pair-sub{color:#6f7885;font-size:calc(10px * var(--ui-font-scale));margin-top:3px}.research-stat-main{font-size:calc(12px * var(--ui-font-scale));color:#d4d8de;font-variant-numeric:tabular-nums}.research-stat-sub{font-size:calc(10px * var(--ui-font-scale));color:#818997;margin-top:4px}.research-deviation{font-size:calc(15px * var(--ui-font-scale));font-weight:800;font-variant-numeric:tabular-nums}.research-deviation.muted{color:#7d8591}.dev-negative{color:#ef776f!important}.dev-positive{color:#38c9bc!important}.research-range{font-size:calc(12px * var(--ui-font-scale));font-weight:700;font-variant-numeric:tabular-nums}.direction-tag{display:inline-flex;align-items:center;border-radius:6px;padding:4px 8px;font-size:calc(11px * var(--ui-font-scale));font-weight:700;border:1px solid #3b414b}.direction-tag.low{color:#63d5c9;border-color:rgba(56,201,188,.35);background:rgba(56,201,188,.07)}.direction-tag.high{color:#ff8a83;border-color:rgba(239,119,111,.35);background:rgba(239,119,111,.07)}.direction-tag.neutral{color:#b5bbc4}.research-actions{display:flex;gap:7px;align-items:center;white-space:nowrap}.research-actions form{margin:0}
.pair-detail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:8px 0 10px}.period-tabs{display:flex;gap:4px;align-items:center}.period-tabs a{color:#aeb5bf;text-decoration:none;border:1px solid #353c46;padding:7px 11px;border-radius:7px;font-size:calc(12px * var(--ui-font-scale))}.period-tabs a:hover,.period-tabs a.active{color:#fff;background:#24423f;border-color:#347d73}.detail-hero-grid{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:9px;margin-bottom:10px}.detail-hero-card{background:#151a21;border:1px solid #2d333d;border-radius:9px;padding:11px 12px;min-width:0}.detail-hero-card span{display:block;color:#8f97a3;font-size:calc(10px * var(--ui-font-scale));margin-bottom:5px}.detail-hero-card strong{display:block;font-size:calc(15px * var(--ui-font-scale));font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-hero-card small{display:block;color:#7f8793;font-size:calc(10px * var(--ui-font-scale));margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chart-panel{padding:15px 16px}.chart-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:8px}.chart-head h2{margin:4px 0 0;font-size:calc(18px * var(--ui-font-scale))}.chart-head p{margin:5px 0 0;color:var(--muted);font-size:calc(11px * var(--ui-font-scale))}.chart-head-stat{text-align:right;min-width:150px}.chart-head-stat span{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-bottom:5px}.chart-head-stat strong{font-size:calc(15px * var(--ui-font-scale));font-variant-numeric:tabular-nums}.pair-chart-wrap{width:100%;height:460px;overflow:hidden;background:#12171e;border:1px solid #252b34;border-radius:8px;padding:4px;box-sizing:border-box}.pair-chart-wrap canvas{display:block}
@media(max-width:1300px){.detail-hero-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.research-summary{grid-template-columns:1fr}.research-search{min-width:100%;width:100%}.pair-detail-toolbar{align-items:flex-start;flex-direction:column}.detail-hero-grid{grid-template-columns:repeat(2,1fr)}.chart-head{flex-direction:column}.chart-head-stat{text-align:left}.pair-chart-wrap{height:410px;overflow-x:auto}}@media(max-width:620px){.detail-hero-grid{grid-template-columns:1fr}.period-tabs{flex-wrap:wrap}.pair-chart-wrap{height:340px}}

/* V0.1.10 custom Pair query */
.pair-query-panel{padding:18px 20px;margin-bottom:16px}.pair-query-form{display:grid;grid-template-columns:minmax(220px,1fr) 34px minmax(220px,1fr) auto;gap:12px;align-items:end}.pair-query-form label{display:flex;flex-direction:column;gap:7px;font-size:calc(12px * var(--ui-font-scale));color:#98a2b3}.pair-query-form input{height:42px;border:1px solid #2a3442;border-radius:8px;background:#111821;color:#e7edf5;padding:0 12px;font-size:calc(14px * var(--ui-font-scale));outline:none}.pair-query-form input:focus{border-color:#4aa3ff;box-shadow:0 0 0 2px rgba(74,163,255,.12)}.pair-query-divider{align-self:end;height:42px;display:flex;align-items:center;justify-content:center;color:#7e8794;font-weight:700}.pair-query-hint{margin-top:10px;color:#7f8996;font-size:calc(12px * var(--ui-font-scale))}.pair-query-result-title{display:flex;flex-direction:column;gap:3px}.pair-query-result-title strong{font-size:calc(20px * var(--ui-font-scale))}.pair-query-result-title span{font-size:calc(12px * var(--ui-font-scale));color:#7f8996}.custom-pair-scorecard{margin-top:14px}.screening-score{display:flex;flex-direction:column;align-items:flex-end}.screening-score strong{font-size:calc(25px * var(--ui-font-scale))}.screening-score span{font-size:calc(11px * var(--ui-font-scale));color:#8993a0}.criteria-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:10px;padding-top:14px}.criteria-item{border:1px solid #29323e;border-radius:9px;background:#111820;padding:11px 12px;display:flex;flex-direction:column;gap:4px}.criteria-item span{font-size:calc(11px * var(--ui-font-scale));color:#8993a0}.criteria-item strong{font-size:calc(13px * var(--ui-font-scale))}.criteria-item small{font-size:calc(11px * var(--ui-font-scale));color:#aab2bd}.criteria-item.pass{border-color:rgba(46,204,145,.35)}.criteria-item.pass strong{color:#33d49a}.criteria-item.fail{border-color:rgba(255,100,100,.3)}.criteria-item.fail strong{color:#ff7373}.custom-pair-actions{display:flex;gap:12px;align-items:center;margin-top:14px;flex-wrap:wrap}.warning-notice{color:#f4c46a}
@media(max-width:1000px){.pair-query-form{grid-template-columns:1fr 30px 1fr}.pair-query-form .primary-btn{grid-column:1/-1}.criteria-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.pair-query-form{grid-template-columns:1fr}.pair-query-divider{display:none}.criteria-grid{grid-template-columns:repeat(2,1fr)}}
.pair-query-swap{align-self:end;height:42px;border:1px solid #2a3442;border-radius:8px;background:#111821;color:#aeb7c3;font-size:calc(18px * var(--ui-font-scale));cursor:pointer}.pair-query-swap:hover{border-color:#4aa3ff;color:#fff}
/* V0.1.11 Pair query merge + interactive chart cleanup */
.pair-query-history{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px}.pair-query-history>span{color:var(--muted);font-size:calc(11px * var(--ui-font-scale));margin-right:2px}.pair-query-history a{display:inline-flex;align-items:center;padding:5px 9px;border:1px solid #343b45;background:#151a21;border-radius:999px;color:#bfc7d1;text-decoration:none;font-size:calc(11px * var(--ui-font-scale))}.pair-query-history a:hover{border-color:#3c8b7e;color:#e7fffb}.pair-chart-wrap{position:relative}.pair-chart-tooltip{position:absolute;z-index:5;display:none;width:205px;padding:10px 11px;background:rgba(245,247,250,.97);color:#273043;border:1px solid #cfd7e2;border-radius:7px;box-shadow:0 10px 24px rgba(0,0,0,.25);font-variant-numeric:tabular-nums;pointer-events:none}.pair-chart-tooltip b{display:block;font-size:calc(12px * var(--ui-font-scale));color:#606b7d;margin-bottom:7px}.pair-chart-tooltip b em{font-size:calc(10px * var(--ui-font-scale));font-style:normal;font-weight:500;color:#8b95a4;margin-left:5px}.pair-chart-tooltip div{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-top:1px solid #e5e9ef}.pair-chart-tooltip span{display:flex;align-items:center;gap:6px;font-size:calc(11px * var(--ui-font-scale))}.pair-chart-tooltip i{display:inline-block;width:8px;height:8px;border-radius:50%}.pair-chart-tooltip strong{font-size:calc(12px * var(--ui-font-scale));white-space:nowrap}.chart-panel .pair-chart-wrap canvas{cursor:crosshair}

/* V0.1.15: chart readability, Beijing time presentation, and direction callout */
.chart-direction-stat{min-width:280px}.chart-direction-stat strong{display:block;white-space:nowrap}.chart-direction-stat small{display:block;margin-top:6px;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}.direction-neutral{color:#aeb6c2!important}
@media(max-width:900px){.chart-direction-stat{min-width:0;width:100%}.chart-direction-stat strong{white-space:normal}}

/* V0.1.17 query/management/research layout refinements */
.research-summary.four-cols{grid-template-columns:repeat(4,minmax(180px,1fr))}.research-summary-item small{display:block;color:#7f8996;font-size:calc(10px * var(--ui-font-scale));margin-top:6px;font-variant-numeric:tabular-nums}
.compact-query-form{display:grid;grid-template-columns:220px 34px 220px auto minmax(420px,1fr);gap:10px;align-items:end}.compact-query-form .inline-history{margin:0 0 2px 6px;align-self:end;min-height:42px}.compact-query-form label{min-width:0}.compact-query-form input{width:100%}.inline-history{justify-content:flex-start;overflow:hidden}.inline-history a{white-space:nowrap}
.pair-query-loading{display:flex;align-items:center;gap:14px;min-height:110px}.pair-query-loading p{margin:5px 0 0;color:var(--muted);font-size:calc(12px * var(--ui-font-scale))}.loading-spinner{width:24px;height:24px;border:3px solid #303844;border-top-color:#4aa3ff;border-radius:50%;animation:pairSpin .8s linear infinite}@keyframes pairSpin{to{transform:rotate(360deg)}}
.screening-title-row{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.screening-title-actions{display:flex;gap:14px;align-items:center}.criteria-fail-summary{margin-top:10px;color:#ff8a83;font-size:calc(12px * var(--ui-font-scale))}.criteria-item small.criteria-reason{color:#ff8a83}.criteria-grid{grid-template-columns:repeat(7,minmax(130px,1fr))}.warning-notice{margin-top:12px}
.funding-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 12px}.funding-summary-grid>div{background:#151a21;border:1px solid #2e3540;border-radius:9px;padding:10px 12px}.funding-summary-grid span{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-bottom:4px}.funding-summary-grid strong{font-size:calc(13px * var(--ui-font-scale))}.funding-head-stat small{display:block;margin-top:4px;color:var(--muted)}
.pair-card-grid{grid-template-columns:repeat(2,minmax(420px,1fr))}.pair-edit{border-top:1px solid #303641;margin-top:12px;padding-top:10px}.pair-edit>summary{cursor:pointer;font-weight:700;color:#dfe5ec}.pair-edit-form{padding-top:10px}.pair-edit-section{border-top:1px solid #2d333c;padding:11px 0}.pair-edit-section:first-of-type{border-top:0}.pair-edit-section h4{margin:0 0 9px;font-size:calc(12px * var(--ui-font-scale));color:#aeb7c3}.pair-toggle-row{display:flex;gap:24px;flex-wrap:wrap}.pair-toggle-row label{display:flex;gap:7px;align-items:center;font-size:calc(12px * var(--ui-font-scale))}.pair-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}.pair-edit-grid label{display:flex;flex-direction:column;gap:6px;color:#aab3bf;font-size:calc(11px * var(--ui-font-scale))}.pair-edit-grid input{width:100%;box-sizing:border-box;background:#20252e;color:var(--text);border:1px solid #39414c;border-radius:8px;padding:9px 10px}.pair-edit-grid small{color:#788392;font-size:calc(10px * var(--ui-font-scale))}.pair-edit-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:10px}.compact-plan{margin-top:9px}
@media(max-width:1350px){.compact-query-form{grid-template-columns:200px 34px 200px auto 1fr}.criteria-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:1000px){.research-summary.four-cols{grid-template-columns:repeat(2,1fr)}.compact-query-form{grid-template-columns:1fr 34px 1fr auto}.compact-query-form .inline-history{grid-column:1/-1;margin-left:0}.pair-card-grid{grid-template-columns:1fr}.criteria-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.research-summary.four-cols{grid-template-columns:1fr}.compact-query-form{grid-template-columns:1fr}.compact-query-form .pair-query-swap{display:none}.compact-query-form .primary-btn{width:100%}.screening-title-row{flex-direction:column}.screening-title-actions{width:100%;justify-content:space-between}.criteria-grid{grid-template-columns:1fr}.funding-summary-grid,.pair-edit-grid{grid-template-columns:1fr}}
/* V0.1.18 pair management interaction cleanup */
.pair-kpi small{display:block;margin-top:4px;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}.pair-static-value{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#aab3bf;font-size:calc(12px * var(--ui-font-scale))}.pair-static-value strong{color:var(--text);font-size:calc(13px * var(--ui-font-scale))}.pair-static-value small{width:100%;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}.pair-add-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px}.pair-add-head h4{margin:0}.pair-add-head label{display:flex;align-items:center;gap:8px;color:#aab3bf;font-size:calc(11px * var(--ui-font-scale))}.pair-add-head select{background:#20252e;color:var(--text);border:1px solid #39414c;border-radius:8px;padding:7px 9px}.pair-add-list{display:flex;flex-direction:column;gap:8px}.pair-add-row{display:grid;grid-template-columns:88px minmax(0,1fr) minmax(0,1fr);gap:10px 12px;align-items:end;background:#171c24;border:1px solid #2f3640;border-radius:9px;padding:10px}.pair-add-row-title{align-self:center;font-weight:700;color:#dfe5ec}.pair-add-row label{display:flex;flex-direction:column;gap:6px;color:#aab3bf;font-size:calc(11px * var(--ui-font-scale))}.pair-add-row input{width:100%;box-sizing:border-box;background:#20252e;color:var(--text);border:1px solid #39414c;border-radius:8px;padding:9px 10px}.pair-add-row small{color:#788392;font-size:calc(10px * var(--ui-font-scale))}.pair-edit [hidden]{display:none!important}
@media(max-width:760px){.pair-add-head{align-items:flex-start;flex-direction:column}.pair-add-row{grid-template-columns:1fr}.pair-add-row-title{margin-bottom:2px}}

/* V0.1.19 compact three-column pending cards and single-field query */
.pair-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.pair-card-grid.opened{grid-template-columns:repeat(2,minmax(380px,1fr))}.pair-card{padding:12px}.pair-name{font-size:calc(17px * var(--ui-font-scale))}.pair-meta{gap:5px 9px}.pair-plan-row{grid-template-columns:62px 1fr 1fr}.leg-chip>span{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-bottom:5px}.leg-main-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.leg-main-row small{color:var(--muted);white-space:nowrap}.leg-symbol-link{font-weight:800;color:inherit;text-decoration:none}.leg-chip.long .leg-symbol-link{color:#62e6a7}.leg-chip.short .leg-symbol-link{color:#ff7a89}.leg-symbol-link:hover{text-decoration:underline}.single-pair-query-form{grid-template-columns:minmax(300px,520px) 40px auto minmax(360px,1fr);align-items:end}.single-pair-query-form>label{min-width:0}.single-pair-query-form .inline-history{margin-left:8px}.js-entry-threshold-hint{line-height:1.45}
@media(max-width:1450px){.pair-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.single-pair-query-form{grid-template-columns:minmax(280px,1fr) 40px auto}.single-pair-query-form .inline-history{grid-column:1/-1;margin-left:0}}
@media(max-width:860px){.pair-card-grid,.pair-card-grid.opened{grid-template-columns:1fr}.single-pair-query-form{grid-template-columns:1fr auto}.single-pair-query-form .inline-history{grid-column:1/-1}.pair-kpi{grid-template-columns:1fr 1fr}.pair-meta{grid-template-columns:1fr}}

.opened-kpi{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1000px){.opened-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.opened-kpi{grid-template-columns:1fr}}

/* V0.1.21 favorites, market columns, spacing and cleaner numeric inputs */
.pair-card-grid{column-gap:40px;row-gap:48px}
.pair-name-row,.research-pair-title{display:flex;align-items:center;gap:8px;min-width:0}
.favorite-inline-form{margin:0;display:inline-flex;align-items:center}
.favorite-star{appearance:none;border:0;background:transparent;color:#707987;font-size:calc(20px * var(--ui-font-scale));line-height:1;padding:0 2px;cursor:pointer;transition:color .15s ease,transform .15s ease}
.favorite-star:hover{color:#f2c94c;transform:scale(1.08)}
.favorite-star.active{color:#f2c94c}
.research-table-market{min-width:1460px}
.research-market-leg{display:grid;grid-template-columns:minmax(68px,auto) minmax(72px,1fr) auto;align-items:baseline;gap:8px;font-size:calc(11px * var(--ui-font-scale));padding:2px 0;font-variant-numeric:tabular-nums}
.research-market-leg a{font-weight:800;color:#dfe5ec;text-decoration:none}
.research-market-leg a:hover{color:#fff;text-decoration:underline}
.research-market-leg .market-price{color:#c7cdd6;text-align:right}
.research-pair-sub{line-height:1.35}
input[type="number"]{-moz-appearance:textfield;appearance:textfield}
input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
@media(max-width:1450px){.pair-card-grid{column-gap:36px;row-gap:44px}}

/* V0.1.23 pair lifecycle controls */
.pair-actions-split{justify-content:space-between;align-items:center}
.pair-lifecycle-actions{display:flex;align-items:center;gap:10px;margin-left:auto}
.pair-lifecycle-actions form{margin:0}
.pair-control-help{display:block;margin-top:8px;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}
.pair-status.observing{color:#f2c94c;border-color:#6b5b32;background:rgba(242,201,76,.03)}
.pair-lifecycle-actions .danger-btn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:760px){.pair-actions-split{align-items:flex-end}.pair-lifecycle-actions{gap:8px}}


/* V0.1.25 pair management visual hierarchy */
.pair-management-section{
  background:#0b1018;
  border-color:#202a37;
  box-shadow:0 14px 36px rgba(0,0,0,.24);
}
.pair-management-section .panel-head{
  padding:2px 2px 10px;
  border-bottom:1px solid rgba(83,96,114,.24);
  margin-bottom:20px;
}
.pair-management-section .pair-toolbar{
  margin:0 0 22px;
  padding:0 2px;
}
.pair-card-grid{
  column-gap:48px;
  row-gap:56px;
}
.pair-card{
  position:relative;
  background:linear-gradient(180deg,#19212c 0%,#151b24 100%);
  border:1px solid #3a4554;
  border-radius:14px;
  padding:16px;
  box-shadow:0 12px 28px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.025);
  transition:border-color .15s ease, background-color .15s ease, box-shadow .15s ease;
}
@media (hover:hover) and (pointer:fine){
  .pair-card:hover{
    border-color:#526071;
    box-shadow:0 16px 34px rgba(0,0,0,.34), inset 0 1px 0 rgba(255,255,255,.035);
  }
}
.pair-card-head{
  margin-bottom:14px;
  padding-bottom:12px;
  border-bottom:1px solid #303a47;
}
.pair-name{
  font-size:calc(18px * var(--ui-font-scale));
  line-height:1.2;
  color:#f1f4f8;
}
.pair-sub{
  margin-top:6px;
  line-height:1.45;
  color:#919cab;
}
.pair-kpi{
  gap:10px;
  margin-bottom:12px;
}
.pair-kpi>div{
  background:#222a35;
  border-color:#3b4552;
  border-radius:10px;
  padding:10px 11px;
}
.pair-kpi span{
  color:#9ca6b4;
  font-size:calc(10px * var(--ui-font-scale));
}
.pair-kpi strong{
  color:#f0f3f7;
}
.pair-direction{
  gap:10px;
  margin:12px 0;
}
.leg-chip{
  background:#1f2732;
  border-color:#384452;
  border-radius:10px;
  padding:10px 11px;
}
.pair-meta{
  background:#111821;
  border:1px solid #2b3542;
  border-radius:10px;
  padding:11px 12px;
  margin:12px 0;
  gap:7px 14px;
  line-height:1.35;
}
.pair-meta span{
  color:#8e99a8;
}
.pair-plan{
  background:#10161f;
  border:1px solid #2b3542;
  border-radius:10px;
  margin-top:12px;
  padding:8px 11px;
}
.pair-plan-row{
  padding:5px 2px;
  border-bottom:1px solid rgba(70,82,98,.22);
}
.pair-plan-row:last-child{
  border-bottom:0;
}
.pair-edit{
  margin-top:13px;
  background:#0c131d;
  border-color:#2e3947;
}
.pair-edit>summary{
  padding:2px 0;
  color:#dce2ea;
}
.pair-actions{
  border-top:1px solid #303a47;
  padding-top:13px;
  margin-top:13px;
}
.pair-status{
  background:#111820;
}
.pair-status.waiting{
  background:rgba(224,184,79,.07);
}
.pair-status.observing{
  background:rgba(242,201,76,.055);
}
@media(max-width:1450px){
  .pair-card-grid{column-gap:42px;row-gap:48px}
}
@media(max-width:860px){
  .pair-management-section{padding:14px}
  .pair-card-grid{row-gap:28px}
  .pair-card{padding:14px}
}
/* V0.1.25 opened-position monitor cards */
.pair-card-grid.opened{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px 34px}
.position-monitor-card{min-width:0}
.position-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}
.position-kpi-grid>div,.position-summary-grid>div{background:#151a21;border:1px solid #303742;border-radius:8px;padding:9px 10px;min-width:0}
.position-kpi-grid span,.position-summary-grid span{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-bottom:4px}.position-kpi-grid strong,.position-summary-grid strong{font-size:calc(14px * var(--ui-font-scale));font-variant-numeric:tabular-nums}
.position-leg-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.position-leg-card{border:1px solid #303742;border-radius:9px;padding:10px;background:#141920;min-width:0}.position-leg-card.long{border-color:#28584f}.position-leg-card.short{border-color:#66343d}.position-leg-title{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:7px;margin-bottom:8px}.position-leg-title>span{font-size:calc(10px * var(--ui-font-scale));color:var(--muted)}.position-leg-title a{font-size:calc(15px * var(--ui-font-scale));font-weight:700;text-decoration:none;color:var(--text)}.position-leg-title small{font-size:calc(10px * var(--ui-font-scale));white-space:nowrap}.position-leg-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px}.position-leg-stats>div{background:#10151b;border-radius:6px;padding:7px}.position-leg-stats span{display:block;color:var(--muted);font-size:calc(9px * var(--ui-font-scale));margin-bottom:3px}.position-leg-stats strong{font-size:calc(11px * var(--ui-font-scale));font-variant-numeric:tabular-nums}.position-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:10px 0 12px}
@media(max-width:1380px){.pair-card-grid.opened{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.pair-card-grid.opened{grid-template-columns:1fr}.position-leg-grid{grid-template-columns:1fr}.position-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* V0.1.26 position monitor fixes */
.pos{color:#62e6a7 !important;font-weight:700}.neg{color:#ff7a89 !important;font-weight:700}
.pair-status-stack{display:flex;flex-direction:column;align-items:flex-end;gap:5px;max-width:210px}.pair-status-stack small{color:var(--muted);font-size:calc(9px * var(--ui-font-scale));line-height:1.25;text-align:right}
.position-edit{margin-top:12px}.position-edit>summary{display:inline-flex;align-items:center;justify-content:center;width:auto;cursor:pointer;list-style:none}.position-edit>summary::-webkit-details-marker{display:none}.position-edit[open]>summary{margin-bottom:12px}
.position-add-toggle{display:flex;gap:7px;align-items:center;margin-bottom:6px}.position-future-adds{margin-top:10px;display:grid;gap:8px}
.position-leg-stats .js-funding-countdown{font-variant-numeric:tabular-nums}

/* V0.1.27 research scan/model refresh progress */
.research-job-card{min-height:108px}
.research-progress{margin-top:9px;padding-top:8px;border-top:1px solid #2a313a}
.research-progress[hidden]{display:none!important}
.research-progress-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.research-progress-head b{font-size:calc(10px * var(--ui-font-scale));color:#cfd5dd;font-weight:700}
.research-progress-head em{font-size:calc(10px * var(--ui-font-scale));color:#45cbbd;font-style:normal;font-variant-numeric:tabular-nums}
.research-progress-track{height:5px;border-radius:99px;overflow:hidden;background:#252c35;margin-bottom:6px}
.research-progress-track i{display:block;height:100%;width:0;background:#45cbbd;border-radius:inherit;transition:width .25s ease}
.research-progress small{margin-top:3px!important;line-height:1.35}
.research-progress .published-note{color:#697482}

/* V0.1.28 compact opened-position monitor */
.position-monitor-card{padding:13px 14px}
.position-monitor-card .pair-card-head{margin-bottom:7px;padding-bottom:8px}
.position-monitor-card .pair-sub{margin-top:2px}
.position-kpi-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:8px 0}
.position-kpi-grid.compact>div{padding:7px 9px}
.position-kpi-grid.compact span{margin-bottom:2px}
.position-kpi-grid.compact small{display:block;color:var(--muted);font-size:calc(8px * var(--ui-font-scale));margin-top:2px}
.position-leg-grid.compact{gap:7px;margin:8px 0}
.position-leg-grid.compact .position-leg-card{padding:8px 9px}
.position-leg-grid.compact .position-leg-title{margin-bottom:5px}
.position-leg-stats.compact{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.position-leg-stats.compact>div{display:flex;align-items:center;justify-content:space-between;gap:8px;background:transparent;border-bottom:1px solid #242c35;border-radius:0;padding:5px 0;min-width:0}
.position-leg-stats.compact>div:nth-last-child(-n+2){border-bottom-color:#242c35}
.position-leg-stats.compact>div.wide{grid-column:1/-1;border-bottom:0}
.position-leg-stats.compact span{display:inline;margin:0;font-size:calc(9px * var(--ui-font-scale));white-space:nowrap}
.position-leg-stats.compact strong{font-size:calc(10.5px * var(--ui-font-scale));text-align:right;white-space:nowrap}
.position-summary-grid.compact{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:8px 0 9px}
.position-summary-grid.compact>div{padding:7px 8px}
.position-summary-grid.compact span{font-size:calc(8.5px * var(--ui-font-scale));margin-bottom:2px}
.position-summary-grid.compact strong{font-size:calc(11px * var(--ui-font-scale))}
.position-monitor-card .position-edit{margin-top:8px}
.position-monitor-card .pair-actions{margin-top:8px;padding-top:8px}
@media(max-width:900px){.position-kpi-grid.compact{grid-template-columns:1fr}.position-summary-grid.compact{grid-template-columns:repeat(2,minmax(0,1fr))}.position-leg-stats.compact{grid-template-columns:1fr}}

/* V0.1.30 ultra-compact pending-pair monitor cards */
.pending-compact-grid{column-gap:26px;row-gap:30px}
.pending-compact-card{padding:11px 12px}
.pending-compact-card .pair-name{font-size:calc(16px * var(--ui-font-scale))}
.compact-pair-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid #303a47}
.compact-pair-head .pair-name-row{min-width:0}
.compact-pair-head .pair-status-stack{max-width:150px;gap:3px}
.compact-pair-head .pair-status-stack small{font-size:calc(8px * var(--ui-font-scale));max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.compact-monitor-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:7px}
.compact-monitor-row>div{background:#111821;border:1px solid #2d3744;border-radius:7px;padding:6px 7px;min-width:0}
.compact-monitor-row span{display:block;color:var(--muted);font-size:calc(8.5px * var(--ui-font-scale));margin-bottom:2px;white-space:nowrap}
.compact-monitor-row strong{display:block;font-size:calc(12px * var(--ui-font-scale));font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.compact-direction-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 8px;border:1px solid #2c3541;border-radius:7px;background:#151c25;margin-bottom:7px;min-width:0}
.compact-direction-main,.compact-change{display:flex;align-items:center;gap:6px;min-width:0}
.compact-direction-main span,.compact-change span{color:var(--muted);font-size:calc(8.5px * var(--ui-font-scale));white-space:nowrap}
.compact-direction-main a,.compact-direction-main strong{font-size:calc(11px * var(--ui-font-scale));font-weight:800;white-space:nowrap}
.compact-direction-main em{color:#697483;font-style:normal}
.long-text{color:#62e6a7!important}.short-text{color:#ff7a89!important}
.compact-change{justify-content:flex-end;flex-wrap:wrap}
.compact-change b{font-size:calc(9px * var(--ui-font-scale));white-space:nowrap}
.compact-plan-line{display:flex;align-items:center;gap:7px 12px;flex-wrap:wrap;padding:6px 8px;background:#0f151d;border:1px solid #293340;border-radius:7px;font-size:calc(9px * var(--ui-font-scale));line-height:1.25;color:#c8d0da;margin-bottom:8px}
.compact-plan-line span{white-space:nowrap}
.compact-plan-line b{color:#edf1f5}
.compact-card-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid #303a47}
.compact-card-actions-left{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap;min-width:0}
.compact-btn{padding:5px 9px!important;min-height:0!important;font-size:calc(10px * var(--ui-font-scale))!important;line-height:1.2!important;border-radius:7px!important}
.compact-card-actions details{margin:0;padding:0;border:0;background:transparent}
.compact-card-actions summary{list-style:none;cursor:pointer}
.compact-card-actions summary::-webkit-details-marker{display:none}
.compact-info-details{position:relative}
.compact-info-panel{position:absolute;z-index:20;left:0;top:calc(100% + 6px);width:min(430px,75vw);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;background:#0d141d;border:1px solid #394453;border-radius:9px;padding:10px;box-shadow:0 14px 30px rgba(0,0,0,.4)}
.compact-info-panel>div{min-width:0}
.compact-info-panel span{display:block;color:var(--muted);font-size:calc(8.5px * var(--ui-font-scale));margin-bottom:2px}
.compact-info-panel strong{font-size:calc(10px * var(--ui-font-scale));line-height:1.35;word-break:break-word}
.compact-info-panel .wide{grid-column:1/-1}
.compact-edit{position:relative}
.compact-edit>form{position:absolute;z-index:19;left:0;top:calc(100% + 6px);width:min(620px,82vw);max-height:70vh;overflow:auto;background:#0c131d;border:1px solid #394453;border-radius:10px;padding:12px;box-shadow:0 16px 34px rgba(0,0,0,.45)}
.compact-edit[open]>summary{margin-bottom:0}
.pending-compact-card .pair-lifecycle-actions{display:flex;gap:6px;flex-wrap:nowrap}
@media(max-width:1450px){.pending-compact-grid{column-gap:24px;row-gap:28px}}
@media(max-width:1050px){.compact-monitor-row{grid-template-columns:repeat(2,minmax(0,1fr))}.compact-direction-row{align-items:flex-start;flex-direction:column}.compact-change{justify-content:flex-start}.compact-info-panel,.compact-edit>form{position:fixed;left:5vw;right:5vw;top:12vh;width:auto;max-height:76vh}}
@media(max-width:760px){.pending-compact-grid{row-gap:18px}.pending-compact-card{padding:10px}.compact-card-actions{align-items:flex-end}.compact-card-actions-left{gap:5px}.compact-plan-line{gap:5px 8px}}

/* V0.1.31 pair parameter modal + compact-card readability */
body.pair-param-modal-open{overflow:hidden}
.pair-param-modal{position:fixed;inset:0;z-index:1200;display:none;align-items:center;justify-content:center;padding:24px}
.pair-param-modal.open{display:flex}
.pair-param-modal-backdrop{position:absolute;inset:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:rgba(2,7,13,.76);cursor:default}
.pair-param-modal-dialog{position:relative;z-index:1;width:min(860px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;background:#0b131d;border:1px solid #435064;border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.58);padding:22px 22px 18px}
.pair-param-modal-dialog.pending-param-dialog{width:min(900px,calc(100vw - 48px))}
.pair-param-modal-head{padding:0 46px 15px 0;margin-bottom:4px;border-bottom:1px solid #303b49}
.pair-param-modal-head h3{margin:0 0 5px;font-size:calc(21px * var(--ui-font-scale));line-height:1.2;color:#edf2f8}
.pair-param-modal-head small{font-size:calc(12px * var(--ui-font-scale));color:#8f9aaa}
.pair-param-modal-x{position:absolute;right:15px;top:13px;width:36px;height:36px;padding:0;border:0;background:transparent;color:#aeb8c5;font-size:calc(30px * var(--ui-font-scale));line-height:34px;cursor:pointer;border-radius:8px}
.pair-param-modal-x:hover{background:#18222e;color:#fff}
.pair-param-modal .pair-edit-form{padding-top:0}
.pair-param-modal .pair-edit-section{padding:16px 0}
.pair-param-modal .pair-edit-section h4{font-size:calc(14px * var(--ui-font-scale));margin-bottom:11px}
.pair-param-modal .pair-edit-grid{gap:14px 16px}
.pair-param-modal .pair-edit-grid label,.pair-param-modal .pair-toggle-row label{font-size:calc(12px * var(--ui-font-scale))}
.pair-param-modal .pair-edit-grid input,.pair-param-modal select,.pair-param-modal .pair-add-row input{font-size:calc(14px * var(--ui-font-scale));padding:10px 11px}
.pair-param-modal .pair-add-row{padding:12px}
.pair-param-modal .pair-edit-actions{padding-top:14px;border-top:1px solid #303b49}
.pair-param-modal .pair-edit-actions button{font-size:calc(13px * var(--ui-font-scale));padding:9px 15px}

/* Increase the compact monitor card typography without restoring the old tall layout. */
.pending-compact-card .pair-name{font-size:calc(18px * var(--ui-font-scale))}
.compact-monitor-row span{font-size:calc(10px * var(--ui-font-scale))}
.compact-monitor-row strong{font-size:calc(14px * var(--ui-font-scale))}
.compact-direction-main span,.compact-change span{font-size:calc(10px * var(--ui-font-scale))}
.compact-direction-main a,.compact-direction-main strong{font-size:calc(13px * var(--ui-font-scale))}
.compact-change b{font-size:calc(11px * var(--ui-font-scale))}
.compact-plan-line{font-size:calc(10.5px * var(--ui-font-scale))}
.compact-btn{font-size:calc(11.5px * var(--ui-font-scale))!important;padding:6px 10px!important}

@media(max-width:760px){
  .pair-param-modal{padding:10px}
  .pair-param-modal-dialog,.pair-param-modal-dialog.pending-param-dialog{width:calc(100vw - 20px);max-height:calc(100vh - 20px);padding:18px 14px 14px}
  .pair-param-modal .pair-edit-grid{grid-template-columns:1fr}
  .pair-param-modal-head h3{font-size:calc(19px * var(--ui-font-scale))}
}

/* V0.1.32 unified Chinese status badges */
.pair-status.waiting{background:#16885f!important;border-color:#26b982!important;color:#fff!important;font-weight:800}
.pair-status.observing{background:#c69422!important;border-color:#e0b84f!important;color:#fff!important;font-weight:800}
.pair-status.abnormal{background:#b93b4b!important;border-color:#e15b6c!important;color:#fff!important;font-weight:800}
.pair-status-stack small{max-width:220px;color:#aeb7c3;font-size:calc(9px * var(--ui-font-scale));line-height:1.3;text-align:right}

/* V0.1.32 formal history-position review */
.history-position-panel{padding:14px}
.history-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:12px}
.history-head h2{margin:0 0 3px}.history-head small{color:var(--muted)}
.pair-history-table{width:100%;min-width:0;table-layout:fixed}
.pair-history-table th,.pair-history-table td{white-space:nowrap;vertical-align:middle}
.pair-history-table .history-pair{font-size:calc(13px * var(--ui-font-scale));color:#e8edf3}
.pair-history-table .history-time{font-variant-numeric:tabular-nums;color:#c8d0da}
.history-main-row td{border-bottom:0}
.history-detail-row td{padding:0 8px 8px;background:#11161d;border-top:0}
.history-position-detail{border-top:1px solid #2c3440;padding-top:5px}
.history-position-detail>summary{display:inline-flex;align-items:center;cursor:pointer;color:#94d8cb;font-size:calc(11px * var(--ui-font-scale));padding:5px 4px;list-style:none}
.history-position-detail>summary::-webkit-details-marker{display:none}
.history-position-detail>summary:before{content:'＋';margin-right:5px;color:#6e7a88}.history-position-detail[open]>summary:before{content:'－'}
.history-summary-grid{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:7px;margin:8px 0 13px}
.history-summary-grid>div{background:#151b23;border:1px solid #2e3743;border-radius:7px;padding:8px 9px;min-width:0}
.history-summary-grid span{display:block;color:var(--muted);font-size:calc(9px * var(--ui-font-scale));margin-bottom:3px}.history-summary-grid strong{font-size:calc(12px * var(--ui-font-scale));font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.history-subtitle{margin:14px 0 7px;font-size:calc(12px * var(--ui-font-scale));color:#dce3eb}
.history-inner-scroll{max-height:300px;border:1px solid #29313b;border-radius:7px}
.history-inner-table{min-width:1100px;margin:0}.history-inner-table th{background:#1a2029}.history-inner-table th,.history-inner-table td{font-size:calc(10px * var(--ui-font-scale));padding:6px 8px}
@media(max-width:1100px){.history-summary-grid{grid-template-columns:repeat(3,minmax(120px,1fr))}.history-head{align-items:flex-start;flex-direction:column}}
/* V0.1.33: compact open-position action row + anchored trend preview modal */
.position-monitor-card .position-bottom-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid #35404d}
.position-monitor-card .position-bottom-actions .secondary-btn,.position-monitor-card .position-bottom-actions .danger-btn{margin:0}
.position-trend-dialog{width:min(1440px,calc(100vw - 36px));padding-bottom:14px}
.position-trend-loading{min-height:180px;display:flex;align-items:center;justify-content:center;gap:14px;color:#aeb8c5}
.position-trend-loading[hidden],.position-trend-content[hidden],.position-trend-error[hidden]{display:none!important}
.position-trend-loading strong{display:block;color:#edf2f8;font-size:calc(15px * var(--ui-font-scale));margin-bottom:5px}
.position-trend-loading p{margin:0;color:#8390a1;font-size:calc(12px * var(--ui-font-scale))}
.position-trend-error{margin:14px 0;padding:12px 14px;border:1px solid #753541;border-radius:9px;background:#2b151b;color:#ff9eaa;font-size:calc(13px * var(--ui-font-scale))}
.position-trend-content{display:grid;grid-template-columns:1fr;gap:9px;padding-top:10px}
.position-mini-chart{background:#101721;border:1px solid #2e3947;border-radius:10px;padding:8px 10px 9px}
.position-mini-chart-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:0 4px 5px;min-height:24px}
.position-mini-chart-head strong{font-size:calc(14px * var(--ui-font-scale));color:#edf2f8}
.position-mini-chart-head span{font-size:calc(11px * var(--ui-font-scale));color:#8390a1}
.position-mini-chart-wrap{height:258px;min-height:258px;border-radius:8px}
.position-trend-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid #303b49}
@media(max-width:760px){.position-trend-dialog{width:calc(100vw - 20px)}.position-mini-chart-head{align-items:flex-start;flex-direction:column;gap:3px}.position-mini-chart-wrap{height:210px;min-height:210px;overflow-x:auto}.position-trend-actions{justify-content:stretch}.position-trend-actions>*{flex:1;justify-content:center}.position-monitor-card .position-bottom-actions{gap:8px}}


/* V0.1.34: denser open-position comparison matrix + explicit executed/pending ADD plan */
.position-leg-compare{margin:8px 0;border:1px solid #303a47;border-radius:9px;overflow:hidden;background:#121820}
.position-compare-head,.position-compare-row{display:grid;grid-template-columns:minmax(105px,.72fr) minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8px;padding:7px 10px}
.position-compare-head{background:#161e28;border-bottom:1px solid #303a47}.position-compare-head strong{font-size:calc(13px * var(--ui-font-scale))}.position-compare-head a{color:inherit;text-decoration:none}.position-compare-head a:hover{text-decoration:underline}
.position-compare-row{border-bottom:1px solid #252e39}.position-compare-row:last-child{border-bottom:0}.position-compare-row>span{color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}.position-compare-row>strong{font-size:calc(11.5px * var(--ui-font-scale));font-variant-numeric:tabular-nums}
.position-summary-lines{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:8px 0}.position-summary-lines>div{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 9px;background:#151a21;border:1px solid #303742;border-radius:7px}.position-summary-lines span{font-size:calc(9px * var(--ui-font-scale));color:var(--muted);white-space:nowrap}.position-summary-lines strong{font-size:calc(11px * var(--ui-font-scale));white-space:nowrap}
.position-add-status{display:grid;grid-template-columns:64px 1fr;gap:9px;align-items:start;margin:8px 0;padding:7px 9px;border:1px solid #303742;border-radius:7px;background:#111821}.position-add-status-label{font-size:calc(10px * var(--ui-font-scale));color:var(--muted);font-weight:700}.position-add-status-content{display:flex;flex-direction:column;gap:4px;font-size:calc(10px * var(--ui-font-scale));line-height:1.35}.position-add-status-content .executed{color:#cbd3dc}.position-add-status-content .pending{color:#9eb7d1}.position-add-status-content b{color:#eef3f8}
@media(max-width:900px){.position-compare-head,.position-compare-row{grid-template-columns:86px 1fr 1fr}.position-summary-lines{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.position-summary-lines{grid-template-columns:1fr}.position-add-status{grid-template-columns:1fr}}

/* V0.1.35: four-column open-position grid + shared lifecycle actions */
.pair-card-grid.opened{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:18px 18px;
}
.opened-section .position-monitor-card{padding:11px 12px}
.opened-section .position-monitor-card .pair-card-head{margin-bottom:6px;padding-bottom:7px}
.opened-section .position-kpi-grid.compact{gap:6px;margin:7px 0}
.opened-section .position-kpi-grid.compact>div{padding:6px 7px}
.opened-section .position-leg-compare{margin:7px 0}
.opened-section .position-compare-head,.opened-section .position-compare-row{grid-template-columns:minmax(78px,.68fr) minmax(0,1fr) minmax(0,1fr);gap:6px;padding:6px 7px}
.opened-section .position-compare-head strong{font-size:calc(11.5px * var(--ui-font-scale))}
.opened-section .position-compare-row>span{font-size:calc(9px * var(--ui-font-scale))}
.opened-section .position-compare-row>strong{font-size:calc(10.5px * var(--ui-font-scale))}
.opened-section .position-summary-lines{gap:5px;margin:7px 0}
.opened-section .position-summary-lines>div{padding:6px 7px}
.opened-section .position-summary-lines span{font-size:calc(8px * var(--ui-font-scale))}
.opened-section .position-summary-lines strong{font-size:calc(10px * var(--ui-font-scale))}
.opened-section .position-add-status{grid-template-columns:52px 1fr;gap:6px;margin:7px 0;padding:6px 7px}
.opened-section .position-add-status-label,.opened-section .position-add-status-content{font-size:calc(9px * var(--ui-font-scale))}
.opened-section .position-bottom-actions{gap:6px;margin-top:7px;padding-top:7px}
.opened-section .position-bottom-actions .secondary-btn,.opened-section .position-bottom-actions .danger-btn{font-size:calc(10px * var(--ui-font-scale));padding:6px 8px}
@media(max-width:1599px){.pair-card-grid.opened{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}}
@media(max-width:1320px){.pair-card-grid.opened{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}}
@media(max-width:820px){.pair-card-grid.opened{grid-template-columns:1fr}.opened-section .position-compare-head,.opened-section .position-compare-row{grid-template-columns:82px 1fr 1fr}}

.lifecycle-action{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:6px 10px;border-radius:8px;border:1px solid transparent;color:#fff!important;text-decoration:none!important;font-size:calc(11px * var(--ui-font-scale));font-weight:800;white-space:nowrap}
.lifecycle-action.waiting{background:#16885f;border-color:#26b982}
.lifecycle-action.observing{background:#c69422;border-color:#e0b84f}
.lifecycle-action.abnormal{background:#b93b4b;border-color:#e15b6c}
.lifecycle-action:hover{filter:brightness(1.08)}

/* V0.1.40: newest-first open positions + compact live holding duration beside status. */
.opened-section .position-head-status{display:flex;align-items:flex-start;justify-content:flex-end;gap:6px;min-width:0}
.opened-section .position-holding-duration{display:inline-flex;align-items:center;min-height:22px;padding:3px 7px;border:1px solid #445264;border-radius:999px;color:#b9c3cf;background:#121a24;font-size:calc(9px * var(--ui-font-scale));font-weight:700;line-height:1;white-space:nowrap}
@media(max-width:820px){.opened-section .position-head-status{gap:5px}.opened-section .position-holding-duration{font-size:calc(8px * var(--ui-font-scale));padding:3px 6px}}

/* V0.1.42 authentication and administrator user management */
.auth-page{min-height:100vh;margin:0;background:radial-gradient(circle at 50% 10%,#16212e 0,#0b1118 46%,#070b10 100%);color:#edf2f8;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif}
.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:28px}
.auth-card{width:min(430px,calc(100vw - 32px));background:#111923;border:1px solid #334151;border-radius:18px;padding:30px;box-shadow:0 24px 80px rgba(0,0,0,.38)}
.auth-brand{display:flex;align-items:center;gap:14px}.auth-brand img{width:46px;height:46px}.auth-eyebrow{font-size:calc(12px * var(--ui-font-scale));color:#7fd5c4;font-weight:800;letter-spacing:.12em}.auth-brand h1{margin:3px 0 0;font-size:calc(25px * var(--ui-font-scale))}.auth-subtitle{margin:18px 0;color:#93a0b0;font-size:calc(13px * var(--ui-font-scale))}
.auth-form{display:grid;gap:15px}.auth-form label{display:grid;gap:7px;color:#bdc7d3;font-size:calc(12px * var(--ui-font-scale));font-weight:700}.auth-form input{width:100%;box-sizing:border-box;background:#0d141d;border:1px solid #364353;border-radius:9px;color:#eef3f8;padding:12px 13px;font-size:calc(14px * var(--ui-font-scale))}.auth-form input:focus{outline:none;border-color:#49bda7;box-shadow:0 0 0 2px rgba(73,189,167,.13)}.auth-submit{width:100%;margin-top:4px;padding:11px 14px;font-size:calc(14px * var(--ui-font-scale))}.auth-error,.auth-warning{padding:10px 12px;border-radius:8px;margin:0 0 14px;font-size:calc(12px * var(--ui-font-scale));line-height:1.45}.auth-error{background:#321820;border:1px solid #7b3545;color:#ff9aaa}.auth-warning{background:#302817;border:1px solid #765f27;color:#f2cc70}.auth-foot{margin-top:16px;color:#6f7b8a;font-size:calc(11px * var(--ui-font-scale));text-align:center}
.sidebar-user{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:11px;padding-bottom:10px;border-bottom:1px solid #26313d}.sidebar-user strong{display:block;color:#e8edf3;font-size:calc(11px * var(--ui-font-scale));max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user small{display:block;margin-top:2px;color:#7e8b9a;font-size:calc(9px * var(--ui-font-scale))}.sidebar-user form{margin:0}.sidebar-user button{border:1px solid #3d4855;background:#161d26;color:#cbd4df;border-radius:6px;padding:4px 7px;font-size:calc(9px * var(--ui-font-scale));cursor:pointer}.sidebar-user button:hover{background:#202a36;color:#fff}
.user-create-panel{margin-bottom:14px}.user-create-panel h2{margin:0 0 12px}.user-create-grid{display:grid;grid-template-columns:repeat(6,minmax(140px,1fr));gap:10px;align-items:end}.user-create-grid label,.user-edit-form label{display:grid;gap:5px;color:#9eabb9;font-size:calc(10px * var(--ui-font-scale))}.user-create-grid input,.user-create-grid select,.user-edit-form input,.user-edit-form select,.user-reset-form input{background:#111820;border:1px solid #344150;border-radius:7px;color:#e8edf3;padding:8px 9px}.user-create-grid small{color:#6f7c8b}.user-create-action{display:flex;align-items:end}.user-table{min-width:1450px}.user-table th,.user-table td{white-space:nowrap}.user-status{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:calc(10px * var(--ui-font-scale));font-weight:800;color:#fff}.user-status.active{background:#16885f}.user-status.disabled{background:#a23b49}.expired-row{opacity:.74}.user-edit-details>summary{cursor:pointer;color:#a9d6cc;font-weight:700}.user-edit-details[open]{min-width:280px}.user-edit-form{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;padding:10px;background:#10161e;border:1px solid #303a46;border-radius:8px}.user-edit-form button{align-self:end}.user-reset-form{display:flex;gap:7px;margin-top:7px}.user-reset-form input{min-width:170px}.user-reset-form button{white-space:nowrap}
@media(max-width:1500px){.user-create-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}}@media(max-width:760px){.user-create-grid{grid-template-columns:1fr}.auth-card{padding:22px 18px}.auth-shell{padding:16px}}

/* V0.2.0-D4.1: user management modal + inline validity hint */
.user-validity-label{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.user-validity-label small{color:#6f7c8b;font-size:calc(9px * var(--ui-font-scale));font-weight:500;white-space:nowrap}.user-manage-btn{border:1px solid #3b4a59;background:#111820;color:#a9d6cc;border-radius:7px;padding:7px 11px;font-weight:700;cursor:pointer}.user-manage-btn:hover{background:#19232d;color:#d8f3ec;border-color:#526578}body.user-manage-modal-open{overflow:hidden}.user-manage-modal{position:fixed;inset:0;z-index:1600;display:none;align-items:center;justify-content:center;padding:24px}.user-manage-modal.open{display:flex}.user-manage-modal-backdrop{position:absolute;inset:0;width:100%;height:100%;padding:0;margin:0;border:0;border-radius:0;background:rgba(2,7,13,.76);cursor:default}.user-manage-modal-dialog{position:relative;z-index:1;width:min(760px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;background:#0b131d;border:1px solid #435064;border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.58);padding:22px}.user-manage-modal-head{display:flex;align-items:flex-start;justify-content:space-between;padding:0 46px 15px 0;margin-bottom:16px;border-bottom:1px solid #303b49}.user-manage-modal-head h2{margin:0;font-size:calc(21px * var(--ui-font-scale));color:#edf2f8}.user-manage-modal-head p{margin:5px 0 0;color:#8f9aaa;font-size:calc(12px * var(--ui-font-scale))}.user-manage-modal-x{position:absolute;right:15px;top:13px;width:36px;height:36px;padding:0;border:0;background:transparent;color:#aeb8c5;font-size:calc(30px * var(--ui-font-scale));line-height:34px;cursor:pointer;border-radius:8px}.user-manage-modal-x:hover{background:#18222e;color:#fff}.user-manage-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.user-manage-form label,.user-manage-reset-form label{display:grid;gap:6px;color:#9eabb9;font-size:calc(11px * var(--ui-font-scale))}.user-manage-form input,.user-manage-form select,.user-manage-reset-form input{background:#111820;border:1px solid #344150;border-radius:7px;color:#e8edf3;padding:9px 10px}.user-manage-notes{grid-column:1/-1}.user-manage-save{grid-column:1/-1;display:flex;justify-content:flex-end}.user-manage-divider{height:1px;background:#303b49;margin:18px 0}.user-manage-reset-form{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}.user-manage-reset-form button{white-space:nowrap}@media(max-width:760px){.user-manage-modal{padding:10px}.user-manage-modal-dialog{width:calc(100vw - 20px);max-height:calc(100vh - 20px);padding:18px 14px}.user-manage-form{grid-template-columns:1fr}.user-manage-notes,.user-manage-save{grid-column:auto}.user-manage-reset-form{grid-template-columns:1fr}.user-manage-reset-form button{width:100%}}


/* V0.2.0-D4.2: compact trade parameter modal, modal research detail, top trend action, production lifecycle logs */
.trend-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-right:54px}.trend-modal-head>div{min-width:0}.trend-more-btn{flex:0 0 auto;margin-top:1px}.position-trend-dialog .position-trend-actions{display:none}
.pending-detail-dialog{width:min(700px,calc(100vw - 48px))}.pending-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;padding-top:14px}.pending-detail-grid>div{background:#111923;border:1px solid #2f3b49;border-radius:9px;padding:11px 12px}.pending-detail-grid span{display:block;color:#8996a6;font-size:calc(11px * var(--ui-font-scale));margin-bottom:4px}.pending-detail-grid strong{font-size:calc(14px * var(--ui-font-scale));line-height:1.4}.pending-detail-grid .wide{grid-column:1/-1}
.pair-param-modal-dialog.pending-param-dialog{width:min(880px,calc(100vw - 48px));padding:17px 18px 14px}.pending-param-dialog .pair-param-modal-head{padding-bottom:10px}.pending-param-dialog .pair-param-modal-head h3{font-size:calc(19px * var(--ui-font-scale))}.pending-param-dialog .pair-edit-section{padding:10px 0}.pending-param-dialog .pair-edit-section h4{margin-bottom:7px}.pending-param-dialog .pair-toggle-row{gap:10px}.pending-param-dialog .pair-control-help{margin-top:5px}.pending-param-dialog .pair-edit-grid{gap:9px 12px}.pending-param-dialog .pair-edit-grid label{gap:4px}.pending-param-dialog .pair-edit-grid input,.pending-param-dialog select,.pending-param-dialog .pair-add-row input{padding:8px 9px;font-size:calc(13px * var(--ui-font-scale))}.pending-param-dialog .pair-add-head{margin-bottom:7px}.pending-param-dialog .pair-add-list{gap:6px}.pending-param-dialog .pair-add-row{grid-template-columns:100px minmax(0,1fr) minmax(0,1fr);gap:9px 12px;padding:8px 10px;align-items:end}.pending-param-dialog .pair-add-row label{gap:4px}.pending-param-dialog .pair-add-row-title{font-size:calc(14px * var(--ui-font-scale))}.pair-label-inline{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.pair-label-inline small{font-size:calc(9px * var(--ui-font-scale))!important;color:#788392!important;white-space:nowrap}.pending-param-dialog .pair-edit-actions{padding-top:10px}.pending-param-dialog .pair-edit-actions button{padding:8px 14px}
.lifecycle-production-panel{padding-top:14px}.log-production-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.log-production-head>div:first-child{display:grid;gap:3px}.log-production-head>div:first-child strong{font-size:calc(16px * var(--ui-font-scale))}.log-production-head small{color:var(--muted);font-size:calc(11px * var(--ui-font-scale))}.lifecycle-production-table th,.lifecycle-production-table td{vertical-align:middle}.lifecycle-production-table .table-sub{display:block;margin-top:3px;color:#7f8b99;font-size:calc(10px * var(--ui-font-scale))}.lifecycle-production-table .log-reason-cell{max-width:260px;line-height:1.45}.log-status-pill{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;font-size:calc(10px * var(--ui-font-scale));font-weight:700;white-space:nowrap;border:1px solid #3a4654;background:#18212b;color:#cbd4de}.log-status-pill.success{background:#123428;border-color:#23654c;color:#77e2b7}.log-status-pill.warn{background:#3a2d13;border-color:#6d5520;color:#f2c862}.log-status-pill.error{background:#3b171d;border-color:#71303b;color:#ff9aa8}.log-status-pill.neutral{background:#202832;border-color:#3a4654;color:#bec8d3}
body.log-detail-modal-open{overflow:hidden}.log-detail-modal{position:fixed;inset:0;z-index:1700;display:none;align-items:center;justify-content:center;padding:24px}.log-detail-modal.open{display:flex}.log-detail-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:rgba(2,7,13,.78)}.log-detail-dialog{position:relative;z-index:1;width:min(1040px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;background:#0b131d;border:1px solid #435064;border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.6);padding:20px}.log-detail-x{position:absolute;right:14px;top:11px;width:36px;height:36px;border:0;background:transparent;color:#aeb8c5;font-size:calc(29px * var(--ui-font-scale));cursor:pointer;border-radius:8px}.log-detail-x:hover{background:#18222e;color:#fff}.log-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:0 46px 13px 0;border-bottom:1px solid #303b49}.log-detail-head h2{margin:0;font-size:calc(20px * var(--ui-font-scale))}.log-detail-head p{margin:5px 0 0;color:#8f9aaa;font-size:calc(11px * var(--ui-font-scale))}.log-detail-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:13px}.log-detail-summary-grid>div,.log-truth-grid>div{background:#111923;border:1px solid #2f3b49;border-radius:8px;padding:9px 10px;min-width:0}.log-detail-summary-grid span,.log-truth-grid span{display:block;color:#8996a6;font-size:calc(10px * var(--ui-font-scale));margin-bottom:3px}.log-detail-summary-grid strong,.log-truth-grid strong{font-size:calc(12px * var(--ui-font-scale));word-break:break-word}.log-detail-section{margin-top:14px}.log-detail-section h3{font-size:calc(13px * var(--ui-font-scale));margin:0 0 7px}.log-leg-table td,.log-leg-table th{font-size:calc(10.5px * var(--ui-font-scale))}.log-truth-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.log-truth-grid small{display:block;margin-top:3px;color:#7f8b99;font-size:calc(9.5px * var(--ui-font-scale))}.log-detail-summary-line{padding:10px 12px;background:#111923;border:1px solid #2f3b49;border-radius:8px;color:#d8e0e9}.log-technical-details{margin-top:14px;border-top:1px solid #303b49;padding-top:10px}.log-technical-details summary{cursor:pointer;color:#8996a6;font-size:calc(11px * var(--ui-font-scale))}.log-technical-details .json-block{margin-top:8px;max-height:320px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all}.nowrap{white-space:nowrap}
@media(max-width:900px){.log-detail-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.trend-modal-head{flex-direction:column;padding-right:46px}.pending-detail-grid{grid-template-columns:1fr}.pending-detail-grid .wide{grid-column:auto}.pair-label-inline{align-items:flex-start;flex-direction:column;gap:2px}.pair-label-inline small{white-space:normal}}
@media(max-width:760px){.log-detail-modal{padding:10px}.log-detail-dialog{width:calc(100vw - 20px);max-height:calc(100vh - 20px);padding:16px 12px}.log-detail-summary-grid,.log-truth-grid{grid-template-columns:1fr}.log-production-head{align-items:flex-start;flex-direction:column}.pending-param-dialog .pair-add-row{grid-template-columns:1fr}}

/* V0.2.0-D4.3: compact centered settings/API pages + five-column position monitor */
.settings-page-shell,.api-page-shell{width:min(1040px,calc(100vw - 56px));margin:0 auto}
.compact-page-topbar{padding-left:2px;padding-right:2px}
.settings-page-shell .settings-form{display:grid;gap:9px}
.settings-page-shell .settings-group{margin:0;background:#111820;border:1px solid #2f3946;border-radius:11px;padding:0 13px}
.settings-page-shell .settings-group summary{cursor:pointer;padding:11px 1px;font-size:calc(13px * var(--ui-font-scale));font-weight:800;color:#e3e9f0}
.settings-page-shell .settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 20px;padding:2px 0 12px}
.settings-page-shell .setting-field{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label control" "help help";align-items:center;gap:4px 12px;min-width:0;font-size:calc(11px * var(--ui-font-scale))}
.settings-page-shell .setting-field>span:first-child{grid-area:label}
.settings-page-shell .setting-field>input,.settings-page-shell .setting-field>select,.settings-page-shell .setting-field>strong{grid-area:control}
.settings-page-shell .setting-field>small{grid-area:help;line-height:1.35;margin:0;color:#778596;font-size:calc(9.5px * var(--ui-font-scale))}
.settings-page-shell .setting-field input[type="number"],.settings-page-shell .setting-field input[type="text"],.settings-page-shell .setting-field input[type="password"]{width:210px;max-width:100%;height:32px;padding:5px 8px;border-radius:7px;box-sizing:border-box}
.settings-page-shell .setting-field input[type="checkbox"]{width:17px;height:17px;justify-self:end}
.settings-page-shell .sticky-actions{position:sticky;bottom:10px;z-index:5;display:flex;justify-content:flex-end;gap:8px;width:max-content;max-width:100%;margin:4px 0 0 auto;padding:7px;background:rgba(14,20,28,.92);border:1px solid #35404d;border-radius:10px;backdrop-filter:blur(8px)}
.settings-page-shell .sticky-actions button{padding:7px 12px;font-size:calc(11px * var(--ui-font-scale))}

.api-page-shell{width:min(900px,calc(100vw - 56px))}
.api-credential-panel{padding:18px 20px}
.api-credential-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:13px;border-bottom:1px solid #303a47}
.api-credential-head h2{margin:0;font-size:calc(19px * var(--ui-font-scale))}.api-credential-head p{margin:5px 0 0;color:#8e9aaa;font-size:calc(11px * var(--ui-font-scale));line-height:1.45;max-width:620px}
.api-status-badges{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.api-state{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;border:1px solid #44505f;background:#151d27;color:#aab5c3;font-size:calc(10px * var(--ui-font-scale));font-weight:800;white-space:nowrap}.api-state.ready{border-color:#2b745d;background:#15382d;color:#7cebb6}.api-state.idle{border-color:#63542e;background:#2c2818;color:#e8ca73}
.api-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:13px 0}.api-status-grid>div{padding:8px 9px;border:1px solid #303a47;border-radius:8px;background:#101720;min-width:0}.api-status-grid span{display:block;color:#7f8b9a;font-size:calc(9px * var(--ui-font-scale));margin-bottom:3px}.api-status-grid strong{display:block;font-size:calc(10.5px * var(--ui-font-scale));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.api-warning,.api-legacy-note{padding:9px 10px;border-radius:8px;font-size:calc(10px * var(--ui-font-scale));line-height:1.45;margin:9px 0}.api-warning{border:1px solid #733845;background:#2a171d;color:#ff9eaa}.api-legacy-note{border:1px solid #46556a;background:#151d27;color:#9ba9ba}
.api-credential-form{display:grid!important;grid-template-columns:1fr 1fr auto;align-items:end;gap:10px!important;margin-top:12px}.api-credential-form label{display:grid!important;gap:4px!important;font-size:calc(10px * var(--ui-font-scale))!important}.api-credential-form input{height:34px!important;padding:6px 9px!important}.api-save-btn{height:34px;padding:6px 12px;white-space:nowrap}
.api-action-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:12px}.api-action-row form{margin:0}.api-action-row button{padding:7px 10px;font-size:calc(10px * var(--ui-font-scale))}
.api-result-card{margin-top:12px;padding:11px;border:1px solid #303a47;border-radius:9px;background:#0e151e}.api-result-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.api-result-head strong{font-size:calc(12px * var(--ui-font-scale))}.api-result-head span{font-size:calc(10px * var(--ui-font-scale));color:#9aa6b5}.api-result-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.api-result-grid>div{padding:7px 8px;border-radius:7px;background:#151d27}.api-result-grid span{display:block;font-size:calc(8.5px * var(--ui-font-scale));color:#7e8b9a;margin-bottom:2px}.api-result-grid strong{font-size:calc(10px * var(--ui-font-scale));word-break:break-word}.api-raw-result{margin-top:9px}.api-raw-result summary{font-size:calc(9.5px * var(--ui-font-scale));color:#7f8b99;cursor:pointer}.api-raw-result pre{max-height:260px;overflow:auto;font-size:calc(9.5px * var(--ui-font-scale))}.api-footnote{margin-top:12px;color:#738091;font-size:calc(9.5px * var(--ui-font-scale));line-height:1.45}

/* Five cards on wide desktop; narrower summary tile for leverage. */
.pair-card-grid.opened{grid-template-columns:repeat(5,minmax(0,1fr));gap:13px}
.opened-section .position-monitor-card{padding:9px 10px}
.opened-section .position-monitor-card .pair-name{font-size:calc(15px * var(--ui-font-scale))}
.opened-section .position-monitor-card .pair-sub{font-size:calc(9px * var(--ui-font-scale))}
.opened-section .position-kpi-grid.compact>div{padding:5px 6px}
.opened-section .position-kpi-grid.compact span{font-size:calc(8px * var(--ui-font-scale))}.opened-section .position-kpi-grid.compact strong{font-size:calc(12px * var(--ui-font-scale))}
.opened-section .position-compare-head,.opened-section .position-compare-row{grid-template-columns:minmax(60px,.62fr) minmax(0,1fr) minmax(0,1fr);gap:4px;padding:5px 6px}
.opened-section .position-compare-head strong{font-size:calc(10.5px * var(--ui-font-scale))}.opened-section .position-compare-row>span{font-size:calc(8px * var(--ui-font-scale))}.opened-section .position-compare-row>strong{font-size:calc(9.5px * var(--ui-font-scale))}
.opened-section .position-summary-lines{grid-template-columns:minmax(0,1.05fr) minmax(0,.92fr) minmax(0,.9fr) minmax(52px,.48fr);gap:4px}
.opened-section .position-summary-lines>div{padding:5px 6px;gap:4px}.opened-section .position-summary-lines span{font-size:calc(7.5px * var(--ui-font-scale))}.opened-section .position-summary-lines strong{font-size:calc(9px * var(--ui-font-scale))}
.opened-section .position-add-status{grid-template-columns:44px 1fr;padding:5px 6px}.opened-section .position-add-status-label,.opened-section .position-add-status-content{font-size:calc(8px * var(--ui-font-scale))}
.opened-section .position-bottom-actions .secondary-btn,.opened-section .position-bottom-actions .danger-btn{font-size:calc(9px * var(--ui-font-scale));padding:5px 7px}
@media(max-width:1799px){.pair-card-grid.opened{grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}}
@media(max-width:1499px){.pair-card-grid.opened{grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}}
@media(max-width:1140px){.pair-card-grid.opened{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}
@media(max-width:760px){.settings-page-shell,.api-page-shell{width:calc(100vw - 24px)}.settings-page-shell .settings-grid{grid-template-columns:1fr}.settings-page-shell .setting-field{grid-template-columns:1fr;grid-template-areas:"label" "control" "help"}.settings-page-shell .setting-field input[type="number"],.settings-page-shell .setting-field input[type="text"],.settings-page-shell .setting-field input[type="password"]{width:100%}.api-credential-head{flex-direction:column}.api-status-badges{justify-content:flex-start}.api-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.api-credential-form{grid-template-columns:1fr}.api-save-btn{width:100%}.api-result-grid{grid-template-columns:1fr}.pair-card-grid.opened{grid-template-columns:1fr}}

/* V0.2.0-D4.4 unified Research model source */
.model-source-badge{display:inline-flex;width:max-content;margin-top:3px;padding:3px 7px;border-radius:999px;font-size:calc(10px * var(--ui-font-scale));font-weight:700}.model-source-badge.official{color:#63ddb0;background:rgba(49,197,142,.10);border:1px solid rgba(49,197,142,.28)}.model-source-badge.temporary{color:#f3c96b;background:rgba(243,201,107,.09);border:1px solid rgba(243,201,107,.26)}.model-source-notice{margin:10px 0}

/* V0.2.0-D4.5 unified trend modals, readable open cards, rounded favorites */
.favorite-star{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:50%;background:transparent;color:#748091;transition:color .15s ease,background-color .15s ease,border-color .15s ease,transform .15s ease}
.favorite-star-icon{width:18px;height:18px;display:block;overflow:visible}
.favorite-star-icon path{fill:transparent;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;transition:fill .15s ease,stroke .15s ease}
.favorite-star:hover{color:#f2c94c;background:rgba(242,201,76,.08);border-color:rgba(242,201,76,.18);transform:scale(1.04)}
.favorite-star.active{color:#f2c94c;background:rgba(242,201,76,.08);border-color:rgba(242,201,76,.16)}
.favorite-star.active .favorite-star-icon path{fill:currentColor;stroke:currentColor}
.trend-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-right:46px}
.trend-more-btn{flex:0 0 auto;white-space:nowrap;margin-top:1px}
.history-pair-trend{appearance:none;border:0;background:transparent;padding:0;color:#e8edf3;font:inherit;font-weight:800;cursor:pointer;text-decoration:none}
.history-pair-trend:hover{color:#77c7ff;text-decoration:underline}
/* Five columns remain, but open positions regain comfortable production-readable type. */
.opened-section .position-monitor-card{padding:12px 13px;min-height:0}
.opened-section .position-monitor-card .pair-name{font-size:calc(18px * var(--ui-font-scale));line-height:1.22}
.opened-section .position-monitor-card .pair-sub{font-size:calc(10.5px * var(--ui-font-scale));line-height:1.35}
.opened-section .position-kpi-grid.compact>div{padding:7px 8px}
.opened-section .position-kpi-grid.compact span{font-size:calc(9.5px * var(--ui-font-scale))}
.opened-section .position-kpi-grid.compact strong{font-size:calc(14px * var(--ui-font-scale))}
.opened-section .position-compare-head,.opened-section .position-compare-row{grid-template-columns:minmax(68px,.64fr) minmax(0,1fr) minmax(0,1fr);gap:5px;padding:6px 7px}
.opened-section .position-compare-head strong{font-size:calc(12px * var(--ui-font-scale))}
.opened-section .position-compare-row>span{font-size:calc(9.5px * var(--ui-font-scale))}
.opened-section .position-compare-row>strong{font-size:calc(11.5px * var(--ui-font-scale))}
.opened-section .position-summary-lines{grid-template-columns:minmax(0,1.05fr) minmax(0,.92fr) minmax(0,.9fr) minmax(48px,.42fr);gap:5px}
.opened-section .position-summary-lines>div{padding:6px 7px;gap:4px}
.opened-section .position-summary-lines span{font-size:calc(8.8px * var(--ui-font-scale))}
.opened-section .position-summary-lines strong{font-size:calc(10.8px * var(--ui-font-scale))}
.opened-section .position-add-status{grid-template-columns:48px 1fr;padding:7px 8px}
.opened-section .position-add-status-label,.opened-section .position-add-status-content{font-size:calc(9.8px * var(--ui-font-scale));line-height:1.45}
.opened-section .position-bottom-actions .secondary-btn,.opened-section .position-bottom-actions .danger-btn{font-size:calc(10.5px * var(--ui-font-scale));padding:6px 8px}
@media(max-width:900px){.trend-modal-head{flex-direction:column;padding-right:46px}.trend-more-btn{margin-top:0}}


/* V0.2.0-D4.6: readable compact settings + no-wrap open-position header */
.settings-page-shell .settings-group summary{font-size:calc(15px * var(--ui-font-scale));line-height:1.35}
.settings-page-shell .setting-field{font-size:calc(13px * var(--ui-font-scale));line-height:1.35}
.settings-page-shell .setting-field>span:first-child{font-size:calc(13px * var(--ui-font-scale));font-weight:600;color:#d5dde7}
.settings-page-shell .setting-field>small{font-size:calc(11px * var(--ui-font-scale));line-height:1.45;color:#8b98a8}
.settings-page-shell .setting-field input[type="number"],.settings-page-shell .setting-field input[type="text"],.settings-page-shell .setting-field input[type="password"]{font-size:calc(13px * var(--ui-font-scale));height:34px}
.settings-page-shell .setting-field>strong{font-size:calc(12.5px * var(--ui-font-scale))}
.settings-page-shell .sticky-actions button{font-size:calc(12px * var(--ui-font-scale))}
.settings-page-shell .account-risk-group{border-color:#3d5369;background:#111a24}
.opened-section .position-monitor-card .pair-card-head>div:first-child{flex:1 1 auto;min-width:0}
.opened-section .position-monitor-card .pair-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opened-section .position-monitor-card .pair-status{white-space:nowrap;flex:0 0 auto}
.opened-section .position-monitor-card .pair-status-stack{flex:0 0 auto;white-space:nowrap}
/* V0.2.0-D4.7: open-position anchor vs current Research trend comparison */
.position-trend-mode-switch{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 2px;padding:8px 10px;border:1px solid #2f3a48;border-radius:10px;background:#111821}
.trend-mode-btn{appearance:none;border:1px solid #3b4758;background:#171f2a;color:#b7c1cf;border-radius:9px;padding:7px 12px;font-weight:700;cursor:pointer}
.trend-mode-btn:hover{border-color:#5c6d83;color:#eef3f9}
.trend-mode-btn.active{background:#17382f;border-color:#2a9a78;color:#70efbd}
.position-trend-mode-note{margin-left:auto;color:#8e9aab;font-size:calc(12px * var(--ui-font-scale))}
@media(max-width:760px){.position-trend-mode-note{width:100%;margin-left:0}.trend-mode-btn{flex:1}}

/* V0.2.0-D4.8: position trend annotations use reserved label gutters; no layout CSS required. */

/* V0.2.0-D4.9 production execution detail cards. */
.execution-leg-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.execution-leg-card{background:#101923;border:1px solid #334152;border-radius:10px;padding:12px;min-width:0}
.execution-leg-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid #2d3947}
.execution-leg-head>div{display:grid;gap:2px}.execution-leg-head strong{font-size:calc(14px * var(--ui-font-scale))}.execution-leg-head small{color:#8996a6;font-size:calc(10.5px * var(--ui-font-scale))}
.execution-side-pill{display:inline-flex;align-items:center;justify-content:center;min-width:48px;padding:4px 9px;border-radius:999px;border:1px solid #465365;font-size:calc(11px * var(--ui-font-scale));font-weight:800;white-space:nowrap}
.execution-side-pill.buy{background:#11352b;border-color:#24664f;color:#69e4b5}.execution-side-pill.sell{background:#3b181f;border-color:#753140;color:#ff91a2}
.execution-leg-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
.execution-leg-grid>div{background:#0d151e;border:1px solid #293543;border-radius:7px;padding:8px 9px;min-width:0}
.execution-leg-grid>div.wide{grid-column:span 3}.execution-leg-grid span{display:block;color:#8794a4;font-size:calc(9.5px * var(--ui-font-scale));margin-bottom:3px}.execution-leg-grid strong{display:block;font-size:calc(11.5px * var(--ui-font-scale));word-break:break-word}
@media(max-width:980px){.execution-leg-cards{grid-template-columns:1fr}.execution-leg-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.execution-leg-grid>div.wide{grid-column:span 2}}
@media(max-width:620px){.execution-leg-grid{grid-template-columns:1fr}.execution-leg-grid>div.wide{grid-column:auto}}

/* V0.2.0-D4.12 signed EXIT trigger + manual close confirmation */
.opened-section .position-monitor-card .position-meta-line{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap;overflow:visible;text-overflow:clip}
.opened-section .position-monitor-card .position-opened-time{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opened-section .position-monitor-card .position-id-inline{flex:0 0 auto;white-space:nowrap;color:#aeb8c5;font-weight:700}
.manual-close-dialog{width:min(760px,calc(100vw - 32px))}
.manual-close-warning{margin:12px 0 14px;padding:12px 14px;border:1px solid #68404a;border-radius:10px;background:#24161b;color:#ffc6cf;font-size:calc(13px * var(--ui-font-scale));line-height:1.55}
.manual-close-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
.manual-close-grid>div{padding:10px 12px;border:1px solid #303b49;border-radius:9px;background:#121922;display:flex;flex-direction:column;gap:4px;min-width:0}
.manual-close-grid span{color:#8f9aaa;font-size:calc(12px * var(--ui-font-scale))}.manual-close-grid strong{color:#e8edf4;font-size:calc(14px * var(--ui-font-scale));overflow-wrap:anywhere}
.manual-close-result{margin-top:12px;padding:10px 12px;border-radius:9px;font-size:calc(13px * var(--ui-font-scale));line-height:1.5}
.manual-close-result.pending,.manual-close-result.warn{border:1px solid #6a5b2e;background:#241f12;color:#f4d06f}
.manual-close-result.success{border:1px solid #236a54;background:#10251e;color:#5fe1b4}
.manual-close-result.error{border:1px solid #753541;background:#2b151b;color:#ff9eaa}
@media(max-width:760px){.manual-close-grid{grid-template-columns:1fr}.opened-section .position-monitor-card .position-meta-line{flex-wrap:wrap}.opened-section .position-monitor-card .position-opened-time{overflow:visible;text-overflow:clip}}

/* V0.2.0-D4.13: compact position trend header and external marker legend */
.position-trend-title-block{min-width:0;flex:1 1 auto}
.position-trend-title-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.position-trend-title-row h3{margin:0;flex:0 1 auto}
.position-trend-title-switch{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.position-trend-title-switch .trend-mode-btn{padding:6px 11px}
.position-deviation-head{align-items:center;gap:14px}
.position-marker-legend{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;min-height:22px}
.position-marker-legend-item{display:inline-flex;align-items:center;gap:5px;color:#cbd3de;font-size:calc(11px * var(--ui-font-scale));white-space:nowrap}
.position-marker-legend-item i{width:9px;height:9px;border-radius:999px;box-shadow:0 0 0 1px #0f151d}
.position-marker-legend-item b{font-weight:700;color:#cfd6df}.position-marker-legend-item em{font-style:normal;color:#9da8b7}
@media(max-width:900px){.position-trend-title-row{align-items:flex-start;flex-direction:column;gap:8px}.position-marker-legend{width:100%;justify-content:flex-start;margin-left:0}.position-deviation-head{align-items:flex-start;flex-direction:column}}

/* V0.2.0-D4.17: larger unified trend modals + stable pending join time */
.pending-joined-time{margin-left:auto;align-self:center;color:#8f9aaa;font-size:calc(10px * var(--ui-font-scale));white-space:nowrap;font-variant-numeric:tabular-nums}
.compact-pair-head .pair-status-stack{flex:0 0 auto}
.trend-series-legend{display:flex;align-items:center;gap:14px;color:#cbd3de;font-size:calc(11px * var(--ui-font-scale));line-height:1.3}
.trend-series-legend-item{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.trend-series-legend-item i{display:inline-block;width:16px;height:3px;border-radius:999px;box-shadow:0 0 0 1px rgba(0,0,0,.12)}
.trend-series-legend-item b{font-weight:600;color:#d6dde6}
.trend-series-legend-inline{flex-wrap:wrap}
.position-mini-chart-wrap .trend-series-legend-side{position:absolute;z-index:3;right:18px;top:16px;width:158px;display:flex;flex-direction:column;align-items:flex-start;gap:11px;padding:9px 10px;border:1px solid rgba(65,77,92,.72);border-radius:8px;background:rgba(15,22,31,.82);backdrop-filter:blur(2px);pointer-events:none}
.position-mini-chart-wrap .trend-series-legend-side .trend-series-legend-item{width:100%}
@media(max-width:900px){.pending-joined-time{order:3;width:100%;margin-left:0}.compact-pair-head{flex-wrap:wrap}.position-mini-chart-wrap .trend-series-legend-side{right:10px;top:10px;width:auto;max-width:145px;padding:7px 8px}.position-trend-dialog{width:calc(100vw - 20px)}.position-mini-chart-wrap{height:235px;min-height:235px}}

/* V0.2.0-D4.25 execution exception detail modal */
.execution-exception-trigger{appearance:none;cursor:pointer;font-family:inherit;line-height:1.2}
.execution-exception-trigger:hover{filter:brightness(1.12)}
.execution-exception-dialog{width:min(900px,calc(100vw - 40px))}
.execution-exception-loading,.execution-exception-error{padding:22px 4px;color:#aeb8c5;font-size:calc(14px * var(--ui-font-scale))}
.execution-exception-error{color:#ff9eaa}
.execution-exception-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;margin:14px 0}
.execution-exception-summary>div{border:1px solid #303b49;background:#121922;border-radius:9px;padding:10px 12px;min-width:0}
.execution-exception-summary span{display:block;color:#8f9aaa;font-size:calc(11px * var(--ui-font-scale));margin-bottom:4px}
.execution-exception-summary strong{font-size:calc(13px * var(--ui-font-scale));color:#edf2f8;overflow-wrap:anywhere}
.execution-exception-section{margin-top:11px;padding:12px 14px;border:1px solid #5d3540;border-radius:10px;background:#23151a}
.execution-exception-section.action{border-color:#65572d;background:#231f13}
.execution-exception-section h4{margin:0 0 7px;font-size:calc(13px * var(--ui-font-scale));color:#ff9eaa}
.execution-exception-section.action h4{color:#f3cf68}
.execution-exception-section p{margin:0;color:#d8dee7;font-size:calc(13px * var(--ui-font-scale));line-height:1.6;white-space:pre-wrap}
.execution-exception-raw{margin-top:13px;border:1px solid #303b49;border-radius:10px;background:#0a1119;overflow:hidden}
.execution-exception-raw summary{cursor:pointer;padding:11px 13px;color:#b8c2cf;font-size:calc(12px * var(--ui-font-scale));font-weight:700}
.execution-exception-raw pre{margin:0;border-top:1px solid #303b49;padding:13px;max-height:360px;overflow:auto;color:#b9c6d6;background:#070c12;font-size:calc(11px * var(--ui-font-scale));line-height:1.5;white-space:pre-wrap;word-break:break-word}
@media(max-width:700px){.execution-exception-summary{grid-template-columns:1fr}.execution-exception-dialog{width:calc(100vw - 20px)}}

/* V1.0.0 per-user lifecycle unread marker */
.nav-unread-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#39d98a;margin-left:auto;box-shadow:0 0 0 2px rgba(57,217,138,.12)}
.nav-unread-dot[hidden]{display:none!important}.nav-alert-link{display:flex!important;align-items:center;gap:8px}

/* V1.0.2 compact Pair management table + two-line system overview */
.management-overview-strip{margin:0 0 14px;border:1px solid var(--border,#263240);border-radius:12px;background:rgba(14,21,30,.92);overflow:hidden;font-size:calc(12px * var(--ui-font-scale));line-height:1.15}
.management-overview-strip .overview-line{display:flex;align-items:center;gap:0;min-height:38px;white-space:nowrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.management-overview-strip .overview-line::-webkit-scrollbar{
  width:0!important;
  height:0!important;
  display:none!important;
}

.management-overview-strip .overview-line+ .overview-line{border-top:1px solid var(--border,#263240)}
.management-overview-strip .overview-line>strong{font-size:calc(13px * var(--ui-font-scale));padding:0 14px;min-width:max-content}
.management-overview-strip .overview-line>span{display:inline-flex;align-items:center;gap:5px;padding:0 11px;border-left:1px solid rgba(120,140,160,.16);min-height:22px;color:var(--muted,#93a0b2)}
.management-overview-strip .overview-line b{color:var(--text,#e7edf5);font-weight:700}
.management-overview-strip .overview-line .pos{color:var(--positive,#4dd7a2)}
.management-overview-strip .overview-line .neg{color:var(--negative,#ff6f86)}
.management-overview-strip .status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#65717e;box-shadow:0 0 0 3px rgba(101,113,126,.12)}
.management-overview-strip .status-dot.ok{background:#55d6a5;box-shadow:0 0 0 3px rgba(85,214,165,.11)}
.management-overview-strip .status-dot.bad{background:#ff667d;box-shadow:0 0 0 3px rgba(255,102,125,.11)}

.pair-management-section{padding:0;overflow:hidden}
.pair-management-section>.panel-head,.pair-management-section>.pair-toolbar,.pair-management-section>.notice,.pair-management-section>.empty-state{margin-left:16px;margin-right:16px}
.pair-table-shell{width:100%;overflow-x:auto;border-top:1px solid rgba(120,140,160,.14)}
.pair-table-head,.pair-table-row{display:grid;grid-template-columns:minmax(170px,1.35fr) 115px minmax(155px,1.05fr) 105px 105px 110px 125px 110px minmax(120px,.95fr) minmax(250px,1.5fr);align-items:center;min-width:1320px}
.pair-table-head{min-height:38px;padding:0 14px;background:rgba(18,28,38,.78);color:var(--muted,#93a0b2);font-size:calc(12px * var(--ui-font-scale));font-weight:600;border-bottom:1px solid rgba(120,140,160,.14)}
.pair-table-head>span{padding:0 8px}
.pair-table-body{display:block!important;grid-template-columns:none!important;gap:0!important}
.pair-table-card{display:block!important;max-width:none!important;width:auto!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
.pair-table-card+.pair-table-card{border-top:1px solid rgba(120,140,160,.11)!important}
.pair-table-row{min-height:56px;padding:6px 14px;background:rgba(12,19,27,.55);transition:background .15s ease}
.pair-table-row:hover{background:rgba(28,40,53,.72)}
.pair-table-row>div{min-width:0;padding:0 8px;display:flex;align-items:center;gap:5px;font-size:calc(12.5px * var(--ui-font-scale))}
.pair-table-row>div>strong{font-size:calc(13px * var(--ui-font-scale));white-space:nowrap}
.pair-table-row small{display:block;color:var(--muted,#93a0b2);font-size:calc(10.5px * var(--ui-font-scale));line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pair-table-row .pt-pair{display:block}.pair-table-row .pt-pair .pair-name-row{display:flex;align-items:center;gap:6px}.pair-table-row .pt-pair strong{font-size:calc(14px * var(--ui-font-scale));color:var(--text,#e7edf5)}
.pair-table-row .pt-status{display:flex;align-items:flex-start;flex-direction:column;gap:3px}.pair-table-row .pt-status .pair-status{margin:0}
.pair-table-row .pt-direction{white-space:nowrap}.pair-table-row .pt-direction em{font-style:normal;color:var(--muted,#93a0b2)}
.pair-table-row .pt-note{display:flex;flex-direction:column;align-items:flex-start;gap:2px;white-space:nowrap}
.pair-table-row .pt-actions{display:flex;align-items:center;gap:5px;justify-content:flex-end;flex-wrap:nowrap}.pair-table-row .pt-actions form{margin:0}.pair-table-row .pt-actions .compact-btn{min-height:30px;padding:5px 9px;font-size:calc(11px * var(--ui-font-scale));white-space:nowrap}
.pair-table-row .favorite-star{width:25px;height:25px}

/* Keep existing modal DOM and business logic, hide only the old card presentation. */
.opened-section .pair-table-card>.pair-card-head,
.opened-section .pair-table-card>.position-kpi-grid,
.opened-section .pair-table-card>.position-leg-compare,
.opened-section .pair-table-card>.position-summary-lines,
.opened-section .pair-table-card>.position-add-status,
.opened-section .pair-table-card>.pair-actions{display:none!important}
.pending-section .pair-table-card>.compact-pair-head,
.pending-section .pair-table-card>.compact-monitor-row,
.pending-section .pair-table-card>.compact-direction-row,
.pending-section .pair-table-card>.compact-plan-line,
.pending-section .pair-table-card>.pair-lifecycle-actions{display:none!important}
.pending-section .pair-table-card>.compact-card-actions{padding:0!important;margin:0!important;min-height:0!important;border:0!important}
.pending-section .pair-table-card>.compact-card-actions>.compact-card-actions-left>button{display:none!important}
.pending-section .pair-table-card>.compact-card-actions>.compact-card-actions-left{display:block!important;min-height:0!important}

@media(max-width:900px){.management-overview-strip .overview-line{min-height:36px}.pair-table-head,.pair-table-row{min-width:1220px}}

/* V1.0.3 opened-position table regression fix: preserve full information with research-table visual language */
.opened-section .pair-table-head,.opened-section .pair-table-row{
  grid-template-columns:minmax(160px,1.25fr) 92px 96px 96px 108px minmax(190px,1.45fr) minmax(185px,1.4fr) minmax(170px,1.3fr) 120px minmax(180px,1.3fr) 108px 125px minmax(205px,1.4fr);
  min-width:1900px;
}
.opened-section .pair-table-head{background:#20252e;color:#8f97a3;font-size:calc(11px * var(--ui-font-scale));font-weight:600;min-height:39px;box-shadow:0 1px 0 #343a44}
.opened-section .pair-table-row{min-height:72px;padding-top:8px;padding-bottom:8px;background:#171c24;border:0}
.opened-section .pair-table-card+.pair-table-card{border-top:1px solid #2b313a!important}
.opened-section .pair-table-row:hover{background:#1a1f27}
.opened-section .pair-table-row>div{font-size:calc(12px * var(--ui-font-scale));line-height:1.25}
.opened-section .pair-table-row>div>strong{font-size:calc(12px * var(--ui-font-scale))}
.opened-section .research-deviation{font-size:calc(14px * var(--ui-font-scale))}
.pair-table-name-btn{appearance:none;border:0;background:transparent;padding:0;color:#e3e7ec;font-size:calc(14px * var(--ui-font-scale));font-weight:800;cursor:pointer;text-align:left}
.pair-table-name-btn:hover{color:#fff;text-decoration:underline}
.pt-two-lines,.pt-add-info,.pt-total-pnl{display:flex!important;flex-direction:column;align-items:flex-start!important;gap:3px!important}
.pt-two-lines>div,.pt-add-info>div{display:flex;align-items:baseline;gap:6px;min-width:0;white-space:nowrap}
.pt-two-lines>div>span{min-width:54px}.pt-leg-pnl>div>span,.pt-funding>div>span{min-width:18px}
.pt-two-lines strong,.pt-add-info b{font-size:calc(11.5px * var(--ui-font-scale))!important;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.pt-two-lines small,.pt-add-info small{font-size:calc(10px * var(--ui-font-scale))!important;color:#818997;white-space:nowrap}
.pt-add-info>div>span{color:#b7bec8;min-width:38px}.pt-add-info .pos{color:#38c9bc!important}
.pt-add-info .pt-add-executed,.pt-add-info .pt-add-executed span,.pt-add-info .pt-add-executed b,.pt-add-info .pt-add-executed small{color:#38c9bc!important}
/* V1.1.10 / V1.2.68: align staged ADD / EXIT details into fixed internal columns.
   Each half keeps its real max-content minimum. This lets native table auto-layout
   grow and scroll once staged content reaches its intrinsic width, instead of
   shrinking the two Grid tracks to zero and painting into the next table cell. */
.pt-add-info .pt-add-exit-line{display:grid!important;grid-template-columns:minmax(max-content,1fr) minmax(max-content,1fr)!important;column-gap:22px!important;align-items:baseline!important;width:100%!important;min-width:max-content!important;margin:0!important;white-space:nowrap!important}
.pt-add-info .pt-stage-segment{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap;min-width:0!important}
.pt-add-info .pt-stage-add{grid-column:1!important}
.pt-add-info .pt-stage-exit{grid-column:2!important}
.pt-add-info .pt-stage-segment>span{min-width:0!important;color:inherit!important}
.pt-add-info .pt-stage-done,.pt-add-info .pt-stage-done span,.pt-add-info .pt-stage-done b,.pt-add-info .pt-stage-done small{color:#38c9bc!important}
.pt-add-info .pt-stage-pending,.pt-add-info .pt-stage-pending span,.pt-add-info .pt-stage-pending b,.pt-add-info .pt-stage-pending small{color:#aab1bc!important}
.pt-add-info .pt-stage-status-done{color:#38c9bc!important;font-weight:700!important}
.pt-total-line{margin-top:2px;color:#818997!important}.pt-total-line b{color:#cfd5dd;font-weight:700}
.pt-total-pnl small{font-size:calc(10px * var(--ui-font-scale))!important;margin-top:2px}
.pt-note span{font-size:calc(11.5px * var(--ui-font-scale));color:#cfd5dd}.pt-note small{font-size:calc(10px * var(--ui-font-scale))}
.opened-section .pt-actions{gap:6px}.opened-section .pt-actions .compact-btn{min-height:28px;padding:4px 8px;font-size:calc(11px * var(--ui-font-scale));border-radius:7px}
.pair-staged-row{grid-template-columns:120px minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)!important;align-items:end}
.pair-staged-row .pair-add-row-title{align-self:center}
.locked-input,.pair-add-row input.locked-input{background:#20252e!important;color:#8f97a3!important;border-color:#343a45!important;cursor:not-allowed!important}
.pair-staged-exit-field .pair-label-inline small{white-space:normal}
.position-detail-dialog{width:min(900px,calc(100vw - 40px))}
.position-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}
.position-detail-grid>div{background:#151a21;border:1px solid #2d333d;border-radius:8px;padding:9px 10px;min-width:0}
.position-detail-grid span{display:block;color:#8f97a3;font-size:calc(10px * var(--ui-font-scale));margin-bottom:4px}.position-detail-grid strong{font-size:calc(12px * var(--ui-font-scale))}.position-detail-grid small{display:block;color:#818997;font-size:calc(10px * var(--ui-font-scale));margin-top:3px}
.position-detail-adds{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-top:1px solid #2b313a;padding-top:10px}.position-detail-adds>strong{font-size:calc(12px * var(--ui-font-scale))}.position-detail-adds>span{font-size:calc(11px * var(--ui-font-scale));color:#cfd5dd}
@media(max-width:900px){.opened-section .pair-table-head,.opened-section .pair-table-row{min-width:1880px}.position-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* V1.0.4 Pair management visual unification: research-table palette, compact hover detail. */
.opened-section .pair-table-head,.opened-section .pair-table-row{
  grid-template-columns:
    14%  /* 交易对 */
    6%   /* 状态 */
    7%   /* 当前偏移 */
    7%   /* 开仓偏移 */
    7%   /* 平仓阈值 */
    25%  /* 加仓 / 平仓信息 */
    8%   /* 持仓总金额 */
    9%   /* 当前总盈亏 */
    9%   /* 持仓时间 */
    8%;  /* 操作 */
  min-width:1420px;
}
.pending-section .pair-table-head,.pending-section .pair-table-row{
  grid-template-columns:
    12%  /* 交易对 */
    7%   /* 状态 */
    8%   /* 当前偏移 */
    8%   /* 开仓阈值 */
    8%   /* 平仓阈值 */
    7%   /* 计划资金 */
    8%   /* 距离开仓 */
    17%  /* 加仓信息 */
    8%   /* 加入时间 */
    17%; /* 操作 */
  min-width:1500px;
}
/* Neutral table typography: no red/green semantic coloring in management rows. */
.opened-section .pair-table-row .long-text,.opened-section .pair-table-row .short-text,
.pending-section .pair-table-row .long-text,.pending-section .pair-table-row .short-text{
  color:#cfd5dd!important;
}
.opened-section .pair-table-row,.pending-section .pair-table-row{background:#171c24;color:#cfd5dd}
.opened-section .pair-table-row:hover,.pending-section .pair-table-row:hover{background:#1a1f27}
.pending-section .pair-table-card+.pair-table-card{border-top:1px solid #2b313a!important}
.opened-section .pair-table-head,.pending-section .pair-table-head{background:#20252e;color:#8f97a3}
/* Status is outlined text only; no solid status pills. */
.pair-management-section .pair-status,
.pair-management-section .pair-status.waiting,
.pair-management-section .pair-status.observing,
.pair-management-section .pair-status.open,
.pair-management-section .pair-status.abnormal{
  background:transparent!important;
  box-shadow:none!important;
  font-weight:700!important;
  padding:3px 8px;
}
.pair-management-section .pair-status.open,
.pair-management-section .pair-status.waiting{
  color:#38c9bc!important;
  border:1px solid rgba(56,201,188,.48)!important;
}
.pair-management-section .pair-status.observing{
  color:#f2c94c!important;
  border:1px solid rgba(242,201,76,.52)!important;
}
.pair-management-section .pair-status.abnormal{
  color:#ef776f!important;
  border:1px solid rgba(239,119,111,.48)!important;
}
.pt-opened-time{display:block!important;margin-top:3px;color:#7f8792!important;font-size:calc(10px * var(--ui-font-scale))!important}
.pt-hover-detail{position:relative;display:flex!important;flex-direction:column;align-items:flex-start!important;cursor:default}
.cell-hover-pop{display:none;position:absolute;left:0;top:calc(100% + 7px);z-index:40;min-width:245px;padding:9px 11px;border:1px solid #3a414c;border-radius:8px;background:#11161d;box-shadow:0 12px 28px rgba(0,0,0,.34);color:#cfd5dd;font-size:calc(11px * var(--ui-font-scale));line-height:1.55;white-space:nowrap}
.pt-hover-detail:hover .cell-hover-pop{display:block}
/* Keep the final opened-position hover detail inside the opened table instead of clipping into the next section. */
.opened-section .pair-table-card:last-child .pt-hover-detail .cell-hover-pop{
  top:auto;
  bottom:calc(100% + 7px);
}
.cell-hover-pop>div{display:flex;align-items:baseline;gap:7px}.cell-hover-pop b{font-size:calc(11px * var(--ui-font-scale));color:#e0e4e9}.cell-hover-pop small{font-size:calc(10px * var(--ui-font-scale))!important;color:#8f97a3!important}
.pt-metric-cell{justify-content:flex-start!important}
.pt-metric-cell .research-deviation{font-size:calc(15px * var(--ui-font-scale))!important;font-weight:800!important;font-variant-numeric:tabular-nums}
.pt-duration{display:flex!important;flex-direction:column;align-items:flex-start!important;justify-content:center!important;gap:3px!important}
.pt-duration>.js-holding-duration{font-size:calc(15px * var(--ui-font-scale))!important;font-weight:800!important;font-variant-numeric:tabular-nums;line-height:1.1}
.opened-section .pt-total-pnl strong,.opened-section .pt-total-pnl small{font-variant-numeric:tabular-nums}
.opened-section .pt-total-pnl strong.dev-positive,.opened-section .pt-total-pnl small.dev-positive,
.opened-section [data-live-open-anchor-dev].dev-positive,
.pending-section [data-live-pending-deviation].dev-positive,
.opened-section .pair-table-row .research-deviation.dev-positive,
.pending-section .pair-table-row .research-deviation.dev-positive,
.opened-section .pair-table-row .pos.dev-positive,
.pending-section .pair-table-row .pos.dev-positive{color:#38c9bc!important}
.opened-section .pt-total-pnl strong.dev-negative,.opened-section .pt-total-pnl small.dev-negative,
.opened-section [data-live-open-anchor-dev].dev-negative,
.pending-section [data-live-pending-deviation].dev-negative,
.opened-section .pair-table-row .research-deviation.dev-negative,
.pending-section .pair-table-row .research-deviation.dev-negative,
.opened-section .pair-table-row .neg.dev-negative,
.pending-section .pair-table-row .neg.dev-negative{color:#ef776f!important}
.opened-section .pt-add-info>div:not(.pt-add-executed):not(.pt-add-exit-line) small{color:#8f97a3!important}
.opened-section .pt-add-info .pt-add-executed small{color:#38c9bc!important}
.opened-section .pt-funding span,.opened-section .pt-funding strong{color:#cfd5dd!important}
.pending-section .pt-pair>small{color:#8f97a3!important}
.pending-section .pair-table-row .pt-note span{color:#cfd5dd}
.pending-section .pt-actions{gap:6px;justify-content:flex-start;flex-wrap:nowrap;white-space:nowrap}
.pending-section .pair-table-card>.compact-card-actions>.pair-lifecycle-actions{display:none!important}
@media(max-width:900px){.opened-section .pair-table-head,.opened-section .pair-table-row{min-width:1560px}.pending-section .pair-table-head,.pending-section .pair-table-row{min-width:1500px}}

/* V1.0.4 recommendation score visibility in trend/query views. */
.research-trend-score{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;min-width:118px;padding:0 14px;border-left:1px solid #303844;border-right:1px solid #303844}
.research-trend-score span{color:#8f97a3;font-size:calc(10px * var(--ui-font-scale));margin-bottom:3px}
.research-trend-score strong{font-size:calc(22px * var(--ui-font-scale));line-height:1;color:#dce2ea;font-variant-numeric:tabular-nums}
.research-trend-score small{color:#737d8b;font-size:calc(9px * var(--ui-font-scale));margin-top:4px}
.research-trend-head-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:0 0 auto}
.research-trend-head-actions form{margin:0}
.detail-hero-grid{grid-template-columns:repeat(7,minmax(125px,1fr))}
@media(max-width:1450px){.detail-hero-grid{grid-template-columns:repeat(4,minmax(125px,1fr))}}
@media(max-width:900px){.research-trend-score{border:0;padding:0;align-items:flex-start}.research-trend-head-actions{width:100%;justify-content:flex-start;flex-wrap:wrap}.detail-hero-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:620px){.detail-hero-grid{grid-template-columns:1fr}}

/* V1.0.7 management table visual hierarchy: de-emphasize secondary fields. */
.opened-section .pair-table-name-btn,
.pending-section .pt-pair .pair-name-row>strong{color:#aab3bf!important}
.opened-section .pair-table-name-btn:hover{color:#c7cdd5!important}
.opened-section .pt-entry-deviation,
.pending-section .pt-entry-deviation{color:#9ea8b5!important}
.opened-section .pt-add-info .pt-add-pending,
.opened-section .pt-add-info .pt-add-pending span,
.opened-section .pt-add-info .pt-add-pending b,
.opened-section .pt-add-info .pt-add-pending small,
.pending-section .pt-add-info>div,
.pending-section .pt-add-info>div span,
.pending-section .pt-add-info>div b{color:#9aa4b2!important}
.opened-section .pt-funding span,
.opened-section .pt-funding strong,
.opened-section .pt-funding small{color:#9aa4b2!important}
.pending-section [data-live-pending-distance].entry-reached{color:#38c9bc!important}

/* V1.0.9: iPad home-screen PWA safe-area handling. Browser/desktop layout is unchanged. */
@media (display-mode: standalone) {
  html,
  body {
    width: 100%;
    min-height: 100%;
  }

  body {
    margin: 0;
    overscroll-behavior: none;
  }

  .sidebar {
    top: 0;
    bottom: 0;
    height: auto;
    width: calc(var(--sidebar-width) + env(safe-area-inset-left));
    padding-top: calc(18px + env(safe-area-inset-top));
    padding-right: 12px;
    padding-bottom: calc(18px + env(safe-area-inset-bottom));
    padding-left: calc(12px + env(safe-area-inset-left));
  }

  .app-main {
    margin-left: calc(var(--sidebar-width) + env(safe-area-inset-left));
    padding-top: env(safe-area-inset-top);
    padding-right: env(safe-area-inset-right);
    padding-bottom: env(safe-area-inset-bottom);
  }

  .auth-shell {
    min-height: 100%;
    padding-top: calc(28px + env(safe-area-inset-top));
    padding-right: calc(28px + env(safe-area-inset-right));
    padding-bottom: calc(28px + env(safe-area-inset-bottom));
    padding-left: calc(28px + env(safe-area-inset-left));
  }
}


/* V1.1.43: user-controlled main-content font scale. The content width stays 100%; sidebar stays full-size. */
:root{--ui-font-scale:1;--ui-sidebar-font-scale:1}

/* V1.2.74: native first-paint UI scale. The sidebar retains the historical 150% cap. */
.sidebar{--ui-font-scale:var(--ui-sidebar-font-scale,1)}
.ui-scale-control{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}
.page-shell{width:100%;zoom:1!important;transform:none!important;transform-origin:initial!important}

/* V1.0.14 Startup Recovery review inside execution-exception modal. */
.startup-recovery-review{margin-top:12px;padding:13px 14px;border:1px solid #344150;border-radius:10px;background:#101821}
.startup-review-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.startup-review-head h4{margin:0;font-size:calc(13px * var(--ui-font-scale));color:#dbe4ee}
.startup-review-badge{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid #536171;border-radius:999px;color:#aeb9c6;font-size:calc(11px * var(--ui-font-scale));font-weight:700}
.startup-review-badge.ok{color:#38c9bc;border-color:rgba(56,201,188,.45)}
.startup-review-badge.bad{color:#ef776f;border-color:rgba(239,119,111,.45)}
.startup-review-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}
.startup-review-grid>div{padding:8px 10px;border:1px solid #2d3947;border-radius:8px;background:#121b25}
.startup-review-grid span{display:block;color:#8f9aaa;font-size:calc(10px * var(--ui-font-scale));margin-bottom:4px}
.startup-review-grid strong{color:#d8e0e9;font-size:calc(12px * var(--ui-font-scale));overflow-wrap:anywhere}
.startup-review-reasons{margin:0 0 10px;padding-left:20px;color:#cbd4df;font-size:calc(12px * var(--ui-font-scale));line-height:1.6}
.startup-review-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:7px}
.startup-recheck-status{font-size:calc(11px * var(--ui-font-scale));color:#9ba8b7}
.startup-recheck-status.ok{color:#38c9bc}.startup-recheck-status.bad{color:#ef776f}
.startup-recovery-review>small{display:block;color:#7f8c9c;font-size:calc(10px * var(--ui-font-scale));line-height:1.5}
@media(max-width:760px){.startup-review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* V1.0.16 tenant-visible fault handling inside the execution exception modal. */
.execution-fault-review{margin-top:14px;padding:16px;border:1px solid #34404d;border-radius:10px;background:#101821}
.execution-fault-list{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.execution-fault-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #303a46;border-radius:8px;background:#151d27}
.execution-fault-meta{display:flex;flex-direction:column;gap:3px;min-width:0}.execution-fault-meta strong{font-size:calc(12px * var(--ui-font-scale));color:#d5dae1}.execution-fault-meta small{font-size:calc(10px * var(--ui-font-scale));color:#8f97a3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.execution-fault-review>small{display:block;color:#8f97a3;font-size:calc(10px * var(--ui-font-scale));line-height:1.5}

/* V1.0.18 server-side pagination for lifecycle logs and position history. */
.pager .pager-btn,.pager .pager-page{min-width:34px;text-align:center;justify-content:center}
.pager .pager-page{padding-left:9px;padding-right:9px}
.pager .pager-page.active{color:#e8edf4;background:#263142;border-color:#53627a;pointer-events:none}

/* V1.0.19 history favorite affordance. */
.history-pair-cell{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.history-pair-cell .favorite-star{width:25px;height:25px;flex:0 0 25px}

/* V1.0.20 user management, user positions, account security */
.user-position-filter-panel{padding:16px 18px}.user-position-filter-grid{display:grid;grid-template-columns:1.2fr 1.2fr .8fr .9fr auto;gap:12px;align-items:end}.user-position-filter-grid label{display:flex;flex-direction:column;gap:6px}.user-position-filter-grid label>span{font-size:calc(12px * var(--ui-font-scale));color:var(--muted,#8d98a7)}.user-position-filter-grid input,.user-position-filter-grid select{min-height:38px}.user-position-filter-actions{display:flex;gap:8px;align-items:center}.admin-user-position-table{min-width:1640px}.admin-user-position-table th,.admin-user-position-table td{white-space:nowrap}.user-position-state{display:inline-flex;padding:2px 8px;border:1px solid currentColor;border-radius:999px;font-size:calc(12px * var(--ui-font-scale))}.user-position-state.open{color:#43c78a}.user-position-state.closed{color:#8d98a7}.panel-head-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.panel-head-row>div{display:flex;gap:10px;align-items:baseline}.panel-head-row small{color:var(--muted,#8d98a7)}
.account-password-panel{margin-top:18px;padding:18px}.account-password-panel>h2{margin:0 0 6px}.account-password-panel>p{margin:0 0 16px;color:var(--muted,#8d98a7);font-size:calc(13px * var(--ui-font-scale))}.account-password-form{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr)) auto;gap:12px;align-items:end}
.global-expiry-modal{position:fixed;inset:0;z-index:1600;display:flex;align-items:center;justify-content:center}.global-expiry-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.62);backdrop-filter:blur(2px)}.global-expiry-dialog{position:relative;z-index:1;width:min(460px,calc(100vw - 32px));padding:24px;border:1px solid rgba(255,190,70,.35);border-radius:14px;background:#111821;box-shadow:0 24px 70px rgba(0,0,0,.48)}.global-expiry-dialog h2{margin:0 0 12px}.global-expiry-dialog p{margin:0 0 10px;line-height:1.7}.global-expiry-dialog small{display:block;color:var(--muted,#8d98a7);line-height:1.6}.global-expiry-actions{display:flex;justify-content:flex-end;margin-top:20px}.global-expiry-error{margin-top:10px;color:#ff6b73;font-size:calc(12px * var(--ui-font-scale))}
@media(max-width:1050px){.user-position-filter-grid{grid-template-columns:1fr 1fr}.user-position-filter-actions{grid-column:1/-1}.account-password-form{grid-template-columns:1fr 1fr}}@media(max-width:700px){.user-position-filter-grid,.account-password-form{grid-template-columns:1fr}.user-position-filter-actions{grid-column:auto}}
.global-expiry-x{position:absolute;right:12px;top:10px;border:0;background:transparent;color:#9aa5b4;font-size:calc(24px * var(--ui-font-scale));line-height:1;cursor:pointer}.global-expiry-x:hover{color:#fff}

/* V1.0.21 pair-query favorite + simplified admin position filters. */
.pair-query-title-row{display:flex;align-items:center;gap:6px}.pair-query-title-row .favorite-star{width:27px;height:27px;flex:0 0 27px}.user-position-filter-grid{grid-template-columns:minmax(220px,1.35fr) minmax(220px,1.35fr) minmax(150px,.72fr) auto;max-width:1120px}.user-position-filter-actions{justify-self:start}
@media(max-width:1050px){.user-position-filter-grid{grid-template-columns:1fr 1fr;max-width:none}}@media(max-width:700px){.user-position-filter-grid{grid-template-columns:1fr}}

/* V1.0.24 admin profit statistics. */
.profit-filter-panel{padding:16px 18px;margin-bottom:14px}.profit-filter-grid{display:grid;grid-template-columns:minmax(260px,1.35fr) minmax(170px,.75fr) minmax(170px,.75fr) auto;gap:12px;align-items:end;max-width:1060px}.profit-filter-grid label{display:flex;flex-direction:column;gap:6px}.profit-filter-grid label>span{font-size:calc(11px * var(--ui-font-scale));color:var(--muted,#8d98a7)}.profit-filter-grid input,.profit-filter-grid select{min-height:38px;background:#111820;border:1px solid #344150;border-radius:7px;color:#e8edf3;padding:7px 9px}.profit-filter-action{display:flex;align-items:end}.profit-summary-panel{padding:18px}.profit-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px;padding:11px 13px;border-left:3px solid #38c9bc;background:rgba(56,201,188,.05)}.profit-summary-head>div:first-child{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.profit-summary-head span,.profit-summary-head small,.profit-summary-period{color:var(--muted,#8d98a7);font-size:calc(11px * var(--ui-font-scale))}.profit-summary-head strong{font-size:calc(14px * var(--ui-font-scale))}.profit-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:10px}.profit-stat-grid>div{min-height:78px;padding:12px 13px;background:#151b23;border:1px solid #2e3743;border-radius:8px}.profit-stat-grid span{display:block;color:var(--muted,#8d98a7);font-size:calc(10px * var(--ui-font-scale));margin-bottom:6px}.profit-stat-grid strong{font-size:calc(20px * var(--ui-font-scale));font-variant-numeric:tabular-nums}.profit-stat-grid small{margin-left:4px;color:#7f8996;font-size:calc(10px * var(--ui-font-scale))}.profit-footnotes{margin-top:14px;color:#7f8996;font-size:calc(10.5px * var(--ui-font-scale));line-height:1.6}.profit-footnotes p{margin:3px 0}.profit-footnotes code{color:#aeb8c5}@media(max-width:1000px){.profit-filter-grid{grid-template-columns:1fr 1fr;max-width:none}.profit-filter-action{grid-column:1/-1}.profit-stat-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}}@media(max-width:620px){.profit-filter-grid,.profit-stat-grid{grid-template-columns:1fr}.profit-filter-action{grid-column:auto}.profit-summary-head{flex-direction:column}}

/* V1.0.24 admin profit statistics. */
.profit-filter-panel{padding:16px 18px;margin-bottom:14px}.profit-filter-grid{display:grid;grid-template-columns:minmax(260px,1.35fr) minmax(170px,.75fr) minmax(170px,.75fr) auto;gap:12px;align-items:end;max-width:1060px}.profit-filter-grid label{display:flex;flex-direction:column;gap:6px}.profit-filter-grid label>span{font-size:calc(11px * var(--ui-font-scale));color:var(--muted,#8d98a7)}.profit-filter-grid input,.profit-filter-grid select{min-height:38px;background:#111820;border:1px solid #344150;border-radius:7px;color:#e8edf3;padding:7px 9px}.profit-filter-action{display:flex;align-items:end}.profit-summary-panel{padding:18px}.profit-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:14px;padding:11px 13px;border-left:3px solid #38c9bc;background:rgba(56,201,188,.05)}.profit-summary-head>div:first-child{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.profit-summary-head span,.profit-summary-head small,.profit-summary-period{color:var(--muted,#8d98a7);font-size:calc(11px * var(--ui-font-scale))}.profit-summary-head strong{font-size:calc(14px * var(--ui-font-scale))}.profit-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:10px}.profit-stat-grid>div{min-height:78px;padding:12px 13px;background:#151b23;border:1px solid #2e3743;border-radius:8px}.profit-stat-grid span{display:block;color:var(--muted,#8d98a7);font-size:calc(10px * var(--ui-font-scale));margin-bottom:6px}.profit-stat-grid strong{font-size:calc(20px * var(--ui-font-scale));font-variant-numeric:tabular-nums}.profit-stat-grid small{margin-left:4px;color:#7f8996;font-size:calc(10px * var(--ui-font-scale))}.profit-footnotes{margin-top:14px;color:#7f8996;font-size:calc(10.5px * var(--ui-font-scale));line-height:1.6}.profit-footnotes p{margin:3px 0}.profit-footnotes code{color:#aeb8c5}@media(max-width:1000px){.profit-filter-grid{grid-template-columns:1fr 1fr;max-width:none}.profit-filter-action{grid-column:1/-1}.profit-stat-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}}@media(max-width:620px){.profit-filter-grid,.profit-stat-grid{grid-template-columns:1fr}.profit-filter-action{grid-column:auto}.profit-summary-head{flex-direction:column}}
/* V1.0.32: history uses one-row records, log-style page scrolling and modal details */
.history-main-table-scroll{overflow-x:auto;overflow-y:visible;border:1px solid #2b313a;border-radius:8px}
.history-main-table-scroll table{margin:0}
.history-main-table-scroll thead th{background:#20252e;box-shadow:0 1px 0 #343a44}
.history-main-row td{border-bottom:1px solid rgba(120,140,160,.12)}
.history-detail-dialog{width:min(1380px,calc(100vw - 48px))}
.history-detail-dialog .history-summary-grid{margin-top:14px}
@media(max-width:760px){.history-detail-dialog{width:calc(100vw - 20px)}}

/* V1.0.33: compact history row formatting */
.history-direction-stack{display:flex;flex-direction:column;gap:2px;line-height:1.2;white-space:nowrap}
.history-direction-stack span:first-child{color:var(--positive,#16a36a)}
.history-direction-stack span:last-child{color:var(--negative,#dc4c64)}
.pair-history-table .history-time{white-space:nowrap}


/* V1.0.35: compact history table to fit desktop width without forced horizontal scrolling */
.history-position-panel{padding:12px}
.pair-history-table{font-size:calc(11px * var(--ui-font-scale))}
.pair-history-table th,.pair-history-table td{padding:6px 5px;line-height:1.25;overflow:hidden;text-overflow:ellipsis}
.pair-history-table th{font-size:calc(10px * var(--ui-font-scale));letter-spacing:0;text-transform:none}
.pair-history-table .history-pair{font-size:calc(11px * var(--ui-font-scale));max-width:100%;overflow:hidden;text-overflow:ellipsis}
.history-pair-cell{display:flex;align-items:center;gap:2px;min-width:0;max-width:100%}
.history-pair-cell .history-pair-trend{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history-pair-cell .favorite-inline-form{flex:0 0 auto}
.history-pair-cell .favorite-star{width:20px;height:20px;flex-basis:20px;padding:2px}
.history-direction-stack{gap:1px;font-size:calc(10.5px * var(--ui-font-scale))}
.pair-history-table .history-time{font-size:calc(10.5px * var(--ui-font-scale))}
.pair-history-table .history-reason{max-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pair-history-table .history-detail-btn{font-size:calc(10px * var(--ui-font-scale))!important;padding:4px 6px!important;white-space:nowrap}
.pair-history-table th:nth-child(1),.pair-history-table td:nth-child(1){width:3%}
.pair-history-table th:nth-child(2),.pair-history-table td:nth-child(2){width:10%}
.pair-history-table th:nth-child(3),.pair-history-table td:nth-child(3){width:6%}
.pair-history-table th:nth-child(4),.pair-history-table td:nth-child(4){width:10%}
.pair-history-table th:nth-child(5),.pair-history-table td:nth-child(5){width:10%}
.pair-history-table th:nth-child(6),.pair-history-table td:nth-child(6){width:9%}
.pair-history-table th:nth-child(7),.pair-history-table td:nth-child(7){width:7%}
.pair-history-table th:nth-child(8),.pair-history-table td:nth-child(8){width:7%}
.pair-history-table th:nth-child(9),.pair-history-table td:nth-child(9){width:6%}
.pair-history-table th:nth-child(10),.pair-history-table td:nth-child(10){width:7%}
.pair-history-table th:nth-child(11),.pair-history-table td:nth-child(11){width:7%}
.pair-history-table th:nth-child(12),.pair-history-table td:nth-child(12){width:4%}
.pair-history-table th:nth-child(13),.pair-history-table td:nth-child(13){width:8%}
.pair-history-table th:nth-child(14),.pair-history-table td:nth-child(14){width:6%}
@media(max-width:1100px){
  .pair-history-table{font-size:calc(10px * var(--ui-font-scale))}
  .pair-history-table th,.pair-history-table td{padding-left:3px;padding-right:3px}
}

/* V1.0.36: Opportunity Intelligence */
.opportunity-table-wrap{overflow-x:auto}
.opportunity-table{min-width:1470px;font-size:calc(11px * var(--ui-font-scale));table-layout:fixed}
.opportunity-table th,.opportunity-table td{padding:7px 6px;vertical-align:middle}
.opportunity-table th:nth-child(1){width:150px}.opportunity-table th:nth-child(2){width:70px}.opportunity-table th:nth-child(3){width:105px}.opportunity-table th:nth-child(4){width:92px}.opportunity-table th:nth-child(5){width:60px}.opportunity-table th:nth-child(6){width:92px}.opportunity-table th:nth-child(7){width:82px}.opportunity-table th:nth-child(8){width:92px}.opportunity-table th:nth-child(9){width:92px}.opportunity-table th:nth-child(10){width:92px}.opportunity-table th:nth-child(11){width:92px}.opportunity-table th:nth-child(12){width:86px}.opportunity-table th:nth-child(13){width:78px}.opportunity-table th:nth-child(14){width:90px}
.opportunity-table td small{display:block;margin-top:2px;font-size:calc(9.5px * var(--ui-font-scale));white-space:nowrap}
.opportunity-direction,.opportunity-path,.sample-confidence,.regime-status{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:2px 7px;border-radius:999px;font-size:calc(10px * var(--ui-font-scale));white-space:nowrap;border:1px solid var(--border)}
.opportunity-direction.positive{color:#f0b35e}.opportunity-direction.negative{color:#69b7ff}
.path-expanding,.regime-unstable{color:#ff8b82;border-color:rgba(255,107,97,.38)}.path-stalled,.regime-caution{color:#f2c94c;border-color:rgba(242,201,76,.35)}.path-reversing,.regime-normal{color:#75d6a2;border-color:rgba(117,214,162,.34)}.path-inactive{opacity:.55}
.sample-high{color:#75d6a2}.sample-medium{color:#7cbcff}.sample-low{color:#f2c94c}.sample-insufficient{color:#a8adb7}
.opportunity-percentiles{color:var(--muted)}
.opportunity-detail-dialog{width:min(1080px,94vw);max-height:90vh;overflow:auto}
.opportunity-detail-section{margin-top:16px;padding-top:13px;border-top:1px solid var(--border)}
.opportunity-detail-section:first-of-type{margin-top:4px;border-top:0}.opportunity-detail-section h4{margin:0 0 10px;font-size:calc(13px * var(--ui-font-scale))}
.opportunity-reversion-table{overflow-x:auto}.opportunity-reversion-table table{width:100%;border-collapse:collapse;font-size:calc(11px * var(--ui-font-scale))}.opportunity-reversion-table th,.opportunity-reversion-table td{padding:7px 8px;border-bottom:1px solid var(--border);text-align:right}.opportunity-reversion-table th:first-child,.opportunity-reversion-table td:first-child{text-align:left}
.empty-state.compact{padding:12px}
@media(max-width:1100px){.opportunity-toolbar{gap:6px}.opportunity-table{font-size:calc(10.5px * var(--ui-font-scale))}.opportunity-table th,.opportunity-table td{padding:6px 5px}}

/* V1.0.37: non-blocking cached Binance exchange-history page. */
.exchange-history-control { display:flex; flex-direction:column; gap:10px; }
.exchange-history-updated { margin-left:12px; }
.exchange-history-loading { display:flex; align-items:center; gap:9px; font-size:calc(13px * var(--ui-font-scale)); }
.exchange-history-loading[hidden] { display:none; }
.exchange-history-spinner { width:14px; height:14px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; display:inline-block; animation:exchange-history-spin .8s linear infinite; }
@keyframes exchange-history-spin { to { transform:rotate(360deg); } }

/* V1.0.40: Opportunity Intelligence readability + action column */
.opportunity-summary .research-summary-item span{font-size:calc(12px * var(--ui-font-scale))}
.opportunity-summary .research-summary-item strong{font-size:calc(16px * var(--ui-font-scale))}
.opportunity-summary .research-summary-item small{font-size:calc(11.5px * var(--ui-font-scale))}
.opportunity-toolbar input,.opportunity-toolbar select{font-size:calc(13px * var(--ui-font-scale))}
.opportunity-table{min-width:1730px;font-size:calc(12.5px * var(--ui-font-scale))}
.opportunity-table th,.opportunity-table td{padding:8px 7px}
.opportunity-table thead th{font-size:calc(12px * var(--ui-font-scale))}
.opportunity-table td small{font-size:calc(11.5px * var(--ui-font-scale));line-height:1.35}
.opportunity-direction,.opportunity-path,.sample-confidence,.regime-status{min-height:25px;padding:3px 8px;font-size:calc(11.5px * var(--ui-font-scale))}
.opportunity-table th:nth-child(14){width:250px}
.opportunity-actions{gap:6px;white-space:nowrap}
.opportunity-actions .secondary-btn,.opportunity-actions .lifecycle-action{font-size:calc(11.5px * var(--ui-font-scale));padding:6px 9px}
.opportunity-detail-dialog{font-size:calc(13px * var(--ui-font-scale))}
.opportunity-detail-section h4{font-size:calc(14px * var(--ui-font-scale))}
.opportunity-detail-grid span{font-size:calc(12px * var(--ui-font-scale))}
.opportunity-detail-grid strong{font-size:calc(13px * var(--ui-font-scale))}
.opportunity-reversion-table table{font-size:calc(12.5px * var(--ui-font-scale))}
.opportunity-reversion-table th,.opportunity-reversion-table td{padding:8px 9px}
.opportunity-trend-modal .position-mini-chart-head strong{font-size:calc(13px * var(--ui-font-scale))}
.opportunity-trend-modal .position-mini-chart-head small{font-size:calc(11.5px * var(--ui-font-scale))}
@media(max-width:1100px){.opportunity-table{font-size:calc(12px * var(--ui-font-scale))}.opportunity-table th,.opportunity-table td{padding:7px 6px}.opportunity-table td small{font-size:calc(11px * var(--ui-font-scale))}}

/* V1.0.47: global light / dark appearance switch */
:root{
  color-scheme:dark;
  --border:var(--line);
  --surface-input:#151c25;
  --surface-soft:#111820;
  --surface-raised:#171e27;
  --surface-sidebar:#11151b;
  --surface-hover:#1a2028;
  --shadow-color:rgba(0,0,0,.28);
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f5f7fa;
  --panel:#ffffff;
  --panel-2:#f2f5f8;
  --line:#d9e0e7;
  --border:#d9e0e7;
  --text:#1f2933;
  --muted:#687684;
  --accent:#d64545;
  --good:#16875f;
  --bad:#c83e50;
  --surface-input:#ffffff;
  --surface-soft:#f6f8fa;
  --surface-raised:#eef2f6;
  --surface-sidebar:#ffffff;
  --surface-hover:#f0f3f6;
  --shadow-color:rgba(24,39,55,.10);
}
:root[data-theme="light"] body{
  background:#f5f7fa;
  color:var(--text);
}
:root[data-theme="light"] h1,
:root[data-theme="light"] h2,
:root[data-theme="light"] h3,
:root[data-theme="light"] h4,
:root[data-theme="light"] .sidebar-title,
:root[data-theme="light"] strong{
  color:#202a35;
}
:root[data-theme="light"] .sidebar{
  background:var(--surface-sidebar);
  border-right-color:#d7dee6;
  box-shadow:1px 0 0 rgba(30,45,60,.02);
}
:root[data-theme="light"] .sidebar-brand{border-bottom-color:#e1e6eb}
:root[data-theme="light"] .sidebar-logo{filter:drop-shadow(0 3px 7px rgba(30,45,60,.10))}
:root[data-theme="light"] .mainnav.sidebar-nav a,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2{color:#4a5867}
:root[data-theme="light"] .mainnav.sidebar-nav a:hover,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1:hover,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2:hover{background:#f0f3f6;color:#1f2933;border-color:#dce2e8}
:root[data-theme="light"] .mainnav.sidebar-nav a.active,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1.active,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2.active{background:#edf1f5;color:#1d2731;border-color:#ccd5de;box-shadow:inset 3px 0 0 #7a8794}
:root[data-theme="light"] .nav-group-title{color:#8a96a2}
:root[data-theme="light"] .sidebar-user{border-bottom-color:#e1e6eb}
:root[data-theme="light"] .sidebar-user strong{color:#25313d}
:root[data-theme="light"] .sidebar-user small,
:root[data-theme="light"] .sidebar-footer-label,
:root[data-theme="light"] .sidebar-footer-value{color:#758291}
:root[data-theme="light"] .sidebar-user button{background:#f6f8fa;border-color:#d5dde5;color:#52606d}
:root[data-theme="light"] .sidebar-user button:hover{background:#eef2f6;color:#202a35}
.ui-theme-control{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 10px;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}
.ui-theme-control select{width:68px;height:26px;padding:2px 5px;border:1px solid #36414d;border-radius:6px;background:#151c25;color:#cbd3dd;font-size:calc(10px * var(--ui-font-scale));outline:none}
.ui-theme-control select:focus{border-color:#69798d}
:root[data-theme="light"] .ui-theme-control select{background:#fff;border-color:#ccd5de;color:#344250}
:root[data-theme="light"] .ui-theme-control select:focus{border-color:#8c9aa8}

:root[data-theme="light"] .panel,
:root[data-theme="light"] .metric,
:root[data-theme="light"] .mini-metric,
:root[data-theme="light"] .credential-card,
:root[data-theme="light"] .settings-group,
:root[data-theme="light"] .manual-action-card,
:root[data-theme="light"] .startup-recovery-review,
:root[data-theme="light"] .execution-fault-review,
:root[data-theme="light"] .execution-fault-item,
:root[data-theme="light"] details,
:root[data-theme="light"] .detail-summary,
:root[data-theme="light"] .detail-grid div,
:root[data-theme="light"] .management-overview-strip,
:root[data-theme="light"] .profit-stat-grid>div{
  background:#fff;
  border-color:#d9e0e7;
  box-shadow:none;
}
:root[data-theme="light"] .metric,
:root[data-theme="light"] .mini-metric,
:root[data-theme="light"] .detail-grid div,
:root[data-theme="light"] .startup-review-grid>div,
:root[data-theme="light"] .profit-stat-grid>div{background:#f6f8fa}
:root[data-theme="light"] .notice{background:#f4f7fb;border-color:#d6dee8;color:#41505f}
:root[data-theme="light"] .warn-notice{background:#fff8e8;border-color:#ead7a2;color:#765b18}
:root[data-theme="light"] .success-notice{background:#eef9f4;border-color:#b9dfcf;color:var(--semantic-green)}
:root[data-theme="light"] .error-notice{background:#fff1f3;border-color:#ecc3ca;color:var(--semantic-red)}
:root[data-theme="light"] .warning-text{color:#8a6515}
:root[data-theme="light"] .stock{color:#24313e}
:root[data-theme="light"] .positive{color:var(--semantic-green)!important}
:root[data-theme="light"] .negative{color:var(--semantic-red)!important}
:root[data-theme="light"] .state-tag.ok-tag{color:var(--semantic-green);background:#eaf7f1}
:root[data-theme="light"] .state-tag.warn{color:#8a6515;background:#fff6dd}

:root[data-theme="light"] table,
:root[data-theme="light"] th,
:root[data-theme="light"] td{color:#344250}
:root[data-theme="light"] th{color:#697684}
:root[data-theme="light"] th,
:root[data-theme="light"] td{border-bottom-color:#e3e8ed}
:root[data-theme="light"] tbody tr:hover td{background:rgba(239,243,247,.72)}
:root[data-theme="light"] .history-main-table-scroll{border-color:#d9e0e7;background:#fff}
:root[data-theme="light"] .history-main-table-scroll thead th{background:#eef2f6;box-shadow:0 1px 0 #d8dfe6}
:root[data-theme="light"] .history-main-row td{border-bottom-color:rgba(80,100,120,.13)}

:root[data-theme="light"] input,
:root[data-theme="light"] select,
:root[data-theme="light"] textarea,
:root[data-theme="light"] .confirm-input,
:root[data-theme="light"] .filter-row select,
:root[data-theme="light"] .setting-field input[type="number"],
:root[data-theme="light"] .credential-card input,
:root[data-theme="light"] .user-position-filter-grid input,
:root[data-theme="light"] .user-position-filter-grid select,
:root[data-theme="light"] .profit-filter-grid input,
:root[data-theme="light"] .profit-filter-grid select,
:root[data-theme="light"] .recon-action-picker .recon-action-select{
  background:#fff!important;
  color:#273440!important;
  border-color:#ccd5de!important;
}
:root[data-theme="light"] input::placeholder,
:root[data-theme="light"] textarea::placeholder{color:#9aa5b0}
:root[data-theme="light"] .setting-field,
:root[data-theme="light"] .credential-card label{color:#52606d}
:root[data-theme="light"] .setting-field small{color:#7f8c98}
:root[data-theme="light"] .sticky-actions{background:rgba(255,255,255,.94);border-color:#d9e0e7}

:root[data-theme="light"] .secondary-btn,
:root[data-theme="light"] .pager .pager-page{
  background:#f3f6f8;
  color:#344250;
  border-color:#cfd8e1;
}
:root[data-theme="light"] .secondary-btn:hover{background:#e9eef3;color:#202a35}
:root[data-theme="light"] .pager .pager-page.active{background:#e1e7ed;border-color:#abb8c5;color:#202a35}
:root[data-theme="light"] .text-btn{color:#416c9c}
:root[data-theme="light"] .text-btn:hover{color:#294f7a}
:root[data-theme="light"] .danger-btn{background:#fff0f2;color:var(--semantic-red);border-color:#e0a9b2}
:root[data-theme="light"] .danger-btn:hover{background:#ffe6ea}

:root[data-theme="light"] .subnav a{color:#667482;border-color:#d6dde5;background:#fff}
:root[data-theme="light"] .subnav a:hover,
:root[data-theme="light"] .subnav a.active{color:#26323e;background:#edf2f6;border-color:#bdc8d3}
:root[data-theme="light"] .mainnav:not(.sidebar-nav) a{color:#536373;border-color:#d4dce4;background:#fff}
:root[data-theme="light"] .mainnav:not(.sidebar-nav) a:hover{background:#eef2f6;color:#202a35}

:root[data-theme="light"] summary{color:#3b4856}
:root[data-theme="light"] .json-block{color:#344250}
:root[data-theme="light"] code{color:#405a73}
:root[data-theme="light"] .muted-text,
:root[data-theme="light"] .pager-text,
:root[data-theme="light"] .table-sub,
:root[data-theme="light"] .section-meta{color:#73808d}

:root[data-theme="light"] .modal-dialog,
:root[data-theme="light"] .log-detail-dialog,
:root[data-theme="light"] .position-detail-dialog,
:root[data-theme="light"] .history-detail-dialog,
:root[data-theme="light"] .opportunity-detail-dialog,
:root[data-theme="light"] .global-expiry-dialog{
  background:#fff!important;
  color:#273440;
  border-color:#d5dde5!important;
  box-shadow:0 20px 60px rgba(35,52,68,.18)!important;
}
:root[data-theme="light"] .modal-backdrop,
:root[data-theme="light"] .log-detail-backdrop,
:root[data-theme="light"] .position-detail-backdrop,
:root[data-theme="light"] .global-expiry-backdrop{background:rgba(31,43,55,.32)}
:root[data-theme="light"] .global-expiry-x,
:root[data-theme="light"] .log-detail-x{color:#6e7b88}
:root[data-theme="light"] .global-expiry-x:hover,
:root[data-theme="light"] .log-detail-x:hover{color:#202a35}

:root[data-theme="light"] .pair-chart-tooltip{background:rgba(255,255,255,.98)!important;border-color:#cfd8e1!important;color:#273440!important;box-shadow:0 8px 26px rgba(35,52,68,.15)!important}
:root[data-theme="light"] .pair-chart-tooltip strong,
:root[data-theme="light"] .pair-chart-tooltip b{color:#273440!important}
:root[data-theme="light"] .pair-chart-tooltip span,
:root[data-theme="light"] .pair-chart-tooltip em{color:#71808e!important}

:root[data-theme="light"] .log-detail-summary-grid>div,
:root[data-theme="light"] .execution-leg-card,
:root[data-theme="light"] .log-truth-grid>div,
:root[data-theme="light"] .position-mini-chart-card,
:root[data-theme="light"] .research-summary-item,
:root[data-theme="light"] .opportunity-summary .research-summary-item{
  background:#f6f8fa!important;
  border-color:#d9e0e7!important;
}
:root[data-theme="light"] .execution-leg-meta strong,
:root[data-theme="light"] .execution-fault-meta strong,
:root[data-theme="light"] .startup-review-grid strong{color:#2d3945}
:root[data-theme="light"] .execution-leg-meta small,
:root[data-theme="light"] .execution-fault-meta small,
:root[data-theme="light"] .startup-review-grid span,
:root[data-theme="light"] .startup-recovery-review>small{color:#73808d}

:root[data-theme="light"] .profit-summary-head{background:rgba(22,135,95,.06)}
:root[data-theme="light"] .profit-footnotes,
:root[data-theme="light"] .profit-stat-grid small{color:#758290}
:root[data-theme="light"] .profit-footnotes code{color:#526576}

:root[data-theme="light"] .auth-page{background:#f3f6f9}
:root[data-theme="light"] .auth-card{background:#fff!important;border-color:#d9e0e7!important;box-shadow:0 20px 55px rgba(35,52,68,.12)!important}
:root[data-theme="light"] .auth-card h1{color:#202a35}
:root[data-theme="light"] .auth-subtitle,
:root[data-theme="light"] .auth-foot{color:#71808e}
:root[data-theme="light"] .auth-form label{color:#52606d}
:root[data-theme="light"] .auth-form input{background:#fff;color:#25313d;border-color:#ccd5de}
:root[data-theme="light"] .auth-warning{background:#fff8e8;border-color:#ead7a2;color:#765b18}
:root[data-theme="light"] .auth-error{background:#fff0f2;border-color:#e4b7bf;color:var(--semantic-red)}

@media (prefers-reduced-motion: reduce){
  :root[data-theme="light"] *, :root[data-theme="dark"] *{transition:none!important}
}
:root[data-theme="light"] .opened-section .pair-table-card+.pair-table-card,
:root[data-theme="light"] .pending-section .pair-table-card+.pair-table-card{border-top-color:#dfe5eb!important}
:root[data-theme="light"] .pending-section .pt-pair .pair-name-row>strong,
:root[data-theme="light"] .pending-section .pt-entry-deviation,
:root[data-theme="light"] .pending-section .pt-add-info>div b,
:root[data-theme="light"] .opened-section .pt-funding span,
:root[data-theme="light"] .opened-section .pt-funding strong,
:root[data-theme="light"] .pt-total-line b{color:#43515f!important}
:root[data-theme="light"] .pending-section .pt-pair>small,
:root[data-theme="light"] .opened-section .pt-funding small,
:root[data-theme="light"] .opened-section .pt-add-info>div:not(.pt-add-executed):not(.pt-add-exit-line) small,
:root[data-theme="light"] .pair-label-inline small,
:root[data-theme="light"] .pt-opened-time,
:root[data-theme="light"] .cell-hover-pop small{color:#74818e!important}
:root[data-theme="light"] .cell-hover-pop b{color:#2f3a45}
:root[data-theme="light"] .research-summary-item strong,
:root[data-theme="light"] .research-pair-name,
:root[data-theme="light"] .research-stat-main{color:#2c3844}
:root[data-theme="light"] .research-pair-sub,
:root[data-theme="light"] .research-stat-sub{color:#73808d}
:root[data-theme="light"] .research-toolbar input,
:root[data-theme="light"] .research-toolbar select{background:#fff;color:#273440;border-color:#ccd5de}
:root[data-theme="light"] .research-table-wrap{border-color:#d9e0e7;background:#fff}
:root[data-theme="light"] .research-table thead th{background:#eef2f6;box-shadow:0 1px 0 #d8dfe6}
:root[data-theme="light"] .research-table tbody tr:hover{background:#f4f7f9}

/* V1.0.48 Batch-Based Staged Exit */
.pt-exit-info{display:flex!important;flex-direction:column;align-items:flex-start!important;gap:3px;line-height:1.18}
.pt-exit-info>div{display:grid;grid-template-columns:42px minmax(70px,1fr);gap:4px;align-items:center;width:100%}
.pt-exit-info span{font-size:calc(10px * var(--ui-font-scale));color:var(--muted)}
.pt-exit-info b{font-size:calc(10.5px * var(--ui-font-scale));white-space:nowrap;color:var(--text)}
.pt-exit-info small{grid-column:2;font-size:calc(9px * var(--ui-font-scale))!important}
.pt-exit-executed small{color:#87b995!important}.pt-exit-pending small{color:#9eb7d1!important}.pt-exit-final small{color:#d4b06c!important}
.position-detail-adds+.position-detail-adds{margin-top:8px}

/* V1.0.54: compact dynamic add / staged-exit table in open-position config modal. */
.position-plan-section{padding-bottom:10px!important}
.position-plan-toggles{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:5px}
.position-plan-toggles .position-add-toggle{margin:0}
.position-plan-help{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));line-height:1.45;margin-bottom:8px}
.position-future-adds{margin-top:7px;display:block}
.position-plan-table-wrap{max-height:390px;overflow:auto;border:1px solid var(--line);border-radius:9px;background:var(--panel-2)}
.position-plan-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:calc(11px * var(--ui-font-scale))}
.position-plan-table th{position:sticky;top:0;z-index:2;padding:6px 8px;background:var(--panel);color:var(--muted);font-size:calc(10px * var(--ui-font-scale));font-weight:700;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
.position-plan-table td{padding:4px 7px;border-bottom:1px solid var(--line);vertical-align:middle}
.position-plan-table tbody tr:last-child td{border-bottom:0}
.position-plan-table .position-plan-index-col{width:78px}
.position-plan-table .position-plan-status-col{width:122px;text-align:right}
.position-plan-table .position-plan-index{font-weight:700;color:var(--text);white-space:nowrap}
.position-plan-table input{width:100%;height:30px;box-sizing:border-box;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:4px 7px;font-size:calc(12px * var(--ui-font-scale));line-height:1.2}
.position-plan-table input::placeholder{color:var(--muted);opacity:.72}
.position-plan-table .position-plan-status{text-align:right;white-space:nowrap}
.position-plan-badge{display:inline-flex;align-items:center;justify-content:center;margin-left:4px;padding:3px 7px;border-radius:999px;font-size:calc(9.5px * var(--ui-font-scale));font-weight:800;line-height:1.2}
.position-plan-badge.done{color:var(--good);border:1px solid color-mix(in srgb,var(--good) 42%,transparent);background:color-mix(in srgb,var(--good) 11%,transparent)}
.position-plan-more-row{display:flex;align-items:center;gap:10px;margin-top:8px}
.position-plan-more-row small{color:var(--muted);font-size:calc(9.5px * var(--ui-font-scale))}
.position-plan-more-row .secondary-btn{padding:6px 10px;font-size:calc(10.5px * var(--ui-font-scale))}
.position-plan-more-row .secondary-btn:disabled{opacity:.55;cursor:not-allowed}
.js-position-add-section.staged-exit-off .position-plan-exit-cell{opacity:.48}
.pair-param-modal .position-plan-table input{font-size:calc(12px * var(--ui-font-scale));padding:4px 7px}
.pair-param-modal .position-plan-table .locked-input{height:30px}
@media(max-width:760px){
  .position-plan-table-wrap{overflow:auto;max-height:360px}
  .position-plan-table{min-width:720px}
  .position-plan-toggles{gap:10px}
}


/* V1.1.2: complete light-theme surface/token coverage + trend overlay/layer fix */
:root{
  --surface-page:var(--bg);
  --surface-panel:var(--panel);
  --surface-card:var(--panel-2);
  --surface-overlay:#0b131d;
  --surface-chart:#101721;
  --surface-table-head:#20252e;
  --text-strong:var(--text);
  --text-secondary:var(--muted);
  --text-soft:#788392;
  --control-bg:#151c25;
  --control-border:#394553;
  --control-hover:#202a35;
  --chart-grid:#2a3038;
  --chart-axis:#8d96a3;
}
:root[data-theme="light"]{
  --surface-page:#f5f7fa;
  --surface-panel:#ffffff;
  --surface-card:#f7f9fb;
  --surface-overlay:#ffffff;
  --surface-chart:#ffffff;
  --surface-table-head:#eef2f6;
  --text-strong:#1f2933;
  --text-secondary:#5f6f7e;
  --text-soft:#74818e;
  --control-bg:#ffffff;
  --control-border:#c9d3dd;
  --control-hover:#eef2f6;
  --chart-grid:#dfe5eb;
  --chart-axis:#657483;
  --good:#087a53;
  --bad:#b92f43;
}

/* Page + neutral typography: every page inherits a light surface and readable text. */
:root[data-theme="light"] body,
:root[data-theme="light"] .app-main,
:root[data-theme="light"] .page-shell{background:var(--surface-page)!important;color:var(--text-strong)!important}
:root[data-theme="light"] p,
:root[data-theme="light"] label,
:root[data-theme="light"] span,
:root[data-theme="light"] small,
:root[data-theme="light"] td,
:root[data-theme="light"] li{border-color:var(--line)}
:root[data-theme="light"] .page-subtitle,
:root[data-theme="light"] .pair-sub,
:root[data-theme="light"] .pair-meta span,
:root[data-theme="light"] .pair-query-hint,
:root[data-theme="light"] .pair-query-result-title span,
:root[data-theme="light"] .research-pair-sub,
:root[data-theme="light"] .research-stat-sub,
:root[data-theme="light"] .detail-hero-card span,
:root[data-theme="light"] .detail-hero-card small,
:root[data-theme="light"] .criteria-item span,
:root[data-theme="light"] .criteria-item small,
:root[data-theme="light"] .funding-summary-grid span,
:root[data-theme="light"] .pair-edit-grid small,
:root[data-theme="light"] .pair-add-row small,
:root[data-theme="light"] .position-trend-mode-note,
:root[data-theme="light"] .pending-joined-time,
:root[data-theme="light"] .execution-leg-head small,
:root[data-theme="light"] .execution-leg-grid span,
:root[data-theme="light"] .execution-exception-summary span,
:root[data-theme="light"] .position-trend-loading p,
:root[data-theme="light"] .trend-series-legend,
:root[data-theme="light"] .position-marker-legend-item,
:root[data-theme="light"] .position-marker-legend-item em{color:var(--text-secondary)!important}

/* All common neutral surfaces/cards/tables on every route. */
:root[data-theme="light"] .panel,
:root[data-theme="light"] .pair-management-section,
:root[data-theme="light"] .pair-card,
:root[data-theme="light"] .pair-query-panel,
:root[data-theme="light"] .research-panel,
:root[data-theme="light"] .chart-panel,
:root[data-theme="light"] .settings-page-shell,
:root[data-theme="light"] .api-page-shell,
:root[data-theme="light"] .user-create-panel,
:root[data-theme="light"] .profit-filter-panel,
:root[data-theme="light"] .profit-summary-panel,
:root[data-theme="light"] .manual-action-card,
:root[data-theme="light"] .startup-recovery-review,
:root[data-theme="light"] .execution-fault-review,
:root[data-theme="light"] .history-main-table-scroll,
:root[data-theme="light"] .research-table-wrap,
:root[data-theme="light"] .opportunity-table-wrap{
  background:var(--surface-panel)!important;
  border-color:var(--line)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .pair-card{background:#fff!important;border-color:#d6dee6!important;box-shadow:0 5px 16px rgba(31,45,61,.06)!important}
:root[data-theme="light"] .pair-card-head,
:root[data-theme="light"] .pair-edit,
:root[data-theme="light"] .pair-edit-section,
:root[data-theme="light"] .pair-param-modal-head,
:root[data-theme="light"] .pair-edit-actions,
:root[data-theme="light"] .user-manage-modal-head,
:root[data-theme="light"] .execution-leg-head{border-color:var(--line)!important}
:root[data-theme="light"] .pair-kpi>div,
:root[data-theme="light"] .leg-chip,
:root[data-theme="light"] .pair-meta,
:root[data-theme="light"] .research-summary-item,
:root[data-theme="light"] .detail-hero-card,
:root[data-theme="light"] .criteria-item,
:root[data-theme="light"] .funding-summary-grid>div,
:root[data-theme="light"] .pair-add-row,
:root[data-theme="light"] .pending-detail-grid>div,
:root[data-theme="light"] .execution-leg-card,
:root[data-theme="light"] .execution-leg-grid>div,
:root[data-theme="light"] .execution-exception-summary>div,
:root[data-theme="light"] .manual-close-grid>div,
:root[data-theme="light"] .user-edit-form,
:root[data-theme="light"] .position-plan-table-wrap{
  background:var(--surface-card)!important;
  border-color:var(--line)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .pair-name,
:root[data-theme="light"] .pair-table-name-btn,
:root[data-theme="light"] .pair-kpi strong,
:root[data-theme="light"] .pair-static-value strong,
:root[data-theme="light"] .pair-add-row-title,
:root[data-theme="light"] .pair-edit>summary,
:root[data-theme="light"] .research-market-leg a,
:root[data-theme="light"] .execution-exception-summary strong,
:root[data-theme="light"] .manual-close-grid strong{color:var(--text-strong)!important}
:root[data-theme="light"] .pair-table-name-btn:hover,
:root[data-theme="light"] .research-market-leg a:hover{color:#0d1822!important}

/* Tables: sticky headers, rows and detail tables. */
:root[data-theme="light"] table{background:transparent!important}
:root[data-theme="light"] thead th,
:root[data-theme="light"] .research-table thead th,
:root[data-theme="light"] .position-plan-table th,
:root[data-theme="light"] .history-main-table-scroll thead th{background:var(--surface-table-head)!important;color:#536271!important;border-color:#d8e0e7!important;box-shadow:0 1px 0 #d8e0e7!important}
:root[data-theme="light"] tbody tr,
:root[data-theme="light"] tbody td{background:transparent!important;color:#2d3a46!important}
:root[data-theme="light"] tbody tr:hover td,
:root[data-theme="light"] .research-table tbody tr:hover{background:#f3f6f9!important}

/* Inputs/forms everywhere. */
:root[data-theme="light"] input,
:root[data-theme="light"] select,
:root[data-theme="light"] textarea,
:root[data-theme="light"] .pair-query-form input,
:root[data-theme="light"] .pair-edit-grid input,
:root[data-theme="light"] .pair-add-row input,
:root[data-theme="light"] .pair-add-head select,
:root[data-theme="light"] .user-create-grid input,
:root[data-theme="light"] .user-create-grid select,
:root[data-theme="light"] .user-edit-form input,
:root[data-theme="light"] .user-edit-form select,
:root[data-theme="light"] .user-reset-form input,
:root[data-theme="light"] .user-manage-form input,
:root[data-theme="light"] .user-manage-form select,
:root[data-theme="light"] .user-manage-reset-form input,
:root[data-theme="light"] .position-plan-table input{
  background:var(--control-bg)!important;
  border-color:var(--control-border)!important;
  color:#263440!important;
}
:root[data-theme="light"] input:focus,
:root[data-theme="light"] select:focus,
:root[data-theme="light"] textarea:focus{border-color:#7b8fa3!important;box-shadow:0 0 0 2px rgba(87,111,135,.12)!important;outline:none}
:root[data-theme="light"] input:disabled,
:root[data-theme="light"] select:disabled,
:root[data-theme="light"] textarea:disabled,
:root[data-theme="light"] .locked-input{background:#eef2f5!important;color:#6d7a86!important;border-color:#d7dfe6!important}
:root[data-theme="light"] input::placeholder,
:root[data-theme="light"] textarea::placeholder{color:#7f8b96!important;opacity:1}
:root[data-theme="light"] .pair-query-form label,
:root[data-theme="light"] .pair-edit-grid label,
:root[data-theme="light"] .pair-add-row label,
:root[data-theme="light"] .user-create-grid label,
:root[data-theme="light"] .user-edit-form label,
:root[data-theme="light"] .user-manage-form label,
:root[data-theme="light"] .user-manage-reset-form label{color:#526170!important}

/* Buttons: remove black leftovers in light mode while preserving semantic success/danger. */
:root[data-theme="light"] .secondary-btn,
:root[data-theme="light"] .compact-btn,
:root[data-theme="light"] .user-manage-btn,
:root[data-theme="light"] .pair-query-swap,
:root[data-theme="light"] .trend-mode-btn,
:root[data-theme="light"] .sidebar-user button,
:root[data-theme="light"] button:not(.primary-btn):not(.danger-btn):not(.favorite-star):not(.execution-exception-trigger):not(.global-expiry-backdrop):not(.modal-backdrop):not(.log-detail-backdrop):not(.position-detail-backdrop):not(.user-manage-modal-backdrop){
  background:#f4f6f8;
  border-color:#cbd5de;
  color:#344352;
}
:root[data-theme="light"] .secondary-btn:hover,
:root[data-theme="light"] .compact-btn:hover,
:root[data-theme="light"] .user-manage-btn:hover,
:root[data-theme="light"] .pair-query-swap:hover,
:root[data-theme="light"] .sidebar-user button:hover,
:root[data-theme="light"] button:not(.primary-btn):not(.danger-btn):not(.favorite-star):hover{background:#e9eef2;color:#192631;border-color:#b8c5d0}
:root[data-theme="light"] .primary-btn{background:#273541!important;border-color:#273541!important;color:#fff!important}
:root[data-theme="light"] .primary-btn:hover{background:#17232d!important;border-color:#17232d!important}
:root[data-theme="light"] .danger-btn{background:#fff0f2!important;border-color:#dfaab3!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .danger-btn:hover{background:#ffe5e9!important}
:root[data-theme="light"] .trend-mode-btn.active{background:#e8f6f1!important;border-color:#83cbb2!important;color:var(--semantic-green)!important}

/* Query/research/opportunity/history pages. */
:root[data-theme="light"] .pair-query-history a,
:root[data-theme="light"] .period-tabs a{background:#fff!important;border-color:#d3dce4!important;color:#526170!important}
:root[data-theme="light"] .pair-query-history a:hover,
:root[data-theme="light"] .period-tabs a:hover,
:root[data-theme="light"] .period-tabs a.active{background:#eaf4f1!important;border-color:#9bc9bb!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .direction-tag.neutral{color:#596876!important;border-color:#cfd8e0!important;background:#f6f8fa!important}
:root[data-theme="light"] .opportunity-direction,
:root[data-theme="light"] .opportunity-path,
:root[data-theme="light"] .sample-confidence,
:root[data-theme="light"] .regime-status{background:#f7f9fb;border-color:#d5dde5}

/* Settings/API credentials: remove dark status cards and notice bands. */
:root[data-theme="light"] .settings-page-shell .account-risk-group,
:root[data-theme="light"] .credential-card,
:root[data-theme="light"] .api-status-grid>div,
:root[data-theme="light"] .api-result-grid>div,
:root[data-theme="light"] .api-legacy-note,
:root[data-theme="light"] .api-credential-note{
  background:#f7f9fb!important;
  border-color:#d5dee6!important;
  color:#344352!important;
}
:root[data-theme="light"] .settings-page-shell .setting-field>span:first-child,
:root[data-theme="light"] .api-credential-head h2,
:root[data-theme="light"] .api-status-grid strong{color:#263440!important}
:root[data-theme="light"] .api-status-grid span,
:root[data-theme="light"] .api-credential-head p,
:root[data-theme="light"] .api-legacy-note,
:root[data-theme="light"] .api-credential-note{color:#687684!important}

/* Modals of every family. */
:root[data-theme="light"] .pair-param-modal-dialog,
:root[data-theme="light"] .position-trend-dialog,
:root[data-theme="light"] .pending-detail-dialog,
:root[data-theme="light"] .manual-close-dialog,
:root[data-theme="light"] .execution-exception-dialog,
:root[data-theme="light"] .user-manage-modal-dialog,
:root[data-theme="light"] .log-detail-dialog,
:root[data-theme="light"] .position-detail-dialog,
:root[data-theme="light"] .history-detail-dialog,
:root[data-theme="light"] .opportunity-detail-dialog{
  background:var(--surface-overlay)!important;
  color:var(--text-strong)!important;
  border-color:#cfd9e2!important;
  box-shadow:0 22px 65px rgba(33,49,65,.18)!important;
}
:root[data-theme="light"] .pair-param-modal-backdrop,
:root[data-theme="light"] .user-manage-modal-backdrop,
:root[data-theme="light"] .log-detail-backdrop{background:rgba(31,43,55,.30)!important}
:root[data-theme="light"] .pair-param-modal-x,
:root[data-theme="light"] .user-manage-modal-x{color:#657482!important;background:transparent!important;border-color:transparent!important}
:root[data-theme="light"] .pair-param-modal-x:hover,
:root[data-theme="light"] .user-manage-modal-x:hover{background:#eef2f5!important;color:#1d2934!important}
:root[data-theme="light"] .position-trend-loading,
:root[data-theme="light"] .execution-exception-loading{color:#596978!important}
:root[data-theme="light"] .position-trend-loading strong{color:#273440!important}
:root[data-theme="light"] .loading-spinner{border-color:#d4dce4!important;border-top-color:#3a86c8!important}

/* Chart surfaces: Canvas palette already follows theme; containers must follow too. */
:root[data-theme="light"] .pair-chart-wrap,
:root[data-theme="light"] .position-mini-chart,
:root[data-theme="light"] .position-mini-chart-wrap{background:var(--surface-chart)!important;border-color:#d6dee6!important}
:root[data-theme="light"] .position-mini-chart-head strong{color:#283642!important}
:root[data-theme="light"] .position-mini-chart-head span{color:#657482!important}
:root[data-theme="light"] .trend-series-legend-item b,
:root[data-theme="light"] .position-marker-legend-item b{color:#334250!important}
:root[data-theme="light"] .position-marker-legend-item i{box-shadow:0 0 0 1px #fff!important}

/* Trend modal overlay/layer fix: no clipping; opaque legend sits above canvas badges/crosshair. */
.position-mini-chart{position:relative;overflow:visible!important;isolation:isolate}
.position-mini-chart-wrap{position:relative;overflow:visible!important;isolation:isolate}
.position-mini-chart-wrap canvas{position:relative;z-index:1}
.position-mini-chart-wrap .trend-series-legend-side{z-index:40!important;background:#101721!important;opacity:1!important;backdrop-filter:none!important;box-shadow:0 6px 18px rgba(0,0,0,.24)}
.position-mini-chart-wrap .pair-chart-tooltip{z-index:60!important}
.position-mini-chart-head{position:relative;z-index:50}
:root[data-theme="light"] .position-mini-chart-wrap .trend-series-legend-side{background:#fff!important;border-color:#cfd9e2!important;box-shadow:0 6px 18px rgba(31,49,66,.12)!important}

/* Alerts/exceptions/manual close remain semantic but readable on light surfaces. */
:root[data-theme="light"] .manual-close-warning,
:root[data-theme="light"] .execution-exception-section{background:#fff1f3!important;border-color:#e5bcc4!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .execution-exception-section.action{background:#fff8e6!important;border-color:#e6d19a!important;color:#725819!important}
:root[data-theme="light"] .manual-close-result.pending,
:root[data-theme="light"] .manual-close-result.warn{background:#fff8e6!important;border-color:#e6d19a!important;color:#725819!important}
:root[data-theme="light"] .manual-close-result.success{background:#edf8f3!important;border-color:#b7decf!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .manual-close-result.error{background:#fff1f3!important;border-color:#e5bcc4!important;color:var(--semantic-red)!important}

/* Generic borders/dividers after late-loaded legacy rules. */
:root[data-theme="light"] hr,
:root[data-theme="light"] .user-manage-divider{background:#dce3e9!important;border-color:#dce3e9!important}

:root[data-theme="light"] .api-state{background:#f4f7f9!important;border-color:#cdd7df!important;color:#526170!important}
:root[data-theme="light"] .api-state.ready{background:#eaf7f1!important;border-color:#a8d8c7!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .api-state.idle{background:#fff7e2!important;border-color:#e5d29c!important;color:#765b18!important}
:root[data-theme="light"] .api-status-grid>div,
:root[data-theme="light"] .api-result-card,
:root[data-theme="light"] .api-result-grid>div{background:#f7f9fb!important;border-color:#d6dee6!important;color:#344352!important}
:root[data-theme="light"] .api-status-grid span,
:root[data-theme="light"] .api-result-grid span,
:root[data-theme="light"] .api-result-head span,
:root[data-theme="light"] .api-footnote{color:#657482!important}
:root[data-theme="light"] .api-warning{background:#fff1f3!important;border-color:#e5bcc4!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .api-legacy-note{background:#f3f6f9!important;border-color:#d2dce5!important;color:#526170!important}
:root[data-theme="light"] .api-raw-result pre{background:#f3f6f9!important;color:#344352!important;border-color:#d6dee6!important}
:root[data-theme="light"] .settings-page-shell .settings-group{background:#fff!important;border-color:#d6dee6!important}
:root[data-theme="light"] .settings-page-shell .settings-group summary{color:#263440!important}
:root[data-theme="light"] .settings-page-shell .setting-field>small{color:#697886!important}
:root[data-theme="light"] .settings-page-shell .sticky-actions{background:rgba(255,255,255,.96)!important;border-color:#d3dce4!important;box-shadow:0 6px 20px rgba(31,47,63,.08)!important}

/* Preserve scrolling on tall trend dialogs while allowing chart child overlays inside each card. */
.position-trend-dialog{overflow:auto!important}
.position-trend-content{overflow:visible}

/* V1.1.2 extended route/component coverage: legacy dark surfaces that predate theme tokens. */
:root[data-theme="light"] .compact-credential-card,
:root[data-theme="light"] .fast-metric,
:root[data-theme="light"] .fast-cache-table-wrap,
:root[data-theme="light"] .fast-meta-card,
:root[data-theme="light"] .recon-op-section,
:root[data-theme="light"] .system-control-card,
:root[data-theme="light"] .system-process-item,
:root[data-theme="light"] .compact-info-panel,
:root[data-theme="light"] .compact-edit>form,
:root[data-theme="light"] .position-kpi-grid>div,
:root[data-theme="light"] .position-summary-grid>div,
:root[data-theme="light"] .position-leg-card,
:root[data-theme="light"] .position-leg-stats>div,
:root[data-theme="light"] .position-leg-compare,
:root[data-theme="light"] .position-compare-head,
:root[data-theme="light"] .position-summary-lines>div,
:root[data-theme="light"] .position-add-status,
:root[data-theme="light"] .log-detail-summary-grid>div,
:root[data-theme="light"] .log-truth-grid>div,
:root[data-theme="light"] .history-summary-grid>div,
:root[data-theme="light"] .position-detail-grid>div,
:root[data-theme="light"] .startup-review-grid>div,
:root[data-theme="light"] .execution-fault-item,
:root[data-theme="light"] .cell-hover-pop,
:root[data-theme="light"] .profit-stat-grid>div,
:root[data-theme="light"] .global-expiry-dialog,
:root[data-theme="light"] .api-json-block,
:root[data-theme="light"] .execution-exception-raw pre{
  background:#f7f9fb!important;
  border-color:#d5dee6!important;
  color:#344352!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .opened-section .pair-table-head,
:root[data-theme="light"] .pending-section .pair-table-head{background:#eef2f6!important;border-color:#d8e0e7!important;color:#536271!important}
:root[data-theme="light"] .opened-section .pair-table-row,
:root[data-theme="light"] .pending-section .pair-table-row{background:#fff!important;border-color:#dde4ea!important}
:root[data-theme="light"] .opened-section .pair-table-row:hover,
:root[data-theme="light"] .pending-section .pair-table-row:hover{background:#f5f8fa!important}
:root[data-theme="light"] .locked-input,
:root[data-theme="light"] .pair-add-row input.locked-input{background:#eef2f5!important;color:#657482!important;border-color:#d5dde5!important}
:root[data-theme="light"] .history-filters input,
:root[data-theme="light"] .history-filters select,
:root[data-theme="light"] .pair-toolbar input,
:root[data-theme="light"] .pair-toolbar select,
:root[data-theme="light"] .table-setting-input,
:root[data-theme="light"] .log-position-filter,
:root[data-theme="light"] .level-analysis-run-form select,
:root[data-theme="light"] .exchange-profit-sync-form input{background:#fff!important;color:#273440!important;border-color:#ccd5de!important}
:root[data-theme="light"] .modal-close,
:root[data-theme="light"] .global-expiry-x,
:root[data-theme="light"] .log-detail-x{background:transparent!important;color:#657482!important;border-color:transparent!important}
:root[data-theme="light"] .modal-close:hover,
:root[data-theme="light"] .global-expiry-x:hover,
:root[data-theme="light"] .log-detail-x:hover{background:#edf2f5!important;color:#1f2b36!important}

:root[data-theme="light"] .detail-summary,
:root[data-theme="light"] details,
:root[data-theme="light"] .history-position-detail>summary,
:root[data-theme="light"] .log-technical-details summary,
:root[data-theme="light"] .execution-exception-raw summary,
:root[data-theme="light"] .fast-raw-details>summary,
:root[data-theme="light"] .user-edit-details>summary{color:#445463!important}
:root[data-theme="light"] .json-block,
:root[data-theme="light"] .api-json-block,
:root[data-theme="light"] .execution-exception-raw pre{color:#33495c!important}
:root[data-theme="light"] .history-subtitle,
:root[data-theme="light"] .history-time,
:root[data-theme="light"] .pair-history-table .history-time,
:root[data-theme="light"] .pair-status-stack small,
:root[data-theme="light"] .pt-two-lines small,
:root[data-theme="light"] .pt-add-info small,
:root[data-theme="light"] .pt-add-info>div>span,
:root[data-theme="light"] .pt-note span,
:root[data-theme="light"] .position-detail-grid span,
:root[data-theme="light"] .position-detail-grid small,
:root[data-theme="light"] .startup-review-grid span,
:root[data-theme="light"] .execution-fault-meta small,
:root[data-theme="light"] .execution-fault-review>small,
:root[data-theme="light"] .cell-hover-pop small{color:#6d7b88!important}
:root[data-theme="light"] .cell-hover-pop b,
:root[data-theme="light"] .startup-review-grid strong,
:root[data-theme="light"] .execution-fault-meta strong{color:#2c3945!important}

/* Light semantic surfaces keep meaning without retaining dark blocks. */
:root[data-theme="light"] .state-tag.bad-tag,
:root[data-theme="light"] .pair-status.abnormal,
:root[data-theme="light"] .lifecycle-action.abnormal,
:root[data-theme="light"] .startup-review-badge.bad,
:root[data-theme="light"] .startup-recheck-status.bad{background:#fff0f2!important;border-color:#e2aeb8!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .pair-status.observing,
:root[data-theme="light"] .lifecycle-action.observing,
:root[data-theme="light"] .log-status-pill.warn,
:root[data-theme="light"] .path-stalled,
:root[data-theme="light"] .regime-caution{background:#fff8e5!important;border-color:#e4d09a!important;color:#765b18!important}
:root[data-theme="light"] .log-status-pill.success,
:root[data-theme="light"] .lifecycle-action.waiting,
:root[data-theme="light"] .startup-review-badge:not(.bad){background:#edf8f3!important;border-color:#b4ddcd!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .log-status-pill.neutral{background:#f2f5f8!important;border-color:#d0d9e1!important;color:#526170!important}
:root[data-theme="light"] .log-status-pill.error{background:#fff0f2!important;border-color:#e2aeb8!important;color:var(--semantic-red)!important}

/* Safety/diagnostics controls keep semantic intent in light mode. */
:root[data-theme="light"] .emergency-open-state,
:root[data-theme="light"] .emergency-confirm,
:root[data-theme="light"] .emergency-pending,
:root[data-theme="light"] .control-inline-message,
:root[data-theme="light"] .recon-op-steps,
:root[data-theme="light"] .instrument-cache-state{background:#f6f8fa!important;border-color:#d4dde5!important;color:#4b5b69!important}
:root[data-theme="light"] .emergency-stop-btn{background:#fff0f2!important;border-color:#dfadb6!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .emergency-resume-btn{background:#edf8f3!important;border-color:#b2dccc!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .control-error{color:var(--semantic-red)!important}.control-ok{color:var(--good)}

/* Light-theme semantic text contrast: darker red/green/grey for readability. */
:root[data-theme="light"] .positive,
:root[data-theme="light"] .pos,
:root[data-theme="light"] .dev-positive,
:root[data-theme="light"] .opened-section .pt-total-pnl strong.dev-positive,
:root[data-theme="light"] .opened-section .pt-total-pnl small.dev-positive,
:root[data-theme="light"] .opened-section [data-live-open-anchor-dev].dev-positive,
:root[data-theme="light"] .pending-section [data-live-pending-deviation].dev-positive,
:root[data-theme="light"] .opened-section .pair-table-row .research-deviation.dev-positive,
:root[data-theme="light"] .pending-section .pair-table-row .research-deviation.dev-positive{color:var(--semantic-green)!important}
:root[data-theme="light"] .negative,
:root[data-theme="light"] .neg,
:root[data-theme="light"] .dev-negative,
:root[data-theme="light"] .opened-section .pt-total-pnl strong.dev-negative,
:root[data-theme="light"] .opened-section .pt-total-pnl small.dev-negative,
:root[data-theme="light"] .opened-section [data-live-open-anchor-dev].dev-negative,
:root[data-theme="light"] .pending-section [data-live-pending-deviation].dev-negative,
:root[data-theme="light"] .opened-section .pair-table-row .research-deviation.dev-negative,
:root[data-theme="light"] .pending-section .pair-table-row .research-deviation.dev-negative{color:var(--semantic-red)!important}
:root[data-theme="light"] .muted,
:root[data-theme="light"] .muted-text,
:root[data-theme="light"] .direction-neutral,
:root[data-theme="light"] .research-deviation.muted{color:#657482!important}

/* V1.1.3: light-theme contrast/control audit + chart overlay collision fix */
:root[data-theme="light"]{
  --text-strong:#17232d;
  --text-secondary:#465766;
  --text-soft:#5b6a78;
  --control-border:#b9c5d0;
  --control-hover:#e6ebef;
  --chart-axis:#526170;
  --good:#05745a;
  --bad:#b4233c;
}

/* Global light-theme typography: eliminate washed-out text without flattening semantic colors. */
:root[data-theme="light"] body{color:#17232d!important}
:root[data-theme="light"] .page-subtitle,
:root[data-theme="light"] .pair-sub,
:root[data-theme="light"] .table-sub,
:root[data-theme="light"] .section-meta,
:root[data-theme="light"] .muted,
:root[data-theme="light"] .muted-text,
:root[data-theme="light"] .pager-text,
:root[data-theme="light"] .history-subtitle,
:root[data-theme="light"] .history-time,
:root[data-theme="light"] .research-pair-sub,
:root[data-theme="light"] .research-stat-sub,
:root[data-theme="light"] .research-progress small,
:root[data-theme="light"] .research-progress .published-note,
:root[data-theme="light"] .opportunity-percentiles,
:root[data-theme="light"] .pair-status-stack small,
:root[data-theme="light"] .pt-two-lines small,
:root[data-theme="light"] .pt-add-info small,
:root[data-theme="light"] .pt-add-info>div>span,
:root[data-theme="light"] .pt-note span,
:root[data-theme="light"] .pending-joined-time,
:root[data-theme="light"] .api-status-grid span,
:root[data-theme="light"] .api-result-grid span,
:root[data-theme="light"] .api-result-head span,
:root[data-theme="light"] .api-footnote,
:root[data-theme="light"] .settings-page-shell .setting-field>small,
:root[data-theme="light"] .position-mini-chart-head span,
:root[data-theme="light"] .trend-series-legend,
:root[data-theme="light"] .position-marker-legend-item,
:root[data-theme="light"] .position-marker-legend-item em{color:#4f6070!important}
:root[data-theme="light"] .research-progress-head b,
:root[data-theme="light"] .research-summary-item span,
:root[data-theme="light"] .detail-hero-card span,
:root[data-theme="light"] .criteria-item span,
:root[data-theme="light"] .funding-summary-grid span{color:#3f5060!important}
:root[data-theme="light"] .research-progress-head em{color:var(--semantic-green)!important;font-weight:800}
:root[data-theme="light"] .research-progress-track{background:#d8e0e7!important}
:root[data-theme="light"] .research-progress-track i{background:#28bfa8!important}

/* Stronger semantic red/green/grey across every route. */
:root[data-theme="light"] .positive,
:root[data-theme="light"] .pos,
:root[data-theme="light"] .dev-positive,
:root[data-theme="light"] .sample-high,
:root[data-theme="light"] .path-reversing,
:root[data-theme="light"] .regime-normal,
:root[data-theme="light"] .pt-add-info .pt-stage-done,
:root[data-theme="light"] .pt-add-info .pt-stage-done span,
:root[data-theme="light"] .pt-add-info .pt-stage-done b,
:root[data-theme="light"] .pt-add-info .pt-stage-done small,
:root[data-theme="light"] .pt-add-info .pt-stage-status-done{color:var(--semantic-green)!important}
:root[data-theme="light"] .negative,
:root[data-theme="light"] .neg,
:root[data-theme="light"] .dev-negative,
:root[data-theme="light"] .opportunity-direction.negative,
:root[data-theme="light"] .path-expanding,
:root[data-theme="light"] .regime-unstable{color:var(--semantic-red)!important}
:root[data-theme="light"] .direction-neutral,
:root[data-theme="light"] .research-deviation.muted,
:root[data-theme="light"] .sample-insufficient,
:root[data-theme="light"] .pt-add-info .pt-stage-pending,
:root[data-theme="light"] .pt-add-info .pt-stage-pending span,
:root[data-theme="light"] .pt-add-info .pt-stage-pending b,
:root[data-theme="light"] .pt-add-info .pt-stage-pending small{color:#5b6977!important}

/* Opportunity/research tags: light fills + darker text so status chips are not washed out. */
:root[data-theme="light"] .opportunity-direction,
:root[data-theme="light"] .opportunity-path,
:root[data-theme="light"] .sample-confidence,
:root[data-theme="light"] .regime-status,
:root[data-theme="light"] .direction-tag{background:#f7f9fb!important;border-color:#c6d1db!important;font-weight:700}
:root[data-theme="light"] .path-expanding,
:root[data-theme="light"] .regime-unstable{background:#fff0f2!important;border-color:#d99aa7!important}
:root[data-theme="light"] .path-reversing,
:root[data-theme="light"] .regime-normal{background:#ebf7f2!important;border-color:#9ccfbc!important}
:root[data-theme="light"] .path-stalled,
:root[data-theme="light"] .regime-caution,
:root[data-theme="light"] .sample-low{background:#fff7df!important;border-color:#dbc477!important;color:#725513!important}
:root[data-theme="light"] .sample-insufficient{background:#f1f4f7!important;border-color:#c5cfd8!important;color:#566675!important}
:root[data-theme="light"] .direction-tag.low{background:#eaf7f4!important;border-color:#9bcfc5!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .direction-tag.high{background:#fff0f2!important;border-color:#d99aa7!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .direction-tag.neutral{background:#f1f4f7!important;border-color:#c5cfd8!important;color:#4f5f6e!important}

/* Sidebar: selected route must remain light, not a dark pill. */
:root[data-theme="light"] .mainnav.sidebar-nav a,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2{color:#3d4d5c!important}
:root[data-theme="light"] .mainnav.sidebar-nav a:hover,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1:hover,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2:hover{background:#eef2f5!important;color:#17232d!important;border-color:#c7d1da!important}
:root[data-theme="light"] .mainnav.sidebar-nav a.active,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1.active,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2.active{background:#e3e9ee!important;color:#17232d!important;border-color:#b4c0cb!important;box-shadow:none!important;font-weight:800!important}
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-1.active::before,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2.active::after{background:#65788a!important}
:root[data-theme="light"] .nav-group-title{color:#607080!important}
:root[data-theme="light"] .nav-group.group-active .nav-group-title{color:#40505f!important}
:root[data-theme="light"] .nav-submenu::before,
:root[data-theme="light"] .mainnav.sidebar-nav a.nav-level-2::before{background:#cbd4dc!important}

/* Buttons: one calm light-theme control language on all pages. */
:root[data-theme="light"] button,
:root[data-theme="light"] .secondary-btn,
:root[data-theme="light"] .compact-btn,
:root[data-theme="light"] .user-manage-btn,
:root[data-theme="light"] .pager-btn,
:root[data-theme="light"] .pagination-btn,
:root[data-theme="light"] .history-detail-btn,
:root[data-theme="light"] .exchange-history-refresh-btn,
:root[data-theme="light"] .trend-more-btn,
:root[data-theme="light"] .pair-query-swap,
:root[data-theme="light"] .lifecycle-action:not(.abnormal),
:root[data-theme="light"] .opportunity-actions .secondary-btn{
  background:#f8fafb!important;
  color:#263542!important;
  border-color:#b9c6d1!important;
  box-shadow:0 1px 2px rgba(31,47,63,.04)!important;
}
:root[data-theme="light"] button:hover,
:root[data-theme="light"] .secondary-btn:hover,
:root[data-theme="light"] .compact-btn:hover,
:root[data-theme="light"] .user-manage-btn:hover,
:root[data-theme="light"] .pager-btn:hover,
:root[data-theme="light"] .pagination-btn:hover,
:root[data-theme="light"] .history-detail-btn:hover,
:root[data-theme="light"] .exchange-history-refresh-btn:hover,
:root[data-theme="light"] .trend-more-btn:hover,
:root[data-theme="light"] .pair-query-swap:hover{background:#e8edf1!important;color:#17232d!important;border-color:#9fadb9!important}
:root[data-theme="light"] .primary-btn,
:root[data-theme="light"] .auth-submit,
:root[data-theme="light"] .api-save-btn{background:#263746!important;color:#fff!important;border-color:#263746!important;box-shadow:none!important}
:root[data-theme="light"] .primary-btn:hover,
:root[data-theme="light"] .auth-submit:hover,
:root[data-theme="light"] .api-save-btn:hover{background:#172733!important;border-color:#172733!important}
:root[data-theme="light"] .danger-btn,
:root[data-theme="light"] .emergency-stop-btn{background:#fff1f3!important;color:var(--semantic-red)!important;border-color:#dca0ac!important}
:root[data-theme="light"] button:disabled,
:root[data-theme="light"] .secondary-btn:disabled,
:root[data-theme="light"] .compact-btn:disabled{background:#eef2f5!important;color:#7a8793!important;border-color:#d0d8df!important;opacity:1!important;box-shadow:none!important}

/* Table / card secondary copy: explicit darker values beat legacy low-contrast declarations. */
:root[data-theme="light"] thead th,
:root[data-theme="light"] .research-table thead th,
:root[data-theme="light"] .opportunity-table thead th{color:#425362!important;font-weight:800!important}
:root[data-theme="light"] tbody td{color:#24323e!important}
:root[data-theme="light"] .research-stat-main,
:root[data-theme="light"] .research-range,
:root[data-theme="light"] .opportunity-table td{color:#24323e}
:root[data-theme="light"] .research-stat-sub,
:root[data-theme="light"] .opportunity-table td small{color:#536474!important}

/* Inputs/placeholders: no pale grey copy. */
:root[data-theme="light"] input,
:root[data-theme="light"] select,
:root[data-theme="light"] textarea{color:#20303c!important;border-color:#b8c5d0!important;background:#fff!important}
:root[data-theme="light"] input::placeholder,
:root[data-theme="light"] textarea::placeholder{color:#667686!important;opacity:1!important}
:root[data-theme="light"] input:disabled,
:root[data-theme="light"] select:disabled,
:root[data-theme="light"] textarea:disabled,
:root[data-theme="light"] .locked-input{color:#596977!important;background:#edf1f4!important;border-color:#cbd4dc!important}

/* Trend modal collision fix: external legend owns the reserved right gutter; cursor value badge stays inside plot. */
.position-mini-chart-wrap{overflow:visible!important}
.position-mini-chart-wrap canvas{z-index:1!important}
.position-mini-chart-wrap .trend-series-legend-side{z-index:80!important;right:14px!important;top:14px!important;pointer-events:none!important}
.position-mini-chart-wrap .pair-chart-tooltip{z-index:100!important}
.position-mini-chart-head{z-index:90!important}
:root[data-theme="light"] .position-mini-chart-wrap .trend-series-legend-side{background:#fff!important;color:#263542!important;border:1px solid #bdc9d3!important;box-shadow:0 7px 22px rgba(31,47,63,.14)!important}
:root[data-theme="light"] .trend-series-legend-item b{color:#263542!important;font-weight:700!important}
:root[data-theme="light"] .pair-chart-tooltip{background:#fff!important;color:#1f2c37!important;border-color:#b9c6d1!important;box-shadow:0 10px 28px rgba(31,47,63,.16)!important}
:root[data-theme="light"] .pair-chart-tooltip b,
:root[data-theme="light"] .pair-chart-tooltip strong{color:#1f2c37!important}
:root[data-theme="light"] .pair-chart-tooltip span,
:root[data-theme="light"] .pair-chart-tooltip em{color:#4e5f6e!important}

/* V1.1.4: light-theme status/deviation/action refinement + red favorites */
:root[data-theme="light"]{
  --deviation-positive:#008a63;
  --deviation-negative:#b4233c;
  --done-green:#087553;
  --done-green-bg:#e8f7ef;
  --done-green-border:#99d4ba;
  --entry-grey:#4b5966;
  --action-bg:#eef3f6;
  --action-border:#a9b7c3;
  --action-text:#20313e;
  --favorite-red:#c6283f;
  --favorite-red-bg:#fff0f3;
  --favorite-red-border:#e5a5b0;
}

/* Global signed deviation palette: one visual truth across every light-theme route. */
:root[data-theme="light"] .positive,
:root[data-theme="light"] .pos,
:root[data-theme="light"] .dev-positive,
:root[data-theme="light"] .research-deviation.dev-positive,
:root[data-theme="light"] [class*="deviation"].dev-positive,
:root[data-theme="light"] .opened-section [data-live-open-anchor-dev].dev-positive,
:root[data-theme="light"] .pending-section [data-live-pending-deviation].dev-positive,
:root[data-theme="light"] .opened-section .pair-table-row .pos,
:root[data-theme="light"] .pending-section .pair-table-row .pos{
  color:var(--deviation-positive)!important;
}
:root[data-theme="light"] .negative,
:root[data-theme="light"] .neg,
:root[data-theme="light"] .dev-negative,
:root[data-theme="light"] .research-deviation.dev-negative,
:root[data-theme="light"] [class*="deviation"].dev-negative,
:root[data-theme="light"] .opened-section [data-live-open-anchor-dev].dev-negative,
:root[data-theme="light"] .pending-section [data-live-pending-deviation].dev-negative,
:root[data-theme="light"] .opened-section .pair-table-row .neg,
:root[data-theme="light"] .pending-section .pair-table-row .neg{
  color:var(--deviation-negative)!important;
}

/* Open-position status: observation-style green chip, not a pale outline. */
:root[data-theme="light"] .pair-management-section .pair-status.open,
:root[data-theme="light"] .opened-section .pair-status.open{
  color:var(--semantic-green)!important;
  background:#e8f7ef!important;
  border:1px solid #8fcfb3!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.38)!important;
  font-weight:800!important;
}

/* Entry deviation is historical context: readable dark grey, never washed out. */
:root[data-theme="light"] .opened-section .pt-entry-deviation,
:root[data-theme="light"] .position-kpi-grid .pt-entry-deviation,
:root[data-theme="light"] [data-entry-deviation],
:root[data-theme="light"] .entry-deviation-value{
  color:var(--entry-grey)!important;
}

/* Completed staged ADD/EXIT states: stronger green copy everywhere. */
:root[data-theme="light"] .pt-add-info .pt-stage-done,
:root[data-theme="light"] .pt-add-info .pt-stage-done span,
:root[data-theme="light"] .pt-add-info .pt-stage-done b,
:root[data-theme="light"] .pt-add-info .pt-stage-done small,
:root[data-theme="light"] .pt-add-info .pt-stage-status-done,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed small{
  color:var(--done-green)!important;
  font-weight:700;
}
:root[data-theme="light"] .pt-add-info .pt-stage-pending,
:root[data-theme="light"] .pt-add-info .pt-stage-pending span,
:root[data-theme="light"] .pt-add-info .pt-stage-pending b,
:root[data-theme="light"] .pt-add-info .pt-stage-pending small,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending small{
  color:#566675!important;
}

/* Research and Favorites share the same action language in light theme. */
:root[data-theme="light"] .research-actions .secondary-btn,
:root[data-theme="light"] .research-actions .link-btn,
:root[data-theme="light"] .research-actions button,
:root[data-theme="light"] #researchTable .secondary-btn,
:root[data-theme="light"] #favoriteTable .secondary-btn{
  background:var(--action-bg)!important;
  color:var(--action-text)!important;
  border:1px solid var(--action-border)!important;
  box-shadow:0 1px 2px rgba(31,47,63,.06)!important;
  font-weight:800!important;
}
:root[data-theme="light"] .research-actions .secondary-btn:hover,
:root[data-theme="light"] .research-actions .link-btn:hover,
:root[data-theme="light"] .research-actions button:hover,
:root[data-theme="light"] #researchTable .secondary-btn:hover,
:root[data-theme="light"] #favoriteTable .secondary-btn:hover{
  background:#dfe7ec!important;
  color:#12232f!important;
  border-color:#8798a6!important;
}
:root[data-theme="light"] .research-actions .lifecycle-action.waiting,
:root[data-theme="light"] .research-actions .lifecycle-action.open,
:root[data-theme="light"] .research-actions .lifecycle-action.observing,
:root[data-theme="light"] #researchTable .lifecycle-action,
:root[data-theme="light"] #favoriteTable .lifecycle-action{
  color:var(--semantic-green)!important;
  background:#e8f7ef!important;
  border:1px solid #96d0b6!important;
  box-shadow:none!important;
  font-weight:800!important;
}

/* Current market prices were too pale in Research/Favorites. */
:root[data-theme="light"] .research-market-leg .market-price,
:root[data-theme="light"] #researchTable .market-price,
:root[data-theme="light"] #favoriteTable .market-price{
  color:#334452!important;
  font-weight:700!important;
  opacity:1!important;
}
:root[data-theme="light"] .research-market-leg a{
  color:#172733!important;
  font-weight:800!important;
}

/* Favorites are globally red, regardless of route; active state receives a soft red surface. */
.favorite-star{
  color:#cf4053!important;
  border-color:transparent!important;
  background:transparent!important;
}
.favorite-star:hover{
  color:#e0485d!important;
  background:rgba(207,64,83,.10)!important;
  border-color:rgba(207,64,83,.28)!important;
}
.favorite-star.active{
  color:#d32f49!important;
  background:rgba(211,47,73,.13)!important;
  border-color:rgba(211,47,73,.36)!important;
}
.favorite-star.active .favorite-star-icon path{
  fill:currentColor!important;
  stroke:currentColor!important;
}
.favorite-star:not(.active) .favorite-star-icon path{
  fill:transparent!important;
  stroke:currentColor!important;
}
:root[data-theme="light"] .favorite-star{
  color:var(--favorite-red)!important;
}
:root[data-theme="light"] .favorite-star:hover{
  color:var(--semantic-red)!important;
  background:var(--favorite-red-bg)!important;
  border-color:var(--favorite-red-border)!important;
}
:root[data-theme="light"] .favorite-star.active{
  color:var(--semantic-red)!important;
  background:#ffe9ee!important;
  border-color:#df98a5!important;
}

/* Recommended/favorites table parity: stronger secondary copy and current-market hierarchy. */
:root[data-theme="light"] #researchTable .research-pair-sub,
:root[data-theme="light"] #favoriteTable .research-pair-sub,
:root[data-theme="light"] #researchTable .research-stat-sub,
:root[data-theme="light"] #favoriteTable .research-stat-sub{
  color:#536372!important;
}
:root[data-theme="light"] #researchTable .research-model-direction,
:root[data-theme="light"] #researchTable .research-direction,
:root[data-theme="light"] #favoriteTable .research-model-direction,
:root[data-theme="light"] #favoriteTable .research-direction{
  color:#334452!important;
}


/* V1.1.5: lifecycle status style unification.
   waiting/observing share the amber observation language; a real OPEN Position
   uses the same chip geometry with green semantics. Keep this block last so
   legacy route-specific rules cannot flip the colors again. */
:root{
  --lifecycle-amber-text:#7d5a08;
  --lifecycle-amber-bg:#fff4d6;
  --lifecycle-amber-border:#dfbd63;
  --lifecycle-green-text:#076b4d;
  --lifecycle-green-bg:#e6f7ef;
  --lifecycle-green-border:#8ccdaf;
}

/* Shared geometry for lifecycle chips/buttons across management, research,
   favorites and opportunity pages. */
.pair-status.waiting,
.pair-status.observing,
.pair-status.open,
.lifecycle-action.waiting,
.lifecycle-action.observing,
.lifecycle-action.open{
  border-radius:999px!important;
  border-width:1px!important;
  border-style:solid!important;
  box-shadow:none!important;
  font-weight:800!important;
}

/* Waiting for ENTRY and real-time observation are the same amber family. */
.pair-status.waiting,
.pair-status.observing,
.lifecycle-action.waiting,
.lifecycle-action.observing{
  color:#f0c95d!important;
  background:rgba(198,148,34,.13)!important;
  border-color:rgba(224,184,79,.72)!important;
}

/* A verified OPEN/NORMAL Position is green, but uses the same visual grammar. */
.pair-status.open,
.lifecycle-action.open{
  color:#63ddb0!important;
  background:rgba(22,136,95,.14)!important;
  border-color:rgba(38,185,130,.72)!important;
}

/* Light-theme lifecycle semantics: amber waiting/observing, green holding. */
:root[data-theme="light"] .pair-status.waiting,
:root[data-theme="light"] .pair-status.observing,
:root[data-theme="light"] .lifecycle-action.waiting,
:root[data-theme="light"] .lifecycle-action.observing,
:root[data-theme="light"] .research-actions .lifecycle-action.waiting,
:root[data-theme="light"] .research-actions .lifecycle-action.observing,
:root[data-theme="light"] #researchTable .lifecycle-action.waiting,
:root[data-theme="light"] #researchTable .lifecycle-action.observing,
:root[data-theme="light"] #favoriteTable .lifecycle-action.waiting,
:root[data-theme="light"] #favoriteTable .lifecycle-action.observing,
:root[data-theme="light"] .opportunity-actions .lifecycle-action.waiting,
:root[data-theme="light"] .opportunity-actions .lifecycle-action.observing{
  color:var(--lifecycle-amber-text)!important;
  background:var(--lifecycle-amber-bg)!important;
  border-color:var(--lifecycle-amber-border)!important;
}

:root[data-theme="light"] .pair-status.open,
:root[data-theme="light"] .lifecycle-action.open,
:root[data-theme="light"] .research-actions .lifecycle-action.open,
:root[data-theme="light"] #researchTable .lifecycle-action.open,
:root[data-theme="light"] #favoriteTable .lifecycle-action.open,
:root[data-theme="light"] .opportunity-actions .lifecycle-action.open,
:root[data-theme="light"] .pair-management-section .pair-status.open,
:root[data-theme="light"] .opened-section .pair-status.open{
  color:var(--lifecycle-green-text)!important;
  background:var(--lifecycle-green-bg)!important;
  border-color:var(--lifecycle-green-border)!important;
}

/* The management route historically neutralised all pair-status backgrounds.
   Reassert lifecycle surfaces at the final cascade layer. */
:root[data-theme="light"] .pair-management-section .pair-status.waiting,
:root[data-theme="light"] .pair-management-section .pair-status.observing{
  color:var(--lifecycle-amber-text)!important;
  background:var(--lifecycle-amber-bg)!important;
  border-color:var(--lifecycle-amber-border)!important;
}


/* V1.1.7: light-theme UI refinement requested from production screenshots.
   Except for the favorite-star dark-theme color, every rule below is scoped
   to the light theme so the existing dark UI remains unchanged. */

/* Favorites: icon-only star, no circular surface. Dark theme stays yellow;
   light theme keeps the established red semantic color. */
.favorite-star{
  width:28px!important;
  height:28px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:#f2c94c!important;
  box-shadow:none!important;
}
.favorite-star:hover,
.favorite-star.active{
  border:0!important;
  background:transparent!important;
  color:#ffd45f!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .favorite-star,
:root[data-theme="light"] .favorite-star:hover,
:root[data-theme="light"] .favorite-star.active{
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--semantic-red)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .favorite-star:hover{color:var(--semantic-red)!important}
:root[data-theme="light"] .favorite-star.active{color:var(--semantic-red)!important}

/* Closed-position table: larger body copy, stronger timestamps and explicit
   signed net-PnL/net-return colors instead of inheriting neutral black. */
:root[data-theme="light"] .pair-history-table{font-size:calc(12.5px * var(--ui-font-scale))!important}
:root[data-theme="light"] .pair-history-table th{font-size:calc(11.5px * var(--ui-font-scale))!important;padding-top:7px!important;padding-bottom:7px!important}
:root[data-theme="light"] .pair-history-table td{font-size:calc(12.5px * var(--ui-font-scale))!important;padding-top:7px!important;padding-bottom:7px!important}
:root[data-theme="light"] .pair-history-table .history-time{font-size:calc(12.5px * var(--ui-font-scale))!important;color:#344452!important;font-weight:600!important}
:root[data-theme="light"] .pair-history-table td:nth-child(10).pos,
:root[data-theme="light"] .pair-history-table td:nth-child(10).pos strong,
:root[data-theme="light"] .pair-history-table td:nth-child(11).pos{color:var(--semantic-green)!important}
:root[data-theme="light"] .pair-history-table td:nth-child(10).neg,
:root[data-theme="light"] .pair-history-table td:nth-child(10).neg strong,
:root[data-theme="light"] .pair-history-table td:nth-child(11).neg{color:var(--semantic-red)!important}

/* Open positions: future ADD rows are deliberately quieter than executed rows. */
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending small,
:root[data-theme="light"] .opened-section .pt-add-exit-line .pt-stage-pending,
:root[data-theme="light"] .opened-section .pt-add-exit-line .pt-stage-pending span,
:root[data-theme="light"] .opened-section .pt-add-exit-line .pt-stage-pending b,
:root[data-theme="light"] .opened-section .pt-add-exit-line .pt-stage-pending small{color:#a3adb6!important}

/* V1.2.56: dark theme active Start action uses a deep green surface with
   white text. Disabled Start remains neutral and unchanged. */
:root:not([data-theme="light"]) .pending-section .pending-start-btn:not(:disabled){
  background:#176b4d!important;
  border-color:#2b8a68!important;
  color:#ffffff!important;
  box-shadow:none!important;
}
:root:not([data-theme="light"]) .pending-section .pending-start-btn:hover:not(:disabled){
  background:#1f7a59!important;
  border-color:#3a9a78!important;
  color:#ffffff!important;
}

/* Pending lifecycle controls: join time is easier to scan; start/stop use the
   same outlined semantic grammar as Delete, with green/red intent. */
:root[data-theme="light"] .pending-section .pending-joined-time{font-size:calc(11px * var(--ui-font-scale))!important;color:#536472!important;font-weight:600!important}
:root[data-theme="light"] .pending-section .pending-start-btn{
  background:#edf8f3!important;
  border:1px solid #9bcfba!important;
  color:var(--semantic-green)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .pending-section .pending-start-btn:hover:not(:disabled){background:#dff2e9!important;border-color:#78bfa3!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .pending-section .pending-stop-btn{
  background:#fff0f2!important;
  border:1px solid #dfaab3!important;
  color:var(--semantic-red)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .pending-section .pending-stop-btn:hover:not(:disabled){background:#ffe5e9!important;border-color:#cf8794!important;color:var(--semantic-red)!important}
:root[data-theme="light"] .pending-section .pending-start-btn:disabled{opacity:.48!important;cursor:not-allowed!important}

/* Waiting/observing and holding use identical chip geometry; only semantics
   differ (amber vs green). */
:root[data-theme="light"] .pair-status.waiting,
:root[data-theme="light"] .pair-status.observing,
:root[data-theme="light"] .pair-status.open{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:26px!important;
  padding:4px 10px!important;
  border-radius:999px!important;
  border-width:1px!important;
  border-style:solid!important;
  font-size:calc(11px * var(--ui-font-scale))!important;
  line-height:1!important;
  font-weight:800!important;
  box-shadow:none!important;
  white-space:nowrap!important;
}

/* Execution-log BUY/SELL pills: replace dark fills in light-theme modals. */
:root[data-theme="light"] .execution-side-pill.buy{background:#e8f7ef!important;border-color:#99d4ba!important;color:var(--semantic-green)!important}
:root[data-theme="light"] .execution-side-pill.sell{background:#fff0f2!important;border-color:#e5a5b0!important;color:var(--semantic-red)!important}

/* Modal backdrop hover must remain translucent. The broad light-theme button
   hover selector used to repaint backdrop buttons as an opaque control. */
:root[data-theme="light"] .pair-param-modal-backdrop,
:root[data-theme="light"] .pair-param-modal-backdrop:hover,
:root[data-theme="light"] .log-detail-backdrop,
:root[data-theme="light"] .log-detail-backdrop:hover,
:root[data-theme="light"] .user-manage-modal-backdrop,
:root[data-theme="light"] .user-manage-modal-backdrop:hover,
:root[data-theme="light"] .global-expiry-backdrop,
:root[data-theme="light"] .global-expiry-backdrop:hover{
  background:rgba(31,43,55,.30)!important;
  border:0!important;
  color:transparent!important;
  box-shadow:none!important;
}

/* V1.1.8: crosshair Y badge moves out of the plot and above the external
   series legend in both themes. Remaining refinements are light-theme only. */
.position-mini-chart-wrap .pair-chart-y-badge{
  position:absolute;
  z-index:120;
  display:none;
  pointer-events:none;
  min-height:20px;
  box-sizing:border-box;
  padding:3px 8px;
  border-radius:4px;
  background:#3f4c5f;
  color:#f4f7fb;
  border:1px solid rgba(142,160,184,.45);
  box-shadow:0 3px 10px rgba(0,0,0,.22);
  font:600 11px/14px -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
:root[data-theme="light"] .position-mini-chart-wrap .pair-chart-y-badge{
  background:#e2e8ee;
  color:#1f2c37;
  border-color:#bcc8d2;
  box-shadow:0 3px 10px rgba(31,47,63,.14);
}

/* Shared light-theme green action grammar for the explicitly requested
   query/save/add/create/filter/statistics controls only. */
:root[data-theme="light"] #pairQuerySubmit,
:root[data-theme="light"] .pair-param-modal .pair-edit-actions .primary-btn,
:root[data-theme="light"] .position-trend-dialog .research-trend-head-actions .primary-btn,
:root[data-theme="light"] .user-create-action .primary-btn,
:root[data-theme="light"] .user-position-filter-actions .primary-btn,
:root[data-theme="light"] .profit-filter-action .primary-btn{
  background:#edf8f3!important;
  border:1px solid #9bcfba!important;
  color:var(--semantic-green)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] #pairQuerySubmit:hover,
:root[data-theme="light"] .pair-param-modal .pair-edit-actions .primary-btn:hover,
:root[data-theme="light"] .position-trend-dialog .research-trend-head-actions .primary-btn:hover,
:root[data-theme="light"] .user-create-action .primary-btn:hover,
:root[data-theme="light"] .user-position-filter-actions .primary-btn:hover,
:root[data-theme="light"] .profit-filter-action .primary-btn:hover{
  background:#dff2e9!important;
  border-color:#78bfa3!important;
  color:var(--semantic-green)!important;
}

/* Pending WAITING is an actionable live state and uses the same green
   lifecycle grammar as OPEN. OBSERVING intentionally remains amber. */
:root[data-theme="light"] .pending-section .pair-status.waiting{
  color:var(--semantic-green)!important;
  background:#e8f7ef!important;
  border-color:#99d4ba!important;
}

/* Admin user-position OPEN status visually matches the opened-position
   holding chip without altering its template/state semantics. */
:root[data-theme="light"] .admin-user-position-table .user-position-state.open{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:26px!important;
  padding:4px 10px!important;
  border-radius:999px!important;
  border:1px solid #99d4ba!important;
  background:#e8f7ef!important;
  color:var(--semantic-green)!important;
  font-size:calc(11px * var(--ui-font-scale))!important;
  line-height:1!important;
  font-weight:800!important;
  box-shadow:none!important;
  white-space:nowrap!important;
}


/* V1.1.9: light-theme API action / pending join-time readability.
   Chart marker visibility is handled in pair_charts.js and is light-only. */
:root[data-theme="light"] .api-credential-form .api-save-btn{
  background:#edf8f3!important;
  border:1px solid #9bcfba!important;
  color:var(--semantic-green)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .api-credential-form .api-save-btn:hover{
  background:#dff2e9!important;
  border-color:#78bfa3!important;
  color:var(--semantic-green)!important;
}
:root[data-theme="light"] .pending-section .pending-row>div:nth-child(9) small{
  font-size:calc(12.5px * var(--ui-font-scale))!important;
  line-height:1.25!important;
  color:#425564!important;
  font-weight:600!important;
}

/* V1.1.11: recommendation/favorites direction layout and table cleanup. */
.research-direction-stack{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:3px!important;line-height:1.2!important}
.research-direction-stack>span{display:block;white-space:nowrap}

/* V1.1.12 / V1.1.16: simplify staged ADD / EXIT state display.
   Completed rows now use a compact rounded-square check marker + green text;
   pending rows stay gray. */
.pt-add-info .pt-stage-done::before,
.pt-add-info .pt-add-executed::before{
  content:"✓";
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  flex:0 0 auto;
  width:13px;
  height:13px;
  border-radius:4px;
  background:#17906c;
  color:#ffffff;
  font-size:calc(9px * var(--ui-font-scale));
  font-weight:900;
  line-height:1;
  letter-spacing:-0.02em;
  box-shadow:0 1px 2px rgba(11,57,42,.18), inset 0 1px 0 rgba(255,255,255,.18);
  align-self:center;
}
.pt-add-info .pt-add-executed{display:flex!important;align-items:baseline!important;gap:5px!important}
.pt-add-info .pt-add-pending{color:#aab1bc!important}
.pt-add-info .pt-add-pending span,.pt-add-info .pt-add-pending b{color:#aab1bc!important}
:root[data-theme="light"] .pt-add-info .pt-stage-done::before,
:root[data-theme="light"] .pt-add-info .pt-add-executed::before{
  background:#198f6b!important;
  color:#ffffff!important;
  box-shadow:0 1px 2px rgba(15,76,58,.15), inset 0 1px 0 rgba(255,255,255,.2)!important;
}


/* V1.1.13: staged ADD / EXIT alignment and spacing refinement. */
.opened-section .compact-section-head > h2,
.pending-section .compact-section-head > h2{
  font-weight:500!important;
}
.pt-add-info{
  gap:7px!important;
}
.pt-add-info .pt-add-exit-line{
  row-gap:7px!important;
}
.pt-add-info .pt-stage-segment,
.pt-add-info .pt-add-executed{
  position:relative!important;
}
.pt-add-info .pt-stage-done::before,
.pt-add-info .pt-add-executed::before{
  position:absolute!important;
  left:-18px!important;
  top:50%!important;
  transform:translateY(-50%)!important;
  margin:0!important;
}
.pt-add-info .pt-stage-segment,
.pt-add-info .pt-add-executed,
.pt-add-info .pt-add-pending{
  padding-left:0!important;
}

/* V1.1.14: light-theme query action / temporary model contrast / failed criteria surface. */
:root[data-theme="light"] .custom-pair-scorecard .screening-title-actions .primary-btn{
  background:#edf8f3!important;
  border:1px solid #9bcfba!important;
  color:var(--semantic-green)!important;
  box-shadow:none!important;
}
:root[data-theme="light"] .custom-pair-scorecard .screening-title-actions .primary-btn:hover{
  background:#dff2e9!important;
  border-color:#78bfa3!important;
  color:var(--semantic-green)!important;
}
:root[data-theme="light"] .model-source-badge.temporary{
  color:#8a5b00!important;
  background:#fff4d6!important;
  border-color:#dfbd69!important;
}
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.fail{
  background:#fff0f2!important;
  border-color:#e7aab2!important;
}
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.fail span,
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.fail small{
  color:var(--semantic-red)!important;
}
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.fail strong,
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.fail .criteria-reason{
  color:var(--semantic-red)!important;
}


/* V1.1.15: pair-query light-theme semantic text contrast audit. */
:root[data-theme="light"] .pair-detail-toolbar .model-source-badge.official{
  color:var(--semantic-green)!important;
  background:#e6f5ee!important;
  border-color:#87c7ad!important;
  font-weight:800!important;
}
:root[data-theme="light"] .pair-detail-toolbar .model-source-badge.temporary{
  color:#7a4e00!important;
  background:#fff2cf!important;
  border-color:#d8b45b!important;
  font-weight:800!important;
}
:root[data-theme="light"] .pair-query-result-title>span,
:root[data-theme="light"] .detail-hero-card small,
:root[data-theme="light"] .custom-pair-scorecard .screening-title-row p,
:root[data-theme="light"] .custom-pair-scorecard .screening-score span,
:root[data-theme="light"] .custom-pair-scorecard .criteria-item span,
:root[data-theme="light"] .custom-pair-scorecard .criteria-item small{
  color:#455766!important;
}
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.pass{
  background:#eef8f3!important;
  border-color:#a4d5c1!important;
}
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.pass strong,
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.pass .criteria-reason{
  color:var(--semantic-green)!important;
}
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.pass span,
:root[data-theme="light"] .custom-pair-scorecard .criteria-item.pass small{
  color:var(--semantic-green)!important;
}
:root[data-theme="light"] .pair-detail-toolbar .pair-query-result-title strong,
:root[data-theme="light"] .detail-hero-card strong,
:root[data-theme="light"] .custom-pair-scorecard .screening-score strong{
  text-shadow:none!important;
}


/* V1.1.18: light-theme staged ADD / EXIT neutral dark-gray treatment.
   Completion is indicated by the check marker; both completed and pending copy
   use the same dark-gray typography to keep the table visually quieter. */
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done small,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-pending,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-pending span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-pending b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-pending small,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed small,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-pending small{
  color:#46515d!important;
}
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done::before,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed::before{
  background:#596574!important;
  color:#ffffff!important;
  box-shadow:0 1px 2px rgba(40,49,58,.16), inset 0 1px 0 rgba(255,255,255,.16)!important;
}
:root[data-theme="light"] .opened-section .pt-duration>.js-holding-duration{
  font-weight:400!important;
}

/* V1.1.22: simplify opportunity historical percentiles into a two-line compact style:
   top row 30D/90D/180D, bottom row 100/100/100. Values use normal text color. */
.opportunity-deviation-source{color:var(--muted)}
.opportunity-percentile-compact{
  display:flex;
  flex-direction:column;
  gap:4px;
  line-height:1.12;
  white-space:nowrap;
}
.opportunity-percentile-compact small,
.opportunity-percentile-compact strong{
  display:block;
  margin:0!important;
  font-variant-numeric:tabular-nums;
  letter-spacing:.01em;
}
.opportunity-percentile-compact small{
  color:var(--muted);
  font-size:calc(11.5px * var(--ui-font-scale));
}
.opportunity-percentile-compact strong{
  color:var(--text);
  font-size:calc(12.5px * var(--ui-font-scale));
  font-weight:700;
}
:root[data-theme="light"] .opportunity-deviation-source,
:root[data-theme="light"] .opportunity-percentile-compact small{color:#536474!important}
:root[data-theme="light"] .opportunity-percentile-compact strong{color:#24323e!important}


/* V1.1.20: opportunity table removes the redundant Direction column.
   Direction remains inferable from signed/current-deviation semantic color and
   the existing direction filter/data attribute remains available. */
.opportunity-table{min-width:1640px}
.opportunity-table th:nth-child(1){width:160px}
.opportunity-table th:nth-child(2){width:112px}
.opportunity-table th:nth-child(3){width:124px}
.opportunity-table th:nth-child(4){width:64px}
.opportunity-table th:nth-child(5){width:96px}
.opportunity-table th:nth-child(6){width:86px}
.opportunity-table th:nth-child(7){width:96px}
.opportunity-table th:nth-child(8){width:96px}
.opportunity-table th:nth-child(9){width:96px}
.opportunity-table th:nth-child(10){width:96px}
.opportunity-table th:nth-child(11){width:90px}
.opportunity-table th:nth-child(12){width:82px}
.opportunity-table th:nth-child(13){width:250px}


/* V1.1.25: cross-platform UI normalization (macOS / Windows Chrome).
   Keep component colors/layout semantics intact; normalize the rendering base. */
html{
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
body,
button,
input,
select,
textarea{
  font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei UI","Microsoft YaHei","PingFang SC",sans-serif;
}
button,
input,
select,
textarea{
  box-sizing:border-box;
  font-size:inherit;
  line-height:1.2;
}
button,
input,
select,
textarea,
table{
  font-variant-numeric:tabular-nums;
}
button{
  font-family:inherit;
}
input,
select,
textarea{
  min-width:0;
}
table{
  font-family:inherit;
}
th,
td{
  line-height:1.3;
}
/* Avoid platform-specific synthetic heavy weights while keeping visual hierarchy. */
strong,b{font-synthesis-weight:none}


/* V1.1.26: compact laptop layout for narrow desktop viewports.
   Keeps all columns visible on 13-inch Windows-class screens without changing
   the existing >1500px desktop layout or business/data semantics. */
@media (min-width:901px) and (max-width:1500px){
  :root{--sidebar-width:158px}
  .sidebar{padding-left:10px;padding-right:10px}
  .sidebar-brand{padding-left:6px;padding-right:6px}
  .mainnav.sidebar-nav a{padding:9px 9px;font-size:calc(13px * var(--ui-font-scale))}
  .page-shell{padding-left:12px;padding-right:12px}

  /* Pair management: preserve every column, remove the desktop forced width. */
  .opened-section .pair-table-head,
  .opened-section .pair-table-row,
  .pending-section .pair-table-head,
  .pending-section .pair-table-row{
    min-width:0!important;
    width:100%!important;
  }
  .opened-section .pair-table-head,
  .pending-section .pair-table-head{padding-left:8px;padding-right:8px;font-size:calc(10px * var(--ui-font-scale))}
  .opened-section .pair-table-row,
  .pending-section .pair-table-row{padding-left:8px;padding-right:8px}
  .opened-section .pair-table-row>div,
  .pending-section .pair-table-row>div{padding-left:4px;padding-right:4px;font-size:calc(10.5px * var(--ui-font-scale));gap:3px}
  .opened-section .pair-table-row>div>strong,
  .pending-section .pair-table-row>div>strong{font-size:calc(10.5px * var(--ui-font-scale))}
  .opened-section .pair-table-row .pt-pair strong,
  .pending-section .pair-table-row .pt-pair strong,
  .opened-section .pair-table-name-btn,
  .pending-section .pair-table-name-btn{font-size:calc(11.5px * var(--ui-font-scale))}
  .opened-section .research-deviation,
  .pending-section .research-deviation{font-size:calc(12px * var(--ui-font-scale))}
  .opened-section .pt-actions,
  .pending-section .pt-actions{gap:3px;flex-wrap:wrap;justify-content:flex-start}
  .opened-section .pt-actions .compact-btn,
  .pending-section .pt-actions .compact-btn{min-height:25px;padding:3px 6px;font-size:calc(9.5px * var(--ui-font-scale))}
  .opened-section .pt-add-info b,
  .opened-section .pt-add-info span{font-size:calc(10px * var(--ui-font-scale))!important}
  .opened-section .pt-add-info .pt-add-exit-line{column-gap:14px!important}

  /* Favorites keeps the legacy compact-laptop treatment. Recommendation owns one
     scale-safe geometry in the V1.2.94 authoritative block below. */
  #favoriteTable{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
    font-size:calc(10.5px * var(--ui-font-scale))!important;
  }
  #favoriteTable th,#favoriteTable td{padding:6px 4px!important;line-height:1.25}
  #favoriteTable thead th{font-size:calc(10px * var(--ui-font-scale))!important;white-space:normal}
  #favoriteTable th:nth-child(1){width:14%}
  #favoriteTable th:nth-child(2){width:7%}
  #favoriteTable th:nth-child(3){width:10%}
  #favoriteTable th:nth-child(4){width:12%}
  #favoriteTable th:nth-child(5){width:10%}
  #favoriteTable th:nth-child(6){width:12%}
  #favoriteTable th:nth-child(7){width:18%}
  #favoriteTable th:nth-child(8){width:7%}
  #favoriteTable th:nth-child(9){width:10%}
  #favoriteTable .research-pair-name{font-size:calc(11.5px * var(--ui-font-scale))}
  #favoriteTable .research-pair-sub{font-size:calc(8.5px * var(--ui-font-scale))!important}
  #favoriteTable .research-deviation{font-size:calc(12px * var(--ui-font-scale))}
  #favoriteTable .research-range{font-size:calc(10px * var(--ui-font-scale));white-space:normal}
  #favoriteTable .research-market-leg{grid-template-columns:minmax(42px,auto) minmax(48px,1fr) auto;gap:4px;font-size:calc(9.5px * var(--ui-font-scale))}
  #favoriteTable .research-direction-stack{font-size:calc(9.5px * var(--ui-font-scale))}
  #favoriteTable .research-actions{gap:3px;flex-wrap:wrap;white-space:normal}
  #favoriteTable .research-actions .secondary-btn,#favoriteTable .research-actions .lifecycle-action{padding:4px 6px;font-size:calc(9px * var(--ui-font-scale));min-height:24px}

  /* Opportunity: keep all 14 columns; headers may wrap, row data remains visible. */
  #opportunityTable{
    width:100%!important;
    min-width:0!important;
    table-layout:fixed!important;
    font-size:calc(10px * var(--ui-font-scale))!important;
  }
  #opportunityTable th,#opportunityTable td{padding:6px 3px!important;line-height:1.22;overflow-wrap:anywhere}
  #opportunityTable thead th{font-size:calc(9.5px * var(--ui-font-scale))!important;white-space:normal}
  #opportunityTable th:nth-child(1){width:11%}
  #opportunityTable th:nth-child(2){width:6%}
  #opportunityTable th:nth-child(3){width:8%}
  #opportunityTable th:nth-child(4){width:8%}
  #opportunityTable th:nth-child(5){width:5%}
  #opportunityTable th:nth-child(6){width:7%}
  #opportunityTable th:nth-child(7){width:6%}
  #opportunityTable th:nth-child(8){width:7%}
  #opportunityTable th:nth-child(9){width:7%}
  #opportunityTable th:nth-child(10){width:7%}
  #opportunityTable th:nth-child(11){width:7%}
  #opportunityTable th:nth-child(12){width:6%}
  #opportunityTable th:nth-child(13){width:5%}
  #opportunityTable th:nth-child(14){width:10%}
  #opportunityTable .research-pair-title{gap:3px}
  #opportunityTable .research-pair-title strong{font-size:calc(10.5px * var(--ui-font-scale))}
  #opportunityTable .favorite-star{width:18px;height:18px;flex-basis:18px}
  #opportunityTable .research-deviation{font-size:calc(12px * var(--ui-font-scale))}
  #opportunityTable td small{font-size:calc(8.5px * var(--ui-font-scale))!important;white-space:normal}
  #opportunityTable .opportunity-percentile-compact small{font-size:calc(8.5px * var(--ui-font-scale))!important;white-space:nowrap}
  #opportunityTable .opportunity-percentile-compact strong{font-size:calc(9.5px * var(--ui-font-scale));white-space:nowrap}
  #opportunityTable .opportunity-path,
  #opportunityTable .sample-confidence,
  #opportunityTable .regime-status{min-height:21px;padding:2px 4px;font-size:calc(9px * var(--ui-font-scale));white-space:normal;text-align:center}
  #opportunityTable .opportunity-actions{gap:3px;flex-wrap:wrap;white-space:normal}
  #opportunityTable .opportunity-actions .secondary-btn,
  #opportunityTable .opportunity-actions .lifecycle-action{padding:4px 5px;font-size:calc(8.8px * var(--ui-font-scale));min-height:23px}

  .research-table-wrap,
  .opportunity-table-wrap{overflow-x:hidden}
}


/* V1.1.27: favorites page flow + pair-management typography cleanup. */
/* Favorites uses whole-page vertical scrolling; keep only horizontal overflow when needed. */
.favorites-table-wrap{
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:clip!important;
}
/* Favorites current-market legs: keep symbol, price and change close together. */
#favoriteTable .research-market-leg{
  grid-template-columns:max-content max-content max-content!important;
  justify-content:start!important;
  column-gap:9px!important;
}
#favoriteTable .research-market-leg .market-price{text-align:left!important}

/* Opened/Pending management tables use exactly two text sizes:
   primary 12px, secondary 10px. Remove synthetic/bold emphasis in table rows. */
.opened-section .pair-table-head,
.pending-section .pair-table-head{
  font-size:calc(10px * var(--ui-font-scale))!important;
  font-weight:400!important;
}
.opened-section .pair-table-head>span,
.pending-section .pair-table-head>span{font-size:calc(10px * var(--ui-font-scale))!important;font-weight:400!important}

.opened-section .pair-table-row,
.pending-section .pair-table-row,
.opened-section .pair-table-row>div,
.pending-section .pair-table-row>div,
.opened-section .pair-table-name-btn,
.pending-section .pair-table-name-btn,
.opened-section .pair-table-row .research-deviation,
.pending-section .pair-table-row .research-deviation,
.opened-section .pair-table-row .pair-status,
.pending-section .pair-table-row .pair-status,
.opened-section .pt-add-info span,
.opened-section .pt-add-info b,
.pending-section .pt-add-info span,
.pending-section .pt-add-info b,
.opened-section .pt-actions .compact-btn,
.pending-section .pt-actions .compact-btn,
.opened-section .pt-duration>.js-holding-duration{
  font-size:calc(12px * var(--ui-font-scale))!important;
  font-weight:400!important;
}
.opened-section .pair-table-row strong,
.opened-section .pair-table-row b,
.opened-section .pair-table-row button,
.pending-section .pair-table-row strong,
.pending-section .pair-table-row b,
.pending-section .pair-table-row button{
  font-weight:400!important;
}
.opened-section .pair-table-row small,
.pending-section .pair-table-row small,
.opened-section .research-stat-sub,
.pending-section .research-stat-sub,
.opened-section .pt-total-pnl>small,
.opened-section .pt-status>small,
.pending-section .pt-status>small,
.opened-section .pt-pair>small,
.pending-section .pt-pair>small{
  font-size:calc(10px * var(--ui-font-scale))!important;
  font-weight:400!important;
}
/* Hold-time cell shows only elapsed time; open timestamp lives in its hover detail. */
.opened-section .pt-duration{cursor:default!important}
.opened-section .pt-duration-pop{min-width:190px!important}
.opened-section .pt-duration-pop span,
.opened-section .pt-duration-pop b{
  font-size:calc(10px * var(--ui-font-scale))!important;
  font-weight:400!important;
}

/* V1.1.28: global font-weight normalization.
   Product-wide requirement: no bold text anywhere in the Web UI. */
html, body, body *{
  font-weight:400!important;
}



/* V1.1.29: staged ADD / EXIT secondary typography + signed-green completion semantics.
   The staged column is secondary information only. Completion uses the exact
   same positive-deviation green as Current Deviation and a small bare check. */
.opened-section .pt-add-info,
.opened-section .pt-add-info span,
.opened-section .pt-add-info b,
.opened-section .pt-add-info small,
.opened-section .pt-add-info .pt-stage-segment,
.opened-section .pt-add-info .pt-add-executed,
.opened-section .pt-add-info .pt-add-pending{
  font-size:calc(10px * var(--ui-font-scale))!important;
  font-weight:400!important;
  line-height:1.25!important;
}
.opened-section .pt-add-info .pt-stage-done,
.opened-section .pt-add-info .pt-stage-done span,
.opened-section .pt-add-info .pt-stage-done b,
.opened-section .pt-add-info .pt-stage-done small,
.opened-section .pt-add-info .pt-add-executed,
.opened-section .pt-add-info .pt-add-executed span,
.opened-section .pt-add-info .pt-add-executed b,
.opened-section .pt-add-info .pt-add-executed small{
  color:#38c9bc!important;
}
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done small,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed span,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed b,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed small{
  color:var(--deviation-positive)!important;
}
.opened-section .pt-add-info .pt-stage-done::before,
.opened-section .pt-add-info .pt-add-executed::before{
  content:"✓"!important;
  display:block!important;
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#38c9bc!important;
  font-size:calc(9px * var(--ui-font-scale))!important;
  font-weight:400!important;
  line-height:1!important;
  left:-13px!important;
}
:root[data-theme="light"] .opened-section .pt-add-info .pt-stage-done::before,
:root[data-theme="light"] .opened-section .pt-add-info .pt-add-executed::before{
  background:transparent!important;
  box-shadow:none!important;
  color:var(--deviation-positive)!important;
}


/* V1.1.30: unify operation-column button geometry with Research recommendations.
   Neutral actions share the same surface; semantic start/stop/delete/close actions
   preserve their green/red intent but use identical sizing and shape. */
.opened-section .pt-actions,
.pending-section .pt-actions,
#opportunityTable .opportunity-actions{
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  flex-wrap:nowrap!important;
  white-space:nowrap!important;
}
.opened-section .pt-actions form,
.pending-section .pt-actions form,
#opportunityTable .opportunity-actions form{margin:0!important}
.opened-section .pt-actions .compact-btn,
.pending-section .pt-actions .compact-btn,
#opportunityTable .opportunity-actions .secondary-btn,
#opportunityTable .opportunity-actions .lifecycle-action{
  min-height:32px!important;
  padding:7px 12px!important;
  border-radius:9px!important;
  border-width:1px!important;
  font-size:calc(12px * var(--ui-font-scale))!important;
  line-height:1.2!important;
  font-weight:400!important;
  box-shadow:none!important;
  white-space:nowrap!important;
}
/* Neutral buttons exactly follow the Recommendation action surface. */
.opened-section .pt-actions .secondary-btn,
.pending-section .pt-actions .secondary-btn:not(.pending-stop-btn),
#opportunityTable .opportunity-actions .secondary-btn{
  background:#262730!important;
  color:#d7dbe0!important;
  border-color:#424852!important;
}
.opened-section .pt-actions .secondary-btn:hover,
.pending-section .pt-actions .secondary-btn:not(.pending-stop-btn):hover,
#opportunityTable .opportunity-actions .secondary-btn:hover{
  background:#31333d!important;
}
/* Semantic buttons keep intent, but share the same geometry. */
.opened-section .pt-actions .danger-btn,
.pending-section .pt-actions .danger-btn,
.pending-section .pt-actions .pending-stop-btn{
  min-height:32px!important;
  padding:7px 12px!important;
  border-radius:9px!important;
  font-size:calc(12px * var(--ui-font-scale))!important;
  line-height:1.2!important;
  font-weight:400!important;
}
.pending-section .pt-actions .pending-start-btn{
  min-height:32px!important;
  padding:7px 12px!important;
  border-radius:9px!important;
  font-size:calc(12px * var(--ui-font-scale))!important;
  line-height:1.2!important;
  font-weight:400!important;
}
/* Light theme: reuse the exact neutral action tokens used by Research/Favorites. */
:root[data-theme="light"] .opened-section .pt-actions .secondary-btn,
:root[data-theme="light"] .pending-section .pt-actions .secondary-btn:not(.pending-stop-btn),
:root[data-theme="light"] #opportunityTable .opportunity-actions .secondary-btn{
  background:var(--action-bg)!important;
  color:var(--action-text)!important;
  border-color:var(--action-border)!important;
  box-shadow:0 1px 2px rgba(31,47,63,.06)!important;
}
:root[data-theme="light"] .opened-section .pt-actions .secondary-btn:hover,
:root[data-theme="light"] .pending-section .pt-actions .secondary-btn:not(.pending-stop-btn):hover,
:root[data-theme="light"] #opportunityTable .opportunity-actions .secondary-btn:hover{
  background:#dfe7ec!important;
  color:#12232f!important;
  border-color:#8798a6!important;
}
/* Compact-laptop mode keeps Recommendation-equivalent geometry rather than
   shrinking these three operation columns to a separate miniature style. */
@media (min-width:901px) and (max-width:1500px){
  .opened-section .pt-actions .compact-btn,
  .pending-section .pt-actions .compact-btn,
  #opportunityTable .opportunity-actions .secondary-btn,
  #opportunityTable .opportunity-actions .lifecycle-action{
    min-height:28px!important;
    padding:5px 8px!important;
    font-size:calc(10px * var(--ui-font-scale))!important;
    border-radius:8px!important;
  }
}


/* V1.1.31: operation columns must remain a single row. V1.1.30 accidentally
   allowed wrapping, which pushed close/start/delete actions onto a second line. */
.opened-section .pt-actions,
.pending-section .pt-actions,
#opportunityTable .opportunity-actions{
  flex-wrap:nowrap!important;
  white-space:nowrap!important;
  justify-content:flex-start!important;
}
.opened-section .pair-table-head,
.opened-section .pair-table-row{
  grid-template-columns:
    14% 6% 7% 7% 7% 23% 8% 9% 9% 10%!important;
}
.opened-section .pt-actions>* ,
.pending-section .pt-actions>* ,
#opportunityTable .opportunity-actions>*{flex:0 0 auto!important}
@media (min-width:901px) and (max-width:1500px){
  .opened-section .pt-actions,
  .pending-section .pt-actions,
  #opportunityTable .opportunity-actions{gap:3px!important;flex-wrap:nowrap!important;white-space:nowrap!important}
  #opportunityTable th:nth-child(1){width:10%!important}
  #opportunityTable th:nth-child(2){width:6%!important}
  #opportunityTable th:nth-child(3){width:7%!important}
  #opportunityTable th:nth-child(4){width:7%!important}
  #opportunityTable th:nth-child(5){width:5%!important}
  #opportunityTable th:nth-child(6){width:6%!important}
  #opportunityTable th:nth-child(7){width:6%!important}
  #opportunityTable th:nth-child(8){width:7%!important}
  #opportunityTable th:nth-child(9){width:7%!important}
  #opportunityTable th:nth-child(10){width:7%!important}
  #opportunityTable th:nth-child(11){width:7%!important}
  #opportunityTable th:nth-child(12){width:6%!important}
  #opportunityTable th:nth-child(13){width:5%!important}
  #opportunityTable th:nth-child(14){width:14%!important}
}


/* V1.1.32: Recommendation/Favorites current-market parity + compact sidebar vertical rhythm. */
/* Both pages use the Favorites-style two-column market layout: symbol left, change right.
   The current price remains available through the native hover title. */
#researchTable .research-market-leg,
#favoriteTable .research-market-leg{
  display:inline-flex!important;
  align-items:baseline!important;
  gap:6px!important;
  width:auto!important;
  max-width:100%!important;
  justify-content:flex-start!important;
}
#researchTable .research-market-leg a,
#favoriteTable .research-market-leg a{
  min-width:0!important;
  text-align:left!important;
  white-space:nowrap!important;
}
#researchTable .research-market-leg .market-change,
#favoriteTable .research-market-leg .market-change{
  text-align:left!important;
  white-space:nowrap!important;
  font-variant-numeric:tabular-nums!important;
}
/* Legacy visible-price slot is intentionally absent in V1.1.32. */
#researchTable .research-market-leg .market-price,
#favoriteTable .research-market-leg .market-price{display:none!important}

/* Reduce sidebar vertical footprint so common 13-inch Windows viewports fit without
   needing to scroll the navigation in normal use. Keep hierarchy and active states intact. */
.sidebar{padding-top:10px!important;padding-bottom:10px!important}
.sidebar-brand{padding:2px 6px 8px!important;margin-bottom:5px!important}
.sidebar-brand-row{gap:8px!important}
.sidebar-logo{width:50px!important;height:50px!important;flex-basis:50px!important}
.sidebar-title{margin-top:3px!important}
.sidebar-version{margin-top:2px!important}
.mainnav.sidebar-nav{gap:2px!important}
.mainnav.sidebar-nav a.nav-level-1{
  min-height:32px!important;
  padding-top:5px!important;
  padding-bottom:5px!important;
}
.nav-group{margin:1px 0 2px!important;padding:1px 0 2px!important}
.nav-group-title{padding:4px 11px 3px!important}
.nav-submenu{gap:1px!important}
.mainnav.sidebar-nav a.nav-level-2{
  min-height:29px!important;
  padding-top:4px!important;
  padding-bottom:4px!important;
}
.mainnav.sidebar-nav a.nav-level-1.active::before,
.mainnav.sidebar-nav a.nav-level-2.active::after{top:6px!important;bottom:6px!important}
.sidebar-footer{padding:8px 8px 4px!important}
.sidebar-user{margin-bottom:6px!important;padding-bottom:6px!important}

/* V1.1.33: current-market rows keep change percentage immediately after symbol. */
#favoriteTable td:nth-child(7){text-align:left!important}

/* V1.1.34: merge model direction and current market columns on recommendation/favorites. */
#researchTable .research-model-market-stack,#favoriteTable .research-model-market-stack{display:flex;flex-direction:column;gap:4px}
#researchTable .research-model-market-line,#favoriteTable .research-model-market-line{display:flex;align-items:baseline;gap:5px;white-space:nowrap}
#researchTable .research-model-market-line a,#favoriteTable .research-model-market-line a{color:inherit;text-decoration:none}
#researchTable .research-model-market-line a:hover,#favoriteTable .research-model-market-line a:hover{text-decoration:underline}
#researchTable .model-side-long,#favoriteTable .model-side-long{color:#38c9bc}
#researchTable .model-side-short,#favoriteTable .model-side-short{color:#ef776f}
:root[data-theme="light"] #researchTable .model-side-long,:root[data-theme="light"] #favoriteTable .model-side-long{color:var(--deviation-positive)!important}
:root[data-theme="light"] #researchTable .model-side-short,:root[data-theme="light"] #favoriteTable .model-side-short{color:var(--deviation-negative)!important}
@media (min-width:901px) and (max-width:1500px){#favoriteTable th:nth-child(7){width:25%}#favoriteTable th:nth-child(8){width:10%}}

/* V1.1.35: compact research/favorites controls + compact recommendation summary cards. */
#researchTable ~ *, #favoriteTable ~ *{} /* anchor for versioned block */
.research-toolbar input,
.research-toolbar select{
  height:32px!important;
  font-size:calc(12px * var(--ui-font-scale))!important;
  line-height:1.2!important;
  padding-top:0!important;
  padding-bottom:0!important;
}
.research-toolbar .muted-text{
  font-size:calc(11px * var(--ui-font-scale))!important;
  line-height:1.25!important;
}

/* Recommendation summary: compact left-label / right-value layout at rest. */
.research-summary.four-cols:not(.opportunity-summary) .research-summary-item{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:center!important;
  column-gap:12px!important;
  row-gap:3px!important;
  min-height:44px!important;
  padding:7px 11px!important;
}
.research-summary.four-cols:not(.opportunity-summary) .research-summary-item>span{
  display:block!important;
  margin:0!important;
  font-size:calc(11px * var(--ui-font-scale))!important;
  line-height:1.2!important;
}
.research-summary.four-cols:not(.opportunity-summary) .research-summary-item>strong{
  justify-self:end!important;
  font-size:calc(12px * var(--ui-font-scale))!important;
  line-height:1.2!important;
}
.research-summary.four-cols:not(.opportunity-summary) .research-job-card>small{
  grid-column:1/-1!important;
  margin:0!important;
  font-size:calc(10px * var(--ui-font-scale))!important;
  line-height:1.2!important;
}
.research-summary.four-cols:not(.opportunity-summary) .research-job-card .research-progress{
  grid-column:1/-1!important;
  width:100%!important;
}

/* Running jobs may expand naturally to show progress detail. */
.research-summary.four-cols:not(.opportunity-summary) .research-job-card.job-running{
  align-items:start!important;
  min-height:auto!important;
  padding-top:9px!important;
  padding-bottom:9px!important;
}


/* V1.1.36: sidebar branding removed; keep only the runtime-backed version label. */
.sidebar-brand.sidebar-version-only{
  padding:2px 8px 7px!important;
  margin-bottom:5px!important;
  min-height:0!important;
}
.sidebar-brand.sidebar-version-only .sidebar-version{
  margin:0!important;
  font-size:calc(11px * var(--ui-font-scale))!important;
  line-height:1.2!important;
  color:var(--muted)!important;
}


/* V1.1.38: restore sidebar brand identity in a half-height compact header. */
.sidebar-brand.sidebar-brand-compact{
  padding:2px 6px 5px!important;
  margin-bottom:5px!important;
  min-height:0!important;
}
.sidebar-brand.sidebar-brand-compact .sidebar-brand-row{
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  min-height:36px!important;
}
.sidebar-brand.sidebar-brand-compact .sidebar-logo{
  width:32px!important;
  height:32px!important;
  flex:0 0 32px!important;
  object-fit:contain!important;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.22))!important;
}
.sidebar-brand.sidebar-brand-compact .sidebar-brand-copy{
  min-width:0!important;
  line-height:1.05!important;
}
.sidebar-brand.sidebar-brand-compact .eyebrow{
  font-size:calc(9px * var(--ui-font-scale))!important;
  line-height:1.05!important;
  margin:0!important;
  white-space:nowrap!important;
}
.sidebar-brand.sidebar-brand-compact .sidebar-title{
  font-size:calc(13px * var(--ui-font-scale))!important;
  line-height:1.05!important;
  margin:2px 0 0!important;
  white-space:nowrap!important;
}
.sidebar-brand.sidebar-brand-compact .sidebar-version{
  font-size:calc(9px * var(--ui-font-scale))!important;
  line-height:1.05!important;
  margin-top:2px!important;
  color:var(--muted)!important;
}


/* V1.1.40: hide the sidebar scrollbar while preserving wheel / touchpad scrolling. */
.sidebar{
  scrollbar-width:none!important;
  -ms-overflow-style:none!important;
}
.sidebar::-webkit-scrollbar{
  width:0!important;
  height:0!important;
  display:none!important;
}


/* V1.1.41: keep the compact brand/footer fixed inside the sidebar and scroll only the menu.
   This prevents a scrolled navigation item from moving over the logo/brand header. */
.sidebar{
  overflow:hidden!important;
}
.sidebar-brand.sidebar-brand-compact{
  flex:0 0 auto!important;
  position:relative!important;
  z-index:2!important;
}
.mainnav.sidebar-nav{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-width:none!important;
  -ms-overflow-style:none!important;
}
.mainnav.sidebar-nav::-webkit-scrollbar{
  width:0!important;
  height:0!important;
  display:none!important;
}
.sidebar-footer{
  flex:0 0 auto!important;
  position:relative!important;
  z-index:2!important;
}


/* V1.1.47: browser-style font scale stepper; font scale only, widths stay unchanged. */
.ui-scale-stepper{display:flex;align-items:center;justify-content:flex-end;gap:4px}
.ui-scale-stepper button{width:26px;height:26px;padding:0;border:1px solid #36414d;border-radius:6px;background:#151c25;color:#cbd3dd;font:inherit;line-height:1;cursor:pointer}
.ui-scale-stepper output{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:26px;color:#cbd3dd;font:inherit;font-variant-numeric:tabular-nums}
.ui-scale-stepper button:hover:not(:disabled),.ui-scale-stepper button:focus-visible{border-color:#69798d;outline:none}
.ui-scale-stepper button:disabled{opacity:.35;cursor:default}
:root[data-theme="light"] .ui-scale-stepper button{background:#fff;border-color:#ccd5de;color:#344250}
:root[data-theme="light"] .ui-scale-stepper output{color:#344250}
:root[data-theme="light"] .ui-scale-stepper button:hover:not(:disabled),:root[data-theme="light"] .ui-scale-stepper button:focus-visible{border-color:#8c9aa8}

/* V1.1.48: scale-aware table containment.
   Font scaling must not push row content or operation controls outside their table.
   When font scale is above 100%, reclaim horizontal space from padding/gaps first,
   keep cells min-width:0, and reserve more room for operation columns. */
:root{--ui-table-space-scale:1}
html.ui-font-scale-expanded .page-shell .table-wrap,
html.ui-font-scale-expanded .page-shell .table-scroll,
html.ui-font-scale-expanded .page-shell .pair-table-shell,
html.ui-font-scale-expanded .page-shell .research-table-wrap,
html.ui-font-scale-expanded .page-shell .opportunity-table-wrap,
html.ui-font-scale-expanded .page-shell .history-main-table-scroll{
  max-width:100%!important;
}
html.ui-font-scale-expanded .page-shell table{
  max-width:100%!important;
}
html.ui-font-scale-expanded .page-shell table th,
html.ui-font-scale-expanded .page-shell table td{
  min-width:0!important;
  padding-left:calc(8px * var(--ui-table-space-scale))!important;
  padding-right:calc(8px * var(--ui-table-space-scale))!important;
}
html.ui-font-scale-expanded .page-shell table th>* ,
html.ui-font-scale-expanded .page-shell table td>*{
  max-width:100%;
}

/* Pair management uses CSS-grid rows rather than native table cells. Keep the
   operation column inside the right edge and reclaim space from the metric columns. */
html.ui-font-scale-expanded .opened-section .pair-table-head,
html.ui-font-scale-expanded .opened-section .pair-table-row{
  width:100%!important;
  min-width:0!important;
  grid-template-columns:13% 6% 6% 6% 6% 22% 7% 8% 8% 18%!important;
  padding-left:calc(8px * var(--ui-table-space-scale))!important;
  padding-right:calc(8px * var(--ui-table-space-scale))!important;
}
html.ui-font-scale-expanded .pending-section .pair-table-head,
html.ui-font-scale-expanded .pending-section .pair-table-row{
  width:100%!important;
  min-width:0!important;
  grid-template-columns:11% 7% 7% 7% 7% 6% 7% 16% 8% 24%!important;
  padding-left:calc(8px * var(--ui-table-space-scale))!important;
  padding-right:calc(8px * var(--ui-table-space-scale))!important;
}
html.ui-font-scale-expanded .opened-section .pair-table-head>span,
html.ui-font-scale-expanded .pending-section .pair-table-head>span,
html.ui-font-scale-expanded .opened-section .pair-table-row>div,
html.ui-font-scale-expanded .pending-section .pair-table-row>div{
  min-width:0!important;
  padding-left:calc(5px * var(--ui-table-space-scale))!important;
  padding-right:calc(5px * var(--ui-table-space-scale))!important;
  gap:calc(4px * var(--ui-table-space-scale))!important;
}
html.ui-font-scale-expanded .opened-section .pt-actions,
html.ui-font-scale-expanded .pending-section .pt-actions{
  min-width:0!important;
  max-width:100%!important;
  gap:calc(4px * var(--ui-table-space-scale))!important;
  justify-content:flex-end!important;
  overflow:hidden;
}
html.ui-font-scale-expanded .opened-section .pt-actions .compact-btn,
html.ui-font-scale-expanded .pending-section .pt-actions .compact-btn{
  min-width:0!important;
  padding-left:calc(7px * var(--ui-table-space-scale))!important;
  padding-right:calc(7px * var(--ui-table-space-scale))!important;
}
html.ui-font-scale-expanded .opened-section .pt-add-info .pt-add-exit-line{
  column-gap:calc(10px * var(--ui-table-space-scale))!important;
}

/* Recommendation/favorites enlarged-scale containment.
   V1.2.94: recommendation table now owns a dedicated scale-safe geometry below;
   this legacy shared block remains for Favorites only. */
html.ui-font-scale-expanded #favoriteTable{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
}
html.ui-font-scale-expanded #favoriteTable th:nth-child(1){width:13%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(2){width:8%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(3){width:11%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(4){width:13%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(5){width:11%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(6){width:12%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(7){width:20%!important}
html.ui-font-scale-expanded #favoriteTable th:nth-child(8){width:12%!important}
html.ui-font-scale-expanded #favoriteTable .research-actions{
  min-width:0!important;
  max-width:100%!important;
  gap:calc(4px * var(--ui-table-space-scale))!important;
  flex-wrap:nowrap!important;
  overflow:hidden;
}
html.ui-font-scale-expanded #favoriteTable .research-actions button,
html.ui-font-scale-expanded #favoriteTable .research-actions a{
  min-width:0!important;
  padding-left:calc(7px * var(--ui-table-space-scale))!important;
  padding-right:calc(7px * var(--ui-table-space-scale))!important;
}

/* Opportunity: reserve a larger right-most operation column and keep every
   other cell contained. Long labels may wrap inside their own cell. */
html.ui-font-scale-expanded #opportunityTable{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
}
html.ui-font-scale-expanded #opportunityTable th,
html.ui-font-scale-expanded #opportunityTable td{
  overflow:hidden;
  overflow-wrap:anywhere;
  white-space:normal;
}
html.ui-font-scale-expanded #opportunityTable th:nth-child(1){width:9%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(2){width:6%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(3){width:7%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(4){width:6%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(5){width:4%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(6){width:5%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(7){width:5%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(8){width:6%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(9){width:6%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(10){width:6%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(11){width:6%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(12){width:5%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(13){width:5%!important}
html.ui-font-scale-expanded #opportunityTable th:nth-child(14){width:24%!important}
html.ui-font-scale-expanded #opportunityTable .opportunity-actions{
  min-width:0!important;
  max-width:100%!important;
  gap:calc(4px * var(--ui-table-space-scale))!important;
  flex-wrap:nowrap!important;
  overflow:hidden;
}
html.ui-font-scale-expanded #opportunityTable .opportunity-actions button,
html.ui-font-scale-expanded #opportunityTable .opportunity-actions a{
  min-width:0!important;
  padding-left:calc(6px * var(--ui-table-space-scale))!important;
  padding-right:calc(6px * var(--ui-table-space-scale))!important;
}

/* Native data/history/log/admin tables: remove fixed minimum widths while scaled,
   use fixed layout, and clip/ellipsis ordinary nowrap cells rather than allowing
   text to paint beyond its cell. */
html.ui-font-scale-expanded .page-shell .dense-table,
html.ui-font-scale-expanded .page-shell .data-table,
html.ui-font-scale-expanded .page-shell .pair-history-table,
html.ui-font-scale-expanded .page-shell .lifecycle-production-table,
html.ui-font-scale-expanded .page-shell .admin-user-position-table,
html.ui-font-scale-expanded .page-shell .user-table,
html.ui-font-scale-expanded .page-shell .exchange-history-table,
html.ui-font-scale-expanded .page-shell .exchange-profit-table,
html.ui-font-scale-expanded .page-shell .exchange-profit-sync-table{
  width:100%!important;
  min-width:0!important;
  table-layout:fixed!important;
}
html.ui-font-scale-expanded .page-shell .dense-table th,
html.ui-font-scale-expanded .page-shell .dense-table td,
html.ui-font-scale-expanded .page-shell .data-table th,
html.ui-font-scale-expanded .page-shell .data-table td{
  overflow:hidden;
  text-overflow:ellipsis;
}
html.ui-font-scale-expanded .lifecycle-production-table th:last-child,
html.ui-font-scale-expanded .lifecycle-production-table td:last-child,
html.ui-font-scale-expanded .user-table th:last-child,
html.ui-font-scale-expanded .user-table td:last-child{
  width:14%!important;
}
html.ui-font-scale-expanded .lifecycle-production-table td:last-child .compact-btn,
html.ui-font-scale-expanded .user-table td:last-child button{
  max-width:100%!important;
  min-width:0!important;
  padding-left:calc(7px * var(--ui-table-space-scale))!important;
  padding-right:calc(7px * var(--ui-table-space-scale))!important;
  white-space:nowrap!important;
}

/* At >150%, reclaim another small amount of horizontal whitespace. */
html.ui-font-scale-large .page-shell table th,
html.ui-font-scale-large .page-shell table td{
  padding-left:2px!important;
  padding-right:2px!important;
}
html.ui-font-scale-large .opened-section .pair-table-head>span,
html.ui-font-scale-large .pending-section .pair-table-head>span,
html.ui-font-scale-large .opened-section .pair-table-row>div,
html.ui-font-scale-large .pending-section .pair-table-row>div{
  padding-left:2px!important;
  padding-right:2px!important;
  gap:2px!important;
}

/* V1.1.49: operation cells stay at the table's right edge, while the
   controls inside them align from the left with a little more breathing room. */
.opened-section .pt-actions,
.pending-section .pt-actions,
.opportunity-actions{
  justify-content:flex-start!important;
  gap:8px!important;
}
html.ui-font-scale-expanded .opened-section .pt-actions,
html.ui-font-scale-expanded .pending-section .pt-actions,
html.ui-font-scale-expanded #favoriteTable .research-actions,
html.ui-font-scale-expanded #opportunityTable .opportunity-actions{
  justify-content:flex-start!important;
  gap:8px!important;
}
/* Native tables whose operation column contains multiple controls/forms. */
html.ui-font-scale-expanded .page-shell table th:last-child,
html.ui-font-scale-expanded .page-shell table td:last-child{
  text-align:left!important;
}
html.ui-font-scale-expanded .page-shell table td:last-child form{
  margin-left:0!important;
  margin-right:8px!important;
}

/* V1.1.50: content-measured table fitting.
   Never wrap or ellipsize table content. JS measures the actual rendered content
   at the active font scale, fixes action columns to their natural control width,
   distributes spare width across data columns, and uses local horizontal scrolling
   only when the viewport is genuinely too narrow for the full unabridged row. */
.page-shell .ui-content-fit-scroll{
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible;
}
.page-shell table.ui-content-fit-table th,
.page-shell table.ui-content-fit-table td{
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
}
.page-shell table.ui-content-fit-table th>*,
.page-shell table.ui-content-fit-table td>*{
  max-width:none!important;
}
.page-shell .pair-table-shell.ui-content-fit-scroll .pair-table-head>span,
.page-shell .pair-table-shell.ui-content-fit-scroll .pair-table-row>div,
.page-shell .pair-table-shell.ui-content-fit-scroll .pair-table-row small,
.page-shell .pair-table-shell.ui-content-fit-scroll .pair-table-row .long-text,
.page-shell .pair-table-shell.ui-content-fit-scroll .pair-table-row .short-text{
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  max-width:none!important;
}
.page-shell .pair-table-shell.ui-content-fit-scroll .pt-actions,
.page-shell table.ui-content-fit-table .research-actions,
.page-shell table.ui-content-fit-table .opportunity-actions{
  width:max-content!important;
  max-width:none!important;
  min-width:max-content!important;
  flex-wrap:nowrap!important;
}
/* V1.1.48's percentage allocations are intentionally superseded once the
   measured-fit layer has run. The action group remains left aligned per V1.1.49. */
.page-shell .ui-content-fit-grid{box-sizing:border-box}

/* V1.1.53: roomier table/sidebar rhythm and exact action-gap parity. */
:root{--table-action-gap:12px;}
.opened-section .pt-actions,
.pending-section .pt-actions,
#favoriteTable .research-actions,
#opportunityTable .opportunity-actions{gap:var(--table-action-gap)!important;}
html.ui-font-scale-expanded .opened-section .pt-actions,
html.ui-font-scale-expanded .pending-section .pt-actions,
html.ui-font-scale-expanded #favoriteTable .research-actions,
html.ui-font-scale-expanded #opportunityTable .opportunity-actions{gap:var(--table-action-gap)!important;}

/* Main table rows: roughly one-third more vertical breathing room. */
.page-shell .dense-table tbody td,
.page-shell .data-table tbody td{padding-top:12px!important;padding-bottom:12px!important;}
.page-shell .research-table tbody td{padding-top:13px!important;padding-bottom:13px!important;}
.page-shell .opportunity-scroll .dense-table tbody td{padding-top:9px!important;padding-bottom:9px!important;}
.page-shell .pair-history-table tbody td{padding-top:8px!important;padding-bottom:8px!important;}
.page-shell .level-settings-table tbody td,
.page-shell .fast-cache-table tbody td{padding-top:9px!important;padding-bottom:9px!important;}
.page-shell table tbody td{line-height:1.4!important;}

/* Pair-management rows are CSS Grid, not native table rows. */
.opened-section .pair-table-row{min-height:96px!important;padding-top:11px!important;padding-bottom:11px!important;}
.pending-section .pair-table-row{min-height:75px!important;padding-top:8px!important;padding-bottom:8px!important;}

/* Staged ADD / EXIT lines: more vertical separation between successive stages. */
.opened-section .pt-add-info{gap:10px!important;line-height:1.45!important;}
.opened-section .pt-add-info .pt-add-exit-line,
.opened-section .pt-add-info .pt-add-executed,
.opened-section .pt-add-info .pt-add-pending{line-height:1.45!important;}

/* Sidebar: increase vertical rhythm without changing width. */
.mainnav.sidebar-nav{gap:6px!important;}
.mainnav.sidebar-nav a.nav-level-1{min-height:53px!important;padding-top:12px!important;padding-bottom:12px!important;}
.mainnav.sidebar-nav a.nav-level-2{min-height:47px!important;padding-top:10px!important;padding-bottom:10px!important;}
.nav-group{margin-top:4px!important;margin-bottom:7px!important;padding-top:4px!important;padding-bottom:5px!important;}
.nav-group-title{padding-top:10px!important;padding-bottom:7px!important;}
.nav-submenu{gap:3px!important;}



/* V1.1.54: stacked sidebar display controls + recommendation-style management tables.
   Display scale/theme stack vertically so high sidebar font scales cannot squeeze labels.
   Opened/pending management rows use a stable full-width grid like Research instead of
   the content-measured JS fitter, avoiding false horizontal scroll on wide screens. */
.sidebar-footer .ui-footer-control-stacked{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  justify-content:flex-start!important;
  gap:7px!important;
  width:100%!important;
}
.sidebar-footer .ui-footer-control-stacked>span{
  display:block!important;
  width:100%!important;
  white-space:nowrap!important;
  line-height:1.25!important;
}
.sidebar-footer .ui-scale-stepper{
  justify-content:flex-start!important;
  width:max-content!important;
  max-width:100%!important;
}
.sidebar-footer .ui-theme-control select{
  align-self:flex-start!important;
  width:100%!important;
  max-width:118px!important;
}

/* Management tables now follow the same stable principle as recommendation tables:
   fill the available panel width first; the action column is natural-width/max-content;
   data columns share the remaining width. Horizontal scrolling appears only if the
   true no-wrap minimum cannot physically fit the viewport. */
.opened-section .management-table-shell,
.pending-section .management-table-shell{
  width:100%!important;
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
}
.opened-section .management-table-shell .pair-table-head,
.opened-section .management-table-shell .pair-table-row,
.pending-section .management-table-shell .pair-table-head,
.pending-section .management-table-shell .pair-table-row{
  width:100%!important;
  min-width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
.opened-section .management-table-shell .pair-table-head,
.opened-section .management-table-shell .pair-table-row{
  grid-template-columns:
    minmax(max-content,1.20fr)
    max-content
    max-content
    max-content
    max-content
    minmax(max-content,2.35fr)
    max-content
    max-content
    max-content
    max-content!important;
}
.pending-section .management-table-shell .pair-table-head,
.pending-section .management-table-shell .pair-table-row{
  grid-template-columns:
    minmax(max-content,1.18fr)
    max-content
    max-content
    max-content
    max-content
    max-content
    max-content
    minmax(max-content,1.70fr)
    max-content
    max-content!important;
}
.opened-section .management-table-shell .pair-table-head>span,
.pending-section .management-table-shell .pair-table-head>span,
.opened-section .management-table-shell .pair-table-row>div,
.pending-section .management-table-shell .pair-table-row>div{
  min-width:0!important;
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
}

/* Reuse the recommendation action container itself instead of maintaining a
   separate management-only alignment rule. Action width is exactly its content. */
.opened-section .management-table-shell .pt-actions.research-actions,
.pending-section .management-table-shell .pt-actions.research-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  flex-wrap:nowrap!important;
  white-space:nowrap!important;
  width:max-content!important;
  min-width:max-content!important;
  max-width:none!important;
  gap:var(--table-action-gap)!important;
  overflow:visible!important;
}
.opened-section .management-table-shell .pt-actions.research-actions>*,
.pending-section .management-table-shell .pt-actions.research-actions>*{
  flex:0 0 auto!important;
}

/* The old scaled-table rules reserved percentage widths and hid action overflow;
   management tables no longer use those V1.1.48 constraints. */
html.ui-font-scale-expanded .opened-section .management-table-shell .pt-actions,
html.ui-font-scale-expanded .pending-section .management-table-shell .pt-actions{
  width:max-content!important;
  min-width:max-content!important;
  max-width:none!important;
  overflow:visible!important;
  justify-content:flex-start!important;
  gap:var(--table-action-gap)!important;
}

/* V1.1.55: sidebar scroll recovery + slightly tighter vertical rhythm.
   .mainnav inherits flex-wrap:wrap from the generic nav rule; in a vertical sidebar
   that can push later items into a hidden second column instead of creating vertical
   overflow. Force a single vertical column so the middle nav scrolls normally. */
.mainnav.sidebar-nav{
  flex-wrap:nowrap!important;
  gap:4px!important;
}
.mainnav.sidebar-nav a.nav-level-1{
  min-height:48px!important;
  padding-top:10px!important;
  padding-bottom:10px!important;
}
.mainnav.sidebar-nav a.nav-level-2{
  min-height:43px!important;
  padding-top:9px!important;
  padding-bottom:9px!important;
}
.nav-group{
  margin-top:3px!important;
  margin-bottom:6px!important;
  padding-top:3px!important;
  padding-bottom:4px!important;
}
.nav-group-title{
  padding-top:8px!important;
  padding-bottom:6px!important;
}
.nav-submenu{gap:2px!important;}

/* V1.1.56: management-table layout parity with the recommendation table.
   Keep the whole row at panel width, reserve only natural width for the final
   action group, and distribute all remaining width across data columns. */
.opened-section .management-table-shell,
.pending-section .management-table-shell{
  width:100%!important;
  max-width:100%!important;
  overflow-x:hidden!important;
  overflow-y:visible!important;
}
.opened-section .management-table-shell .pair-table-head,
.opened-section .management-table-shell .pair-table-row,
.pending-section .management-table-shell .pair-table-head,
.pending-section .management-table-shell .pair-table-row{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
.opened-section .management-table-shell .pair-table-head,
.opened-section .management-table-shell .pair-table-row{
  grid-template-columns:
    minmax(0,1.25fr)
    minmax(0,.72fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,2.30fr)
    minmax(0,.92fr)
    minmax(0,1.00fr)
    minmax(0,1.05fr)
    max-content!important;
}
.pending-section .management-table-shell .pair-table-head,
.pending-section .management-table-shell .pair-table-row{
  grid-template-columns:
    minmax(0,1.30fr)
    minmax(0,.78fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,.78fr)
    minmax(0,.86fr)
    minmax(0,1.65fr)
    minmax(0,.95fr)
    max-content!important;
}
.opened-section .management-table-shell .pair-table-head>span,
.pending-section .management-table-shell .pair-table-head>span,
.opened-section .management-table-shell .pair-table-row>div,
.pending-section .management-table-shell .pair-table-row>div{
  min-width:0!important;
  padding-left:8px!important;
  padding-right:8px!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  box-sizing:border-box!important;
}
.opened-section .management-table-shell .pt-actions.research-actions,
.pending-section .management-table-shell .pt-actions.research-actions{
  justify-self:end!important;
  align-self:center!important;
  justify-content:flex-end!important;
  width:max-content!important;
  min-width:max-content!important;
  max-width:none!important;
  flex-wrap:nowrap!important;
  gap:var(--table-action-gap)!important;
  overflow:visible!important;
  padding-left:8px!important;
  padding-right:0!important;
}
.opened-section .management-table-shell .pt-actions.research-actions>*,
.pending-section .management-table-shell .pt-actions.research-actions>*{
  flex:0 0 auto!important;
  margin:0!important;
}
html.ui-font-scale-expanded .opened-section .management-table-shell .pair-table-head,
html.ui-font-scale-expanded .opened-section .management-table-shell .pair-table-row{
  grid-template-columns:minmax(0,1.25fr) minmax(0,.72fr) minmax(0,.82fr) minmax(0,.82fr) minmax(0,.82fr) minmax(0,2.30fr) minmax(0,.92fr) minmax(0,1fr) minmax(0,1.05fr) max-content!important;
}
html.ui-font-scale-expanded .pending-section .management-table-shell .pair-table-head,
html.ui-font-scale-expanded .pending-section .management-table-shell .pair-table-row{
  grid-template-columns:minmax(0,1.30fr) minmax(0,.78fr) minmax(0,.82fr) minmax(0,.82fr) minmax(0,.82fr) minmax(0,.78fr) minmax(0,.86fr) minmax(0,1.65fr) minmax(0,.95fr) max-content!important;
}
html.ui-font-scale-expanded .opened-section .management-table-shell .pt-actions,
html.ui-font-scale-expanded .pending-section .management-table-shell .pt-actions{
  justify-self:end!important;
  justify-content:flex-end!important;
  width:max-content!important;
  min-width:max-content!important;
  max-width:none!important;
  gap:var(--table-action-gap)!important;
  overflow:visible!important;
}
@media(max-width:1500px){
  html.ui-font-scale-large .opened-section .management-table-shell,
  html.ui-font-scale-large .pending-section .management-table-shell{overflow-x:auto!important;}
  html.ui-font-scale-large .opened-section .management-table-shell .pair-table-head,
  html.ui-font-scale-large .opened-section .management-table-shell .pair-table-row{min-width:1560px!important;max-width:none!important;}
  html.ui-font-scale-large .pending-section .management-table-shell .pair-table-head,
  html.ui-font-scale-large .pending-section .management-table-shell .pair-table-row{min-width:1460px!important;max-width:none!important;}
}

/* V1.1.57: hard-lock management table headers and data rows to the exact same
   ten grid tracks. Historical management-table rules accumulated several
   percentage/max-content templates and per-cell alignment rules; this block is
   the single final authority for opened/pending visible table geometry. */
.opened-section .management-table-shell{
  --management-columns:
    minmax(0,1.25fr)
    minmax(0,.72fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,2.30fr)
    minmax(0,.92fr)
    minmax(0,1.00fr)
    minmax(0,1.05fr)
    max-content;
}
.pending-section .management-table-shell{
  --management-columns:
    minmax(0,1.30fr)
    minmax(0,.78fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,.82fr)
    minmax(0,.78fr)
    minmax(0,.86fr)
    minmax(0,1.65fr)
    minmax(0,.95fr)
    max-content;
}
.opened-section .management-table-shell .pair-table-head,
.opened-section .management-table-shell .pair-table-row,
.pending-section .management-table-shell .pair-table-head,
.pending-section .management-table-shell .pair-table-row,
html.ui-font-scale-expanded .opened-section .management-table-shell .pair-table-head,
html.ui-font-scale-expanded .opened-section .management-table-shell .pair-table-row,
html.ui-font-scale-expanded .pending-section .management-table-shell .pair-table-head,
html.ui-font-scale-expanded .pending-section .management-table-shell .pair-table-row{
  display:grid!important;
  grid-template-columns:var(--management-columns)!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}

/* Explicitly bind header and body cells to the same track number. */
.opened-section .management-table-shell .pair-table-head>span:nth-child(1),
.opened-section .management-table-shell .pair-table-row>div:nth-child(1),
.pending-section .management-table-shell .pair-table-head>span:nth-child(1),
.pending-section .management-table-shell .pair-table-row>div:nth-child(1){grid-column:1!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(2),
.opened-section .management-table-shell .pair-table-row>div:nth-child(2),
.pending-section .management-table-shell .pair-table-head>span:nth-child(2),
.pending-section .management-table-shell .pair-table-row>div:nth-child(2){grid-column:2!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(3),
.opened-section .management-table-shell .pair-table-row>div:nth-child(3),
.pending-section .management-table-shell .pair-table-head>span:nth-child(3),
.pending-section .management-table-shell .pair-table-row>div:nth-child(3){grid-column:3!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(4),
.opened-section .management-table-shell .pair-table-row>div:nth-child(4),
.pending-section .management-table-shell .pair-table-head>span:nth-child(4),
.pending-section .management-table-shell .pair-table-row>div:nth-child(4){grid-column:4!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(5),
.opened-section .management-table-shell .pair-table-row>div:nth-child(5),
.pending-section .management-table-shell .pair-table-head>span:nth-child(5),
.pending-section .management-table-shell .pair-table-row>div:nth-child(5){grid-column:5!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(6),
.opened-section .management-table-shell .pair-table-row>div:nth-child(6),
.pending-section .management-table-shell .pair-table-head>span:nth-child(6),
.pending-section .management-table-shell .pair-table-row>div:nth-child(6){grid-column:6!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(7),
.opened-section .management-table-shell .pair-table-row>div:nth-child(7),
.pending-section .management-table-shell .pair-table-head>span:nth-child(7),
.pending-section .management-table-shell .pair-table-row>div:nth-child(7){grid-column:7!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(8),
.opened-section .management-table-shell .pair-table-row>div:nth-child(8),
.pending-section .management-table-shell .pair-table-head>span:nth-child(8),
.pending-section .management-table-shell .pair-table-row>div:nth-child(8){grid-column:8!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(9),
.opened-section .management-table-shell .pair-table-row>div:nth-child(9),
.pending-section .management-table-shell .pair-table-head>span:nth-child(9),
.pending-section .management-table-shell .pair-table-row>div:nth-child(9){grid-column:9!important}
.opened-section .management-table-shell .pair-table-head>span:nth-child(10),
.opened-section .management-table-shell .pair-table-row>div:nth-child(10),
.pending-section .management-table-shell .pair-table-head>span:nth-child(10),
.pending-section .management-table-shell .pair-table-row>div:nth-child(10){grid-column:10!important}

/* Header labels and body content start from the same left edge inside each track.
   The last action cell alone stays right-anchored. */
.opened-section .management-table-shell .pair-table-head>span,
.pending-section .management-table-shell .pair-table-head>span{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  justify-self:stretch!important;
  text-align:left!important;
  min-width:0!important;
}
.opened-section .management-table-shell .pair-table-row>div:not(.pt-actions),
.pending-section .management-table-shell .pair-table-row>div:not(.pt-actions){
  justify-self:stretch!important;
  justify-content:flex-start!important;
  text-align:left!important;
  min-width:0!important;
}
.opened-section .management-table-shell .pt-status,
.pending-section .management-table-shell .pt-status{
  align-items:flex-start!important;
}
.opened-section .management-table-shell .pair-table-head>span:nth-child(10),
.pending-section .management-table-shell .pair-table-head>span:nth-child(10){
  justify-content:flex-end!important;
  text-align:right!important;
}
.opened-section .management-table-shell .pt-actions.research-actions,
.pending-section .management-table-shell .pt-actions.research-actions{
  grid-column:10!important;
  justify-self:end!important;
  justify-content:flex-end!important;
}

/* V1.1.58: management tables use one native table formatting context.
   Header and body are no longer separate CSS-grid geometries, so the browser
   owns column alignment exactly like the recommendation table. */
.opened-section .management-table-shell,
.pending-section .management-table-shell{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
}
.opened-section .management-native-table,
.pending-section .management-native-table{
  display:table!important;
  width:100%!important;
  min-width:100%!important;
  border-collapse:collapse!important;
  border-spacing:0!important;
  table-layout:auto!important;
}
.opened-section .management-native-table .pair-table-head,
.pending-section .management-native-table .pair-table-head,
html.ui-font-scale-expanded .opened-section .management-native-table .pair-table-head,
html.ui-font-scale-expanded .pending-section .management-native-table .pair-table-head{
  display:table-row!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  padding:0!important;
}
.opened-section .management-native-table .pair-table-head>span,
.pending-section .management-native-table .pair-table-head>span{
  display:table-cell!important;
  grid-column:auto!important;
  vertical-align:middle!important;
  padding:10px 8px!important;
  white-space:nowrap!important;
  text-align:left!important;
  box-sizing:border-box!important;
}
.opened-section .management-native-table .pair-table-head>span:last-child,
.pending-section .management-native-table .pair-table-head>span:last-child{
  width:1%!important;
  text-align:right!important;
  padding-right:8px!important;
}
.opened-section .management-native-table .pair-table-body,
.pending-section .management-native-table .pair-table-body{
  display:table-row-group!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
}
.opened-section .management-native-table .pair-table-card,
.pending-section .management-native-table .pair-table-card{
  display:contents!important;
}
.opened-section .management-native-table .pair-table-card[hidden],
.pending-section .management-native-table .pair-table-card[hidden]{
  display:none!important;
}
.opened-section .management-native-table .pair-table-row,
.pending-section .management-native-table .pair-table-row,
html.ui-font-scale-expanded .opened-section .management-native-table .pair-table-row,
html.ui-font-scale-expanded .pending-section .management-native-table .pair-table-row{
  display:table-row!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  padding:0!important;
  grid-template-columns:none!important;
}
.opened-section .management-native-table .pair-table-row>div,
.pending-section .management-native-table .pair-table-row>div{
  display:table-cell!important;
  grid-column:auto!important;
  justify-self:auto!important;
  vertical-align:middle!important;
  padding:14px 8px!important;
  white-space:nowrap!important;
  text-align:left!important;
  box-sizing:border-box!important;
  border-top:1px solid rgba(120,140,160,.11)!important;
}
.pending-section .management-native-table .pair-table-row>div{
  padding-top:12px!important;
  padding-bottom:12px!important;
}
.opened-section .management-native-table .pair-table-card:first-child .pair-table-row>div,
.pending-section .management-native-table .pair-table-card:first-child .pair-table-row>div{
  border-top:0!important;
}
.opened-section .management-native-table .pair-table-row:hover>div,
.pending-section .management-native-table .pair-table-row:hover>div{
  background:#1a1f27!important;
}
:root[data-theme="light"] .opened-section .management-native-table .pair-table-row:hover>div,
:root[data-theme="light"] .pending-section .management-native-table .pair-table-row:hover>div{
  background:#f5f8fa!important;
}
.opened-section .management-native-table .pt-actions.research-actions,
.pending-section .management-native-table .pt-actions.research-actions{
  display:table-cell!important;
  width:1%!important;
  min-width:0!important;
  max-width:none!important;
  padding-left:8px!important;
  padding-right:8px!important;
  text-align:right!important;
  vertical-align:middle!important;
  overflow:visible!important;
}
.opened-section .management-actions-inner,
.pending-section .management-actions-inner{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:var(--table-action-gap)!important;
  width:max-content!important;
  min-width:max-content!important;
  white-space:nowrap!important;
  vertical-align:middle!important;
}
.opened-section .management-actions-inner>*,
.pending-section .management-actions-inner>*{
  flex:0 0 auto!important;
  margin:0!important;
}
/* The staged ADD/EXIT column is the only intentionally roomy data column. */
.opened-section .management-native-table .pair-table-head>span:nth-child(6),
.opened-section .management-native-table .pair-table-row>div:nth-child(6){
  width:27%!important;
}
.pending-section .management-native-table .pair-table-head>span:nth-child(8),
.pending-section .management-native-table .pair-table-row>div:nth-child(8){
  width:18%!important;
}
/* Native table geometry is the final authority; old Grid locks must not return. */
.opened-section .management-native-table .pair-table-head>span,
.pending-section .management-native-table .pair-table-head>span,
.opened-section .management-native-table .pair-table-row>div,
.pending-section .management-native-table .pair-table-row>div{
  align-items:initial!important;
  justify-content:initial!important;
}
.opened-section .management-native-table .pt-status,
.pending-section .management-native-table .pt-status{
  text-align:left!important;
}
.pending-section .management-native-table .pair-table-card>.compact-card-actions{
  display:none!important;
}


/* V1.1.61: staged ADD / EXIT vertical spacing inside native table-cell geometry.
   .pt-add-info is itself a table-cell since V1.1.58, so flex gap is ineffective here.
   Add real spacing to each successive direct stage row instead. */
.opened-section .management-native-table .pt-add-info > div + div{
  padding-top:.55em!important;
}
.opened-section .management-native-table .pt-add-info .pt-add-exit-line,
.opened-section .management-native-table .pt-add-info .pt-add-executed,
.opened-section .management-native-table .pt-add-info .pt-add-pending{
  line-height:1.50!important;
}


/* V1.1.62: keep pending-table geometry stable when WAIT_BBO / 等待实时行情 appears.
   Long live-status detail remains available via the status-cell title, but is removed
   from intrinsic table-width calculation. Reserve stable widths for the short status
   and distance labels so state changes cannot redistribute the whole native table. */
.pending-section .management-native-table [data-live-pending-status-detail]{
  display:none!important;
}
.pending-section .management-native-table .pair-table-head>span:nth-child(2),
.pending-section .management-native-table .pair-table-row>div:nth-child(2){
  width:9.5em!important;
  min-width:9.5em!important;
  max-width:9.5em!important;
}
.pending-section .management-native-table .pair-table-head>span:nth-child(7),
.pending-section .management-native-table .pair-table-row>div:nth-child(7){
  width:8.5em!important;
  min-width:8.5em!important;
  max-width:8.5em!important;
}


/* V1.1.66: Research table viewport fill. The exact height is calculated from
   the wrapper's real top edge, so topbar/summary/font-scale differences do not
   leave a blank block below the table or push it beyond the viewport. */
.research-panel{
  display:block!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  background:transparent!important;
  padding-left:0!important;
  padding-right:0!important;
}
.research-panel .research-toolbar{
  flex:0 0 auto!important;
}
.research-panel .research-table-wrap{
  max-height:none!important;
  min-height:0!important;
  overflow:visible!important;
}

/* V1.1.67: native tables must not manufacture horizontal scrollbars.
   Pair-management opened/pending tables are not native <table> elements and are
   deliberately excluded. Ordinary tables return to 100% browser layout. */
.page-shell table{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  table-layout:auto!important;
}
.page-shell .table-wrap,
.page-shell .table-scroll,
.page-shell .research-table-wrap,
.page-shell .opportunity-table-wrap,
.page-shell .history-main-table-scroll,
.page-shell .history-table-scroll,
.page-shell .history-inner-scroll,
.page-shell .log-table-scroll,
.page-shell .position-table-wrap,
.page-shell .level-table-scroll,
.page-shell .level-analysis-summary-scroll,
.page-shell .level-analysis-table-scroll,
.page-shell .opportunity-reversion-table,
.page-shell .position-plan-table-wrap{
  max-width:100%!important;
  overflow-x:hidden!important;
}
.page-shell .research-table-wrap{
  overflow-y:auto!important;
}
.page-shell .research-table,
.page-shell .history-table-scroll table,
.page-shell .pair-history-table,
.page-shell .history-inner-table,
.page-shell .dense-table,
.page-shell .data-table,
.page-shell .lifecycle-production-table,
.page-shell .exchange-history-table{
  min-width:0!important;
  max-width:100%!important;
}
.log-load-error{
  margin:0 0 12px;
  padding:10px 12px;
  border:1px solid #6d5520;
  border-radius:8px;
  background:#3a2d13;
  color:#f2c862;
  line-height:1.5;
}
:root[data-theme="light"] .log-load-error{
  background:#fff7df;
  border-color:#e6c46f;
  color:#6e5310;
}


/* V1.1.69: keep Opportunity table geometry stable across font scaling.
   Legacy per-column pixel widths made the final action column absorb spare width
   once V1.1.67 returned native tables to 100% auto layout. Reset those widths
   here and let columns 1-13 share the workspace; column 14 shrink-wraps actions. */
.opportunity-panel .opportunity-table-wrap{
  max-width:100%!important;
  overflow-x:hidden!important;
}
.opportunity-panel #opportunityTable{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  table-layout:auto!important;
}
.opportunity-panel #opportunityTable th:nth-child(-n+13),
.opportunity-panel #opportunityTable td:nth-child(-n+13){
  width:auto!important;
  min-width:0!important;
}
.opportunity-panel #opportunityTable th:nth-child(14),
.opportunity-panel #opportunityTable td:nth-child(14){
  width:1%!important;
  min-width:max-content!important;
  white-space:nowrap!important;
}
.opportunity-panel #opportunityTable .opportunity-actions{
  width:max-content!important;
  min-width:max-content!important;
  max-width:none!important;
  flex-wrap:nowrap!important;
  justify-content:flex-start!important;
  gap:var(--table-action-gap)!important;
}


/* V1.1.70: opened-position hover details render through a body-level portal so
   management table overflow cannot clip the popover. */
.opened-section .pt-hover-detail:hover > .cell-hover-pop{display:none!important;}
.cell-hover-portal{
  display:block!important;
  position:fixed!important;
  z-index:5000!important;
  left:0;top:0;
  margin:0!important;
  pointer-events:none!important;
  visibility:hidden;
  max-width:calc(100vw - 16px);
}


/* V1.1.71: the old scaled Opportunity selectors include the `html` type selector,
   so they outrank V1.1.69 even though V1.1.69 appears later. At >100% that old
   rule forces the action column back to 28%, leaving a large empty block on the
   right. Use a higher-specificity scaled override and a stable 100% geometry. */
html.ui-font-scale-expanded .opportunity-panel #opportunityTable{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  table-layout:fixed!important;
}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(1){width:10%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(2){width:6%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(3){width:7.5%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(4){width:7%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(5){width:5%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(6){width:6%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(7){width:6%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(8){width:7%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(9){width:7%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(10){width:7%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(11){width:7%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(12){width:6%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(13){width:5.5%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(14){width:13%!important}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(14),
html.ui-font-scale-expanded .opportunity-panel #opportunityTable td:nth-child(14){
  min-width:0!important;
  white-space:nowrap!important;
}
html.ui-font-scale-expanded .opportunity-panel #opportunityTable .opportunity-actions{
  width:auto!important;
  min-width:0!important;
  max-width:100%!important;
  flex-wrap:nowrap!important;
  justify-content:flex-start!important;
  gap:var(--table-action-gap)!important;
}

/* V1.2.3: staged ADD / EXIT uses fixed label / deviation / amount segments.
   Do not rely on proportional-font spaces: +/- signs and digit counts must not
   change the visual spacing between stage level, deviation and amount. */
.opened-section .pt-add-info .pt-stage-segment,
.opened-section .pt-add-info .pt-add-executed,
.opened-section .pt-add-info .pt-add-pending,
.pending-section .pt-add-info .pt-add-pending{
  display:grid!important;
  grid-template-columns:max-content 6.6ch max-content!important;
  column-gap:8px!important;
  align-items:baseline!important;
  justify-content:start!important;
  width:max-content!important;
  min-width:0!important;
  white-space:nowrap!important;
}
.opened-section .pt-add-info .pt-stage-label,
.opened-section .pt-add-info .pt-stage-deviation,
.opened-section .pt-add-info .pt-stage-amount,
.pending-section .pt-add-info .pt-stage-label,
.pending-section .pt-add-info .pt-stage-deviation,
.pending-section .pt-add-info .pt-stage-amount{
  display:block!important;
  margin:0!important;
  padding:0!important;
  white-space:nowrap!important;
  font-variant-numeric:tabular-nums!important;
}
.opened-section .pt-add-info .pt-stage-deviation,
.pending-section .pt-add-info .pt-stage-deviation{
  text-align:left!important;
}


/* V1.2.9: compress same-stage spacing a bit further.
   Keep the ADD/EXIT group gap from V1.2.8, but tighten the fixed tracks inside
   each individual stage line once more so label / deviation / amount sit closer
   together without breaking column alignment. */
.opened-section .pt-add-info .pt-stage-segment,
.opened-section .pt-add-info .pt-add-executed,
.opened-section .pt-add-info .pt-add-pending,
.pending-section .pt-add-info .pt-add-pending{
  display:grid!important;
  grid-template-columns:3.45em 5.25em 2.85em!important;
  column-gap:.22em!important;
  align-items:baseline!important;
  justify-content:start!important;
  width:max-content!important;
  min-width:0!important;
  white-space:nowrap!important;
}
.opened-section .pt-add-info .pt-stage-label,
.opened-section .pt-add-info .pt-stage-deviation,
.opened-section .pt-add-info .pt-stage-amount,
.pending-section .pt-add-info .pt-stage-label,
.pending-section .pt-add-info .pt-stage-deviation,
.pending-section .pt-add-info .pt-stage-amount{
  width:auto!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
  text-align:left!important;
  white-space:nowrap!important;
  font-variant-numeric:tabular-nums!important;
}


/* V1.2.10: admin-managed per-user risk limits in the account-management modal. */
.user-manage-risk-title{grid-column:1/-1;display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:4px;padding-top:10px;border-top:1px solid var(--line);}
.user-manage-risk-title span{color:var(--text);}
.user-manage-risk-title small{color:var(--muted);font-size:calc(11px * var(--ui-font-scale));}
.user-manage-form label small{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-top:4px;}


/* V1.2.11: admin user-position table may scroll horizontally on narrower screens.
   This intentionally overrides the global no-horizontal-scroll table wrapper rule
   only for the user-position page. */
.page-shell .user-position-table-scroll{
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  -webkit-overflow-scrolling:touch;
}
.page-shell .user-position-table-scroll .admin-user-position-table{
  min-width:1640px!important;
  width:max-content!important;
}


/* V1.2.12: compact one-line sidebar display controls.
   Keep labels and controls on one row so sidebar font scaling does not force
   "缩放" / "主题" to wrap. Scale +/- buttons are intentionally small; the theme
   select is short because it only contains 深色 / 浅色. */
.sidebar-footer .ui-footer-control-stacked{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:8px!important;
  width:100%!important;
  min-width:0!important;
}
.sidebar-footer .ui-footer-control-stacked>span{
  display:block!important;
  flex:0 0 auto!important;
  width:auto!important;
  min-width:2em!important;
  white-space:nowrap!important;
  line-height:1.2!important;
}
.sidebar-footer .ui-scale-stepper{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:3px!important;
  width:auto!important;
  max-width:none!important;
  flex:0 0 auto!important;
}
.sidebar-footer .ui-scale-stepper button{
  width:20px!important;
  min-width:20px!important;
  height:20px!important;
  min-height:20px!important;
  padding:0!important;
  border-radius:5px!important;
  font-size:calc(10px * var(--ui-font-scale))!important;
  line-height:1!important;
}
.sidebar-footer .ui-scale-stepper output{
  min-width:38px!important;
  width:38px!important;
  height:20px!important;
  padding:0!important;
  font-size:calc(10px * var(--ui-font-scale))!important;
  white-space:nowrap!important;
}
.sidebar-footer .ui-theme-control select{
  align-self:auto!important;
  flex:0 0 72px!important;
  width:72px!important;
  max-width:72px!important;
  min-width:72px!important;
  height:24px!important;
  min-height:24px!important;
  padding:1px 22px 1px 7px!important;
  font-size:calc(10px * var(--ui-font-scale))!important;
}


/* V1.2.14: current-user profit statistics under Binance account. */
.profit-filter-grid-self{grid-template-columns:minmax(170px,220px) minmax(170px,220px) auto!important;max-width:650px!important}
@media(max-width:620px){.profit-filter-grid-self{grid-template-columns:1fr!important;max-width:none!important}}


/* V1.2.15: renewal/billing UI. */
.user-renewal-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.user-renewal-title span{color:var(--text)}.user-renewal-title small{color:var(--muted);font-size:calc(11px * var(--ui-font-scale))}.user-renewal-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.user-renewal-form label{display:grid;gap:6px;color:#9eabb9;font-size:calc(11px * var(--ui-font-scale))}.user-renewal-form input{background:#111820;border:1px solid #344150;border-radius:7px;color:#e8edf3;padding:9px 10px}.user-renewal-notes{grid-column:1/-1}.user-renewal-preview{grid-column:1/-1;display:flex;align-items:baseline;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.02)}.user-renewal-preview span{color:var(--muted);font-size:calc(11px * var(--ui-font-scale))}.user-renewal-preview strong{color:var(--text);font-weight:500}.user-renewal-preview small{margin-left:auto;color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}.user-renewal-save{grid-column:1/-1;display:flex;justify-content:flex-end}.billing-filter-grid{display:grid;grid-template-columns:minmax(200px,1.4fr) minmax(150px,.8fr) minmax(150px,.8fr) auto;gap:12px;align-items:end}.billing-filter-grid label{display:grid;gap:6px}.billing-filter-action{display:flex;align-items:end}.billing-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.billing-stat-grid>div{padding:12px;border:1px solid var(--line);border-radius:8px}.billing-stat-grid span,.billing-stat-grid small{color:var(--muted);font-size:calc(11px * var(--ui-font-scale))}.billing-stat-grid strong{display:inline-block;margin:0 6px;font-size:calc(18px * var(--ui-font-scale));font-weight:500}.billing-user-account{display:block;color:var(--muted);font-size:calc(10px * var(--ui-font-scale));margin-top:2px}.billing-table td,.billing-table th{white-space:nowrap}.billing-table td:last-child,.billing-table th:last-child{white-space:normal;min-width:140px}.billing-pagination{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:14px}
:root[data-theme="light"] .user-renewal-form label{color:#526170!important}:root[data-theme="light"] .user-renewal-form input{background:#fff!important;color:#18232d!important;border-color:#c8d2db!important}:root[data-theme="light"] .user-renewal-preview{background:#f8fafb!important}
@media(max-width:760px){.user-renewal-form{grid-template-columns:1fr}.user-renewal-notes,.user-renewal-preview,.user-renewal-save{grid-column:auto}.billing-filter-grid{grid-template-columns:1fr}.billing-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* V1.2.17: collapsible sidebar.
   Collapse the complete menu to release horizontal workspace while leaving one
   small fixed control to restore it. State is restored pre-paint from localStorage. */
.sidebar,
.app-main,
.sidebar-collapse-toggle{
  transition:left .16s ease,margin-left .16s ease,transform .16s ease!important;
}
.sidebar-collapse-toggle{
  position:fixed;
  z-index:80;
  top:50%;
  left:calc(var(--sidebar-width) - 10px);
  transform:translateY(-50%);
  width:22px;
  min-width:22px;
  height:34px;
  min-height:34px;
  padding:0!important;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line);
  border-radius:6px;
  background:#20252e;
  color:#aeb7c2;
  box-shadow:0 2px 8px rgba(0,0,0,.22);
  cursor:pointer;
  font-size:calc(17px * var(--ui-font-scale));
  line-height:1;
}
.sidebar-collapse-toggle:hover{
  color:#fff;
  background:#2a3039;
}
html.sidebar-collapsed .sidebar{
  transform:translateX(calc(-1 * var(--sidebar-width) - 2px))!important;
}
html.sidebar-collapsed .app-main{
  margin-left:0!important;
}
html.sidebar-collapsed .sidebar-collapse-toggle{
  left:6px!important;
}
:root[data-theme="light"] .sidebar-collapse-toggle{
  background:#f4f6f8;
  border-color:#cfd7df;
  color:#536373;
  box-shadow:0 2px 8px rgba(31,41,51,.12);
}
:root[data-theme="light"] .sidebar-collapse-toggle:hover{
  background:#e9eef3;
  color:#17232d;
}
@media(max-width:900px){
  .sidebar-collapse-toggle{top:50%;left:calc(var(--sidebar-width) - 9px);transform:translateY(-50%)}
  html.sidebar-collapsed .sidebar-collapse-toggle{left:5px!important}
}


/* V1.2.19: admin-only first-level referral overview. */
.agent-overview-group{margin-bottom:14px!important;}
.agent-overview-title{margin-bottom:10px!important;}
.agent-overview-title h2{margin:0!important;font-size:calc(15px * var(--ui-font-scale))!important;font-weight:500!important;}
.agent-overview-title h2 small{font-size:calc(11px * var(--ui-font-scale))!important;color:var(--muted)!important;font-weight:400!important;}
.agent-overview-title p{margin-top:4px!important;}

/* V1.2.22: sidebar collapse toggle vertically centered. */

/* V1.2.21: account type lifecycle / renewal mode completion. */
.sidebar-brand-copy{display:flex;flex-direction:column;gap:9px;}
.sidebar-brand-copy .sidebar-title{margin-top:0;}
.sidebar-brand-copy .sidebar-version{margin-top:0;}
.user-account-type-form{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;}
.user-account-type-form label{display:grid;gap:6px;color:#9eabb9;font-size:calc(11px * var(--ui-font-scale));}
.user-account-type-form input,.user-account-type-form select,.user-renewal-form select{background:#111820;border:1px solid #344150;border-radius:7px;color:#e8edf3;padding:9px 10px;}
.user-account-change-notes{grid-column:1/-1;}
.user-lifecycle-panel{margin-top:14px;}
.user-lifecycle-head h2{margin:0;font-size:calc(16px * var(--ui-font-scale));}
.user-lifecycle-head p{margin:5px 0 12px;color:var(--muted);font-size:calc(11px * var(--ui-font-scale));}
.user-lifecycle-table{min-width:1120px;}
.user-lifecycle-table th,.user-lifecycle-table td{white-space:nowrap;}
:root[data-theme="light"] .user-account-type-form label{color:#526170!important;}
:root[data-theme="light"] .user-account-type-form input,
:root[data-theme="light"] .user-account-type-form select,
:root[data-theme="light"] .user-renewal-form select{background:#fff!important;color:#18232d!important;border-color:#c8d2db!important;}
@media(max-width:760px){.user-account-type-form{grid-template-columns:1fr}.user-account-change-notes{grid-column:auto}}

/* V1.2.28: container-driven responsive native tables.
   Do not branch by phone/tablet/desktop. A native table fills its container when
   it fits and becomes horizontally scrollable only when its content needs more
   room. Pair-management opened/pending grids are intentionally untouched. */
.page-shell .table-wrap,
.page-shell .table-scroll,
.page-shell .research-table-wrap,
.page-shell .opportunity-table-wrap,
.page-shell .history-main-table-scroll,
.page-shell .history-table-scroll,
.page-shell .history-inner-scroll,
.page-shell .log-table-scroll,
.page-shell .position-table-wrap,
.page-shell .level-table-scroll,
.page-shell .level-analysis-summary-scroll,
.page-shell .level-analysis-table-scroll,
.page-shell .opportunity-reversion-table{
  max-width:100%!important;
  overflow-x:auto!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
}
.page-shell .research-table-wrap{
  overflow-y:auto!important;
}
.page-shell .table-wrap > table,
.page-shell .table-scroll > table,
.page-shell .research-table-wrap > table,
.page-shell .opportunity-table-wrap > table,
.page-shell .history-main-table-scroll > table,
.page-shell .history-table-scroll > table,
.page-shell .history-inner-scroll > table,
.page-shell .log-table-scroll > table,
.page-shell .position-table-wrap > table,
.page-shell .level-table-scroll > table,
.page-shell .level-analysis-summary-scroll > table,
.page-shell .level-analysis-table-scroll > table,
.page-shell .opportunity-reversion-table > table,
.page-shell .position-plan-table-wrap > .position-plan-table{
  width:max-content!important;
  min-width:100%!important;
  max-width:none!important;
}
/* Preserve the deliberate working widths of the genuinely wide data tables.
   These are content requirements, not device breakpoints. */
.page-shell .research-table-market{min-width:1460px!important;}
.page-shell .exchange-history-table{min-width:1320px!important;}
.page-shell .history-inner-table{min-width:1100px!important;}
.page-shell .user-table{min-width:1450px!important;}
.page-shell .user-lifecycle-table{min-width:1120px!important;}
.page-shell .admin-user-position-table{min-width:1740px!important;}
.page-shell .position-plan-table{min-width:720px!important;}
.opportunity-panel #opportunityTable,
html.ui-font-scale-expanded .opportunity-panel #opportunityTable{
  width:max-content!important;
  min-width:1740px!important;
  max-width:none!important;
  table-layout:auto!important;
}
.opportunity-panel #opportunityTable th:nth-child(-n+13),
.opportunity-panel #opportunityTable td:nth-child(-n+13),
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(-n+13),
html.ui-font-scale-expanded .opportunity-panel #opportunityTable td:nth-child(-n+13){
  width:auto!important;
  min-width:max-content!important;
}
.opportunity-panel #opportunityTable th:nth-child(14),
.opportunity-panel #opportunityTable td:nth-child(14),
html.ui-font-scale-expanded .opportunity-panel #opportunityTable th:nth-child(14),
html.ui-font-scale-expanded .opportunity-panel #opportunityTable td:nth-child(14){
  width:auto!important;
  min-width:max-content!important;
  white-space:nowrap!important;
}

/* V1.2.29: opportunity table fills available desktop/container width while
   preserving the V1.2.28 content-width floor and natural horizontal scroll. */
.opportunity-panel #opportunityTable,
html.ui-font-scale-expanded .opportunity-panel #opportunityTable{
  width:100%!important;
  min-width:1740px!important;
  max-width:none!important;
}


/* V1.2.30: compact ChatGPT-style account entry with an upward account popover. */
.sidebar-account-footer{position:relative!important;padding:8px!important;border-top:1px solid #292f38!important;}
.sidebar-account-trigger{width:100%;display:flex;align-items:center;gap:8px;padding:7px 6px!important;border:1px solid transparent;border-radius:8px;background:transparent;color:#e8edf3;cursor:pointer;text-align:left;}
.sidebar-account-trigger:hover,.sidebar-account-trigger[aria-expanded="true"]{background:#1b222c;border-color:#2d3743;}
.sidebar-account-avatar{display:flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;border:1px solid #3b4857;border-radius:50%;background:#202936;color:#e6edf5;font-weight:700;font-size:calc(12px * var(--ui-font-scale));}
.sidebar-account-trigger-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px;}
.sidebar-account-trigger-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#edf2f7;font-size:calc(11px * var(--ui-font-scale));}
.sidebar-account-trigger-copy small{color:#7f8c9b;font-size:calc(9px * var(--ui-font-scale));}
.sidebar-account-chevron{flex:0 0 auto;color:#8e9aa8;font-size:calc(16px * var(--ui-font-scale));line-height:1;transform:rotate(-90deg);transition:transform .14s ease;}
.sidebar-account-trigger[aria-expanded="true"] .sidebar-account-chevron{transform:rotate(90deg);}
.sidebar-account-popover{position:absolute;left:8px;right:8px;bottom:calc(100% - 2px);z-index:120;padding:10px;border:1px solid #303b48;border-radius:10px;background:#171d25;box-shadow:0 12px 32px rgba(0,0,0,.38);}
.sidebar-account-popover[hidden]{display:none!important;}
.sidebar-account-summary{display:flex;flex-direction:column;gap:3px;padding:2px 2px 5px;}
.sidebar-account-summary strong{color:#edf2f7;font-size:calc(12px * var(--ui-font-scale));overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sidebar-account-summary small{color:#8491a0;font-size:calc(9px * var(--ui-font-scale));}
.sidebar-account-divider{height:1px;background:#2b3541;margin:7px 0;}
.sidebar-account-popover .ui-footer-control-stacked{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;width:100%!important;margin:6px 0!important;}
.sidebar-account-popover .ui-footer-control-stacked>span{flex:0 0 auto!important;margin:0!important;}
.sidebar-account-popover .ui-theme-control select{width:92px!important;min-width:0!important;}
.sidebar-account-popover .sidebar-footer-label{margin:0 0 4px!important;}
.sidebar-account-popover .sidebar-footer-value{margin:0!important;}
.sidebar-account-logout{margin:0;}
.sidebar-account-logout button{width:100%;padding:7px 8px;border:0;border-radius:7px;background:transparent;color:#cbd4df;text-align:left;cursor:pointer;font:inherit;}
.sidebar-account-logout button:hover{background:#222b36;color:#fff;}
:root[data-theme="light"] .sidebar-account-footer{border-top-color:#dfe5eb!important;}
:root[data-theme="light"] .sidebar-account-trigger{color:#25313d;}
:root[data-theme="light"] .sidebar-account-trigger:hover,:root[data-theme="light"] .sidebar-account-trigger[aria-expanded="true"]{background:#edf2f6;border-color:#d7dfe7;}
:root[data-theme="light"] .sidebar-account-avatar{background:#f4f7f9;border-color:#cbd5de;color:#344250;}
:root[data-theme="light"] .sidebar-account-trigger-copy strong,:root[data-theme="light"] .sidebar-account-summary strong{color:#25313d;}
:root[data-theme="light"] .sidebar-account-trigger-copy small,:root[data-theme="light"] .sidebar-account-summary small{color:#6f7e8d;}
:root[data-theme="light"] .sidebar-account-popover{background:#fff;border-color:#d5dde5;box-shadow:0 12px 30px rgba(31,41,51,.16);}
:root[data-theme="light"] .sidebar-account-divider{background:#e2e7ec;}
:root[data-theme="light"] .sidebar-account-logout button{color:#455565;}
:root[data-theme="light"] .sidebar-account-logout button:hover{background:#eef2f6;color:#202a35;}

/* V1.2.32: wider account popover + in-console beginner tutorial. */
.sidebar-account-popover{
  left:8px!important;
  right:auto!important;
  width:min(360px,calc(100vw - 24px))!important;
  max-width:calc(100vw - 24px)!important;
  padding:14px!important;
  border-radius:14px!important;
  box-shadow:0 18px 48px rgba(0,0,0,.46)!important;
}
.sidebar-account-summary{padding:3px 4px 8px!important;gap:4px!important;}
.sidebar-account-summary strong{font-size:calc(13px * var(--ui-font-scale))!important;}
.sidebar-account-popover .ui-footer-control-stacked{padding:3px 4px!important;margin:5px 0!important;}
.sidebar-account-popover .ui-theme-control select{width:124px!important;}
.sidebar-account-popover .sidebar-footer-label,.sidebar-account-popover .sidebar-footer-value{padding-left:4px!important;padding-right:4px!important;}
.sidebar-account-menu-link{display:flex;align-items:center;gap:10px;padding:9px 7px;border-radius:9px;color:#dbe4ed;text-decoration:none;}
.sidebar-account-menu-link:hover{background:#222b36;color:#fff;}
.sidebar-account-menu-icon{display:flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;border:1px solid #3a4654;border-radius:8px;background:#202936;color:#dfe8f1;font-weight:700;}
.sidebar-account-menu-link>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column;gap:2px;}
.sidebar-account-menu-link strong{font-size:calc(11px * var(--ui-font-scale));font-weight:600;}
.sidebar-account-menu-link small{font-size:calc(9px * var(--ui-font-scale));color:#8491a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sidebar-account-menu-arrow{color:#8e9aa8;font-size:calc(17px * var(--ui-font-scale));}
.sidebar-account-logout button{padding:9px 8px!important;}
:root[data-theme="light"] .sidebar-account-menu-link{color:#334252;}
:root[data-theme="light"] .sidebar-account-menu-link:hover{background:#eef2f6;color:#202a35;}
:root[data-theme="light"] .sidebar-account-menu-icon{background:#f4f7f9;border-color:#cbd5de;color:#344250;}
:root[data-theme="light"] .sidebar-account-menu-link small{color:#6f7e8d;}

.tutorial-page{max-width:1240px;margin:0 auto;padding:4px 0 40px;}
.tutorial-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:24px 26px;border:1px solid #293441;border-radius:14px;background:#151b23;}
.tutorial-kicker{margin-bottom:7px;color:#7f8c9b;font-size:calc(11px * var(--ui-font-scale));}
.tutorial-hero h1{margin:0 0 7px;color:#edf2f7;font-size:calc(24px * var(--ui-font-scale));line-height:1.2;}
.tutorial-hero p{margin:0;color:#9aa7b5;}
.tutorial-goal{display:flex;min-width:280px;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid #2e3a47;border-radius:10px;background:#11171e;}
.tutorial-goal strong{font-size:calc(11px * var(--ui-font-scale));color:#8f9cab;}.tutorial-goal span{font-size:calc(12px * var(--ui-font-scale));color:#d9e2eb;}
.tutorial-alert{display:flex;gap:12px;margin:14px 0;padding:12px 15px;border:1px solid #6b5723;border-radius:10px;background:#282313;color:#d9c47b;}
.tutorial-alert strong{white-space:nowrap;color:#f0d36f;}
.tutorial-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:16px;align-items:start;}
.tutorial-toc{position:sticky;top:12px;display:flex;flex-direction:column;gap:3px;padding:13px;border:1px solid #293441;border-radius:12px;background:#151b23;max-height:calc(100vh - 24px);overflow:auto;}
.tutorial-toc strong{padding:4px 7px 8px;color:#e6edf5;font-size:calc(12px * var(--ui-font-scale));}.tutorial-toc a{padding:6px 7px;border-radius:6px;color:#8f9cab;text-decoration:none;font-size:calc(10px * var(--ui-font-scale));}.tutorial-toc a:hover{background:#202833;color:#e6edf5;}
.tutorial-content{display:flex;min-width:0;flex-direction:column;gap:12px;}.tutorial-card{scroll-margin-top:12px;padding:20px 22px;border:1px solid #293441;border-radius:12px;background:#151b23;}.tutorial-card h2{margin:0 0 14px;color:#edf2f7;font-size:calc(17px * var(--ui-font-scale));}.tutorial-card h3{margin:16px 0 7px;color:#dce5ee;font-size:calc(13px * var(--ui-font-scale));}.tutorial-card p,.tutorial-card li{color:#aeb9c5;line-height:1.75;}.tutorial-card ul,.tutorial-card ol{margin:8px 0;padding-left:22px;}.tutorial-card li+li{margin-top:4px;}
.tutorial-two-col,.tutorial-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}.tutorial-two-col>div,.tutorial-grid>div,.tutorial-example{display:flex;flex-direction:column;gap:5px;padding:12px;border:1px solid #2b3744;border-radius:9px;background:#11171e;}.tutorial-two-col strong,.tutorial-grid strong,.tutorial-example strong{color:#dfe7ef;}.tutorial-grid span,.tutorial-example span{color:#9daab7;line-height:1.6;}
.tutorial-rule{margin-top:12px;padding:10px 12px;border-left:3px solid #b99434;border-radius:5px;background:#211e14;color:#d8c477;}.tutorial-muted{color:#7f8c9b!important;}.tutorial-truth{margin:12px 0;padding:12px;border:1px solid #355c51;border-radius:8px;background:#13231f;color:#74cbb1;font-weight:600;text-align:center;}
.tutorial-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}.tutorial-card table{width:100%;min-width:620px;border-collapse:collapse;}.tutorial-card th,.tutorial-card td{padding:9px 10px;border-bottom:1px solid #26313d;text-align:left;vertical-align:top;color:#aeb9c5;}.tutorial-card th{color:#dfe7ef;background:#11171e;font-weight:600;white-space:nowrap;}
.tutorial-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}.tutorial-checklist label{padding:10px 11px;border:1px solid #2b3744;border-radius:8px;background:#11171e;color:#aeb9c5;}.tutorial-ten{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 24px;}
:root[data-theme="light"] .tutorial-hero,:root[data-theme="light"] .tutorial-toc,:root[data-theme="light"] .tutorial-card{background:#fff;border-color:#dbe2e8;}:root[data-theme="light"] .tutorial-hero h1,:root[data-theme="light"] .tutorial-card h2,:root[data-theme="light"] .tutorial-card h3,:root[data-theme="light"] .tutorial-toc strong{color:#25313d;}:root[data-theme="light"] .tutorial-hero p,:root[data-theme="light"] .tutorial-kicker,:root[data-theme="light"] .tutorial-card p,:root[data-theme="light"] .tutorial-card li,:root[data-theme="light"] .tutorial-muted{color:#647383!important;}:root[data-theme="light"] .tutorial-goal,:root[data-theme="light"] .tutorial-two-col>div,:root[data-theme="light"] .tutorial-grid>div,:root[data-theme="light"] .tutorial-example,:root[data-theme="light"] .tutorial-checklist label{background:#f7f9fb;border-color:#dce3e9;}:root[data-theme="light"] .tutorial-goal span,:root[data-theme="light"] .tutorial-two-col strong,:root[data-theme="light"] .tutorial-grid strong,:root[data-theme="light"] .tutorial-example strong{color:#334252;}:root[data-theme="light"] .tutorial-grid span,:root[data-theme="light"] .tutorial-example span,:root[data-theme="light"] .tutorial-checklist label{color:#637282;}:root[data-theme="light"] .tutorial-toc a{color:#667687;}:root[data-theme="light"] .tutorial-toc a:hover{background:#eef2f6;color:#25313d;}:root[data-theme="light"] .tutorial-card th{background:#f4f7f9;color:#344250;}:root[data-theme="light"] .tutorial-card td{color:#5f6f7f;border-color:#e1e7ec;}
@media(max-width:760px){.tutorial-hero{align-items:stretch;flex-direction:column;padding:18px}.tutorial-goal{min-width:0}.tutorial-layout{grid-template-columns:1fr}.tutorial-toc{position:static;max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.tutorial-toc strong{grid-column:1/-1}.tutorial-card{padding:16px}.tutorial-two-col,.tutorial-grid,.tutorial-checklist,.tutorial-ten{grid-template-columns:1fr}}

/* V1.2.32: wider account popover + in-console beginner tutorial. */
.sidebar-account-popover{left:8px!important;right:auto!important;width:min(360px,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;padding:14px!important;border-radius:14px!important;box-shadow:0 18px 48px rgba(0,0,0,.46)!important;}
.sidebar-account-summary{padding:3px 4px 8px!important;gap:4px!important}.sidebar-account-summary strong{font-size:calc(13px * var(--ui-font-scale))!important}.sidebar-account-popover .ui-footer-control-stacked{padding:3px 4px!important;margin:5px 0!important}.sidebar-account-popover .ui-theme-control select{width:124px!important}.sidebar-account-popover .sidebar-footer-label,.sidebar-account-popover .sidebar-footer-value{padding-left:4px!important;padding-right:4px!important}
.sidebar-account-menu-link{display:flex;align-items:center;gap:10px;padding:9px 7px;border-radius:9px;color:#dbe4ed;text-decoration:none}.sidebar-account-menu-link:hover{background:#222b36;color:#fff}.sidebar-account-menu-icon{display:flex;align-items:center;justify-content:center;flex:0 0 28px;width:28px;height:28px;border:1px solid #3a4654;border-radius:8px;background:#202936;color:#dfe8f1;font-weight:700}.sidebar-account-menu-link>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.sidebar-account-menu-link strong{font-size:calc(11px * var(--ui-font-scale));font-weight:600}.sidebar-account-menu-link small{font-size:calc(9px * var(--ui-font-scale));color:#8491a0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-account-menu-arrow{color:#8e9aa8;font-size:calc(17px * var(--ui-font-scale))}.sidebar-account-logout button{padding:9px 8px!important}
:root[data-theme="light"] .sidebar-account-menu-link{color:#334252}:root[data-theme="light"] .sidebar-account-menu-link:hover{background:#eef2f6;color:#202a35}:root[data-theme="light"] .sidebar-account-menu-icon{background:#f4f7f9;border-color:#cbd5de;color:#344250}:root[data-theme="light"] .sidebar-account-menu-link small{color:#6f7e8d}
.tutorial-page{max-width:1240px;margin:0 auto;padding:4px 0 40px}.tutorial-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:24px 26px;border:1px solid #293441;border-radius:14px;background:#151b23}.tutorial-kicker{margin-bottom:7px;color:#7f8c9b;font-size:calc(11px * var(--ui-font-scale))}.tutorial-hero h1{margin:0 0 7px;color:#edf2f7;font-size:calc(24px * var(--ui-font-scale));line-height:1.2}.tutorial-hero p{margin:0;color:#9aa7b5}.tutorial-goal{display:flex;min-width:280px;flex-direction:column;gap:5px;padding:12px 14px;border:1px solid #2e3a47;border-radius:10px;background:#11171e}.tutorial-goal strong{font-size:calc(11px * var(--ui-font-scale));color:#8f9cab}.tutorial-goal span{font-size:calc(12px * var(--ui-font-scale));color:#d9e2eb}.tutorial-alert{display:flex;gap:12px;margin:14px 0;padding:12px 15px;border:1px solid #6b5723;border-radius:10px;background:#282313;color:#d9c47b}.tutorial-alert strong{white-space:nowrap;color:#f0d36f}.tutorial-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:16px;align-items:start}.tutorial-toc{position:sticky;top:12px;display:flex;flex-direction:column;gap:3px;padding:13px;border:1px solid #293441;border-radius:12px;background:#151b23;max-height:calc(100vh - 24px);overflow:auto}.tutorial-toc strong{padding:4px 7px 8px;color:#e6edf5;font-size:calc(12px * var(--ui-font-scale))}.tutorial-toc a{padding:6px 7px;border-radius:6px;color:#8f9cab;text-decoration:none;font-size:calc(10px * var(--ui-font-scale))}.tutorial-toc a:hover{background:#202833;color:#e6edf5}.tutorial-content{display:flex;min-width:0;flex-direction:column;gap:12px}.tutorial-card{scroll-margin-top:12px;padding:20px 22px;border:1px solid #293441;border-radius:12px;background:#151b23}.tutorial-card h2{margin:0 0 14px;color:#edf2f7;font-size:calc(17px * var(--ui-font-scale))}.tutorial-card h3{margin:16px 0 7px;color:#dce5ee;font-size:calc(13px * var(--ui-font-scale))}.tutorial-card p,.tutorial-card li{color:#aeb9c5;line-height:1.75}.tutorial-card ul,.tutorial-card ol{margin:8px 0;padding-left:22px}.tutorial-card li+li{margin-top:4px}.tutorial-two-col,.tutorial-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tutorial-two-col>div,.tutorial-grid>div,.tutorial-example{display:flex;flex-direction:column;gap:5px;padding:12px;border:1px solid #2b3744;border-radius:9px;background:#11171e}.tutorial-two-col strong,.tutorial-grid strong,.tutorial-example strong{color:#dfe7ef}.tutorial-grid span,.tutorial-example span{color:#9daab7;line-height:1.6}.tutorial-example+.tutorial-example{margin-top:8px}.tutorial-rule{margin-top:12px;padding:10px 12px;border-left:3px solid #b99434;border-radius:5px;background:#211e14;color:#d8c477}.tutorial-muted{color:#7f8c9b!important}.tutorial-truth{margin:12px 0;padding:12px;border:1px solid #355c51;border-radius:8px;background:#13231f;color:#74cbb1;font-weight:600;text-align:center}.tutorial-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.tutorial-card table{width:100%;min-width:620px;border-collapse:collapse}.tutorial-card th,.tutorial-card td{padding:9px 10px;border-bottom:1px solid #26313d;text-align:left;vertical-align:top;color:#aeb9c5}.tutorial-card th{color:#dfe7ef;background:#11171e;font-weight:600;white-space:nowrap}.tutorial-checklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.tutorial-checklist label{padding:10px 11px;border:1px solid #2b3744;border-radius:8px;background:#11171e;color:#aeb9c5}.tutorial-ten{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 24px}
:root[data-theme="light"] .tutorial-hero,:root[data-theme="light"] .tutorial-toc,:root[data-theme="light"] .tutorial-card{background:#fff;border-color:#dbe2e8}:root[data-theme="light"] .tutorial-hero h1,:root[data-theme="light"] .tutorial-card h2,:root[data-theme="light"] .tutorial-card h3,:root[data-theme="light"] .tutorial-toc strong{color:#25313d}:root[data-theme="light"] .tutorial-hero p,:root[data-theme="light"] .tutorial-kicker,:root[data-theme="light"] .tutorial-card p,:root[data-theme="light"] .tutorial-card li,:root[data-theme="light"] .tutorial-muted{color:#647383!important}:root[data-theme="light"] .tutorial-goal,:root[data-theme="light"] .tutorial-two-col>div,:root[data-theme="light"] .tutorial-grid>div,:root[data-theme="light"] .tutorial-example,:root[data-theme="light"] .tutorial-checklist label{background:#f7f9fb;border-color:#dce3e9}:root[data-theme="light"] .tutorial-goal span,:root[data-theme="light"] .tutorial-two-col strong,:root[data-theme="light"] .tutorial-grid strong,:root[data-theme="light"] .tutorial-example strong{color:#334252}:root[data-theme="light"] .tutorial-grid span,:root[data-theme="light"] .tutorial-example span,:root[data-theme="light"] .tutorial-checklist label{color:#637282}:root[data-theme="light"] .tutorial-toc a{color:#667687}:root[data-theme="light"] .tutorial-toc a:hover{background:#eef2f6;color:#25313d}:root[data-theme="light"] .tutorial-card th{background:#f4f7f9;color:#344250}:root[data-theme="light"] .tutorial-card td{color:#5f6f7f;border-color:#e1e7ec}
@media(max-width:760px){.tutorial-hero{align-items:stretch;flex-direction:column;padding:18px}.tutorial-goal{min-width:0}.tutorial-layout{grid-template-columns:1fr}.tutorial-toc{position:static;max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.tutorial-toc strong{grid-column:1/-1}.tutorial-card{padding:16px}.tutorial-two-col,.tutorial-grid,.tutorial-checklist,.tutorial-ten{grid-template-columns:1fr}}
.page-shell .tutorial-card table{width:100%!important;min-width:620px!important;max-width:none!important;}
/* Keep the enlarged account menu outside the Sidebar clipping boundary. */
.sidebar-account-popover{position:fixed!important;left:8px!important;bottom:calc(58px + env(safe-area-inset-bottom))!important;}

/* V1.2.33: denser, clearer ChatGPT-style account popover hierarchy. */
.sidebar-account-popover{
  width:min(380px,calc(100vw - 24px))!important;
  padding:10px!important;
  border-radius:14px!important;
}
.sidebar-account-summary{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:10px!important;
  padding:4px 5px 7px!important;
}
.sidebar-account-popover-avatar{
  display:flex;align-items:center;justify-content:center;flex:0 0 34px;width:34px;height:34px;
  border:1px solid #3b4857;border-radius:50%;background:#202936;color:#edf2f7;font-size:calc(14px * var(--ui-font-scale));font-weight:700;
}
.sidebar-account-summary-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:1px;}
.sidebar-account-summary-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#edf2f7;font-size:calc(14px * var(--ui-font-scale))!important;line-height:1.35;}
.sidebar-account-summary-copy small{color:#8491a0;font-size:calc(11px * var(--ui-font-scale));line-height:1.35;}
.sidebar-account-divider{margin:5px 0!important;}
.sidebar-account-settings{padding:0 1px;}
.sidebar-account-popover .ui-footer-control-stacked{
  min-height:38px!important;padding:3px 6px!important;margin:1px 0!important;border-radius:8px;
}
.sidebar-account-popover .ui-footer-control-stacked:hover{background:#202833;}
.sidebar-account-popover .ui-footer-control-stacked>span{font-size:calc(12px * var(--ui-font-scale))!important;color:#cbd4df;}
.sidebar-account-popover .ui-theme-control select{width:128px!important;}
.sidebar-account-menu-link{gap:10px!important;padding:6px!important;min-height:42px;border-radius:9px!important;}
.sidebar-account-menu-icon{flex-basis:30px!important;width:30px!important;height:30px!important;font-size:calc(13px * var(--ui-font-scale));}
.sidebar-account-menu-link strong{font-size:calc(12px * var(--ui-font-scale))!important;line-height:1.35;}
.sidebar-account-menu-link small{font-size:calc(10px * var(--ui-font-scale))!important;line-height:1.35;}
.sidebar-account-status-row{display:flex;align-items:center;gap:10px;min-height:42px;padding:6px;border-radius:9px;}
.sidebar-account-status-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:1px;}
.sidebar-account-status-copy small{color:#8491a0;font-size:calc(10px * var(--ui-font-scale));line-height:1.35;}
.sidebar-account-status-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dbe4ed;font-size:calc(11px * var(--ui-font-scale));font-weight:500;line-height:1.45;}
.sidebar-account-status-icon{color:#aab6c3;}
.sidebar-account-logout button{display:flex!important;align-items:center;gap:10px;min-height:42px;padding:6px!important;border-radius:9px!important;}
.sidebar-account-logout-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:1px;text-align:left;}
.sidebar-account-logout-copy strong{color:#dbe4ed;font-size:calc(12px * var(--ui-font-scale));font-weight:600;line-height:1.35;}
.sidebar-account-logout-copy small{color:#8491a0;font-size:calc(10px * var(--ui-font-scale));line-height:1.35;}
.sidebar-account-logout-icon{color:#c4ced9;}
:root[data-theme="light"] .sidebar-account-popover-avatar{background:#f4f7f9;border-color:#cbd5de;color:#344250;}
:root[data-theme="light"] .sidebar-account-summary-copy strong{color:#25313d;}
:root[data-theme="light"] .sidebar-account-summary-copy small,
:root[data-theme="light"] .sidebar-account-status-copy small,
:root[data-theme="light"] .sidebar-account-logout-copy small{color:#6f7e8d;}
:root[data-theme="light"] .sidebar-account-popover .ui-footer-control-stacked:hover{background:#eef2f6;}
:root[data-theme="light"] .sidebar-account-popover .ui-footer-control-stacked>span{color:#455565;}
:root[data-theme="light"] .sidebar-account-status-copy strong,
:root[data-theme="light"] .sidebar-account-logout-copy strong{color:#334252;}
:root[data-theme="light"] .sidebar-account-status-icon,
:root[data-theme="light"] .sidebar-account-logout-icon{color:#667687;}

/* V1.2.34: keep the primary Sidebar business-only; move system/admin navigation into the account popover. */
.sidebar-account-popover{
  max-height:calc(100dvh - 82px - env(safe-area-inset-bottom))!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.sidebar-account-section-label{
  padding:5px 7px 3px;
  color:#718091;
  font-size:calc(9px * var(--ui-font-scale));
  font-weight:600;
  letter-spacing:.08em;
}
.sidebar-account-menu-link.active{background:#202a35;color:#fff;}
.sidebar-account-menu-link.active .sidebar-account-menu-icon{border-color:#526173;background:#273240;color:#f0f5fa;}
.sidebar-account-subnav{display:flex;gap:4px;padding:0 6px 4px 46px;}
.sidebar-account-subnav a{
  display:flex;align-items:center;min-height:26px;padding:3px 8px;border-radius:7px;
  color:#8e9ba9;text-decoration:none;font-size:calc(10px * var(--ui-font-scale));line-height:1.3;
}
.sidebar-account-subnav a:hover,.sidebar-account-subnav a.active{background:#202833;color:#dfe7ef;}
.sidebar-account-subnav-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding-right:6px;}
.sidebar-account-subnav-grid a{justify-content:center;padding-left:5px;padding-right:5px;white-space:nowrap;}
:root[data-theme="light"] .sidebar-account-section-label{color:#788797;}
:root[data-theme="light"] .sidebar-account-menu-link.active{background:#e9eef3;color:#25313d;}
:root[data-theme="light"] .sidebar-account-menu-link.active .sidebar-account-menu-icon{background:#e4eaf0;border-color:#b8c4cf;color:#25313d;}
:root[data-theme="light"] .sidebar-account-subnav a{color:#718191;}
:root[data-theme="light"] .sidebar-account-subnav a:hover,
:root[data-theme="light"] .sidebar-account-subnav a.active{background:#eef2f6;color:#25313d;}
@media(max-height:700px){
  .sidebar-account-popover{bottom:calc(54px + env(safe-area-inset-bottom))!important;max-height:calc(100dvh - 66px - env(safe-area-inset-bottom))!important;}
}


/* V1.2.35: the fixed Sidebar collapse handle must never sit above the open account popover. */
html.account-popover-open .sidebar-collapse-toggle{
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
}


/* V1.2.36: compact text-only account popover; remove secondary descriptions and leading icons. */
.sidebar-account-summary{display:block!important;padding:5px 7px 7px!important;}
.sidebar-account-summary>strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#edf2f7;font-size:calc(14px * var(--ui-font-scale));line-height:1.35;}
.sidebar-account-menu-link{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;min-height:34px!important;padding:6px 8px!important;}
.sidebar-account-menu-link>strong{min-width:0;flex:1;font-size:calc(12px * var(--ui-font-scale))!important;line-height:1.35;}
.sidebar-account-menu-arrow{flex:0 0 auto;}
.sidebar-account-subnav{padding-left:14px!important;}
.sidebar-account-status-row{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;min-height:34px!important;padding:6px 8px!important;}
.sidebar-account-status-row>span{flex:0 0 auto;color:#8491a0;font-size:calc(11px * var(--ui-font-scale));line-height:1.35;}
.sidebar-account-status-row>strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#dbe4ed;font-size:calc(11px * var(--ui-font-scale));font-weight:500;line-height:1.35;text-align:right;}
.sidebar-account-logout button{display:flex!important;align-items:center!important;min-height:34px!important;padding:6px 8px!important;}
.sidebar-account-logout button>strong{color:#dbe4ed;font-size:calc(12px * var(--ui-font-scale));font-weight:600;line-height:1.35;}
:root[data-theme="light"] .sidebar-account-summary>strong{color:#25313d;}
:root[data-theme="light"] .sidebar-account-status-row>span{color:#6f7e8d;}
:root[data-theme="light"] .sidebar-account-status-row>strong,
:root[data-theme="light"] .sidebar-account-logout button>strong{color:#334252;}


/* V1.2.37: restore a clear account identity header and tighten the popover layout. */
.sidebar-account-popover{
  width:min(336px,calc(100vw - 24px))!important;
  padding:10px!important;
}
.sidebar-account-summary{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:10px!important;
  padding:5px 7px 8px!important;
}
.sidebar-account-popover-avatar{
  display:flex!important;align-items:center!important;justify-content:center!important;
  flex:0 0 36px!important;width:36px!important;height:36px!important;
  border:1px solid #3b4857!important;border-radius:50%!important;
  background:#202936!important;color:#edf2f7!important;font-size:calc(14px * var(--ui-font-scale))!important;font-weight:700!important;
}
.sidebar-account-summary-copy{display:flex!important;min-width:0!important;flex:1!important;flex-direction:column!important;gap:1px!important;}
.sidebar-account-summary-copy>strong{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:#edf2f7!important;font-size:calc(13px * var(--ui-font-scale))!important;line-height:1.35!important;}
.sidebar-account-summary-copy>small{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:#8491a0!important;font-size:calc(10px * var(--ui-font-scale))!important;line-height:1.35!important;}
.sidebar-account-divider{margin:4px 0!important;}
.sidebar-account-section-label{padding:4px 7px 2px!important;}
.sidebar-account-menu-link{min-height:32px!important;padding:5px 8px!important;}
.sidebar-account-subnav{padding-top:0!important;padding-bottom:3px!important;padding-left:14px!important;}
.sidebar-account-subnav-grid{gap:2px!important;padding-left:14px!important;padding-right:4px!important;}
.sidebar-account-status-row{
  display:flex!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;
  gap:2px!important;min-height:44px!important;padding:6px 8px!important;
}
.sidebar-account-status-row>span{font-size:calc(10px * var(--ui-font-scale))!important;line-height:1.3!important;}
.sidebar-account-status-row>strong{width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;text-align:left!important;font-size:calc(11px * var(--ui-font-scale))!important;line-height:1.4!important;}
:root[data-theme="light"] .sidebar-account-popover-avatar{background:#f4f7f9!important;border-color:#cbd5de!important;color:#344250!important;}
:root[data-theme="light"] .sidebar-account-summary-copy>strong{color:#25313d!important;}
:root[data-theme="light"] .sidebar-account-summary-copy>small{color:#6f7e8d!important;}

/* V1.2.39: narrower, visually separated account popover and left-aligned admin sub-navigation. */
.sidebar-account-popover{
  width:min(308px,calc(100vw - 24px))!important;
  background:#20262e!important;
  border-color:#3a4551!important;
  box-shadow:0 18px 48px rgba(0,0,0,.34)!important;
}
.sidebar-account-subnav-grid{
  display:flex!important;
  grid-template-columns:none!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:8px!important;
  padding-left:14px!important;
  padding-right:4px!important;
}
.sidebar-account-subnav-grid a{
  flex:0 0 auto!important;
  justify-content:flex-start!important;
  padding-left:0!important;
  padding-right:6px!important;
  white-space:nowrap!important;
}
:root[data-theme="light"] .sidebar-account-popover{
  background:#f2f3f5!important;
  border-color:#d5d9df!important;
  box-shadow:0 18px 44px rgba(31,41,51,.14)!important;
}

/* V1.2.40: opportunity page paints immediately while analysis loads asynchronously. */
.opportunity-analysis-loading,
.opportunity-analysis-error{
  min-height:260px;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:10px;
  margin-top:14px;
  padding:28px;
  border:1px solid var(--border);
  border-radius:14px;
  background:var(--panel);
  text-align:center;
}
.opportunity-analysis-loading[hidden],.opportunity-analysis-error[hidden]{display:none!important}
.opportunity-analysis-loading .loading-spinner{width:28px;height:28px}
.opportunity-analysis-loading strong,.opportunity-analysis-error strong{font-size:calc(15px * var(--ui-font-scale))}
.opportunity-analysis-loading p,.opportunity-analysis-error p{margin:0;color:var(--muted);font-size:calc(12px * var(--ui-font-scale))}
.opportunity-analysis-error .secondary-btn{margin-top:4px}

/* V1.2.41: keep second-level sidebar active/hover surfaces inside the sidebar and improve API page small-text readability. */
.mainnav.sidebar-nav .nav-submenu > a.nav-level-2{
  width:calc(100% - 8px)!important;
  max-width:calc(100% - 8px)!important;
  margin-right:0!important;
}

/* API management: enlarge the previously compact secondary text without changing page structure. */
.api-credential-head p{font-size:calc(13px * var(--ui-font-scale))!important;line-height:1.5!important;}
.api-state{font-size:calc(12px * var(--ui-font-scale))!important;}
.api-status-grid span{font-size:calc(11.5px * var(--ui-font-scale))!important;}
.api-status-grid strong{font-size:calc(12.5px * var(--ui-font-scale))!important;}
.api-warning,.api-legacy-note{font-size:calc(12px * var(--ui-font-scale))!important;line-height:1.5!important;}
.api-credential-form label{font-size:calc(12px * var(--ui-font-scale))!important;}
.api-action-row button{font-size:calc(12px * var(--ui-font-scale))!important;}
.api-result-head strong{font-size:calc(13px * var(--ui-font-scale))!important;}
.api-result-head span{font-size:calc(12px * var(--ui-font-scale))!important;}
.api-result-grid span{font-size:calc(11.5px * var(--ui-font-scale))!important;}
.api-result-grid strong{font-size:calc(12px * var(--ui-font-scale))!important;}
.api-raw-result summary,.api-raw-result pre{font-size:calc(11.5px * var(--ui-font-scale))!important;}
.api-footnote{font-size:calc(11.5px * var(--ui-font-scale))!important;line-height:1.5!important;}


/* V1.2.42: remove unused right-side space from the account popover and keep display controls compact on the left. */
.sidebar-account-popover{
  width:min(270px,calc(100vw - 24px))!important;
}
.sidebar-account-settings{
  padding:0 1px!important;
}
.sidebar-account-popover .ui-footer-control-stacked{
  width:auto!important;
  max-width:100%!important;
  justify-content:flex-start!important;
  gap:12px!important;
}
.sidebar-account-popover .ui-footer-control-stacked>span{
  flex:0 0 42px!important;
}
.sidebar-account-popover .ui-scale-stepper{
  flex:0 0 auto!important;
  margin:0!important;
}
.sidebar-account-popover .ui-theme-control select{
  width:104px!important;
  flex:0 0 104px!important;
}
.sidebar-account-subnav-grid{
  gap:6px!important;
}
.sidebar-account-subnav-grid a{
  padding-right:4px!important;
}

/* V1.2.43: use one shared left/right alignment grid across account popover primary rows. */
.sidebar-account-popover{
  --account-popover-row-x:8px;
}
.sidebar-account-popover .ui-footer-control-stacked,
.sidebar-account-menu-link{
  width:100%!important;
  box-sizing:border-box!important;
  padding-left:var(--account-popover-row-x)!important;
  padding-right:var(--account-popover-row-x)!important;
}
.sidebar-account-popover .ui-footer-control-stacked{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:10px!important;
}
.sidebar-account-popover .ui-footer-control-stacked>span{
  flex:0 0 auto!important;
  min-width:0!important;
}
.sidebar-account-popover .ui-scale-stepper,
.sidebar-account-popover .ui-theme-control select{
  margin-left:auto!important;
}
.sidebar-account-popover .ui-theme-control select{
  width:104px!important;
  flex:0 0 104px!important;
}
.sidebar-account-menu-link{
  justify-content:space-between!important;
}
.sidebar-account-menu-link>strong{
  flex:1 1 auto!important;
}
.sidebar-account-menu-arrow{
  flex:0 0 auto!important;
  margin-left:auto!important;
  text-align:right!important;
}
/* V1.2.44: read-only extreme-deviation opportunity table. */
.extreme-deviation-table{min-width:1320px;width:max-content!important;min-width:max(100%,1320px)!important;font-size:calc(12.5px * var(--ui-font-scale))}
.extreme-deviation-table th,.extreme-deviation-table td{padding:8px 9px;vertical-align:middle;white-space:nowrap}
.extreme-deviation-table th:nth-child(1){width:150px}.extreme-deviation-table th:nth-child(2){width:105px}.extreme-deviation-table th:nth-child(3){width:125px}.extreme-deviation-table th:nth-child(4){width:145px}.extreme-deviation-table th:nth-child(5){width:125px}.extreme-deviation-table th:nth-child(6){width:120px}.extreme-deviation-table th:nth-child(7){width:85px}.extreme-deviation-table th:nth-child(8){width:100px}.extreme-deviation-table th:nth-child(9){width:105px}.extreme-deviation-table th:nth-child(10){width:230px}
.extreme-deviation-table td small{display:block;margin-top:2px;font-size:calc(11px * var(--ui-font-scale));color:var(--muted)}

/* V1.2.45: reusable SVIP feature/access presentation. */
.nav-level-1.nav-svip-feature{display:flex;align-items:center;justify-content:space-between;gap:8px}
.nav-svip-badge,.user-svip-badge{display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(229,184,79,.68);border-radius:999px;background:rgba(229,184,79,.13);color:#e8c66f;font-size:calc(9px * var(--ui-font-scale));font-weight:800;line-height:1;letter-spacing:.35px;padding:3px 5px;white-space:nowrap}
:root[data-theme="light"] .nav-svip-badge,:root[data-theme="light"] .user-svip-badge{border-color:#c69a31;background:#fff5d7;color:#8b6510}
.sidebar.collapsed .nav-svip-badge{display:none}


/* V1.2.46: compact inline SVIP menu label; keep user-management badge unchanged. */
.nav-level-1.nav-svip-feature{justify-content:flex-start!important;gap:4px!important;white-space:nowrap!important}
.nav-level-1.nav-svip-feature>span:first-child{min-width:0;white-space:nowrap!important}
.nav-level-1.nav-svip-feature .nav-svip-badge{display:inline!important;flex:0 0 auto!important;border:0!important;border-radius:0!important;background:transparent!important;color:#e8c66f!important;font-size:calc(9px * var(--ui-font-scale))!important;font-style:italic!important;font-weight:700!important;line-height:1!important;letter-spacing:.15px!important;padding:0!important;margin:0!important;white-space:nowrap!important}
:root[data-theme="light"] .nav-level-1.nav-svip-feature .nav-svip-badge{border:0!important;background:transparent!important;color:#9a7116!important}
.sidebar.collapsed .nav-level-1.nav-svip-feature .nav-svip-badge{display:none!important}
/* V1.2.49: keep an unset EXIT placeholder inside the existing ADD/EXIT row. */
.pt-add-info .pt-stage-placeholder,
.pt-add-info .pt-stage-placeholder span{color:var(--muted)!important;}


/* V1.2.50 reconciliation truth semantics */
.truth-ok{color:#36d7a7!important}.truth-warn{color:#f1c75b!important}.truth-bad{color:#ff6677!important}
:root[data-theme="light"] .truth-ok{color:var(--semantic-green)!important}:root[data-theme="light"] .truth-warn{color:#9a6b00!important}:root[data-theme="light"] .truth-bad{color:var(--semantic-red)!important}

/* V1.2.55: tenant-owned read-only minimum offset filter. */
.extreme-min-offset-form{display:flex;align-items:center;gap:7px;margin-top:3px}
.extreme-min-offset-form label{display:flex;align-items:center;gap:4px}
.extreme-min-offset-form input{width:72px;padding:5px 7px;border:1px solid var(--border);border-radius:7px;background:var(--surface-2);color:var(--text);font:inherit;font-weight:700}
.extreme-min-offset-form .secondary-btn{padding:5px 9px;min-height:0}

/* V1.2.59: browser-neutral account popover placement.
   Position is measured from the real trigger rectangle in account_popover.js.
   This avoids 100dvh/safe-area/containing-block differences between desktop browsers. */
@media (min-width:769px){
  .sidebar-account-popover{
    position:fixed!important;
    right:auto!important;
    width:min(270px,calc(100vw - 24px))!important;
    max-width:calc(100vw - 24px)!important;
    overflow-x:hidden!important;
    overflow-y:auto!important;
    overscroll-behavior:contain;
  }
}

/* V1.2.60: account popover portal.
   The menu is moved under <body> by account_popover.js, so sidebar overflow,
   transforms and containing blocks cannot alter its viewport positioning. */
.sidebar-account-popover.sidebar-account-popover-portal{
  position:fixed!important;
  z-index:10000!important;
  box-sizing:border-box!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}

/* V1.2.61: extreme-opportunity page is centered on three decision metrics. */
.extreme-diagnostic-summary.three-cols{grid-template-columns:repeat(3,minmax(0,1fr))}
.extreme-deviation-table{min-width:900px!important;width:100%!important;font-size:calc(12.5px * var(--ui-font-scale))}
.extreme-deviation-table th:nth-child(1){width:180px!important}
.extreme-deviation-table th:nth-child(2){width:250px!important}
.extreme-deviation-table th:nth-child(3){width:160px!important}
.extreme-deviation-table th:nth-child(4){width:190px!important}
.extreme-deviation-table th:nth-child(5){width:230px!important}
@media(max-width:900px){.extreme-diagnostic-summary.three-cols{grid-template-columns:1fr}}


/* V1.2.62: keep fair-ratio diagnostics on the filter row; remove the old top cards. */
.extreme-fair-ratio-summary{margin-left:auto;display:flex;align-items:baseline;gap:8px;min-width:0;white-space:nowrap}
.extreme-fair-ratio-summary span{color:var(--muted);font-size:calc(11px * var(--ui-font-scale))}
.extreme-fair-ratio-summary strong{color:var(--text);font-size:calc(15px * var(--ui-font-scale));font-variant-numeric:tabular-nums}
.extreme-fair-ratio-summary small{color:var(--muted);font-size:calc(10px * var(--ui-font-scale))}
@media(max-width:1100px){.extreme-fair-ratio-summary{margin-left:0;flex-basis:100%;white-space:normal}}

/* V1.2.66 extreme opportunity recommendation filter */
.extreme-recommended-filter{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:calc(13px * var(--ui-font-scale));color:var(--text-secondary);cursor:pointer}.extreme-recommended-filter input{margin:0}


/* V1.2.69 Global current-position asset exposure marker. */
.held-symbol{color:#f2c94c!important}
:root[data-theme="light"] .held-symbol{color:#a86f00!important}
.pair-separator{color:inherit}

/* V1.2.74 — light-theme semantic text contrast unification.
   One source of truth for held exposure amber and positive/deviation green. */
:root[data-theme="light"]{
  --held-symbol-color:#a16207;
  --deviation-positive:#166534;
  --positive-value-color:#166534;
}
:root[data-theme="light"] .held-symbol{
  color:var(--held-symbol-color)!important;
}
:root[data-theme="light"] .dev-positive,
:root[data-theme="light"] .research-deviation.dev-positive,
:root[data-theme="light"] [class*="deviation"].dev-positive,
:root[data-theme="light"] .positive,
:root[data-theme="light"] .pos,
:root[data-theme="light"] .opened-section .pt-total-pnl strong.dev-positive,
:root[data-theme="light"] .opened-section .pt-total-pnl small.dev-positive,
:root[data-theme="light"] .opened-section [data-live-open-anchor-dev].dev-positive,
:root[data-theme="light"] .pending-section [data-live-pending-deviation].dev-positive,
:root[data-theme="light"] .opened-section .pair-table-row .research-deviation.dev-positive,
:root[data-theme="light"] .pending-section .pair-table-row .research-deviation.dev-positive,
:root[data-theme="light"] .opened-section .pair-table-row .pos,
:root[data-theme="light"] .pending-section .pair-table-row .pos,
:root[data-theme="light"] .pair-history-table td.pos,
:root[data-theme="light"] .pair-history-table td.pos strong{
  color:var(--deviation-positive)!important;
}



/* V1.2.74 Strategy Square — simplified SVIP user-position view. */
.strategy-square-filter-grid{grid-template-columns:1.2fr 1.2fr .8fr auto}
.strategy-square-table{min-width:1080px}
.strategy-square-table th,.strategy-square-table td{white-space:nowrap}
.page-shell .strategy-square-table-scroll{
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  -webkit-overflow-scrolling:touch;
}
.page-shell .strategy-square-table-scroll .strategy-square-table{
  min-width:1080px!important;
  width:100%!important;
}
:root[data-theme="light"] .strategy-square-table .user-position-state.open{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:26px!important;
  padding:4px 10px!important;
  border-radius:999px!important;
  border:1px solid #99d4ba!important;
  background:#e8f7ef!important;
  color:var(--semantic-green)!important;
  font-size:calc(11px * var(--ui-font-scale))!important;
  line-height:1!important;
  font-weight:800!important;
  box-shadow:none!important;
  white-space:nowrap!important;
}
html.ui-font-scale-expanded .page-shell .strategy-square-table{
  width:100%!important;
  min-width:1080px!important;
  table-layout:auto!important;
}
@media(max-width:1050px){
  .strategy-square-filter-grid{grid-template-columns:1fr 1fr}
  .strategy-square-filter-grid .user-position-filter-actions{grid-column:1/-1}
}

/* V1.2.74 — global light-theme semantic text palette.
   Screenshot-matched representative colors:
   red #F4445C, green #2CBC84, yellow #F0B808.
   Text/icon color only; existing surfaces, borders and backgrounds are unchanged. */
:root[data-theme="light"]{
  --semantic-red:#f4445c;
  --semantic-green:#2cbc84;
  --semantic-yellow:#f0b808;
  --deviation-negative:var(--semantic-red);
  --deviation-positive:var(--semantic-green);
  --positive-value-color:var(--semantic-green);
  --held-symbol-color:var(--semantic-yellow);
  --lifecycle-amber-text:var(--semantic-yellow);
  --lifecycle-green-text:var(--semantic-green);
  --done-green:var(--semantic-green);
  --favorite-red:var(--semantic-red);
}

/* Red semantic copy / values. */
:root[data-theme="light"] .negative,
:root[data-theme="light"] .neg,
:root[data-theme="light"] .dev-negative,
:root[data-theme="light"] .research-deviation.dev-negative,
:root[data-theme="light"] [class*="deviation"].dev-negative,
:root[data-theme="light"] .sample-low,
:root[data-theme="light"] .path-expanding,
:root[data-theme="light"] .regime-unstable,
:root[data-theme="light"] .control-error,
:root[data-theme="light"] .state-tag.bad-tag,
:root[data-theme="light"] .pair-status.abnormal,
:root[data-theme="light"] .lifecycle-action.abnormal,
:root[data-theme="light"] .startup-review-badge.bad,
:root[data-theme="light"] .startup-recheck-status.bad,
:root[data-theme="light"] .log-status-pill.error{
  color:var(--semantic-red)!important;
}

/* Green semantic copy / values. */
:root[data-theme="light"] .positive,
:root[data-theme="light"] .pos,
:root[data-theme="light"] .dev-positive,
:root[data-theme="light"] .research-deviation.dev-positive,
:root[data-theme="light"] [class*="deviation"].dev-positive,
:root[data-theme="light"] .sample-high,
:root[data-theme="light"] .path-reversing,
:root[data-theme="light"] .regime-normal,
:root[data-theme="light"] .control-ok,
:root[data-theme="light"] .pair-status.open,
:root[data-theme="light"] .lifecycle-action.open,
:root[data-theme="light"] .log-status-pill.success,
:root[data-theme="light"] .user-position-state.open,
:root[data-theme="light"] .pt-stage-done,
:root[data-theme="light"] .pt-stage-done span,
:root[data-theme="light"] .pt-stage-done b,
:root[data-theme="light"] .pt-stage-done small,
:root[data-theme="light"] .pt-add-executed,
:root[data-theme="light"] .pt-add-executed span,
:root[data-theme="light"] .pt-add-executed b,
:root[data-theme="light"] .pt-add-executed small{
  color:var(--semantic-green)!important;
}

/* Yellow semantic copy / values. */
:root[data-theme="light"] .held-symbol,
:root[data-theme="light"] .pair-status.waiting,
:root[data-theme="light"] .pair-status.observing,
:root[data-theme="light"] .lifecycle-action.waiting,
:root[data-theme="light"] .lifecycle-action.observing,
:root[data-theme="light"] .log-status-pill.warn,
:root[data-theme="light"] .path-stalled,
:root[data-theme="light"] .regime-caution{
  color:var(--semantic-yellow)!important;
}

/* V1.2.77 — global light-theme red/green text source unification.
   Text/icon color only. Dark theme, backgrounds, borders and chart palettes are unchanged.
   All light-theme semantic red/green copy resolves to --semantic-red / --semantic-green. */
:root[data-theme="light"] .good-text,
:root[data-theme="light"] .analysis-confidence.high,
:root[data-theme="light"] .analysis-change,
:root[data-theme="light"] .leg-chip.long strong,
:root[data-theme="light"] .leg-chip.long .leg-symbol-link,
:root[data-theme="light"] .long-text,
:root[data-theme="light"] .criteria-item.pass strong,
:root[data-theme="light"] .criteria-item.pass .criteria-reason,
:root[data-theme="light"] .model-source-badge.official,
:root[data-theme="light"] .position-plan-badge.done,
:root[data-theme="light"] .pt-exit-executed small,
:root[data-theme="light"] .startup-review-badge.ok,
:root[data-theme="light"] .startup-recheck-status.ok,
:root[data-theme="light"] .pending-section [data-live-pending-distance].entry-reached,
:root[data-theme="light"] #researchTable .model-side-long,
:root[data-theme="light"] #favoriteTable .model-side-long,
:root[data-theme="light"] .truth-ok {
  color:var(--semantic-green)!important;
}

:root[data-theme="light"] .leg-chip.short strong,
:root[data-theme="light"] .leg-chip.short .leg-symbol-link,
:root[data-theme="light"] .short-text,
:root[data-theme="light"] .criteria-fail-summary,
:root[data-theme="light"] .criteria-item.fail strong,
:root[data-theme="light"] .criteria-item.fail .criteria-reason,
:root[data-theme="light"] .criteria-item small.criteria-reason,
:root[data-theme="light"] .position-trend-error,
:root[data-theme="light"] .execution-exception-error,
:root[data-theme="light"] .execution-exception-section h4,
:root[data-theme="light"] .global-expiry-error,
:root[data-theme="light"] .startup-review-badge.bad,
:root[data-theme="light"] .startup-recheck-status.bad,
:root[data-theme="light"] #researchTable .model-side-short,
:root[data-theme="light"] #favoriteTable .model-side-short,
:root[data-theme="light"] .truth-bad {
  color:var(--semantic-red)!important;
}

/* V1.2.78 — light exception readability, hover semantic values, management-table typography alignment.
   Light theme only for color fixes; dark-theme colors remain unchanged. */
:root[data-theme="light"] .execution-exception-section p{
  color:#6b303b!important;
}
:root[data-theme="light"] .execution-exception-section.action p{
  color:#66521e!important;
}

/* Hover popovers are cloned under <body>, so semantic value selectors must not depend on .opened-section. */
:root[data-theme="light"] .cell-hover-pop .pos,
:root[data-theme="light"] .cell-hover-pop .dev-positive,
:root[data-theme="light"] .cell-hover-portal .pos,
:root[data-theme="light"] .cell-hover-portal .dev-positive{
  color:var(--semantic-green)!important;
}
:root[data-theme="light"] .cell-hover-pop .neg,
:root[data-theme="light"] .cell-hover-pop .dev-negative,
:root[data-theme="light"] .cell-hover-portal .neg,
:root[data-theme="light"] .cell-hover-portal .dev-negative{
  color:var(--semantic-red)!important;
}
:root[data-theme="light"] .cell-hover-pop .light-semantic-neg,
:root[data-theme="light"] .cell-hover-portal .light-semantic-neg{
  color:var(--semantic-red)!important;
}

/* Opened / pending tables follow the same type scale as the recommendation table:
   header 11px, normal cell 13px, pair 14px, deviation 15px, secondary 10px. */
.opened-section .pair-table-head,
.pending-section .pair-table-head,
.opened-section .pair-table-head>span,
.pending-section .pair-table-head>span{
  font-size:calc(11px * var(--ui-font-scale))!important;
}
.opened-section .pair-table-row,
.pending-section .pair-table-row,
.opened-section .pair-table-row>div,
.pending-section .pair-table-row>div{
  font-size:calc(13px * var(--ui-font-scale))!important;
}
.opened-section .pair-table-name-btn,
.pending-section .pair-table-name-btn{
  font-size:calc(14px * var(--ui-font-scale))!important;
}
.opened-section .pair-table-row .research-deviation,
.pending-section .pair-table-row .research-deviation{
  font-size:calc(15px * var(--ui-font-scale))!important;
}
.opened-section .pair-table-row small,
.pending-section .pair-table-row small,
.opened-section .research-stat-sub,
.pending-section .research-stat-sub,
.opened-section .pt-total-pnl>small,
.opened-section .pt-status>small,
.pending-section .pt-status>small,
.opened-section .pt-pair>small,
.pending-section .pt-pair>small{
  font-size:calc(10px * var(--ui-font-scale))!important;
}

/* Match the recommendation table's existing compact-desktop scale as well. */
@media (min-width:901px) and (max-width:1500px){
  .opened-section .pair-table-head,
  .pending-section .pair-table-head,
  .opened-section .pair-table-head>span,
  .pending-section .pair-table-head>span{
    font-size:calc(10px * var(--ui-font-scale))!important;
  }
  .opened-section .pair-table-row,
  .pending-section .pair-table-row,
  .opened-section .pair-table-row>div,
  .pending-section .pair-table-row>div{
    font-size:calc(10.5px * var(--ui-font-scale))!important;
  }
  .opened-section .pair-table-name-btn,
  .pending-section .pair-table-name-btn{
    font-size:calc(11.5px * var(--ui-font-scale))!important;
  }
  .opened-section .pair-table-row .research-deviation,
  .pending-section .pair-table-row .research-deviation{
    font-size:calc(12px * var(--ui-font-scale))!important;
  }
  .opened-section .pair-table-row small,
  .pending-section .pair-table-row small,
  .opened-section .research-stat-sub,
  .pending-section .research-stat-sub,
  .opened-section .pt-total-pnl>small,
  .opened-section .pt-status>small,
  .pending-section .pt-status>small,
  .opened-section .pt-pair>small,
  .pending-section .pt-pair>small{
    font-size:calc(8.5px * var(--ui-font-scale))!important;
  }
}


/* V1.2.79: four-module beginner tutorial expansion. */
.tutorial-v1279 .tutorial-module-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 16px}
.tutorial-v1279 .tutorial-module-card{display:flex;min-width:0;flex-direction:column;gap:7px;padding:15px 16px;border:1px solid #293441;border-radius:12px;background:#151b23;color:#dfe7ef;text-decoration:none;transition:border-color .15s ease,background .15s ease,transform .15s ease}
.tutorial-v1279 .tutorial-module-card:hover{border-color:#465567;background:#1a222c;transform:translateY(-1px)}
.tutorial-v1279 .tutorial-module-card strong{font-size:calc(14px * var(--ui-font-scale));font-weight:400;color:#edf2f7}
.tutorial-v1279 .tutorial-module-card p{margin:0;color:#8f9cab;font-size:calc(10px * var(--ui-font-scale));line-height:1.6}
.tutorial-v1279 .tutorial-module-no{font-size:calc(10px * var(--ui-font-scale));color:#bda052;letter-spacing:.08em}
.tutorial-v1279 .tutorial-layout-wide{grid-template-columns:225px minmax(0,1fr)}
.tutorial-v1279 .tutorial-section-head{scroll-margin-top:12px;display:flex;align-items:center;gap:14px;margin-top:4px;padding:17px 20px;border:1px solid #33404e;border-radius:12px;background:#11171e}
.tutorial-v1279 .tutorial-section-head>span{display:flex;align-items:center;justify-content:center;flex:0 0 42px;width:42px;height:42px;border:1px solid #6e5b29;border-radius:10px;color:#d6ba64;font-size:calc(15px * var(--ui-font-scale))}
.tutorial-v1279 .tutorial-section-head h2{margin:0 0 4px;color:#edf2f7;font-size:calc(20px * var(--ui-font-scale));font-weight:400}
.tutorial-v1279 .tutorial-section-head p{margin:0;color:#8f9cab;line-height:1.55}
.tutorial-v1279 .tutorial-card strong,.tutorial-v1279 .tutorial-card th{font-weight:400}
.tutorial-v1279 .tutorial-card code{padding:1px 5px;border:1px solid #344150;border-radius:5px;background:#0f151b;color:#d8e1ea;font-family:inherit}
.tutorial-v1279 .tutorial-flow{display:flex;align-items:center;justify-content:center;gap:8px;margin:14px 0;padding:12px;border:1px solid #2d3946;border-radius:10px;background:#10161d;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tutorial-v1279 .tutorial-flow>div{flex:0 0 auto;padding:8px 10px;border:1px solid #344252;border-radius:8px;background:#171f28;color:#c8d2dc;white-space:nowrap}
.tutorial-v1279 .tutorial-flow>span{flex:0 0 auto;color:#718092}
.tutorial-v1279 .tutorial-flow-stack{flex-direction:column;overflow:visible}.tutorial-v1279 .tutorial-flow-stack>div{width:min(520px,100%);text-align:center;white-space:normal}.tutorial-v1279 .tutorial-flow-stack>span{line-height:1}
.tutorial-v1279 .tutorial-module-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 2px 8px}
.tutorial-v1279 .tutorial-module-nav a{color:#9eacba;text-decoration:none;font-size:calc(11px * var(--ui-font-scale))}.tutorial-v1279 .tutorial-module-nav a:hover{color:#edf2f7}
.tutorial-v1279 .tutorial-case-card{border-color:#39495a}.tutorial-v1279 .tutorial-case-risk{border-color:#59404a}
.tutorial-v1279 .tutorial-case-title{display:flex;align-items:center;gap:10px;margin-bottom:8px}.tutorial-v1279 .tutorial-case-title>span{flex:0 0 auto;padding:5px 8px;border:1px solid #695b35;border-radius:6px;background:#211d14;color:#d4b95f;font-size:calc(9px * var(--ui-font-scale))}.tutorial-v1279 .tutorial-case-title h2{margin:0}
.tutorial-v1279 .tutorial-case-stats{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.tutorial-v1279 .tutorial-case-stats span{padding:7px 9px;border:1px solid #2f3b48;border-radius:7px;background:#11171e;color:#a9b5c1;font-size:calc(10px * var(--ui-font-scale))}
.tutorial-v1279 .tutorial-case-timeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0}.tutorial-v1279 .tutorial-case-timeline>div{display:flex;min-width:0;flex-direction:column;gap:4px;padding:11px;border:1px solid #3a4653;border-radius:9px;background:#11171e}.tutorial-v1279 .tutorial-case-timeline time{color:#728193;font-size:calc(9px * var(--ui-font-scale))}.tutorial-v1279 .tutorial-case-timeline strong{color:#e2c46a;font-size:calc(15px * var(--ui-font-scale));font-weight:400}.tutorial-v1279 .tutorial-case-timeline span{color:#9daab7;font-size:calc(10px * var(--ui-font-scale));line-height:1.5}.tutorial-v1279 .tutorial-case-timeline.is-recovery strong{color:#65cfac}.tutorial-v1279 .tutorial-case-timeline.is-risk strong{color:#ee7f91}
.tutorial-v1279 .tutorial-checklist-inline{grid-template-columns:repeat(3,minmax(0,1fr))}
.tutorial-v1279 .tutorial-ledger{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:12px 0}.tutorial-v1279 .tutorial-ledger>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid #2e3a47;border-radius:8px;background:#11171e;color:#9eabb7}.tutorial-v1279 .tutorial-ledger strong{color:#66cfad;font-weight:400}.tutorial-v1279 .tutorial-ledger .is-cost strong{color:#ef8b9a}.tutorial-v1279 .tutorial-ledger .is-total{grid-column:1/-1;border-color:#3a6055;background:#13231f}.tutorial-v1279 .tutorial-ledger .is-total strong{font-size:calc(14px * var(--ui-font-scale))}
.tutorial-v1279 .tutorial-glossary td:first-child{white-space:nowrap;color:#d7e0e9}
.tutorial-v1279 .tutorial-final-card{border-color:#4e573c}
:root[data-theme="light"] .tutorial-v1279 .tutorial-module-card,:root[data-theme="light"] .tutorial-v1279 .tutorial-section-head{background:#fff;border-color:#dbe2e8}
:root[data-theme="light"] .tutorial-v1279 .tutorial-module-card:hover{background:#f7f9fb;border-color:#cbd6df}
:root[data-theme="light"] .tutorial-v1279 .tutorial-module-card strong,:root[data-theme="light"] .tutorial-v1279 .tutorial-section-head h2{color:#25313d}
:root[data-theme="light"] .tutorial-v1279 .tutorial-module-card p,:root[data-theme="light"] .tutorial-v1279 .tutorial-section-head p{color:#647383}
:root[data-theme="light"] .tutorial-v1279 .tutorial-section-head>span{border-color:#d8c88f;color:#7c6426;background:#fffaf0}
:root[data-theme="light"] .tutorial-v1279 .tutorial-card code{background:#f3f6f8;border-color:#d8e0e6;color:#3e4d5b}
:root[data-theme="light"] .tutorial-v1279 .tutorial-flow{background:#f7f9fb;border-color:#dce3e9}:root[data-theme="light"] .tutorial-v1279 .tutorial-flow>div{background:#fff;border-color:#d7e0e7;color:#455565}
:root[data-theme="light"] .tutorial-v1279 .tutorial-case-title>span{background:#fff8e6;border-color:#e2cf96;color:#725819}
:root[data-theme="light"] .tutorial-v1279 .tutorial-case-stats span,:root[data-theme="light"] .tutorial-v1279 .tutorial-case-timeline>div,:root[data-theme="light"] .tutorial-v1279 .tutorial-ledger>div{background:#f7f9fb;border-color:#dce3e9;color:#637282}
:root[data-theme="light"] .tutorial-v1279 .tutorial-case-timeline strong{color:#84691d}:root[data-theme="light"] .tutorial-v1279 .tutorial-case-timeline.is-recovery strong{color:#16835f}:root[data-theme="light"] .tutorial-v1279 .tutorial-case-timeline.is-risk strong{color:#b83e55}
:root[data-theme="light"] .tutorial-v1279 .tutorial-ledger strong{color:#16835f}:root[data-theme="light"] .tutorial-v1279 .tutorial-ledger .is-cost strong{color:#b83e55}:root[data-theme="light"] .tutorial-v1279 .tutorial-ledger .is-total{background:#edf8f3;border-color:#b7decf}
:root[data-theme="light"] .tutorial-v1279 .tutorial-glossary td:first-child{color:#344250}
@media(max-width:1100px){.tutorial-v1279 .tutorial-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tutorial-v1279 .tutorial-case-timeline{grid-template-columns:repeat(2,minmax(0,1fr))}.tutorial-v1279 .tutorial-checklist-inline{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.tutorial-v1279 .tutorial-module-grid{grid-template-columns:1fr}.tutorial-v1279 .tutorial-layout-wide{grid-template-columns:1fr}.tutorial-v1279 .tutorial-section-head{padding:14px}.tutorial-v1279 .tutorial-section-head>span{width:36px;height:36px;flex-basis:36px}.tutorial-v1279 .tutorial-flow:not(.tutorial-flow-stack){justify-content:flex-start}.tutorial-v1279 .tutorial-case-timeline,.tutorial-v1279 .tutorial-ledger,.tutorial-v1279 .tutorial-checklist-inline{grid-template-columns:1fr}.tutorial-v1279 .tutorial-ledger .is-total{grid-column:auto}.tutorial-v1279 .tutorial-module-nav{align-items:stretch;flex-direction:column}.tutorial-v1279 .tutorial-module-nav a{text-align:center;padding:8px 10px;border:1px solid #2d3946;border-radius:8px}}

/* V1.2.81 — Binance equity-perpetual symbol badge. Display-only; no trading semantics. */
.stock-symbol-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:4px;
  padding:1px 4px;
  border:1px solid rgba(168,199,255,.42);
  border-radius:4px;
  color:#a8c7ff;
  background:rgba(168,199,255,.08);
  font-size:calc(9px * var(--ui-font-scale));
  line-height:1.25;
  font-weight:400!important;
  white-space:nowrap;
  vertical-align:1px;
}
:root[data-theme="light"] .stock-symbol-badge{
  color:#315f9b;
  border-color:rgba(49,95,155,.32);
  background:rgba(49,95,155,.07);
}

/* V1.2.83: Research admission gates + per-user local quality filters. */
.research-gate-panel{margin:0 0 10px;padding:10px 11px;border:1px solid #2d333d;border-radius:10px;background:#151a21;overflow:visible}
.research-gate-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.research-gate-head>div{display:flex;align-items:baseline;gap:9px;min-width:0}.research-gate-head strong{font-size:calc(12px * var(--ui-font-scale));font-weight:400;color:#e1e4e8}.research-gate-head span{font-size:calc(10px * var(--ui-font-scale));color:#7f8996}.research-gate-admin-note{white-space:nowrap}
.research-gate-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;overflow:visible}.research-gate-card{position:relative;min-width:0;padding:7px 8px;border:1px solid #303742;border-radius:8px;background:#11161d;outline:none}.research-gate-card>span{display:block;color:#7f8996;font-size:calc(10px * var(--ui-font-scale));line-height:1.2;margin-bottom:4px}.research-gate-value{display:flex;align-items:center;justify-content:space-between;gap:5px}.research-gate-value b{font-size:calc(12px * var(--ui-font-scale));font-weight:400;color:#dce2e9;white-space:nowrap;font-variant-numeric:tabular-nums}.research-gate-edit{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;flex:0 0 23px;padding:0;border:0;border-radius:5px;background:transparent;color:#8e99a7;cursor:pointer}.research-gate-edit:hover{background:#222a34;color:#dce4ee}.research-gate-edit svg{width:14px;height:14px}
.research-gate-help{display:none;position:absolute;left:0;top:calc(100% + 7px);z-index:80;width:300px;max-width:min(300px,calc(100vw - 28px));padding:10px 11px;border:1px solid #3b4552;border-radius:9px;background:#202731;box-shadow:0 12px 30px rgba(0,0,0,.34);color:#cbd3dc;font-size:calc(10.5px * var(--ui-font-scale));line-height:1.45;white-space:normal!important;overflow-wrap:anywhere;word-break:normal}.research-gate-help-right{left:auto;right:0}.research-gate-card:hover .research-gate-help,.research-gate-card:focus-within .research-gate-help,.research-gate-card:focus .research-gate-help{display:block}.research-gate-help b{display:block;font-size:calc(11px * var(--ui-font-scale));font-weight:400;color:#edf2f7;margin-bottom:4px}.research-gate-help p{margin:0 0 7px;color:#b8c1cc;white-space:normal!important;overflow-wrap:anywhere}.research-gate-help em{display:block;font-style:normal;color:#8f9cac;margin:0 0 3px}.research-gate-help span{display:block;color:#d5dce4;font-variant-numeric:tabular-nums;white-space:normal!important;overflow-wrap:anywhere}
.research-local-filter{margin:0 0 10px;padding:8px 10px;border:1px solid #2d333d;border-radius:9px;background:#12171e}.research-local-filter-title{display:flex;align-items:baseline;gap:8px;margin-bottom:7px}.research-local-filter-title strong{font-size:calc(11px * var(--ui-font-scale));font-weight:400;color:#dce2e9}.research-local-filter-title span{font-size:calc(10px * var(--ui-font-scale));color:#77818e}.research-local-filter-grid{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.research-local-filter-grid label{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 7px;border:1px solid #303742;border-radius:7px;background:#171d25;color:#aab4c0;font-size:calc(10.5px * var(--ui-font-scale));white-space:nowrap}.research-local-filter-grid input{width:64px;height:24px;padding:0 4px;border:0;border-bottom:1px solid #46505d;border-radius:0;background:transparent;color:#e0e6ed;text-align:center;font-size:calc(10.5px * var(--ui-font-scale));font-variant-numeric:tabular-nums;outline:none}.research-local-filter-grid .range-filter input{width:48px}.research-local-filter-grid label:focus-within{border-color:#4e7f75}.research-local-filter-grid i,.research-local-filter-grid em{font-style:normal;color:#77818e}.research-filter-reset{height:30px;padding:0 9px;border:1px solid #343c47;border-radius:7px;background:#171d25;color:#aeb8c3;font-size:calc(10.5px * var(--ui-font-scale));cursor:pointer;white-space:nowrap;flex:0 0 auto}.research-filter-reset:hover{border-color:#4b5664;color:#e2e8ee}.research-filter-count{margin-left:auto;color:#8f99a6;font-size:calc(10.5px * var(--ui-font-scale));font-variant-numeric:tabular-nums;white-space:nowrap}
.research-gate-dialog{max-width:480px}.research-gate-edit-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.research-gate-edit-fields label{display:flex;flex-direction:column;gap:5px}.research-gate-edit-fields label[hidden]{display:none}.research-gate-edit-fields span{color:#8f99a7;font-size:calc(10.5px * var(--ui-font-scale))}.research-gate-edit-fields input{height:36px;padding:0 9px;border:1px solid #38414c;border-radius:7px;background:#11161d;color:#e0e6ed;font-variant-numeric:tabular-nums}.research-gate-edit-note{margin:10px 0 0;color:#7f8996;font-size:calc(10.5px * var(--ui-font-scale));line-height:1.45}.research-gate-edit-status{min-height:20px;margin-top:6px;color:#aeb8c3;font-size:calc(10.5px * var(--ui-font-scale))}.research-gate-edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}
:root[data-theme="light"] .research-gate-panel,:root[data-theme="light"] .research-local-filter{background:#f8fafc!important;border-color:#d7dfe7!important}:root[data-theme="light"] .research-gate-card,:root[data-theme="light"] .research-local-filter-grid label,:root[data-theme="light"] .research-filter-reset{background:#fff!important;border-color:#d6dee6!important}:root[data-theme="light"] .research-gate-head strong,:root[data-theme="light"] .research-gate-value b,:root[data-theme="light"] .research-local-filter-title strong{color:#26343f!important}:root[data-theme="light"] .research-gate-head span,:root[data-theme="light"] .research-gate-card>span,:root[data-theme="light"] .research-local-filter-title span,:root[data-theme="light"] .research-local-filter-grid label,:root[data-theme="light"] .research-filter-count{color:#647482!important}:root[data-theme="light"] .research-local-filter-grid input{color:#24333e!important;border-bottom-color:#bac7d2!important}:root[data-theme="light"] .research-gate-help{background:#fff!important;border-color:#cbd6df!important;color:#32414d!important;box-shadow:0 12px 30px rgba(45,61,75,.16)!important}:root[data-theme="light"] .research-gate-help b,:root[data-theme="light"] .research-gate-help span{color:#26343f!important}:root[data-theme="light"] .research-gate-help p,:root[data-theme="light"] .research-gate-help em{color:#5d6e7d!important}:root[data-theme="light"] .research-gate-edit:hover{background:#edf2f6!important;color:#31424f!important}:root[data-theme="light"] .research-gate-edit-fields input{background:#fff!important;color:#26343f!important;border-color:#cbd6df!important}
@media(max-width:1280px){.research-gate-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.research-gate-help-right{left:0;right:auto}.research-filter-count{margin-left:0}}
@media(max-width:760px){.research-gate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.research-gate-head,.research-gate-head>div,.research-local-filter-title{align-items:flex-start;flex-direction:column;gap:3px}.research-gate-help{position:fixed;left:12px!important;right:12px!important;top:auto;bottom:14px;width:auto;max-height:55vh;overflow:auto}.research-local-filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.research-local-filter-grid label,.research-filter-reset{width:100%;box-sizing:border-box;justify-content:space-between}.research-filter-count{grid-column:1/-1}.research-gate-edit-fields{grid-template-columns:1fr}}

/* V1.2.84: Research gate promoted below model refresh; search + local filters share one compact row. */
.research-control-row{display:flex;align-items:flex-start;gap:8px;margin:0 0 10px;min-width:0}
.research-toolbar-inline{flex:0 0 auto;margin:0;flex-wrap:nowrap;gap:7px}
.research-toolbar-inline .research-search{min-width:160px;width:200px;flex:0 0 200px}
.research-toolbar-inline select{max-width:145px}
.research-local-filter-inline{flex:1 1 auto;min-width:0;margin:0;padding:6px 8px;display:flex;align-items:center;gap:7px;overflow:hidden}
.research-local-filter-inline .research-local-filter-title{flex:0 0 auto;margin:0;white-space:nowrap}
.research-local-filter-inline .research-local-filter-title span{display:none}
.research-local-filter-inline .research-local-filter-grid{flex:1 1 auto;min-width:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:1px;scrollbar-width:thin}
.research-local-filter-inline .research-filter-count{margin-left:0}
@media(max-width:1180px){.research-control-row{flex-direction:column}.research-toolbar-inline{width:100%}.research-toolbar-inline .research-search{min-width:0;flex:1 1 auto;width:auto}.research-local-filter-inline{width:100%;box-sizing:border-box}.research-local-filter-inline .research-local-filter-grid{width:100%}}
@media(max-width:760px){.research-toolbar-inline{flex-wrap:wrap}.research-toolbar-inline .research-search{width:100%;flex:1 1 100%}.research-toolbar-inline select{width:100%;max-width:none}.research-local-filter-inline{align-items:stretch;flex-direction:column}.research-local-filter-inline .research-local-filter-title span{display:block}.research-local-filter-inline .research-local-filter-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.research-local-filter-inline .research-filter-count{grid-column:1/-1}}

/* V1.2.85: keep all seven admission gates on one row and mirror them in every trend dialog. */
.research-gate-grid{grid-template-columns:repeat(7,minmax(0,1fr))!important}
.trend-admission-strip{margin:9px 0 8px;padding:7px 8px;border:1px solid #303844;border-radius:9px;background:#11171e}
.trend-admission-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px}
.trend-admission-head strong{font-size:calc(11px * var(--ui-font-scale));font-weight:400;color:#dce3ea}
.trend-admission-head span{font-size:calc(9.5px * var(--ui-font-scale));color:#7e8996;white-space:nowrap}
.trend-admission-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:0}
.trend-admission-item{min-width:0;padding:6px 7px;border:1px solid #2d3641;border-radius:7px;background:#151c24}
.trend-admission-item span{display:block;margin-bottom:3px;color:#7e8996;font-size:calc(9.5px * var(--ui-font-scale));line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trend-admission-item b{display:block;color:#d9e0e7;font-size:calc(10.5px * var(--ui-font-scale));font-weight:400;line-height:1.2;white-space:nowrap;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}
:root[data-theme="light"] .trend-admission-strip{background:#f8fafc!important;border-color:#d7dfe7!important}
:root[data-theme="light"] .trend-admission-item{background:#fff!important;border-color:#d6dee6!important}
:root[data-theme="light"] .trend-admission-head strong,:root[data-theme="light"] .trend-admission-item b{color:#26343f!important}
:root[data-theme="light"] .trend-admission-head span,:root[data-theme="light"] .trend-admission-item span{color:#647482!important}
@media(max-width:760px){
  .research-gate-panel{overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}
  .research-gate-grid{min-width:900px;grid-template-columns:repeat(7,minmax(118px,1fr))!important}
  .trend-admission-strip{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .trend-admission-head{position:sticky;left:0;align-items:flex-start;flex-direction:column;gap:2px;width:max-content}
  .trend-admission-grid{min-width:850px;grid-template-columns:repeat(7,minmax(112px,1fr))}
}

/* V1.2.86: single-line Research admission toolbar + current-pair trend metrics. */
.research-gate-panel{display:flex;align-items:center;gap:8px;padding:6px 8px;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch}
.research-gate-head{flex:0 0 auto;display:flex;align-items:center;justify-content:flex-start;gap:7px;margin:0;white-space:nowrap}
.research-gate-head>div{display:flex;align-items:center;gap:6px;white-space:nowrap}
.research-gate-head strong{white-space:nowrap}
.research-gate-admin-note{font-size:calc(9.5px * var(--ui-font-scale));white-space:nowrap}
.research-gate-grid{flex:1 0 auto;display:grid;grid-template-columns:repeat(7,minmax(118px,1fr))!important;gap:6px;min-width:910px;overflow:visible}
.research-gate-card{display:flex;align-items:center;gap:5px;min-width:0;padding:5px 7px;min-height:30px;box-sizing:border-box}
.research-gate-card>span{display:inline;margin:0;flex:0 0 auto;white-space:nowrap}
.research-gate-value{flex:1 1 auto;min-width:0;justify-content:flex-end;gap:3px}
.research-gate-value b{overflow:hidden;text-overflow:ellipsis}
.research-gate-edit{width:20px;height:20px;flex-basis:20px}
.research-gate-edit svg{width:12px;height:12px}
.research-local-filter-inline{border:0!important;border-radius:0!important;background:transparent!important;padding:0 0 0 4px}
:root[data-theme="light"] .research-local-filter-inline{border:0!important;background:transparent!important}
@media(max-width:760px){
  .research-gate-panel{display:flex;align-items:center;gap:8px}
  .research-gate-head,.research-gate-head>div{align-items:center;flex-direction:row;gap:5px;width:max-content}
  .research-gate-grid{min-width:910px;grid-template-columns:repeat(7,minmax(118px,1fr))!important}
}

.trend-research-metrics{margin:9px 0 8px;padding:7px 8px;border:1px solid #303844;border-radius:9px;background:#11171e;overflow:visible}
.trend-research-metrics-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px}
.trend-research-metrics-head strong{font-size:calc(11px * var(--ui-font-scale));font-weight:400;color:#dce3ea}
.trend-research-metrics-head span{font-size:calc(9.5px * var(--ui-font-scale));color:#7e8996;white-space:nowrap}
.trend-research-metrics-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:0;overflow:visible}
.trend-research-metric{position:relative;min-width:0;padding:6px 7px;border:1px solid #2d3641;border-radius:7px;background:#151c24;outline:none}
.trend-research-metric>span{display:block;margin-bottom:3px;color:#7e8996;font-size:calc(9.5px * var(--ui-font-scale));line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trend-research-metric>b{display:block;color:#d9e0e7;font-size:calc(10.5px * var(--ui-font-scale));font-weight:400;line-height:1.2;white-space:nowrap;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}
.trend-research-metric.is-pass{border-color:rgba(54,199,161,.48)}
.trend-research-metric.is-fail{border-color:rgba(255,107,125,.55)}
.trend-research-metric.is-loading,.trend-research-metric.is-unknown{opacity:.78}
.trend-research-metric-help{display:none;position:absolute;left:0;top:calc(100% + 7px);z-index:95;width:300px;padding:10px 11px;border:1px solid #3b4552;border-radius:9px;background:#202731;box-shadow:0 12px 30px rgba(0,0,0,.34);color:#cbd3dc;font-size:calc(10.5px * var(--ui-font-scale));line-height:1.45}
.trend-research-metric:nth-child(n+5) .trend-research-metric-help{left:auto;right:0}
.trend-research-metric:hover .trend-research-metric-help,.trend-research-metric:focus-within .trend-research-metric-help,.trend-research-metric:focus .trend-research-metric-help{display:block}
.trend-research-metric-help b{display:block;font-size:calc(11px * var(--ui-font-scale));font-weight:400;color:#edf2f7;margin-bottom:4px}
.trend-research-metric-help p{margin:0 0 7px;color:#b8c1cc}
.trend-research-metric-help em{display:block;font-style:normal;color:#8f9cac;margin:0 0 3px}
.trend-research-metric-help span{display:block;color:#d5dce4;font-variant-numeric:tabular-nums}
:root[data-theme="light"] .trend-research-metrics{background:#f8fafc!important;border-color:#d7dfe7!important}
:root[data-theme="light"] .trend-research-metric{background:#fff!important;border-color:#d6dee6!important}
:root[data-theme="light"] .trend-research-metric.is-pass{border-color:#9ccfbc!important}
:root[data-theme="light"] .trend-research-metric.is-fail{border-color:#e3a9b2!important}
:root[data-theme="light"] .trend-research-metrics-head strong,:root[data-theme="light"] .trend-research-metric>b{color:#26343f!important}
:root[data-theme="light"] .trend-research-metrics-head span,:root[data-theme="light"] .trend-research-metric>span{color:#647482!important}
:root[data-theme="light"] .trend-research-metric-help{background:#fff!important;border-color:#cbd6df!important;color:#32414d!important;box-shadow:0 12px 30px rgba(45,61,75,.16)!important}
:root[data-theme="light"] .trend-research-metric-help b,:root[data-theme="light"] .trend-research-metric-help span{color:#26343f!important}
:root[data-theme="light"] .trend-research-metric-help p,:root[data-theme="light"] .trend-research-metric-help em{color:#5d6e7d!important}
@media(max-width:760px){
  .trend-research-metrics{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .trend-research-metrics-head{position:sticky;left:0;align-items:flex-start;flex-direction:column;gap:2px;width:max-content}
  .trend-research-metrics-grid{min-width:850px;grid-template-columns:repeat(7,minmax(112px,1fr))}
  .trend-research-metric-help{position:fixed;left:12px!important;right:12px!important;top:auto;bottom:14px;width:auto;max-height:55vh;overflow:auto}
}


/* V1.2.87: keep Research admission beginner-help popovers visible outside the compact one-row strip. */
@media(min-width:761px){
  .research-gate-panel{position:relative;z-index:30;overflow:visible!important}
  .research-gate-grid{overflow:visible!important}
  .research-gate-card{overflow:visible}
  .research-gate-help{z-index:120}
}


/* V1.2.88: admin manual full-scan trigger stays in the compact Research admission row. */
.research-manual-scan-btn{flex:0 0 auto;min-height:24px;height:24px;padding:2px 8px;font-size:calc(9.5px * var(--ui-font-scale));line-height:1;white-space:nowrap}
.research-manual-scan-btn:disabled{opacity:.72;cursor:default}
.research-manual-scan-btn.is-running{border-color:rgba(54,199,161,.55);color:#58d6b5}


/* V1.2.89: Pair query criteria are 8 actual checks; keep all 8 on one row. */
.custom-pair-scorecard .criteria-grid{
  display:grid;
  grid-template-columns:repeat(8,minmax(140px,1fr));
  gap:10px;
  overflow-x:auto;
  overflow-y:visible;
  scrollbar-width:thin;
}
.custom-pair-scorecard .criteria-item{min-width:140px}
@media(max-width:1350px){
  .custom-pair-scorecard .criteria-grid{grid-template-columns:repeat(8,minmax(140px,1fr))}
}
@media(max-width:1000px){
  .custom-pair-scorecard .criteria-grid{grid-template-columns:repeat(8,minmax(140px,1fr))}
}
@media(max-width:680px){
  .custom-pair-scorecard .criteria-grid{grid-template-columns:repeat(8,minmax(140px,1fr))}
}


/* V1.3.6: unified, content-driven Recommendation responsive layout.
   The page keeps one semantic table DOM at every viewport. Wide containers receive
   the spare width; narrow containers scroll locally after the business columns reach
   their readable minimums. No zoom-specific column map is required. */
.research-summary.four-cols:not(.opportunity-summary){
  grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));
}
.research-topbar{min-width:0;flex-wrap:wrap}
.research-topbar>div:first-child{flex:1 1 22rem;min-width:min(100%,18rem)}
.research-topbar .version{flex:0 0 auto}
.research-panel{min-width:0!important}
.research-control-row{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  min-width:0;
  margin:0 0 10px;
}
.research-toolbar-inline{
  display:flex;
  align-items:center;
  flex:1 1 24rem;
  min-width:min(100%,24rem);
  margin:0;
  gap:7px;
  flex-wrap:wrap;
}
.research-toolbar-inline .research-search{
  flex:1 1 16rem;
  width:auto;
  min-width:min(100%,16rem);
}
.research-toolbar-inline select{
  flex:0 0 auto;
  width:auto;
  max-width:100%;
  white-space:nowrap;
}
.research-local-filter-inline{
  flex:999 1 48rem;
  display:block;
  min-width:0;
  width:auto;
  margin:0;
  padding:0 0 1px;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.research-local-filter-inline .research-local-filter-grid{
  display:flex!important;
  align-items:center;
  flex-wrap:nowrap!important;
  gap:4px;
  width:max-content!important;
  min-width:100%;
  overflow:visible!important;
}
.research-local-filter-grid label{
  flex:0 0 auto;
  width:auto!important;
  justify-content:flex-start!important;
  gap:3px;
  padding:0 5px;
}
.research-local-filter-grid input{width:48px;padding:0 2px}
.research-local-filter-grid .range-filter input{width:38px}
#filterVolume{width:54px}
#filterAdf{width:50px}
#filterDrift{width:44px}
.research-filter-reset{
  flex:0 0 auto;
  width:auto!important;
  padding:0 7px;
  white-space:nowrap;
}
.research-local-filter-inline .research-filter-count{
  flex:0 0 auto;
  grid-column:auto;
  margin-left:auto;
  padding-left:6px;
  white-space:nowrap;
}

/* Admission has its own horizontal viewport. Help is promoted above that viewport
   so it cannot be clipped by the scrolling strip at any device size or UI scale. */
.research-gate-panel.research-gate-compact{
  display:flex;
  align-items:center;
  gap:10px;
  min-width:0;
  padding:6px 8px;
  overflow:visible!important;
}
.research-gate-compact .research-gate-head{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:6px;
  margin:0;
  white-space:nowrap;
}
.research-gate-compact .research-gate-head strong{
  font-size:calc(10.5px * var(--ui-font-scale));
  font-weight:400;
}
.research-gate-compact .research-gate-head span{
  font-size:calc(9px * var(--ui-font-scale));
}
.research-gate-scroll{
  flex:1 1 auto;
  min-width:0;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.research-gate-scroll:focus-visible{outline:1px solid #617083;outline-offset:2px}
.research-gate-compact-row{
  display:flex;
  align-items:center;
  gap:5px;
  width:max-content;
  min-width:100%;
  white-space:nowrap;
}
.research-gate-compact .research-gate-card{
  position:relative;
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:3px;
  min-height:26px;
  padding:3px 6px;
  border-radius:6px;
}
.research-gate-compact .research-gate-card>span{
  display:inline;
  margin:0;
  font-size:calc(9.5px * var(--ui-font-scale));
  line-height:1;
}
.research-gate-compact .research-gate-card>b{
  display:inline;
  color:#dce3ea;
  font-size:calc(10px * var(--ui-font-scale));
  font-weight:400;
  line-height:1;
  font-variant-numeric:tabular-nums;
}
.research-gate-compact .research-gate-help{
  position:fixed;
  left:50%!important;
  right:auto!important;
  top:auto;
  bottom:18px;
  width:min(360px,calc(100vw - 28px));
  max-width:calc(100vw - 28px);
  max-height:55vh;
  overflow:auto;
  transform:translateX(-50%);
  z-index:1200;
}
.research-gate-edit-all{
  flex:0 0 24px;
  width:24px;
  height:24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:1px solid #39424e;
  border-radius:6px;
  background:#171d25;
  color:#96a2af;
  cursor:pointer;
}
.research-gate-edit-all:hover{background:#222a34;color:#e0e6ed}
.research-gate-edit-all svg{width:13px;height:13px}
.research-gate-edit-fields-all{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));
  gap:9px;
}
.research-manual-scan-in-card{align-self:flex-start;margin-top:6px}
.research-manual-scan-btn{white-space:nowrap}
:root[data-theme="light"] .research-local-filter-inline{border:0!important;background:transparent!important}
:root[data-theme="light"] .research-gate-compact .research-gate-card>b{color:#26343f!important}
:root[data-theme="light"] .research-gate-edit-all{background:#fff;border-color:#d6dee6;color:#647482}
:root[data-theme="light"] .research-gate-edit-all:hover{background:#edf2f6;color:#31424f}

/* Native-table contract. Column classes express meaning; no nth-child index map.
   em units follow the UI font scale, so 75%-200% naturally changes the content
   minimum while the outer page width remains stable. */
.page-shell .research-panel .research-table-wrap{
  width:100%;
  max-width:100%!important;
  min-width:0;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:auto!important;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
  scrollbar-gutter:stable;
  border:1px solid #2b313a!important;
  border-radius:9px!important;
  background:transparent!important;
}
.page-shell #researchTable.research-table-market{
  display:table!important;
  width:100%!important;
  min-width:110em!important;
  max-width:none!important;
  table-layout:fixed!important;
  border-collapse:separate;
  border-spacing:0;
  margin:0;
  font-size:calc(11px * var(--ui-font-scale));
}
#researchTable colgroup{display:table-column-group!important}
#researchTable thead{display:table-header-group!important}
#researchTable tbody{display:table-row-group!important}
#researchTable tr{display:table-row!important}
#researchTable tr[hidden]{display:none!important}
#researchTable th,#researchTable td{
  box-sizing:border-box!important;
  min-width:0!important;
  padding-left:calc(7px * var(--ui-table-space-scale))!important;
  padding-right:calc(7px * var(--ui-table-space-scale))!important;
  overflow:hidden;
  white-space:nowrap;
}
#researchTable tbody tr:hover td{background:#1a1f27}
#researchTable .rcol-pair{width:14em}
#researchTable .rcol-score{width:6em}
#researchTable .rcol-opportunity{width:6.5em}
#researchTable .rcol-quality{width:18em}
#researchTable .rcol-ratio-now{width:9em}
#researchTable .rcol-ratio-range{width:12em}
#researchTable .rcol-model-now{width:9.5em}
#researchTable .rcol-model-range{width:12em}
#researchTable .rcol-direction{width:13em}
#researchTable .rcol-actions{width:15em}
#researchTable .col-actions{text-align:right!important}
#researchTable .col-empty{text-align:left!important}
#researchTable .research-range,
#researchTable .research-model-market-line,
#researchTable .research-pair-title,
#researchTable .research-pair-sub{white-space:nowrap!important}
#researchTable .research-quality-cell{
  min-width:18em!important;
  padding-left:calc(5px * var(--ui-table-space-scale))!important;
  padding-right:calc(5px * var(--ui-table-space-scale))!important;
}
#researchTable .research-quality-grid{
  display:grid;
  grid-template-columns:repeat(3,max-content);
  align-items:center;
  justify-content:start;
  column-gap:.42em;
  row-gap:.34em;
  width:max-content;
  min-width:max-content;
  max-width:none;
  font-variant-numeric:tabular-nums;
}
#researchTable .research-quality-item{
  display:inline-flex;
  align-items:baseline;
  gap:.18em;
  min-width:max-content;
  white-space:nowrap;
  overflow:visible;
}
#researchTable .research-quality-item i{
  flex:0 0 auto;
  color:var(--muted);
  font-style:normal;
  font-size:.78em;
  line-height:1.2;
}
#researchTable .research-quality-item b{
  flex:0 0 auto;
  color:#d7dde5;
  font-size:.96em;
  line-height:1.2;
  font-weight:500;
  white-space:nowrap;
}
#researchTable .research-quality-item b.rq-pass{color:#d7dde5}
#researchTable .research-quality-item b.rq-fail{color:#ef776f}
#researchTable .research-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end!important;
  gap:var(--table-action-gap)!important;
  width:max-content;
  min-width:max-content;
  margin-left:auto;
  flex-wrap:nowrap!important;
  overflow:visible!important;
  white-space:nowrap!important;
}
#researchTable .research-actions>*{flex:0 0 auto}
#researchTable .research-actions button,
#researchTable .research-actions a{white-space:nowrap}
:root[data-theme="light"] #researchTable .research-quality-item b{color:#354250}
:root[data-theme="light"] #researchTable .research-quality-item b.rq-pass{color:#354250!important}
:root[data-theme="light"] #researchTable .research-quality-item b.rq-fail{color:var(--semantic-red)!important}
:root[data-theme="light"] .page-shell .research-panel .research-table-wrap{
  border-color:#d9e0e7!important;
  background:#fff!important;
}
#opportunityTable .opportunity-score{font-size:calc(12px * var(--ui-font-scale));white-space:nowrap}

/* V1.3.7: Safari-safe table paint and deterministic control grouping.
   The large native table has one scroll axis. Vertical flow belongs to the page,
   while the recommendation table remains the only horizontal viewport. */
.page-shell .research-panel .research-table-wrap{
  height:auto!important;
  max-height:none!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  contain:none!important;
}
.research-control-row{
  flex-wrap:nowrap;
  align-items:center;
}
.research-toolbar-inline{
  flex:0 0 auto;
  min-width:0;
  width:auto;
  flex-wrap:nowrap;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior-x:contain;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
}
.research-toolbar-inline .research-search{
  flex:0 1 clamp(18rem,24vw,28rem);
  width:clamp(18rem,24vw,28rem);
  min-width:18rem;
}
.research-toolbar-inline select{
  flex:0 0 10rem;
  width:10rem;
}
.research-local-filter-inline{
  flex:1 1 auto;
}
@media(max-width:1100px){
  .research-control-row{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    align-items:stretch;
  }
  .research-toolbar-inline{
    width:100%;
  }
  .research-toolbar-inline .research-search{
    flex:1 0 18rem;
    width:auto;
  }
  .research-local-filter-inline{
    width:100%;
  }
}
