:root {
  color-scheme: light;
  --canvas: #f3f6fb;
  --surface: rgba(255, 255, 255, .82);
  --solid: #fff;
  --muted: #f4f7fb;
  --line: rgba(71, 92, 122, .105);
  --text: #16243a;
  --secondary: #68788f;
  --tertiary: #9aa7b8;
  --blue: #5b8def;
  --blue-soft: #edf4ff;
  --mint: #22b889;
  --mint-soft: #eaf9f4;
  --coral: #ef6c7a;
  --coral-soft: #fff0f2;
  --amber: #dc9a35;
  --amber-soft: #fff7e9;
  --shadow: 0 24px 70px rgba(76, 107, 151, .10), 0 3px 12px rgba(66, 86, 116, .045);
  --radius-xl: 28px;
  --radius-lg: 22px;
  --radius-md: 18px;
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Microsoft YaHei", sans-serif;
}

* { box-sizing: border-box; }
html { min-width: 320px; scroll-behavior: smooth; font-size: 16px; }
body { min-height: 100vh; margin: 0; color: var(--text); background: var(--canvas); -webkit-font-smoothing: antialiased; }
button, input, select { color: inherit; font: inherit; }
button { -webkit-tap-highlight-color: transparent; }
[hidden] { display: none !important; }
svg { fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; }

.aurora { position: fixed; z-index: -1; width: 540px; height: 540px; border-radius: 50%; filter: blur(100px); pointer-events: none; opacity: .12; }
.aurora-a { top: -260px; right: -90px; background: #79aaff; }
.aurora-b { top: 420px; left: -360px; background: #6ed9c7; }

.app-header { position: sticky; z-index: 30; top: 0; padding-top: env(safe-area-inset-top); border-bottom: 1px solid rgba(255,255,255,.65); background: rgba(246,249,253,.75); backdrop-filter: saturate(170%) blur(24px); -webkit-backdrop-filter: saturate(170%) blur(24px); }
.header-inner { display: grid; grid-template-columns: 290px 1fr 290px; width: min(1500px, calc(100% - 64px)); height: 80px; margin: auto; align-items: center; }
.brand { display: inline-flex; width: max-content; align-items: center; gap: 11px; color: inherit; text-decoration: none; }
.brand-icon { display: grid; width: 40px; height: 40px; place-items: center; border-radius: 13px; color: white; background: linear-gradient(145deg,#4fc6c0,#648af0); box-shadow: 0 10px 24px rgba(80,135,222,.23); }
.brand-icon svg { width: 21px; stroke-width: 2; }
.brand-copy strong, .brand-copy small { display: block; }
.brand-copy strong { font-size: 13px; font-weight: 780; letter-spacing: .1em; }
.brand-copy small { margin-top: 4px; color: var(--tertiary); font-size: 10px; }
.main-nav { display: flex; justify-content: center; gap: 4px; }
.nav-item { height: 46px; border: 0; border-radius: 14px; padding: 0 23px; color: var(--secondary); background: transparent; font-size: 15px; font-weight: 620; cursor: pointer; transition: .18s ease; }
.nav-item:hover { color: var(--text); background: rgba(255,255,255,.55); }
.nav-item.active { color: #4c7edc; background: var(--blue-soft); box-shadow: inset 0 0 0 1px rgba(91,141,239,.08); }
.live-badge { display: flex; justify-self: end; align-items: center; gap: 9px; color: var(--secondary); font-size: 13px; }
.live-badge span, .soft-status span, .readonly-chip span { width: 7px; height: 7px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 0 4px rgba(34,184,137,.1); }
.live-badge.connected { color: #168561; }
.live-badge.connecting span { background: var(--amber); box-shadow: 0 0 0 4px rgba(220,154,53,.12); animation: pulse 1.25s infinite; }
.live-badge.offline span { background: var(--coral); box-shadow: 0 0 0 4px rgba(239,108,122,.12); }
.mobile-menu { display: none; justify-self: end; border: 0; background: transparent; letter-spacing: 2px; }

.app-shell { width: min(1500px, calc(100% - 64px)); margin: 0 auto; padding: 28px 0 64px; }
.view { opacity: 1; }
.ticker-strip { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 14px; }
.ticker-card, .metric-card, .panel, .filter-panel, .readonly-chip { border: 1px solid rgba(255,255,255,.83); background: var(--surface); box-shadow: var(--shadow); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); }
.ticker-card { min-height: 108px; padding: 18px; border-radius: var(--radius-md); }
.ticker-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ticker-title > span { color: var(--secondary); font-size: 11px; }
.ticker-card strong { display: block; margin-top: 16px; font-size: 20px; letter-spacing: -.025em; font-variant-numeric: tabular-nums; }
.ticker-card small { display: block; margin-top: 7px; color: var(--tertiary); font-size: 11px; }
.ticker-card small.up, .change.up, .pnl.up, .mover-change.up { color: var(--mint); }
.ticker-card small.down, .change.down, .pnl.down, .mover-change.down { color: var(--coral); }
.regime-card { background: linear-gradient(145deg,rgba(255,255,255,.9),rgba(238,245,255,.9)); }
.regime-card .card-label { color: var(--secondary); font-size: 11px; }
.regime-card strong { font-size: 18px; }

.metric-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 14px; margin-top: 16px; }
.metric-card { min-height: 112px; padding: 20px; border-radius: var(--radius-md); }
.metric-card > span { color: var(--secondary); font-size: 12px; }
.metric-card strong { display: block; margin-top: 16px; font-size: 27px; line-height: 1; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
.metric-card small { display: block; margin-top: 10px; color: var(--tertiary); font-size: 11px; }
.safe-value { color: var(--mint); }
.warning-value { color: var(--amber); }

.panel { margin-top: 20px; border-radius: var(--radius-xl); overflow: hidden; }
.panel-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; padding: 28px 30px 22px; }
.eyebrow { display: block; margin-bottom: 7px; color: #5a83db; font-size: 10px; font-weight: 780; letter-spacing: .16em; }
h1, h2, p { margin-top: 0; }
h1 { margin-bottom: 6px; font-size: 27px; letter-spacing: -.035em; }
h2 { margin-bottom: 0; font-size: 23px; letter-spacing: -.03em; }
.panel-heading p, .page-title p { margin: 8px 0 0; color: var(--tertiary); font-size: 14px; line-height: 1.65; }
.legend { display: flex; gap: 18px; color: var(--tertiary); font-size: 11px; }
.legend span { display: flex; align-items: center; gap: 6px; }
.dot { width: 6px; height: 6px; border-radius: 50%; }
.dot.up { background: var(--mint); }.dot.down { background: var(--coral); }

.top-movers { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; padding: 0 16px 16px; }
.top-mover-col { min-width: 0; }
.top-mover-head { display: flex; align-items: baseline; gap: 10px; margin: 0 0 10px 2px; }
.top-mover-head strong { font-size: 14px; font-weight: 700; }
.mover-list { display: flex; flex-direction: column; gap: 8px; }
.mover-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 12px; padding: 0 16px 16px; }
.mover-card { position: relative; min-height: 88px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius-md); background: rgba(255,255,255,.66); overflow: hidden; }
.mover-list .mover-card {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) 96px minmax(78px, auto);
  grid-template-rows: auto auto;
  column-gap: 12px;
  align-items: center;
  min-height: 76px;
  padding: 12px 14px;
  overflow: visible;
}
.mover-list .mover-head { grid-column: 1; grid-row: 1; min-width: 0; }
.mover-list .mover-change { grid-column: 1; grid-row: 2; margin: 2px 0 0; }
.mover-list .mover-price {
  grid-column: 3;
  grid-row: 1;
  margin: 0;
  font-size: 17px;
  text-align: right;
  white-space: nowrap;
  position: relative;
  z-index: 1;
  background: transparent;
}
.mover-list .mover-vol {
  grid-column: 3;
  grid-row: 2;
  margin: 0;
  color: var(--tertiary);
  font-size: 11px;
  text-align: right;
  white-space: nowrap;
  position: relative;
  z-index: 1;
}
.mover-head { display: flex; align-items: center; gap: 9px; min-width: 0; }
.mover-head strong { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rank { margin-left: auto; color: var(--tertiary); font-size: 11px; font-weight: 700; flex: 0 0 auto; }
.mover-price { display: block; margin-top: 28px; font-size: 24px; font-weight: 750; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
.mover-change { display: block; margin-top: 7px; font-size: 12px; }
.mover-vol { display: block; margin-top: 4px; color: var(--tertiary); font-size: 11px; }
.mover-card .spark { position: absolute; right: 10px; bottom: 13px; width: 40%; height: 38px; opacity: .85; }
/* 列表卡：走势线独立中栏，禁止覆盖价格 */
.mover-list .mover-card .spark {
  position: static;
  grid-column: 2;
  grid-row: 1 / span 2;
  width: 96px;
  height: 40px;
  max-width: 100%;
  opacity: .95;
  pointer-events: none;
  z-index: 0;
  right: auto;
  bottom: auto;
}

.coin-logo { position: relative; display: grid; flex: 0 0 auto; width: 32px; height: 32px; place-items: center; border: 1px solid hsl(var(--logo-hue,211) 55% 82%); border-radius: 50%; color: hsl(var(--logo-hue,211) 46% 38%); background: hsl(var(--logo-hue,211) 70% 94%); overflow: hidden; font-size: 9px; font-weight: 800; }
.coin-logo.tradfi { border-radius: 8px; }
.coin-logo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; background: white; }
.coin-logo.loaded img { opacity: 1; }

.market-heading { align-items: center; }
.table-tools { display: flex; align-items: center; gap: 9px; }
.mini-segments, .segments { display: flex; padding: 3px; border-radius: 11px; background: #f1f4f9; }
.mini-segments button, .segments button { height: 36px; border: 0; border-radius: 9px; padding: 0 15px; color: var(--secondary); background: transparent; font-size: 12px; cursor: pointer; }
.mini-segments button.active, .segments button.active { color: #4e7ed8; background: white; box-shadow: 0 2px 7px rgba(70,92,124,.09); font-weight: 700; }
.search-box { display: flex; width: 210px; height: 42px; align-items: center; gap: 9px; border: 1px solid var(--line); border-radius: 13px; padding: 0 13px; background: rgba(249,251,254,.8); }
.search-box svg { width: 14px; color: var(--tertiary); stroke-width: 1.8; }
.search-box input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; font-size: 13px; }
.search-box input::placeholder { color: var(--tertiary); }

.table-wrap { width: 100%; overflow: auto; scrollbar-color: rgba(107,124,148,.25) transparent; }
.live-table-wrap { max-height: 580px; }
.data-table { width: 100%; border-collapse: separate; border-spacing: 0; white-space: nowrap; font-size: 13px; font-variant-numeric: tabular-nums; }
.data-table th { position: sticky; z-index: 2; top: 0; padding: 14px 18px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--tertiary); background: rgba(247,249,253,.96); font-size: 11px; font-weight: 720; text-align: left; letter-spacing: .025em; }
.data-table td { height: 64px; padding: 10px 18px; border-bottom: 1px solid var(--line); color: #52627a; }
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr { transition: background .15s ease; }
.data-table tbody tr:hover { background: rgba(237,244,255,.68); }
.symbol-cell { display: flex; min-width: 150px; align-items: center; gap: 11px; }
.symbol-cell strong, .symbol-cell small { display: block; }
.symbol-cell strong { color: var(--text); font-size: 13px; }
.symbol-cell small { margin-top: 4px; color: var(--tertiary); font-size: 10px; }
.market-pill, .experiment-pill { display: inline-flex; padding: 5px 9px; border-radius: 7px; color: #718198; background: #f0f4f9; font-size: 10px; }
.market-pill.tradfi { color: #5071ad; background: #edf3ff; }
.price { color: var(--text); font-weight: 650; }
.change, .pnl { font-weight: 650; }
.range-track { display: inline-block; width: 64px; height: 4px; margin-right: 8px; border-radius: 99px; background: #edf0f4; overflow: hidden; vertical-align: middle; }
.range-track i { display: block; height: 100%; border-radius: inherit; background: #87aaf2; }
.mini-spark { width: 78px; height: 28px; vertical-align: middle; }
.table-empty { height: 120px !important; color: var(--tertiary) !important; text-align: center; }

.page-title { display: flex; min-height: 154px; align-items: center; justify-content: space-between; gap: 34px; padding: 24px 6px 10px; }
.page-title h1 { margin-bottom: 0; font-size: 40px; }
.page-title p { font-size: 14px; }
.readonly-chip { display: flex; align-items: center; gap: 10px; border-radius: 999px; padding: 11px 16px; color: var(--secondary); font-size: 12px; box-shadow: none; }
.readonly-chip.blue span { background: var(--blue); box-shadow: 0 0 0 4px rgba(91,141,239,.1); }
.readonly-chip.amber span { background: var(--amber); box-shadow: 0 0 0 4px rgba(220,154,53,.1); }

.filter-panel { display: grid; grid-template-columns: minmax(240px,1fr) 180px minmax(230px,.9fr) auto; align-items: end; gap: 14px; border-radius: var(--radius-lg); padding: 18px; }
.filter-item { display: grid; gap: 9px; }
.filter-item > label { padding-left: 4px; color: var(--secondary); font-size: 11px; }
.segments { display: grid; grid-template-columns: 1fr 1fr; }
.segments button { height: 48px; font-size: 13px; }
select { width: 100%; height: 54px; appearance: none; border: 0; outline: 0; border-radius: 13px; padding: 0 40px 0 16px; background: #f1f4f9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23828fa1' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 15px center; font-size: 13px; }
.toggle-control { display: flex; min-height: 54px; align-items: center; justify-content: space-between; gap: 22px; border-radius: 13px; padding: 0 16px; background: #f1f4f9; cursor: pointer; }
.toggle-control b, .toggle-control small { display: block; }
.toggle-control b { font-size: 13px; }.toggle-control small { margin-top: 4px; color: var(--tertiary); font-size: 10px; }
.switch { position: relative; flex: 0 0 auto; width: 40px; height: 24px; }
.switch input { position: absolute; opacity: 0; }
.switch i { position: absolute; inset: 0; border-radius: 99px; background: #cbd2dd; transition: .2s ease; }
.switch i::after { content: ""; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: white; box-shadow: 0 2px 5px rgba(41,51,67,.2); transition: .2s ease; }
.switch input:checked + i { background: var(--blue); }.switch input:checked + i::after { transform: translateX(16px); }
.primary-button { display: flex; height: 54px; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 14px; padding: 0 22px; color: white; background: linear-gradient(135deg,#638fe9,#557fda); box-shadow: 0 11px 26px rgba(82,128,218,.22); font-size: 13px; font-weight: 700; cursor: pointer; }
.primary-button svg { width: 16px; stroke-width: 1.9; }.primary-button:disabled { opacity: .55; cursor: wait; }
.notice-card, .warning-card { margin-top: 14px; border-radius: 14px; padding: 14px 17px; color: #60758c; background: #eaf4fb; font-size: 12px; }
.warning-card { color: #9a6b22; background: var(--amber-soft); }
.pattern-guide { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 18px; }
.pattern-guide article { display: flex; gap: 17px; min-height: 148px; padding: 23px 25px; border: 1px solid rgba(255,255,255,.88); border-radius: var(--radius-lg); background: rgba(255,255,255,.69); box-shadow: 0 13px 38px rgba(66,86,116,.055); }
.guide-mark { flex: 0 0 auto; width: 11px; height: 11px; margin-top: 4px; border-radius: 50%; }.guide-mark.primary { background: #5b8def; box-shadow: 0 0 0 6px rgba(91,141,239,.1); }.guide-mark.evidence { background: #a7b3c5; box-shadow: 0 0 0 6px rgba(130,145,165,.1); }
.pattern-guide small { color: #6c8bc2; font-size: 10px; font-weight: 760; letter-spacing: .09em; }.pattern-guide h2 { margin-top: 8px; font-size: 18px; }.pattern-guide p { margin: 8px 0 0; color: var(--secondary); font-size: 13px; line-height: 1.75; }
.section-line { display: flex; align-items: flex-end; justify-content: space-between; margin: 42px 6px 16px; }
.soft-status { display: flex; align-items: center; gap: 9px; color: var(--secondary); font-size: 12px; }
.soft-status.loading span { background: var(--amber); animation: pulse 1.2s infinite; }.soft-status.error span { background: var(--coral); }
.plan-explainer { display: flex; align-items: center; justify-content: space-between; gap: 32px; margin-top: 18px; padding: 24px 28px; border: 1px solid rgba(91,141,239,.12); border-radius: var(--radius-lg); background: linear-gradient(135deg,rgba(238,245,255,.94),rgba(255,255,255,.74)); box-shadow: 0 16px 44px rgba(76,107,151,.07); }
.plan-explainer h2 { font-size: 21px; }
.plan-explainer p { max-width: 720px; margin: 7px 0 0; color: var(--secondary); font-size: 13px; line-height: 1.65; }
.plan-pending { display: flex; flex: 0 0 auto; min-width: 190px; align-items: center; gap: 12px; padding: 13px 16px; border-radius: 15px; background: rgba(255,255,255,.78); }
.plan-pending > span { width: 9px; height: 9px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 0 5px rgba(220,154,53,.12); }
.plan-pending small, .plan-pending strong { display: block; }.plan-pending small { color: var(--tertiary); font-size: 10px; }.plan-pending strong { margin-top: 3px; font-size: 13px; }

.structure-results { min-height: 180px; }
.structure-grid { display: grid; gap: 18px; }
.structure-compact-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 14px; }
.structure-compact-grid > .structure-empty { grid-column: 1 / -1; }
.structure-compact-card { min-width: 0; border: 1px solid rgba(255,255,255,.9); border-radius: 21px; padding: 20px; color: var(--text); background: rgba(255,255,255,.76); box-shadow: 0 13px 38px rgba(70,88,115,.07); text-align: left; cursor: pointer; transition: transform .18s ease,border-color .18s ease,box-shadow .18s ease; }
.structure-compact-card:hover { transform: translateY(-2px); border-color: rgba(91,141,239,.28); box-shadow: 0 17px 44px rgba(70,88,115,.11); }.structure-compact-card:focus-visible { outline: 3px solid rgba(91,141,239,.22); outline-offset: 3px; }.structure-compact-card.selected { border-color: rgba(91,141,239,.48); box-shadow: 0 17px 46px rgba(78,124,205,.14); }.structure-compact-card.degraded { background: rgba(255,249,238,.82); }
.compact-identity { display: flex; align-items: center; gap: 11px; }.compact-identity > span:not(.coin-logo) { min-width: 0; }.compact-identity strong,.compact-identity small { display: block; }.compact-identity strong { overflow: hidden; font-size: 16px; text-overflow: ellipsis; }.compact-identity small { margin-top: 3px; color: var(--tertiary); font-size: 10px; text-transform: capitalize; }.compact-identity > b { margin-left: auto; border-radius: 10px; padding: 7px 9px; color: #4e79c3; background: var(--blue-soft); font-size: 15px; }
.structure-compact-card h3 { margin: 19px 0 15px; font-size: 17px; }.compact-metrics { display: grid; grid-template-columns: repeat(3,1fr); border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }.compact-metrics span { min-width: 0; padding: 11px 10px; border-right: 1px solid var(--line); }.compact-metrics span:last-child { border: 0; }.compact-metrics small,.compact-metrics b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.compact-metrics small { color: var(--tertiary); font-size: 9px; }.compact-metrics b { margin-top: 6px; font-size: 12px; }
.structure-compact-card time { display: block; margin-top: 14px; color: var(--tertiary); font-size: 10px; }.compact-open-hint { display: block; margin-top: 14px; color: #5a82c7; font-size: 11px; font-weight: 700; }
.structure-compact-card.superseded { opacity: .55; }.structure-compact-card.superseded .forward-status-pill { color: var(--tertiary); }
.compact-bucket-tags { display: block; margin: 10px 0 0; color: var(--tertiary); font-size: 10px; letter-spacing: .02em; }
.structure-detail { margin-top: 18px; scroll-margin-top: 92px; }
.structure-empty { display: grid; min-height: 180px; place-items: center; border: 1px dashed rgba(107,124,148,.2); border-radius: var(--radius-xl); color: var(--tertiary); background: rgba(255,255,255,.48); font-size: 13px; text-align: center; }
.structure-card { padding: 26px 28px; border: 1px solid rgba(255,255,255,.9); border-radius: var(--radius-xl); background: var(--surface); box-shadow: var(--shadow); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); }
.structure-card.degraded { border-color: rgba(220,154,53,.2); background: linear-gradient(135deg,rgba(255,250,240,.94),rgba(255,255,255,.78)); }
.structure-card > header { display: grid; grid-template-columns: minmax(280px,1.2fr) minmax(250px,1fr) 110px; align-items: center; gap: 28px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
.structure-identity .symbol-cell { min-width: 0; }.structure-identity .coin-logo { width: 42px; height: 42px; }
.structure-identity .symbol-cell strong { font-size: 17px; }.structure-identity .symbol-cell small { font-size: 11px; }
.structure-tags { display: flex; flex-wrap: wrap; gap: 7px; margin: 11px 0 0 53px; }
.structure-tags > span { padding: 5px 8px; border-radius: 7px; color: var(--secondary); background: var(--muted); font-size: 10px; }
.structure-pattern small, .structure-pattern strong, .structure-pattern span { display: block; }
.structure-pattern small, .structure-score small { color: var(--tertiary); font-size: 10px; }
.structure-pattern strong { margin-top: 5px; font-size: 16px; }
.structure-pattern span { margin-top: 4px; color: var(--secondary); font: 10px ui-monospace,SFMono-Regular,Menlo,monospace; }
.structure-score { justify-self: end; min-width: 92px; text-align: right; }
.structure-score strong { display: block; margin-top: 3px; font-size: 27px; font-variant-numeric: tabular-nums; }
.structure-score > span { display: block; height: 5px; margin-top: 7px; border-radius: 99px; background: #e9eef6; overflow: hidden; }.structure-score i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#70a3f4,#4f7edc); }
.structure-snapshot { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 20px; }
.close-block, .bias-block { min-height: 104px; padding: 18px 20px; border-radius: 17px; background: var(--muted); }
.close-block small, .close-block strong, .bias-block small, .bias-block strong, .bias-block span { display: block; }
.close-block small, .bias-block small { color: var(--tertiary); font-size: 10px; }
.close-block strong { margin-top: 11px; font-size: 27px; font-variant-numeric: tabular-nums; }
.bias-block strong { margin-top: 10px; font-size: 17px; }.bias-block span { margin-top: 6px; color: var(--tertiary); font-size: 10px; }
.bias-block.long { color: #4a7fd3; background: rgba(237,244,255,.9); }.bias-block.short { color: #c56b54; background: rgba(255,240,242,.76); }.bias-block.context { color: var(--secondary); }
.structure-metrics { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 0; margin: 20px 0 0; border: 1px solid var(--line); border-radius: 17px; overflow: hidden; }
.structure-metrics > div { min-height: 80px; padding: 15px 17px; border-right: 1px solid var(--line); }.structure-metrics > div:last-child { border-right: 0; }
.structure-metrics dt { color: var(--tertiary); font-size: 10px; }.structure-metrics dd { margin: 10px 0 0; color: var(--text); font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.observation-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin-top: 20px; }
.observation-grid > div { min-height: 110px; padding: 17px 18px; border-radius: 17px; background: rgba(245,248,252,.82); }
.observation-grid small { color: #6582b8; font-size: 10px; font-weight: 700; letter-spacing: .04em; }.observation-grid p { margin: 9px 0 0; color: var(--secondary); font-size: 12px; line-height: 1.7; }
.position-pending { display: flex; align-items: center; justify-content: space-between; gap: 28px; margin-top: 14px; padding: 17px 19px; border: 1px dashed rgba(220,154,53,.28); border-radius: 17px; background: rgba(255,247,233,.6); }
.position-pending small, .position-pending strong { display: block; }.position-pending small { color: var(--tertiary); font-size: 10px; }.position-pending strong { margin-top: 4px; color: #a87527; font-size: 15px; }.position-pending p { max-width: 690px; margin: 0; color: var(--secondary); font-size: 12px; line-height: 1.6; text-align: right; }
.position-pending.ready { border-style: solid; border-color: rgba(91,141,239,.2); background: var(--blue-soft); }.position-pending.ready strong { color: #4f79c3; }.point-grid { display: grid; grid-template-columns: repeat(3,minmax(110px,1fr)); gap: 8px; margin: 0; }.point-grid div { padding: 9px 13px; border-radius: 11px; background: rgba(255,255,255,.62); }.point-grid dt { color: var(--tertiary); font-size: 9px; }.point-grid dd { margin: 5px 0 0; font-size: 13px; font-weight: 720; font-variant-numeric: tabular-nums; }
.raw-notes { margin-top: 14px; border-top: 1px solid var(--line); }.raw-notes summary { width: max-content; padding-top: 15px; color: var(--secondary); font-size: 11px; cursor: pointer; }.raw-notes p { margin: 11px 0 0; color: var(--secondary); font-size: 12px; line-height: 1.75; }
.evidence-panel { margin-top: 10px; }
.evidence-panel > summary { display: flex; align-items: center; justify-content: space-between; padding: 20px 24px; cursor: pointer; list-style: none; font-size: 14px; font-weight: 700; }
.evidence-panel > summary::-webkit-details-marker { display: none; }.evidence-panel > summary i { display: inline-block; margin-right: 9px; font-size: 22px; font-style: normal; transition: .2s ease; }.evidence-panel[open] > summary i { transform: rotate(90deg); }.evidence-panel > summary b { border-radius: 99px; padding: 5px 9px; color: var(--secondary); background: var(--muted); font-size: 10px; }.evidence-panel > p { margin: -6px 24px 16px 52px; color: var(--tertiary); font-size: 11px; }
.evidence-grid { padding: 0 16px 16px; }.evidence-grid .structure-card { box-shadow: none; border-color: var(--line); }

.research-metrics { margin-top: 0; }
.timezone-chip { border-radius: 99px; padding: 8px 12px; color: #5c76a0; background: var(--blue-soft); font-size: 10px; font-weight: 700; }
.trade-card-list { display: grid; max-height: min(1080px,calc(100vh - 150px)); gap: 14px; padding: 0 14px 22px 20px; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: #b9c7dc transparent; scrollbar-width: thin; }
.trade-card-list::-webkit-scrollbar { width: 8px; }.trade-card-list::-webkit-scrollbar-track { background: transparent; }.trade-card-list::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: 99px; background: #b9c7dc; background-clip: padding-box; }
.trade-card { border: 1px solid var(--line); border-radius: 20px; padding: 21px 22px; background: rgba(249,251,254,.72); }
.trade-card > header { display: flex; align-items: center; justify-content: space-between; gap: 18px; }.trade-identity { display: flex; min-width: 0; align-items: center; gap: 12px; }.trade-identity strong,.trade-identity small { display: block; }.trade-identity strong { font-size: 17px; }.trade-identity small { margin-top: 4px; color: var(--secondary); font-size: 11px; }.trade-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }.exit-pill { border-radius: 99px; padding: 5px 9px; color: var(--secondary); background: var(--muted); font-size: 10px; font-weight: 700; }.exit-pill.tp { color: #368f73; background: var(--mint-soft); }.exit-pill.stop { color: #c35f6a; background: var(--coral-soft); }
.trade-timeline { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 18px; }.trade-timeline > div { border-radius: 14px; padding: 13px 15px; background: var(--muted); }.trade-timeline small,.trade-timeline time { display: block; }.trade-timeline small { color: var(--tertiary); font-size: 9px; }.trade-timeline time { margin-top: 6px; font-size: 12px; font-weight: 650; }
.trade-points { display: grid; grid-template-columns: repeat(4,1fr); margin: 14px 0 0; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }.trade-points > div { min-width: 0; padding: 13px 15px; border-right: 1px solid var(--line); }.trade-points > div:last-child { border: 0; }.trade-points dt { color: var(--tertiary); font-size: 9px; }.trade-points dd { margin: 7px 0 0; overflow: hidden; font-size: 14px; font-weight: 720; font-variant-numeric: tabular-nums; text-overflow: ellipsis; }
.trade-result { display: grid; grid-template-columns: 145px 90px 1fr; align-items: end; gap: 12px; margin-top: 15px; }.trade-result small,.trade-result strong { display: block; }.trade-result small { color: var(--tertiary); font-size: 9px; }.trade-result strong { margin-top: 5px; font-size: 15px; }.trade-result p { margin: 0; color: var(--tertiary); font-size: 10px; text-align: right; }
.trade-pagination { display: flex; min-height: 66px; align-items: center; justify-content: center; gap: 12px; border-top: 1px solid var(--line); padding: 12px 20px 14px; }.trade-pagination[hidden] { display: none; }.trade-pagination > button,.trade-page-numbers button { display: grid; width: 36px; height: 36px; place-items: center; border: 1px solid var(--line); border-radius: 11px; color: var(--secondary); background: rgba(255,255,255,.72); font-size: 12px; font-weight: 720; cursor: pointer; }.trade-pagination button:hover:not(:disabled),.trade-page-numbers button.active { border-color: rgba(91,141,239,.28); color: #4f78c0; background: var(--blue-soft); }.trade-pagination button:disabled { opacity: .35; cursor: default; }.trade-page-numbers { display: flex; align-items: center; gap: 7px; }.trade-page-numbers > span { color: var(--tertiary); font-size: 12px; }.trade-pagination > span { min-width: 48px; color: var(--secondary); font-size: 11px; text-align: center; }
.research-layout { display: grid; grid-template-columns: 1.35fr .65fr; gap: 12px; }
.research-layout .panel { margin-top: 0; }
.pipeline { padding: 0 20px 22px; }
.pipeline-row { display: grid; grid-template-columns: 160px 1fr 48px; align-items: center; gap: 12px; min-height: 38px; }
.pipeline-row label { color: var(--secondary); font-size: 12px; }.pipeline-track { height: 7px; border-radius: 99px; background: #edf1f6; overflow: hidden; }.pipeline-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#79a7f5,#5a88df); }.pipeline-row b { color: var(--text); font-size: 12px; text-align: right; font-variant-numeric: tabular-nums; }
.conclusion-card { padding: 28px; }.conclusion-icon { display: grid; width: 34px; height: 34px; place-items: center; border-radius: 11px; color: #557fcf; background: var(--blue-soft); font-family: Georgia,serif; font-weight: bold; }.conclusion-card h2 { margin-top: 19px; }.conclusion-card > p { margin: 11px 0 22px; color: var(--secondary); font-size: 13px; line-height: 1.75; }.conclusion-card dl { margin: 0; }.conclusion-card dl div { display: flex; justify-content: space-between; gap: 20px; padding: 12px 0; border-top: 1px solid var(--line); font-size: 11px; }.conclusion-card dt { color: var(--tertiary); }.conclusion-card dd { max-width: 170px; margin: 0; overflow: hidden; color: var(--secondary); text-overflow: ellipsis; white-space: nowrap; }

.skeleton-card { position: relative; min-height: 88px; overflow: hidden; background: #f8fafe; }
.skeleton-card::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg,transparent,rgba(255,255,255,.8),transparent); animation: shimmer 1.35s infinite; }
footer { padding: 18px 20px calc(18px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); color: var(--secondary); background: rgba(246,249,253,.72); font-size: 11px; line-height: 1.6; text-align: center; }

@keyframes shimmer { to { transform: translateX(100%); } }
@keyframes pulse { 50% { opacity: .35; } }
@keyframes view-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }

@media (max-width: 1100px) {
  .header-inner { grid-template-columns: 225px 1fr 120px; width: calc(100% - 36px); }
  .nav-item { padding: 0 13px; }
  .ticker-strip { grid-template-columns: repeat(3,1fr); }
  .metric-grid { grid-template-columns: repeat(3,1fr); }
  .structure-metrics { grid-template-columns: repeat(3,1fr); }
  .structure-metrics > div:nth-child(3) { border-right: 0; }
  .structure-metrics > div:nth-child(-n+3) { border-bottom: 1px solid var(--line); }
  .structure-compact-grid { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 900px) {
  .top-movers { grid-template-columns: 1fr; }
  .mover-grid { grid-template-columns: repeat(3,1fr); }
  .filter-panel { grid-template-columns: 1fr 1fr; }
  .structure-card > header { grid-template-columns: 1fr auto; }
  .structure-pattern { grid-column: 1 / -1; grid-row: 2; }
  .observation-grid { grid-template-columns: 1fr; }
  .pattern-guide { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
  .app-header { position: sticky; }
  .header-inner { grid-template-columns: 1fr auto auto; width: calc(100% - 24px); height: 66px; }
  .brand-copy small { display: none; }
  .main-nav { display: none; position: absolute; top: 56px; right: 12px; left: 12px; grid-template-columns: 1fr 1fr; gap: 5px; padding: 8px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.95); box-shadow: var(--shadow); }
  .main-nav.open { display: grid; }
  .nav-item { width: 100%; }
  .mobile-menu { display: block; }
  .live-badge { margin-right: 10px; }.live-badge b { display: none; }
  .app-shell { width: calc(100% - 24px); padding-top: 12px; padding-bottom: 32px; }
  .ticker-strip { display: flex; margin-right: -10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
  .ticker-card { flex: 0 0 178px; scroll-snap-align: start; }
  .ticker-strip::-webkit-scrollbar { display: none; }
  .metric-grid { grid-template-columns: repeat(2,1fr); }
  .metric-card:last-child { grid-column: 1/-1; }
  .mover-grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; }
  .mover-card { flex: 0 0 250px; scroll-snap-align: start; }
  .mover-list .mover-card { grid-template-columns: minmax(0, 1fr) 72px minmax(64px, auto); }
  .mover-list .mover-card .spark { width: 72px; height: 32px; }
  .mover-list .mover-price { font-size: 15px; }
  .mover-list .mover-vol { display: none; }
  .market-heading { display: block; }.table-tools { margin-top: 16px; justify-content: space-between; }.search-box { width: 165px; }
  .live-table-wrap { max-height: none; }
  .live-table th:nth-child(2), .live-table td:nth-child(2), .live-table th:nth-child(5), .live-table td:nth-child(5), .live-table th:nth-child(6), .live-table td:nth-child(6) { display: none; }
  .page-title { min-height: 128px; }.page-title h1 { font-size: 32px; }.readonly-chip { display: none; }
  .filter-panel { grid-template-columns: 1fr; }
  .plan-explainer { display: block; padding: 21px; }.plan-pending { width: 100%; margin-top: 18px; }
  .section-line { display: block; margin-top: 32px; }.soft-status { margin-top: 10px; }
  .structure-card { padding: 21px; }.structure-card > header { display: grid; grid-template-columns: 1fr auto; gap: 18px; }
  .structure-pattern { grid-column: 1 / -1; }.structure-tags { margin-left: 0; }
  .structure-snapshot { grid-template-columns: 1fr; }
  .structure-metrics { grid-template-columns: repeat(2,1fr); }
  .structure-metrics > div { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
  .structure-metrics > div:nth-child(2n) { border-right: 0; }.structure-metrics > div:nth-last-child(-n+2) { border-bottom: 0; }
  .position-pending { display: block; }.position-pending p { margin-top: 10px; text-align: left; }
  .point-grid { grid-template-columns: 1fr; margin-top: 12px; }
  .structure-compact-grid { grid-template-columns: 1fr; }
  .trade-card-list { max-height: 72vh; padding: 0 7px 14px 12px; }.trade-card { padding: 18px; }.trade-card > header { align-items: flex-start; }.trade-badges { display: grid; }
  .trade-timeline { grid-template-columns: 1fr; }.trade-points { grid-template-columns: repeat(2,1fr); }.trade-points > div:nth-child(2) { border-right: 0; }.trade-points > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }.trade-result { grid-template-columns: 1fr 1fr; }.trade-result p { grid-column: 1/-1; text-align: left; }
  .trade-pagination { gap: 7px; padding-inline: 10px; }.trade-page-numbers button { width: 32px; height: 32px; }.trade-pagination > button { width: 34px; height: 34px; }.trade-pagination > span { display: none; }
  .research-layout { grid-template-columns: 1fr; }
  .pipeline-row { grid-template-columns: 108px 1fr 36px; }
  footer { position: static; margin-top: 14px; line-height: 1.55; }
}

@media (prefers-color-scheme: dark) {
  :root { color-scheme: dark; --canvas:#10141b; --surface:rgba(25,31,41,.87); --solid:#1b222d; --muted:#202936; --line:rgba(225,232,244,.08); --text:#edf2f8; --secondary:#9daabc; --tertiary:#748197; --blue-soft:rgba(76,124,212,.17); --mint-soft:rgba(34,184,137,.12); --coral-soft:rgba(239,108,122,.12); --amber-soft:rgba(220,154,53,.12); --shadow:0 18px 55px rgba(0,0,0,.22); }
  .app-header, footer { border-color: var(--line); background: rgba(16,20,27,.8); }
  .ticker-card, .metric-card, .panel, .filter-panel, .readonly-chip { border-color: var(--line); }
  .regime-card { background: linear-gradient(145deg,rgba(31,39,51,.95),rgba(27,42,63,.9)); }
  .mover-card { background: rgba(31,39,51,.72); }
  .mini-segments, .segments, select, .toggle-control { background-color: #202936; }
  .mini-segments button.active, .segments button.active { background: #303b4b; }
  .search-box { background: rgba(30,38,49,.8); }
  .data-table th { background: rgba(28,35,46,.97); }
  .structure-table .field-symbol { background: rgba(27,34,45,.97); }
  .coin-logo { background: #293443; }.coin-logo img { background: #fff; }
  .skeleton-card { background: #1b222d; }.skeleton-card::after { background: linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent); }
  @media (max-width:760px) { .main-nav { background: rgba(24,30,40,.98); } }
}

/* V2 strategy workspace */
.legacy-view { display: none !important; }
.strategy-map { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin: 18px 0 28px; }
.strategy-family { position: relative; overflow: hidden; min-height: 170px; padding: 27px 28px; border: 1px solid var(--line); border-radius: 26px; background: rgba(255,255,255,.72); box-shadow: var(--shadow); }
.strategy-family::after { content: ""; position: absolute; right: -60px; top: -80px; width: 180px; height: 180px; border-radius: 50%; background: rgba(91,141,239,.09); }
.strategy-family > span { color: #5b83c5; font-size: 11px; font-weight: 800; letter-spacing: .13em; }
.strategy-family h2 { margin: 10px 0 8px; font-size: 22px; }
.strategy-family p { max-width: 580px; margin: 0; color: var(--secondary); font-size: 14px; line-height: 1.65; }
.strategy-family dl { display: flex; gap: 28px; margin: 22px 0 0; }
.strategy-family dl div { display: grid; gap: 3px; }.strategy-family dt { color: var(--tertiary); font-size: 10px; }.strategy-family dd { margin: 0; font-size: 14px; font-weight: 700; }
.opportunity-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); max-height: 720px; gap: 14px; margin-bottom: 18px; padding-right: 7px; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: rgba(107,124,148,.25) transparent; scrollbar-width: thin; }
.opportunity-card { appearance: none; contain: layout paint; width: 100%; padding: 18px; border: 1px solid var(--line); border-radius: 20px; color: var(--text); text-align: left; background: rgba(255,255,255,.72); box-shadow: 0 8px 26px rgba(39,61,91,.055); cursor: pointer; transition: border-color .2s ease,box-shadow .2s ease,transform .2s ease; }
.opportunity-card:hover,.opportunity-card.selected { border-color: rgba(91,141,239,.5); transform: translateY(-2px); box-shadow: 0 15px 35px rgba(39,61,91,.11); }
.opportunity-card.short.selected { border-color: rgba(234,103,116,.45); }
.opportunity-head { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 11px; }
.opportunity-head strong,.opportunity-head small { display: block; }.opportunity-head strong { font-size: 16px; }.opportunity-head small { margin-top: 3px; color: var(--tertiary); font-size: 11px; }
.opportunity-head > b { border-radius: 99px; padding: 6px 9px; color: #347e68; background: var(--mint-soft); font-size: 11px; }.opportunity-card.short .opportunity-head > b { color: #b24e5a; background: var(--coral-soft); }
.opportunity-levels { display: grid; grid-template-columns: repeat(3,1fr); gap: 7px; margin-top: 15px; }
.opportunity-levels span { min-width: 0; padding: 9px; border-radius: 11px; background: var(--muted); }.opportunity-levels small,.opportunity-levels b { display: block; overflow: hidden; text-overflow: ellipsis; }.opportunity-levels small { color: var(--tertiary); font-size: 11px; }.opportunity-levels b { margin-top: 4px; font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.stage-strip { display: grid; grid-template-columns: repeat(4,1fr); gap: 4px; margin-top: 13px; }
.stage-strip span { position: relative; padding-top: 7px; color: var(--tertiary); font-size: 10px; text-align: center; border-top: 2px solid var(--line); }.stage-strip span.done { color: #5279b8; border-color: #79a2e5; }
.opportunity-drawer-open { overflow: hidden; }
.opportunity-drawer-backdrop { position: fixed; z-index: 80; inset: 0; background: rgba(22,32,48,.18); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
.opportunity-drawer-backdrop[hidden],.opportunity-drawer[hidden] { display: none; }
.opportunity-drawer { position: fixed; z-index: 90; top: calc(82px + env(safe-area-inset-top)); right: 18px; bottom: 18px; display: grid; grid-template-rows: auto minmax(0,1fr); width: min(440px,calc(100vw - 36px)); overflow: hidden; border: 1px solid rgba(255,255,255,.86); border-radius: 26px; color: var(--text); background: rgba(250,252,255,.97); box-shadow: 0 28px 80px rgba(28,45,70,.24); }
.opportunity-drawer-head { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 22px 24px 18px; border-bottom: 1px solid var(--line); }
.opportunity-drawer-head strong { display: block; margin-top: 5px; font-size: 19px; }
.opportunity-drawer-head button { display: grid; width: 38px; height: 38px; place-items: center; border: 1px solid var(--line); border-radius: 12px; color: var(--secondary); background: var(--surface); font-size: 25px; line-height: 1; cursor: pointer; }
.opportunity-drawer-body { min-height: 0; overflow-y: auto; padding: 22px 24px 26px; }
.opportunity-drawer-body .detail-heading { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: start; gap: 14px; }
.opportunity-drawer-body .detail-heading small { color: #5b83c5; font-size: 11px; font-weight: 800; }
.opportunity-drawer-body .detail-heading h2 { margin: 7px 0 5px; font-size: 22px; line-height: 1.25; }
.opportunity-drawer-body .detail-heading p { margin: 0; color: var(--secondary); font-size: 13px; line-height: 1.55; }
.opportunity-drawer-body .detail-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; margin: 22px 0 0; }
.opportunity-drawer-body .detail-grid div { min-width: 0; padding: 13px 14px; border-radius: 14px; background: var(--muted); }
.opportunity-drawer-body .detail-grid dt { color: var(--tertiary); font-size: 12px; }
.opportunity-drawer-body .detail-grid dd { margin: 7px 0 0; overflow-wrap: anywhere; font-size: 15px; font-weight: 720; line-height: 1.35; font-variant-numeric: tabular-nums; }
.opportunity-drawer-body .detail-note { margin: 18px 0 0; padding: 14px 16px; border-radius: 14px; color: var(--secondary); background: var(--blue-soft); font-size: 13px; line-height: 1.65; }
.v2-trade-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); max-height: min(900px,calc(100vh - 150px)); align-content: start; gap: 10px; padding: 0 8px 14px 12px; overflow-y: auto; overscroll-behavior: contain; scrollbar-color: #b9c7dc transparent; scrollbar-width: thin; }
.v2-trade-grid > .table-empty { grid-column: 1 / -1; }
.v2-trade-card { appearance: none; contain: layout paint; min-width: 0; height: max-content; padding: 0; overflow: hidden; border: 1px solid var(--line); border-radius: 18px; color: var(--text); text-align: left; background: rgba(249,251,254,.76); box-shadow: 0 8px 24px rgba(39,61,91,.045); cursor: pointer; transition: border-color .18s ease,box-shadow .18s ease,transform .18s ease; }
.v2-trade-card:hover,.v2-trade-card.selected { border-color: rgba(91,141,239,.48); transform: translateY(-2px); box-shadow: 0 14px 34px rgba(39,61,91,.09); }
.v2-trade-summary { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 9px; padding: 13px 14px 12px; }
.v2-trade-identity { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: 9px; min-width: 0; }
.v2-trade-identity .coin-logo { width: 32px; height: 32px; }
.v2-trade-identity strong,.v2-trade-identity small,.v2-trade-outcome strong,.v2-trade-outcome small { display: block; }
.v2-trade-identity strong { overflow: hidden; font-size: 16px; text-overflow: ellipsis; }
.v2-trade-identity small { margin-top: 2px; color: var(--tertiary); font-size: 11px; }
.v2-trade-outcome { min-width: 94px; text-align: right; }
.v2-trade-outcome strong { font-size: 14px; font-variant-numeric: tabular-nums; }
.v2-trade-outcome small { margin-top: 3px; color: var(--tertiary); font-size: 11px; }
.v2-trade-outcome.up strong,#v2FloatingTotal.up,.pnl-value.up { color: var(--mint); }
.v2-trade-outcome.down strong,#v2FloatingTotal.down,.pnl-value.down { color: var(--coral); }
.v2-trade-compact { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; width: 100%; padding: 0; }
.v2-trade-compact > span { min-width: 0; padding: 8px 9px; border-radius: 10px; background: var(--muted); }
.v2-trade-compact small,.v2-trade-compact b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-trade-compact small { color: var(--tertiary); font-size: 11px; }.v2-trade-compact b { margin-top: 4px; font-size: 13px; font-variant-numeric: tabular-nums; }
.v2-status-panel { margin-bottom: 18px; }.v2-status-panel .strategy-rules-grid { padding-top: 0; }

@media (max-width: 1050px) { .opportunity-grid,.v2-trade-grid { grid-template-columns: repeat(2,minmax(0,1fr)); } }
@media (max-width: 760px) {
  .strategy-map,.opportunity-grid { grid-template-columns: 1fr; }
  .opportunity-grid { max-height: 70vh; }
  .strategy-family { min-height: 0; padding: 22px; border-radius: 22px; }
  .opportunity-card { padding: 16px; }
  .v2-trade-grid { grid-template-columns: 1fr; max-height: 74vh; padding: 0 8px 15px 12px; }
  .opportunity-drawer { top: calc(70px + env(safe-area-inset-top)); right: 8px; bottom: 8px; width: calc(100vw - 16px); border-radius: 22px; }
  .opportunity-drawer-head { padding: 18px 18px 15px; }
  .opportunity-drawer-body { padding: 18px; }
}
@media (prefers-color-scheme: dark) {
  .strategy-family,.opportunity-card,.v2-trade-card { background: rgba(31,39,51,.78); }
  .opportunity-drawer { border-color: var(--line); background: rgba(24,30,40,.98); }
}

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

/* ================= 前向模拟观察 ================= */
.partition-note { display: grid; grid-template-columns: 1fr 1fr auto; gap: 14px; align-items: center; margin: 4px 0 18px; padding: 16px 18px; border: 1px solid rgba(255,255,255,.83); border-radius: var(--radius-md); background: var(--surface); box-shadow: var(--shadow); backdrop-filter: blur(24px); }
.partition-note > div { display: flex; flex-direction: column; gap: 3px; }
.partition-note strong { font-size: 14px; }
.partition-note small { color: var(--tertiary); font-size: 11px; }
.ghost-button { border: 1px solid var(--line); border-radius: 12px; padding: 9px 14px; color: #4f78c0; background: rgba(255,255,255,.72); font-size: 12px; font-weight: 680; cursor: pointer; }
.ghost-button:hover { border-color: rgba(91,141,239,.3); background: var(--blue-soft); }
.forward-metrics .metric-card { min-height: 96px; }
.forward-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 4px 0 16px; }
.forward-meta > span { border-radius: 99px; padding: 7px 12px; color: var(--secondary); background: rgba(255,255,255,.72); border: 1px solid var(--line); font-size: 11px; }
.bucket-row { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; max-width: 560px; }
.bucket-chip { border-radius: 99px; padding: 7px 12px; color: #5c76a0; background: var(--blue-soft); border: 1px solid rgba(91,141,239,.16); font-size: 11px; font-weight: 680; white-space: nowrap; }
.forward-status-pill { display: inline-flex; width: max-content; border-radius: 99px; margin-top: 8px; padding: 5px 10px; color: #5c76a0; background: var(--blue-soft); font-size: 11px; font-weight: 680; }
.forward-reason { display: block; margin-top: 10px; color: var(--secondary); font-size: 11px; font-weight: 560; }
.structure-score > .forward-reason { height: auto; overflow: visible; background: transparent; }
.forward-plan-card { border: 1px solid rgba(255,255,255,.83); border-radius: var(--radius-lg); padding: 20px; background: var(--surface); box-shadow: var(--shadow); }
.forward-plan-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.trade-costs { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 8px; margin: 12px 0 0; }
.trade-costs div { border-radius: 12px; padding: 8px 10px; background: var(--muted); }
.trade-costs dt { color: var(--tertiary); font-size: 10px; }
.trade-costs dd { margin: 4px 0 0; font-size: 12px; font-weight: 680; font-variant-numeric: tabular-nums; }
.forward-disclaimer { margin: 16px 2px 0; color: var(--tertiary); font-size: 11px; text-align: center; }
.trade-scroll { max-height: min(1080px, calc(100vh - 120px)); }

.run-baseline { margin-bottom: 18px; background: linear-gradient(135deg,rgba(239,246,255,.94),rgba(255,255,255,.82)); }
.run-baseline > summary,.quality-panel > summary { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 18px; padding: 22px 30px; cursor: pointer; list-style: none; }
.run-baseline > summary::-webkit-details-marker,.quality-panel > summary::-webkit-details-marker { display: none; }
.run-baseline > summary:focus,.quality-panel > summary:focus { outline: none; }
.run-baseline > summary:focus-visible,.quality-panel > summary:focus-visible { border-radius: inherit; box-shadow: inset 0 0 0 2px rgba(91,141,239,.24); }
.run-baseline > summary strong,.run-baseline > summary small,.quality-panel > summary strong,.quality-panel > summary small { display: block; }
.run-baseline > summary strong,.quality-panel > summary strong { margin-top: 3px; font-size: 18px; }
.run-baseline > summary small,.quality-panel > summary small { margin-top: 5px; color: var(--tertiary); font-size: 11px; }
.run-baseline > summary > i,.quality-panel > summary > i { color: #7192c8; font-size: 24px; font-style: normal; transition: transform .2s ease; }
.run-baseline[open] > summary > i,.quality-panel[open] > summary > i { transform: rotate(90deg); }
.run-note { margin: -7px 30px 18px; color: var(--secondary); font-size: 12px; }
.run-id { max-width: 420px; overflow: hidden; border: 1px solid rgba(91,141,239,.16); border-radius: 99px; padding: 9px 14px; color: #4f78c0; background: var(--blue-soft); font: 600 11px ui-monospace,SFMono-Regular,Menlo,monospace; text-overflow: ellipsis; white-space: nowrap; }
.run-grid { display: grid; grid-template-columns: 1.35fr repeat(4,1fr); margin: 0 24px 24px; border: 1px solid var(--line); border-radius: 17px; overflow: hidden; }
.run-grid > div { min-width: 0; padding: 16px 18px; border-right: 1px solid var(--line); background: rgba(255,255,255,.48); }
.run-grid > div:last-child { border-right: 0; }
.run-grid dt { color: var(--tertiary); font-size: 10px; }
.run-grid dd { margin: 8px 0 0; overflow: hidden; color: var(--text); font: 680 12px ui-monospace,SFMono-Regular,Menlo,monospace; text-overflow: ellipsis; white-space: nowrap; }

.forward-funnel-panel { overflow: visible; }
.forward-funnel { display: grid; grid-template-columns: repeat(11,auto); align-items: center; justify-content: space-between; gap: 12px; padding: 0 30px 22px; }
.forward-funnel > div { min-width: 115px; border: 1px solid var(--line); border-radius: 16px; padding: 15px 17px; background: rgba(247,250,254,.74); }
.forward-funnel small,.forward-funnel strong { display: block; }
.forward-funnel small { color: var(--tertiary); font-size: 10px; }
.forward-funnel strong { margin-top: 7px; font-size: 22px; }
.forward-funnel > i { color: #9bb0ce; font-size: 16px; font-style: normal; }
.reject-reasons { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 30px 20px; color: var(--tertiary); font-size: 11px; }
.reject-chip { border: 1px solid transparent; border-radius: 99px; padding: 7px 11px; color: var(--secondary); background: var(--muted); font-size: 11px; cursor: pointer; transition: .18s ease; }
.reject-chip:hover,.reject-chip:focus-visible { border-color: rgba(91,141,239,.25); color: #4f78c0; background: var(--blue-soft); outline: none; }
.evaluation-gates { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; border-top: 1px solid var(--line); padding: 18px 30px 22px; }
.evaluation-gates span { color: var(--secondary); font-size: 12px; }
.evaluation-gates b { display: block; margin-bottom: 4px; color: var(--text); font-size: 14px; }

.conditional-observation { margin-top: 20px; border: 1px solid rgba(91,141,239,.14); border-radius: 19px; padding: 20px; background: linear-gradient(135deg,rgba(237,244,255,.72),rgba(255,255,255,.58)); }
.conditional-observation h3 { margin: 0; font-size: 19px; }
.conditional-observation > div > p { margin: 8px 0 0; color: var(--secondary); font-size: 12px; line-height: 1.7; }
.observation-zone { display: grid; grid-template-columns: repeat(3,1fr); margin: 17px 0 0; border: 1px solid var(--line); border-radius: 15px; overflow: hidden; }
.observation-zone > div { padding: 13px 15px; border-right: 1px solid var(--line); background: rgba(255,255,255,.55); }
.observation-zone > div:last-child { border-right: 0; }
.observation-zone dt,.requirement-grid small,.observation-rules small { color: var(--tertiary); font-size: 9px; }
.observation-zone dd { margin: 7px 0 0; font-size: 14px; font-weight: 720; }
.observation-rules { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-top: 12px; }
.observation-rules p { margin: 0; border-radius: 13px; padding: 13px 14px; background: rgba(255,255,255,.53); }
.observation-rules small,.observation-rules span { display: block; }
.observation-rules span { margin-top: 7px; color: var(--secondary); font-size: 11px; line-height: 1.55; }
.requirement-grid { display: grid; grid-template-columns: repeat(6,1fr); gap: 8px; margin-top: 12px; }
.requirement-grid > span { min-width: 0; border-radius: 12px; padding: 11px 12px; background: rgba(255,255,255,.6); }
.requirement-grid small,.requirement-grid b,.requirement-grid em { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.requirement-grid b { margin-top: 6px; font-size: 13px; }
.requirement-grid em { margin-top: 4px; color: #6d87b2; font-size: 9px; font-style: normal; }

.lifecycle-strip { display: grid; grid-template-columns: repeat(6,1fr); gap: 3px; margin: 14px 0 3px; }
.lifecycle-strip span { position: relative; min-width: 0; color: var(--tertiary); text-align: center; }
.lifecycle-strip span::before { position: absolute; top: 5px; right: 50%; left: -50%; height: 2px; content: ""; background: var(--line); }
.lifecycle-strip span:first-child::before { display: none; }
.lifecycle-strip i { position: relative; z-index: 1; display: block; width: 11px; height: 11px; margin: 0 auto 6px; border: 2px solid #c9d3e1; border-radius: 50%; background: var(--solid); }
.lifecycle-strip small { display: block; overflow: hidden; font-size: 8px; font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }
.lifecycle-strip .done i,.lifecycle-strip .active i { border-color: var(--blue); background: var(--blue); }
.lifecycle-strip .done::before,.lifecycle-strip .active::before { background: rgba(91,141,239,.55); }
.lifecycle-strip .active { color: #4f78c0; }
.lifecycle-strip .active i { box-shadow: 0 0 0 4px rgba(91,141,239,.12); }
.candidate-progress { display: grid; grid-template-columns: 1fr 1.5fr; gap: 8px; margin: 10px 0; }
.candidate-progress span { min-width: 0; border-radius: 11px; padding: 9px 10px; background: var(--muted); }
.candidate-progress small,.candidate-progress b { display: block; }
.candidate-progress small { color: var(--tertiary); font-size: 8px; }
.candidate-progress b { margin-top: 4px; overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }

.quality-panel { margin-bottom: 18px; }
.quality-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; padding: 0 22px 22px; }
.quality-grid > div { min-width: 0; border: 1px solid var(--line); border-radius: 15px; padding: 14px; background: rgba(247,250,254,.7); }
.quality-grid small,.quality-grid strong,.quality-grid span { display: block; }
.quality-grid small { color: var(--tertiary); font-size: 9px; }
.quality-grid strong { margin-top: 7px; overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.quality-grid span { margin-top: 5px; color: var(--secondary); font-size: 9px; line-height: 1.45; }

.rejected-panel { margin: 0 24px 22px; border: 1px solid rgba(239,108,122,.13); border-radius: 18px; padding: 18px; background: rgba(255,248,249,.65); }
.rejected-panel > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.rejected-panel > header small,.rejected-panel > header strong,.rejected-panel > header span { display: block; }
.rejected-panel > header small { color: var(--tertiary); font-size: 9px; letter-spacing: .1em; }
.rejected-panel > header strong { margin-top: 4px; font-size: 17px; }
.rejected-panel > header span { margin-top: 4px; color: var(--secondary); font-size: 10px; }
.rejected-panel > header button { width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 50%; color: var(--secondary); background: var(--solid); font-size: 21px; cursor: pointer; }
.rejected-list { display: grid; gap: 8px; max-height: 430px; overflow: auto; overscroll-behavior: contain; }
.rejected-card { display: grid; grid-template-columns: minmax(210px,1.4fr) 1fr 1fr; align-items: center; gap: 16px; border: 1px solid var(--line); border-radius: 14px; padding: 13px 14px; background: rgba(255,255,255,.72); }
.rejected-card > div { min-width: 0; }
.rejected-card small,.rejected-card strong,.rejected-card code,.rejected-card span { display: block; }
.rejected-card small { color: var(--tertiary); font-size: 9px; }
.rejected-card strong { margin-top: 4px; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.rejected-card code { margin-top: 4px; color: #b25866; font-size: 9px; }
.rejected-card span { margin-top: 4px; color: var(--secondary); font-size: 9px; }

.research-archive { margin-top: 20px; }
.research-archive > summary { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 25px 30px; cursor: pointer; list-style: none; }
.research-archive > summary::-webkit-details-marker { display: none; }
.research-archive > summary strong,.research-archive > summary small { display: block; }
.research-archive > summary strong { font-size: 18px; }
.research-archive > summary small { margin-top: 6px; color: var(--tertiary); font-size: 12px; }
.research-archive > summary > i { color: #7192c8; font-size: 25px; font-style: normal; transition: transform .2s ease; }
.research-archive[open] > summary > i { transform: rotate(90deg); }
.research-archive .research-metrics { padding: 0 20px 6px; }
.archive-heading { padding-top: 26px; border-top: 1px solid var(--line); }

.strategy-rules-panel { margin-bottom: 18px; }
.strategy-rules-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 0 18px 18px; margin: 0; }
.strategy-rules-grid div { padding: 12px 14px; border: 1px solid var(--line); border-radius: 14px; background: rgba(255,255,255,.55); }
.strategy-rules-grid dt { color: var(--tertiary); font-size: 11px; }
.strategy-rules-grid dd { margin: 6px 0 0; font-size: 13px; font-weight: 650; line-height: 1.45; }
.paper-candidate { flex-direction: column; align-items: stretch; gap: 8px; }
.paper-candidate.eligible { border-color: rgba(34,184,137,.35); box-shadow: inset 0 0 0 1px rgba(34,184,137,.08); }
.paper-candidate b.ok { color: var(--mint); }
.paper-candidate b.blocked { color: var(--coral); }
.paper-reason { margin: 0; color: var(--secondary); font-size: 12px; line-height: 1.5; }
.paper-open-btn { align-self: flex-start; height: 34px; padding: 0 14px; font-size: 12px; }
.paper-purpose { margin: 0 18px 16px; color: var(--secondary); font-size: 13px; line-height: 1.55; }
.side-stats { display: flex; gap: 18px; margin: -6px 0 16px; padding: 0 4px; }
.side-stats span { display: flex; align-items: baseline; gap: 8px; color: var(--secondary); font-size: 12px; }
.side-stats b { color: var(--text); font-size: 13px; font-variant-numeric: tabular-nums; }
.paper-track { color: var(--tertiary); font-size: 11px; }
.paper-trade { margin-bottom: 10px; padding: 16px 18px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.62); }
.paper-trade .plan-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.paper-trade .plan-head strong { font-size: 14px; }
.paper-status { margin-left: auto; color: var(--secondary); font-size: 12px; }
.paper-trade .point-grid { grid-template-columns: repeat(4, minmax(90px, 1fr)); }
.paper-trade .ghost-button { margin-top: 10px; }

@media (max-width: 900px) {
  .partition-note { grid-template-columns: 1fr; }
  .strategy-rules-grid { grid-template-columns: 1fr 1fr; }
  .paper-trade .point-grid { grid-template-columns: 1fr 1fr; }
  .bucket-row { justify-content: flex-start; max-width: none; }
  .trade-costs { grid-template-columns: 1fr; }
  .run-grid { grid-template-columns: repeat(2,1fr); }
  .run-grid > div { border-bottom: 1px solid var(--line); }
  .run-grid > div:nth-child(2n) { border-right: 0; }
  .forward-funnel { grid-template-columns: repeat(3,1fr); }
  .forward-funnel > i { display: none; }
  .observation-rules { grid-template-columns: 1fr; }
  .requirement-grid { grid-template-columns: repeat(3,1fr); }
  .quality-grid { grid-template-columns: repeat(2,1fr); }
  .rejected-card { grid-template-columns: 1fr 1fr; }
  .rejected-card .trade-identity { grid-column: 1/-1; }
}

@media (max-width: 760px) {
  .run-baseline > summary,.quality-panel > summary { grid-template-columns: 1fr auto; padding: 18px; }
  .run-baseline > summary .run-id { grid-column: 1/-1; grid-row: 2; }
  .run-baseline > summary > i { grid-column: 2; grid-row: 1; }
  .run-note { margin: 0 18px 14px; }
  .run-id { max-width: 100%; }
  .run-grid { grid-template-columns: 1fr; margin: 0 14px 18px; }
  .run-grid > div { border-right: 0; }
  .forward-funnel { grid-template-columns: repeat(2,1fr); padding-inline: 18px; }
  .forward-funnel > div { min-width: 0; }
  .reject-reasons { padding-inline: 18px; }
  .evaluation-gates { grid-template-columns: 1fr; padding-inline: 18px; }
  .observation-zone { grid-template-columns: repeat(2,1fr); }
  .observation-zone > div:nth-child(2n) { border-right: 0; }
  .requirement-grid { grid-template-columns: repeat(2,1fr); }
  .lifecycle-strip small { display: none; }
  .candidate-progress { grid-template-columns: 1fr; }
  .quality-grid { grid-template-columns: 1fr 1fr; padding-inline: 14px; }
  .rejected-panel { margin-inline: 14px; padding: 14px; }
  .rejected-card { grid-template-columns: 1fr; }
  .rejected-card .trade-identity { grid-column: auto; }
}

@media (prefers-color-scheme: dark) {
  .run-baseline,.conditional-observation { background: linear-gradient(135deg,rgba(36,50,72,.92),rgba(25,31,41,.86)); }
  .run-grid > div,.forward-funnel > div,.observation-zone > div,
  .observation-rules p,.requirement-grid > span,.quality-grid > div,
  .candidate-progress span,.rejected-card { background: rgba(31,39,51,.72); }
  .rejected-panel { background: rgba(53,34,40,.42); }
  .ghost-button { background: rgba(31,39,51,.78); }
}
