:root {
  --paper: #f7f5ef;
  --ink: #171717;
  --muted: #6f6a5f;
  --line: #d9d2c3;
  --panel: #fffdf8;
  --panel-2: #ece6d8;
  --accent: #0b5fff;
  --accent-2: #ffb000;
  --good: #087f5b;
  --bad: #c92a2a;
  --shadow: 0 18px 50px rgba(34, 27, 12, .10);
}

/* ─── Daily review: editorial closing ledger ───────────────── */
.daily-review-page {
  --review-blue: #0047ff;
  --review-orange: #ff9d00;
  --review-black: #10100f;
  --review-wash: #efe9da;
  position: relative;
}
.daily-review-page::before {
  content: "EOD";
  position: absolute;
  top: -22px;
  right: 0;
  z-index: -1;
  color: rgba(23, 23, 23, .035);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(92px, 14vw, 210px);
  font-weight: 900;
  line-height: .8;
  letter-spacing: -.08em;
  pointer-events: none;
}
.review-masthead {
  align-items: end;
  min-height: 132px;
  margin-bottom: 18px;
  padding: 20px 0 16px;
  border-top: 6px solid var(--review-black);
  border-bottom: 1px solid var(--review-black);
}
.review-title-block {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 18px;
  align-items: end;
}
.review-kicker {
  grid-column: 1 / -1;
  margin-bottom: 12px;
  color: var(--review-blue);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .22em;
}
.review-title-block h1 {
  font-family: Georgia, "Songti SC", "STSong", serif;
  font-size: clamp(44px, 5vw, 76px);
  font-weight: 800;
  letter-spacing: -.07em;
}
.review-title-block p {
  max-width: 560px;
  margin: 0 0 5px;
  padding-left: 18px;
  border-left: 1px solid var(--review-black);
  color: #474238;
  font-size: 13px;
  line-height: 1.7;
}
.review-toolbar {
  flex-wrap: nowrap;
}
.review-refresh {
  border-color: var(--review-black);
  background: var(--review-black);
  color: #fffdf8;
  font-weight: 900;
}
.review-refresh:hover {
  background: var(--review-blue);
  border-color: var(--review-blue);
}
.review-status {
  margin-bottom: 14px;
  border-left: 5px solid var(--review-black);
  background: rgba(255, 253, 248, .78);
}
.review-status.review-ok { border-left-color: var(--good); }
.review-status.review-warning { border-left-color: var(--review-orange); }
.review-status.review-partial { border-left-color: var(--bad); }
.review-status-meta {
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.review-market-strip {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid var(--review-black);
  background: var(--panel);
  animation: review-rise .34s ease both;
}
.review-market-card {
  position: relative;
  height: auto;
  min-height: 206px;
  padding: 16px 18px 14px;
  border: 0;
  border-right: 1px solid var(--review-black);
  background: rgba(255, 253, 248, .92);
  text-align: left;
  transition: background .16s ease, color .16s ease, transform .16s ease;
}
.review-market-card:last-child { border-right: 0; }
.review-market-card:hover { transform: translateY(-2px); }
.review-market-card.selected {
  background: var(--review-black);
  color: #fffdf8;
}
.review-market-card::after {
  content: "";
  position: absolute;
  left: 18px;
  right: 18px;
  bottom: 0;
  height: 4px;
  background: var(--review-blue);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .2s ease;
}
.review-market-card.selected::after { transform: scaleX(1); }
.review-market-topline,
.review-market-regime,
.review-market-metrics,
.review-quality-head,
.review-ranked-main,
.review-portfolio-main {
  display: flex;
  justify-content: space-between;
  gap: 10px;
}
.review-market-topline {
  align-items: center;
  margin-bottom: 20px;
  font-size: 11px;
  font-weight: 800;
}
.review-market-topline strong {
  font-size: 15px;
  letter-spacing: .06em;
}
.review-market-date { color: var(--muted); font-variant-numeric: tabular-nums; }
.review-market-card.selected .review-market-date,
.review-market-card.selected .review-card-note { color: rgba(255, 253, 248, .62); }
.review-market-regime {
  display: grid;
  gap: 6px;
  margin-bottom: 20px;
}
.review-market-regime strong {
  font-family: Georgia, "Songti SC", serif;
  font-size: clamp(24px, 2.3vw, 36px);
  line-height: 1;
  letter-spacing: -.05em;
}
.review-card-note {
  color: var(--muted);
  font-size: 11px;
}
.review-market-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  padding-top: 12px;
  border-top: 1px solid currentColor;
}
.review-market-metric { display: grid; gap: 3px; min-width: 0; }
.review-market-metric span { color: var(--muted); font-size: 9px; }
.review-market-card.selected .review-market-metric span { color: rgba(255, 253, 248, .58); }
.review-market-metric strong { font-size: 14px; font-variant-numeric: tabular-nums; }
.review-focus-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(280px, .45fr);
  gap: 0;
  margin-top: 16px;
  border: 1px solid var(--review-black);
  background: var(--panel);
  animation: review-rise .34s .05s ease both;
}
.review-briefing {
  min-height: 174px;
  padding: 22px 24px;
  border-right: 1px solid var(--review-black);
  background:
    linear-gradient(90deg, transparent 0 74%, rgba(0, 71, 255, .06) 74% 100%),
    var(--panel);
}
.review-briefing-label,
.review-quality-label {
  display: block;
  margin-bottom: 18px;
  color: var(--review-blue);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .16em;
}
.review-briefing h2 {
  margin: 0 0 10px;
  font-family: Georgia, "Songti SC", serif;
  font-size: clamp(28px, 3.2vw, 48px);
  line-height: 1.08;
  letter-spacing: -.05em;
}
.review-briefing p {
  max-width: 760px;
  margin: 0;
  color: #494439;
  font-size: 13px;
  line-height: 1.65;
}
.review-briefing-meta {
  display: flex;
  gap: 8px;
  margin-top: 16px;
  flex-wrap: wrap;
}
.review-mini-pill,
.review-scope-pill,
.review-quality-chip {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 0 8px;
  border: 1px solid var(--line);
  background: rgba(255, 253, 248, .72);
  font-size: 10px;
  font-weight: 800;
}
.review-quality-ledger { padding: 20px; background: var(--review-wash); }
.review-quality-head { align-items: center; margin-bottom: 12px; }
.review-quality-score {
  font-family: Georgia, serif;
  font-size: 31px;
  font-weight: 900;
  line-height: 1;
}
.review-quality-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }
.review-quality-list li {
  padding-top: 8px;
  border-top: 1px solid rgba(23, 23, 23, .18);
  font-size: 11px;
  line-height: 1.4;
}
.review-quality-list li::before { content: "— "; color: var(--review-orange); font-weight: 900; }
.review-evidence-section,
.review-panel {
  margin-top: 16px;
  border: 1px solid var(--review-black);
  background: var(--panel);
  animation: review-rise .34s .1s ease both;
}
.review-section-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  min-height: 58px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--review-black);
}
.review-section-head > div { display: flex; align-items: center; gap: 11px; }
.review-section-head strong { display: block; font-size: 13px; }
.review-section-head small { display: block; margin-top: 2px; color: var(--muted); font-size: 10px; }
.review-index {
  color: var(--review-blue);
  font-family: Georgia, serif;
  font-size: 24px;
  font-weight: 900;
  line-height: 1;
}
.review-evidence-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.review-evidence-card {
  min-height: 134px;
  padding: 18px;
  border-right: 1px solid var(--review-black);
}
.review-evidence-card:last-child { border-right: 0; }
.review-evidence-card span { color: var(--muted); font-size: 10px; font-weight: 800; }
.review-evidence-card strong {
  display: block;
  margin: 16px 0 8px;
  font-family: Georgia, "Songti SC", serif;
  font-size: 25px;
  line-height: 1;
}
.review-evidence-card p { margin: 0; color: #4e493e; font-size: 11px; line-height: 1.45; }
.review-decision-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(300px, .9fr);
  gap: 16px;
}
.review-section-head.compact { min-height: 64px; }
.review-ranked-list,
.review-portfolio-list { display: grid; }
.review-ranked-row,
.review-portfolio-row {
  display: grid;
  gap: 9px;
  padding: 13px 15px;
  border-bottom: 1px solid var(--line);
}
.review-ranked-row:last-child,
.review-portfolio-row:last-child { border-bottom: 0; }
.review-rank {
  width: 22px;
  color: var(--review-blue);
  font-family: Georgia, serif;
  font-size: 18px;
  font-weight: 900;
}
.review-ranked-main { align-items: start; }
.review-ranked-name { min-width: 0; flex: 1; }
.review-ranked-name strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.review-ranked-name span { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.review-ranked-state { font-size: 10px; font-weight: 900; }
.review-ranked-metrics { display: flex; gap: 12px; padding-left: 34px; color: var(--muted); font-size: 10px; }
.review-watch-columns { display: grid; grid-template-columns: 1fr 1fr; }
.review-watch-column { min-width: 0; }
.review-watch-column + .review-watch-column { border-left: 1px solid var(--review-black); }
.review-watch-title {
  padding: 9px 12px;
  border-bottom: 1px solid var(--line);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
}
.review-watch-title.risk { color: var(--bad); }
.review-watch-item { padding: 11px 12px; border-bottom: 1px solid var(--line); }
.review-watch-item:last-child { border-bottom: 0; }
.review-watch-item strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.review-watch-item span { display: block; margin-top: 4px; color: var(--muted); font-size: 9px; }
.review-portfolio-main { align-items: start; }
.review-portfolio-main strong { font-size: 12px; }
.review-action-badge { color: var(--review-blue); font-size: 10px; font-weight: 900; }
.review-action-badge.warning { color: var(--bad); }
.review-portfolio-row p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
.review-portfolio-metrics { display: flex; gap: 12px; color: var(--muted); font-size: 10px; }
.review-empty { padding: 20px 16px; color: var(--muted); font-size: 11px; line-height: 1.5; }
.review-lineage {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
}
.review-positive { color: var(--good) !important; }
.review-negative { color: var(--bad) !important; }
.review-warning-text { color: #9b5c00 !important; }
@keyframes review-rise {
  from { opacity: 0; transform: translateY(7px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .review-market-strip,
  .review-focus-grid,
  .review-evidence-section,
  .review-panel { animation: none; }
  .review-market-card { transition: none; }
}
@media (max-width: 1120px) {
  .review-decision-grid { grid-template-columns: 1fr 1fr; }
  .review-portfolio-panel { grid-column: 1 / -1; }
}
@media (max-width: 820px) {
  .review-market-strip,
  .review-focus-grid,
  .review-evidence-grid,
  .review-decision-grid { grid-template-columns: 1fr; }
  .review-market-card { border-right: 0; border-bottom: 1px solid var(--review-black); }
  .review-market-card:last-child { border-bottom: 0; }
  .review-briefing { border-right: 0; border-bottom: 1px solid var(--review-black); }
  .review-evidence-card { border-right: 0; border-bottom: 1px solid var(--review-black); }
  .review-evidence-card:last-child { border-bottom: 0; }
  .review-portfolio-panel { grid-column: auto; }
}
@media (max-width: 720px) {
  .momentum-page .page-head { gap: 8px; }
  .momentum-toolbar {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) auto auto;
    gap: 6px;
    width: 100%;
  }
  .momentum-toolbar .momentum-adhoc-code-input {
    grid-column: 1 / -1;
    width: 100%;
  }
  .momentum-date-control { width: 100%; min-width: 0; }
  .momentum-toolbar input[type="date"],
  .momentum-toolbar input.monday-date-input { width: 100%; min-width: 0; padding: 0 7px; font-size: 12px; }
  .momentum-tech-filter { width: auto; min-width: 82px; height: 38px; justify-content: center; padding: 0 7px; white-space: nowrap; }
  .momentum-page #momentumRefreshBtn { width: auto; min-width: 52px; height: 38px; padding: 0 9px; }
  .review-masthead { min-height: 0; align-items: start; }
  .review-title-block { display: block; }
  .review-title-block h1 { font-size: 46px; }
  .review-title-block p { margin-top: 12px; padding-left: 12px; }
  .review-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) 92px; width: 100%; }
  .review-toolbar label { min-width: 0; }
  .review-refresh { width: 100%; align-self: end; }
  .review-market-card { min-height: 176px; }
  .review-market-metrics { gap: 6px; }
  .review-watch-columns { grid-template-columns: 1fr; }
  .review-watch-column + .review-watch-column { border-left: 0; border-top: 1px solid var(--review-black); }
  .review-lineage { display: grid; }
}

/* ─── Daily review v2: compact project-native board ────────── */
.daily-review-page::before { display: none; }
.daily-review-page {
  --review-blue: var(--accent);
  --review-orange: var(--accent-2);
  --review-black: var(--ink);
  --review-wash: var(--panel-2);
}
.daily-review-page .review-masthead {
  min-height: 0;
  margin-bottom: 10px;
  padding: 2px 0 12px;
  border-top: 0;
  border-bottom: 1px solid var(--line);
  align-items: center;
}
.daily-review-page .review-title-block { display: block; }
.daily-review-page .review-title-block h1 {
  margin: 0;
  font-family: inherit;
  font-size: 25px;
  letter-spacing: -.02em;
}
.daily-review-page .review-title-block p {
  margin: 4px 0 0;
  padding: 0;
  border: 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}
.daily-review-page .review-toolbar label > span:first-child {
  color: var(--muted);
  font-size: 10px;
}
.daily-review-page .review-refresh {
  border-color: var(--accent);
  border-radius: 7px;
  background: var(--accent);
  color: #fff;
}
.daily-review-page .review-status {
  min-height: 34px;
  margin-bottom: 10px;
  padding-block: 7px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--ink);
  border-radius: 7px;
  background: var(--panel);
}
.daily-review-page .review-market-strip {
  gap: 8px;
  border: 0;
  background: transparent;
  animation: none;
}
.daily-review-page .review-market-card {
  min-height: 108px;
  padding: 11px 12px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel);
  color: var(--ink);
  box-shadow: 0 3px 12px rgba(34, 27, 12, .035);
}
.daily-review-page .review-market-card:last-child { border: 1px solid var(--line); }
.daily-review-page .review-market-card:hover {
  transform: none;
  border-color: rgba(11, 95, 255, .45);
}
.daily-review-page .review-market-card.selected {
  border: 2px solid var(--accent);
  padding: 10px 11px 9px;
  background: #f7f9ff;
  color: var(--ink);
}
.daily-review-page .review-market-card::after { display: none; }
.daily-review-page .review-market-card.selected .review-market-date,
.daily-review-page .review-market-card.selected .review-card-note,
.daily-review-page .review-market-card.selected .review-market-metric span { color: var(--muted); }
.daily-review-page .review-market-topline {
  margin-bottom: 7px;
  font-size: 10px;
}
.daily-review-page .review-market-topline strong { font-size: 13px; }
.daily-review-page .review-market-regime {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}
.daily-review-page .review-market-regime strong {
  font-family: inherit;
  font-size: 18px;
  letter-spacing: -.02em;
}
.daily-review-page .review-card-note { font-size: 9px; }
.daily-review-page .review-market-metrics {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  padding-top: 7px;
  border-top: 1px solid var(--line);
}
.daily-review-page .review-market-metric { gap: 1px; }
.daily-review-page .review-market-metric span { font-size: 8px; }
.daily-review-page .review-market-metric strong { font-size: 12px; }
.review-overview-grid,
.review-structure-grid,
.review-plan-grid {
  display: grid;
  gap: 12px;
  margin-top: 12px;
  align-items: start;
}
.review-overview-grid { grid-template-columns: minmax(0, 1.55fr) minmax(255px, .45fr); }
.review-structure-grid { grid-template-columns: minmax(0, 1.25fr) minmax(330px, .75fr); }
.review-plan-grid { grid-template-columns: minmax(0, 1.4fr) minmax(300px, .6fr); }
.daily-review-page .review-panel {
  min-width: 0;
  margin-top: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--panel);
  box-shadow: 0 4px 16px rgba(34, 27, 12, .035);
  animation: none;
}
.daily-review-page .review-section-head {
  min-height: 44px;
  padding: 7px 11px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .22);
}
.daily-review-page .review-section-head > div { gap: 8px; }
.daily-review-page .review-section-head strong { font-size: 12px; }
.daily-review-page .review-section-head small { margin-top: 1px; font-size: 9px; }
.daily-review-page .review-index {
  min-width: 21px;
  color: var(--accent);
  font-family: inherit;
  font-size: 13px;
  font-weight: 900;
}
.daily-review-page .review-scope-pill {
  min-height: 20px;
  padding: 0 7px;
  border-color: #cbd8ff;
  border-radius: 999px;
  background: #f3f6ff;
  color: #1747b8;
  font-size: 9px;
}
.review-cycle {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  padding: 13px 14px 11px;
}
.review-cycle-stage {
  display: grid;
  place-items: center;
  min-height: 65px;
  border: 1px solid #cbd8ff;
  border-radius: 7px;
  background: #f3f6ff;
  text-align: center;
}
.review-cycle-stage strong { color: var(--accent); font-size: 20px; }
.review-cycle-stage span { margin-top: 2px; color: var(--muted); font-size: 9px; }
.review-cycle-stage.warning { border-color: #f0cf8b; background: #fff8e9; }
.review-cycle-stage.warning strong { color: #9b5c00; }
.review-cycle-stage.risk { border-color: #efb4b4; background: #fff3f3; }
.review-cycle-stage.risk strong { color: var(--bad); }
.review-cycle-copy strong { display: block; margin-bottom: 5px; font-size: 12px; }
.review-cycle-copy p { margin: 0; color: #4f4a40; font-size: 11px; line-height: 1.5; }
.review-cycle-evidence {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--line);
}
.review-cycle-metric {
  min-width: 0;
  padding: 9px 10px;
  border-right: 1px solid var(--line);
}
.review-cycle-metric:last-child { border-right: 0; }
.review-cycle-metric span,
.review-cycle-metric small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-cycle-metric span { color: var(--muted); font-size: 8px; }
.review-cycle-metric strong { display: block; margin: 2px 0; font-size: 13px; }
.review-cycle-metric small { color: var(--muted); font-size: 8px; }
.daily-review-page .review-quality-ledger { padding: 11px 12px 8px; background: transparent; }
.daily-review-page .review-quality-head { margin: 0; align-items: center; }
.review-quality-summary strong { display: block; font-size: 13px; }
.review-quality-summary span { color: var(--muted); font-size: 9px; }
.daily-review-page .review-quality-score {
  color: var(--accent);
  font-family: inherit;
  font-size: 20px;
}
.daily-review-page .review-quality-list { gap: 4px; margin-top: 8px; }
.daily-review-page .review-quality-list li {
  padding: 5px 0 0 10px;
  border-top: 1px solid var(--line);
  font-size: 9px;
}
.daily-review-page .review-quality-list li::before { content: ""; }
.review-data-gaps {
  padding: 7px 12px 10px;
  border-top: 1px dashed var(--line);
}
.review-data-gaps strong { display: block; margin-bottom: 5px; color: #9b5c00; font-size: 9px; }
.review-gap-list { display: flex; flex-wrap: wrap; gap: 4px; }
.review-gap-chip {
  padding: 3px 6px;
  border: 1px solid #efd8a8;
  border-radius: 4px;
  background: #fff9ec;
  color: #77501b;
  font-size: 8px;
  line-height: 1.25;
}
.review-table-wrap { overflow-x: auto; }
.review-mainline-table {
  width: 100%;
  min-width: 570px;
  border-collapse: collapse;
  table-layout: fixed;
}
.review-mainline-table th,
.review-mainline-table td {
  padding: 8px 9px;
  border-bottom: 1px solid var(--line);
  text-align: right;
  font-size: 9px;
  font-variant-numeric: tabular-nums;
}
.review-mainline-table th { color: var(--muted); font-size: 8px; font-weight: 700; }
.review-mainline-table th:first-child,
.review-mainline-table td:first-child { width: 28%; text-align: left; }
.review-mainline-table tr:last-child td { border-bottom: 0; }
.review-mainline-name strong { display: block; font-size: 11px; }
.review-mainline-name span { display: block; margin-top: 2px; color: var(--muted); font-size: 8px; }
.review-stage-badge {
  display: inline-flex;
  padding: 2px 5px;
  border-radius: 4px;
  background: #eef3ff;
  color: #1747b8;
  font-size: 8px;
  font-weight: 800;
}
.review-stage-badge.warning { background: #fff2d9; color: #8b5700; }
.review-stage-badge.risk { background: #fff0f0; color: var(--bad); }
.review-flow-cell span { display: block; white-space: nowrap; }
.review-flow-cell small { color: var(--muted); font-size: 8px; }
.review-core-list { display: grid; }
.review-core-row {
  display: grid;
  grid-template-columns: minmax(112px, .8fr) 64px minmax(0, 1.35fr);
  gap: 8px;
  align-items: center;
  padding: 8px 10px;
  border-bottom: 1px solid var(--line);
}
.review-core-row:last-child { border-bottom: 0; }
.review-core-name strong,
.review-core-name span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-core-name strong { font-size: 10px; }
.review-core-name span { margin-top: 2px; color: var(--muted); font-size: 8px; }
.review-core-evidence { min-width: 0; }
.review-core-evidence span,
.review-core-evidence small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-core-evidence span { font-size: 9px; }
.review-core-evidence small { margin-top: 2px; color: var(--muted); font-size: 8px; }
.review-next-day { padding: 11px 12px; }
.review-posture {
  margin-bottom: 9px;
  padding: 7px 9px;
  border-left: 3px solid var(--accent);
  background: #f3f6ff;
  font-size: 10px;
  line-height: 1.4;
}
.review-plan-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.review-plan-table th,
.review-plan-table td {
  min-width: 0;
  padding: 6px 7px;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
  overflow-wrap: anywhere;
  word-break: break-word;
  font-size: 8px;
  line-height: 1.4;
}
.review-plan-table th { color: var(--muted); text-align: left; }
.review-plan-table th:first-child { width: 24%; }
.review-plan-table tr:last-child td { border-bottom: 0; }
.review-plan-object strong { display: block; font-size: 9px; }
.review-plan-object span { color: var(--muted); font-size: 8px; }
.review-plan-invalid { color: var(--bad); }
.daily-review-page .review-portfolio-row { gap: 5px; padding: 8px 10px; }
.daily-review-page .review-portfolio-main strong { font-size: 10px; }
.daily-review-page .review-action-badge { font-size: 8px; }
.daily-review-page .review-portfolio-row p,
.daily-review-page .review-portfolio-metrics { font-size: 8px; }
.daily-review-page .review-empty { padding: 14px 12px; font-size: 9px; }
.daily-review-page .review-lineage { margin-top: 10px; padding-top: 7px; font-size: 8px; }
@media (max-width: 1120px) {
  .review-overview-grid,
  .review-structure-grid,
  .review-plan-grid { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
  .daily-review-page .review-market-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .daily-review-page .review-market-card,
  .daily-review-page .review-market-card:last-child { border: 1px solid var(--line); }
  .daily-review-page .review-market-card.selected { border: 2px solid var(--accent); }
  .review-cycle-evidence { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-cycle-metric:nth-child(2) { border-right: 0; }
  .review-cycle-metric:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}
@media (max-width: 620px) {
  .daily-review-page .review-masthead { align-items: stretch; }
  .daily-review-page .review-title-block h1 { font-size: 22px; }
  .daily-review-page .review-toolbar { grid-template-columns: minmax(0, 1fr) 82px; }
  .daily-review-page .review-market-strip { grid-template-columns: 1fr; }
  .daily-review-page .review-market-card { min-height: 92px; }
  .review-cycle { grid-template-columns: 90px minmax(0, 1fr); padding: 10px; }
  .review-cycle-stage { min-height: 58px; }
  .review-cycle-stage strong { font-size: 17px; }
  .review-mainline-table,
  .review-mainline-table tbody { display: block; min-width: 0; }
  .review-mainline-table thead { display: none; }
  .review-mainline-table tr {
    display: grid;
    grid-template-columns: minmax(105px, 1fr) 56px repeat(3, 38px);
    gap: 3px;
    align-items: center;
    padding: 7px 8px;
    border-bottom: 1px solid var(--line);
  }
  .review-mainline-table td {
    min-width: 0;
    padding: 0;
    border: 0;
    font-size: 8px;
  }
  .review-mainline-table td:first-child { width: auto; }
  .review-mainline-table td:last-child { grid-column: 1 / -1; margin-top: 2px; }
  .review-flow-cell { display: flex; justify-content: space-between; gap: 8px; color: var(--muted); }
  .review-plan-table,
  .review-plan-table tbody,
  .review-plan-table tr,
  .review-plan-table td { display: block; width: 100%; }
  .review-plan-table thead { display: none; }
  .review-plan-table tr { padding: 7px 0; border-bottom: 1px solid var(--line); }
  .review-plan-table tr:last-child { border-bottom: 0; }
  .review-plan-table td { padding: 2px 4px; border: 0; }
  .review-plan-table td:nth-child(2)::before {
    content: "触发：";
    color: var(--muted);
    font-weight: 800;
  }
  .review-plan-table td:nth-child(3)::before {
    content: "失效：";
    color: var(--bad);
    font-weight: 800;
  }
  .review-core-row { grid-template-columns: minmax(105px, .8fr) 58px minmax(0, 1.2fr); }
  .daily-review-page .review-lineage { display: grid; }
}

/* Daily review v12: decision-first layout and unified drill-down */
.daily-review-page {
  --review-command-edge: var(--ink);
}
.daily-review-page,
.review-detail-shell {
  letter-spacing: 0;
}
.daily-review-page .review-market-tabs {
  display: inline-flex;
  width: auto;
  max-width: 100%;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: rgba(255, 253, 248, .82);
}
.daily-review-page .review-market-tabs button {
  min-width: 84px;
  min-height: 36px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  font-size: 14px;
  font-weight: 800;
}
.daily-review-page .review-market-tabs button:hover,
.daily-review-page .review-market-tabs button:focus-visible {
  background: var(--panel-2);
  color: var(--ink);
}
.daily-review-page .review-market-tabs button.active {
  background: var(--ink);
  color: var(--panel);
}
.review-brief-v12 {
  --review-command-edge: var(--ink);
  display: grid;
  grid-template-columns: minmax(300px, 1.05fr) minmax(360px, 1.25fr);
  grid-template-areas:
    "state facts"
    "decisions decisions";
  overflow: hidden;
  border: 1px solid var(--ink);
  border-left: 5px solid var(--review-command-edge);
  border-radius: 6px;
  background: var(--panel);
  box-shadow: 0 10px 28px rgba(34, 27, 12, .08);
}
.review-brief-v12.review-command-positive { --review-command-edge: var(--good); }
.review-brief-v12.review-command-warning { --review-command-edge: #946200; }
.review-brief-v12.review-command-risk { --review-command-edge: var(--bad); }
.review-brief-state {
  grid-area: state;
  min-width: 0;
  padding: 20px;
  border-right: 1px solid var(--line);
}
.review-brief-state .review-command-call {
  flex-wrap: wrap;
  align-items: center;
  margin-top: 12px;
}
.review-brief-state .review-command-call strong {
  color: var(--review-command-edge);
  font-size: 32px;
  letter-spacing: 0;
}
.review-brief-state .review-command-call > span:not(.review-help) {
  font-size: 13px;
}
.review-brief-state > p {
  margin: 13px 0 0;
  color: #413b32;
  font-size: 15px;
  line-height: 1.65;
}
.review-brief-facts {
  grid-area: facts;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  min-width: 0;
}
.review-brief-facts .review-command-metric {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 154px;
  padding: 18px;
  border-right: 1px solid var(--line);
  border-bottom: 0;
}
.review-brief-facts .review-command-metric:last-child { border-right: 0; }
.review-brief-facts .review-command-metric span { font-size: 13px; }
.review-brief-facts .review-command-metric strong {
  margin: 8px 0 6px;
  font-size: 24px;
}
.review-brief-facts .review-command-metric small {
  font-size: 12px;
  line-height: 1.5;
}
.review-brief-decisions {
  grid-area: decisions;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--ink);
  background: rgba(236, 230, 216, .22);
}
.review-brief-decisions .review-command-summary-cell {
  padding: 14px 18px;
}
.review-brief-decisions .review-command-summary-cell span,
.review-brief-decisions .review-command-summary-cell small { font-size: 12px; }
.review-brief-decisions .review-command-summary-cell strong {
  overflow: visible;
  margin-top: 5px;
  font-size: 17px;
  text-overflow: clip;
  white-space: normal;
}
.review-brief-decisions .review-command-summary-cell small {
  overflow: visible;
  line-height: 1.45;
  text-overflow: clip;
  white-space: normal;
}
.review-trust-entry {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 32px;
  margin-top: 14px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}
.review-trust-entry::before {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--good);
  content: "";
}
.review-trust-entry.warning::before { background: var(--accent-2); }
.review-trust-entry.partial::before { background: var(--bad); }
.review-trust-entry b { color: var(--accent); font-size: 12px; }
.review-trust-entry:hover,
.review-trust-entry:focus-visible {
  border-color: var(--ink);
  background: rgba(236, 230, 216, .34);
  color: var(--ink);
}
.review-help {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  vertical-align: middle;
}
.review-help > button {
  display: inline-grid;
  width: 22px;
  min-width: 22px;
  height: 22px;
  min-height: 22px;
  aspect-ratio: 1;
  flex: 0 0 22px;
  place-items: center;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--panel);
  color: var(--muted);
  font-size: 13px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}
.review-help > button:hover,
.review-help > button:focus-visible,
.review-help.open > button {
  border-color: var(--accent);
  color: var(--accent);
}
.review-help > [role="tooltip"] {
  display: none;
}
.review-help:hover > [role="tooltip"],
.review-help:focus-within > [role="tooltip"],
.review-help.open > [role="tooltip"] {
  display: none;
}

.global-help-tooltip {
  position: fixed;
  z-index: 10020;
  box-sizing: border-box;
  width: min(360px, calc(100vw - 24px));
  overflow: auto;
  padding: 11px 13px;
  border: 1px solid var(--ink);
  border-radius: 4px;
  background: var(--ink);
  box-shadow: 0 16px 36px rgba(23, 23, 23, .24);
  color: var(--panel);
  font-size: 12px;
  font-weight: 650;
  line-height: 1.6;
  white-space: normal;
  overflow-wrap: anywhere;
}
.global-help-tooltip[hidden] { display: none; }
.viewport-bounded-popover {
  position: fixed !important;
  right: auto !important;
  bottom: auto !important;
  box-sizing: border-box;
  max-width: calc(100vw - 24px) !important;
  overflow: auto;
}
.review-workbench.trend-overview-panel {
  overflow: hidden;
  border-radius: 0;
}
.review-workbench .review-workbench-nav {
  min-height: 52px;
  justify-content: flex-start;
  padding: 8px 12px;
}
.review-workbench .section-head {
  gap: 18px;
  min-height: 74px;
  padding: 12px 16px;
}
.review-workbench .section-head strong { font-size: 16px; }
.review-workbench .section-head span { font-size: 13px; }
.review-workbench .trend-state-grid {
  display: flex;
  width: auto;
  max-width: none;
  gap: 4px;
  overflow-x: auto;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 0;
  background: rgba(255, 253, 248, .7);
}
.review-workbench .trend-state-card {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
  min-width: auto;
  min-height: 36px;
  padding: 0 11px;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.review-workbench .trend-state-card span,
.review-workbench .trend-state-card strong {
  margin: 0;
  font-size: 13px;
  line-height: 1;
}
.review-workbench .trend-state-card strong {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.review-workbench .trend-state-card:hover,
.review-workbench .trend-state-card:focus-visible { background: var(--panel-2); }
.review-workbench .trend-state-card.active {
  background: var(--ink);
  color: var(--panel);
}
.review-workbench .trend-state-card.active strong { color: rgba(255, 253, 248, .7); }
.daily-review-page [data-review-detail] {
  cursor: pointer;
  transition: background .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.daily-review-page [data-review-detail]:hover,
.daily-review-page [data-review-detail]:focus-visible {
  background-color: rgba(11, 95, 255, .045);
  box-shadow: inset 3px 0 0 var(--accent);
  outline: 0;
}
.daily-review-page .review-insight-row,
.daily-review-page .review-signal-cohort-row,
.daily-review-page .review-pulse-row,
.daily-review-page .review-signal-path { font-size: 14px; }
.daily-review-page .review-insight-identity > small,
.daily-review-page .review-insight-evidence span,
.daily-review-page .review-signal-cohort-row div span,
.daily-review-page .review-signal-matured-list span,
.daily-review-page .review-industry-pulse > header span,
.daily-review-page .review-industry-pulse > header small { font-size: 12px; }
.daily-review-page .review-stage-badge,
.daily-review-page .review-plan-status-v4 { font-size: 12px; }
.review-core-card-v3,
.review-portfolio-grid-v3 article { border-radius: 6px; }
.review-core-card-v3 header span:not(.review-stage-badge),
.review-core-metrics-v3 span,
.review-core-card-v3 dt,
.review-core-card-v3 dd,
.review-portfolio-grid-v3 article > div { font-size: 12px; }
.review-core-card-v3 > p,
.review-portfolio-grid-v3 p,
.review-plan-list-v3 p,
.review-plan-validation-result-v4 p,
.review-plan-validation-list-v4 details { font-size: 14px; }
.review-plan-list-v3 div > span,
.review-plan-review-head-v4 span,
.review-next-plan-v4 > header span,
.review-plan-history-v4 > header span,
.review-plan-review-head-v4 small,
.review-plan-summary-v4 span,
.review-plan-summary-v4 small,
.review-plan-validation-id-v4 span,
.review-plan-validation-list-v4 details p b,
.review-plan-history-v4 b,
.review-plan-history-v4 em { font-size: 12px; }
.daily-review-page .review-lineage {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
}
.daily-review-page .review-lineage > button {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--accent);
  font-size: 12px;
  font-weight: 800;
}

.review-detail-shell {
  align-items: stretch;
  justify-content: flex-end;
  padding: 0;
  background: rgba(23, 23, 23, .34);
}
.review-detail-drawer {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  width: min(520px, 92vw);
  height: 100%;
  overflow: hidden;
  border-left: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: -18px 0 46px rgba(23, 23, 23, .18);
  animation: review-drawer-in .18s ease both;
}
@keyframes review-drawer-in {
  from { opacity: 0; transform: translateX(18px); }
  to { opacity: 1; transform: translateX(0); }
}
.review-detail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 20px;
  border-bottom: 1px solid var(--ink);
  background: rgba(236, 230, 216, .3);
}
.review-detail-head span,
.review-detail-head strong { display: block; }
.review-detail-head span {
  color: var(--accent);
  font-size: 12px;
  font-weight: 900;
}
.review-detail-head strong {
  margin-top: 5px;
  font-size: 22px;
  line-height: 1.25;
}
.review-detail-head button {
  display: grid;
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  place-items: center;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--panel);
  color: var(--ink);
  font-size: 22px;
  line-height: 1;
}
.review-detail-head button:hover,
.review-detail-head button:focus-visible { border-color: var(--ink); background: var(--panel-2); }
.review-detail-body {
  overflow-y: auto;
  padding: 0 20px 24px;
}
.review-detail-section {
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}
.review-detail-section:last-child { border-bottom: 0; }
.review-detail-section h3 {
  margin: 0 0 12px;
  font-size: 15px;
}
.review-detail-lead {
  display: grid;
  gap: 12px;
}
.review-detail-lead p {
  margin: 0;
  color: #413b32;
  font-size: 15px;
  line-height: 1.65;
}
.review-detail-trust {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 6px;
}
.review-detail-trust > div { padding: 14px; }
.review-detail-trust > div + div { border-left: 1px solid var(--line); }
.review-detail-trust span,
.review-detail-trust strong { display: block; }
.review-detail-trust span { color: var(--muted); font-size: 12px; }
.review-detail-trust strong { margin-top: 5px; font-size: 18px; }
.review-check-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}
.review-check-grid > span {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 7px;
  align-items: center;
  padding: 9px 10px;
  border: 1px solid var(--line);
  border-radius: 4px;
  font-size: 12px;
}
.review-check-grid b { color: var(--good); }
.review-check-grid .warn b { color: #946200; }
.review-detail-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 6px;
}
.review-detail-metrics > div {
  min-width: 0;
  padding: 12px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.review-detail-metrics > div:nth-child(3n) { border-right: 0; }
.review-detail-metrics > div:nth-last-child(-n + 3) { border-bottom: 0; }
.review-detail-metrics span,
.review-detail-metrics strong { display: block; }
.review-detail-metrics span { color: var(--muted); font-size: 12px; }
.review-detail-metrics strong {
  overflow-wrap: anywhere;
  margin-top: 5px;
  font-size: 16px;
  font-variant-numeric: tabular-nums;
}
.review-detail-list {
  display: grid;
  gap: 9px;
  margin: 0;
  padding-left: 20px;
}
.review-detail-list li,
.review-detail-source {
  color: #4c4539;
  font-size: 14px;
  line-height: 1.55;
}
.review-detail-source { overflow-wrap: anywhere; }
.review-detail-timeline { display: grid; }
.review-detail-timeline > div {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr) 74px;
  gap: 10px;
  align-items: center;
  min-height: 45px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.review-detail-timeline > div:last-child { border-bottom: 0; }
.review-detail-timeline strong { text-align: right; }
.review-detail-rows { display: grid; }
.review-detail-rows > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 72px 92px;
  gap: 10px;
  align-items: center;
  min-height: 56px;
  border-bottom: 1px solid var(--line);
}
.review-detail-rows > div:last-child { border-bottom: 0; }
.review-detail-rows span strong,
.review-detail-rows span small { display: block; }
.review-detail-rows span strong { font-size: 14px; }
.review-detail-rows span small { margin-top: 3px; color: var(--muted); font-size: 12px; }
.review-detail-rows b { font-size: 14px; text-align: right; }
.review-detail-rows em { color: var(--muted); font-size: 12px; font-style: normal; text-align: right; }
.review-condition-list { display: grid; gap: 10px; margin: 0; }
.review-condition-list > div {
  display: grid;
  grid-template-columns: 74px minmax(0, 1fr);
  gap: 12px;
  padding: 11px 0;
  border-bottom: 1px solid var(--line);
}
.review-condition-list > div:last-child { border-bottom: 0; }
.review-condition-list dt { color: var(--muted); font-size: 12px; font-weight: 800; }
.review-condition-list dd { margin: 0; font-size: 14px; line-height: 1.55; }
.review-stock-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.review-stock-links button {
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: var(--panel);
  color: var(--ink);
  font-size: 14px;
  font-weight: 800;
  text-align: left;
}
.review-stock-links button:hover,
.review-stock-links button:focus-visible { border-color: var(--accent); color: var(--accent); }
.review-stock-links button span { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; font-weight: 600; }
.review-primary-link {
  min-height: 38px;
  margin-top: 18px;
  padding: 0 14px;
  border: 1px solid var(--accent);
  border-radius: 4px;
  background: var(--accent);
  color: #fff;
  font-size: 14px;
  font-weight: 800;
}
.review-primary-link:hover,
.review-primary-link:focus-visible { background: #0048d9; }
.review-detail-body .review-gap-list { display: flex; flex-wrap: wrap; gap: 7px; }
.review-detail-body .review-gap-chip {
  padding: 6px 8px;
  border: 1px dashed var(--line);
  border-radius: 4px;
  color: var(--muted);
  font-size: 12px;
}

@media (max-width: 1100px) {
  .review-brief-v12 {
    grid-template-columns: 1fr;
    grid-template-areas: "state" "facts" "decisions";
  }
  .review-brief-state { border-right: 0; border-bottom: 1px solid var(--line); }
  .review-brief-facts .review-command-metric { min-height: 118px; }
  .review-workbench .section-head { align-items: flex-start; flex-direction: column; }
  .review-workbench .trend-state-grid { max-width: 100%; }
}

@media (max-width: 720px) {
  .daily-review-page .review-market-tabs { width: 100%; }
  .daily-review-page .review-market-tabs button { flex: 1 1 0; min-width: 70px; }
  .review-brief-state { padding: 16px; }
  .review-brief-state .review-command-kicker { display: grid; gap: 4px; }
  .review-brief-state .review-command-call strong { font-size: 28px; }
  .review-brief-facts { grid-template-columns: 1fr; }
  .review-brief-facts .review-command-metric {
    min-height: 0;
    padding: 14px 16px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-brief-facts .review-command-metric:last-child { border-bottom: 0; }
  .review-brief-decisions { grid-template-columns: 1fr; }
  .review-brief-decisions .review-command-summary-cell {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-brief-decisions .review-command-summary-cell:last-child { border-bottom: 0; }
  .review-workbench .section-head { padding: 12px; }
  .review-workbench .trend-state-grid { width: 100%; }
  .review-detail-drawer { width: 100vw; }
  .review-detail-head { padding: 16px; }
  .review-detail-head strong { font-size: 20px; }
  .review-detail-body { padding: 0 16px 20px; }
  .review-detail-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-detail-metrics > div:nth-child(3n) { border-right: 1px solid var(--line); }
  .review-detail-metrics > div:nth-last-child(-n + 3) { border-bottom: 1px solid var(--line); }
  .review-detail-metrics > div:nth-child(2n) { border-right: 0; }
  .review-detail-metrics > div:nth-last-child(-n + 2) { border-bottom: 0; }
  .review-detail-rows > div { grid-template-columns: minmax(0, 1fr) 70px; padding: 10px 0; }
  .review-detail-rows em { grid-column: 1 / -1; text-align: left; }
  .review-stock-links { grid-template-columns: 1fr; }
  .review-check-grid { grid-template-columns: 1fr; }
  .daily-review-page .review-lineage { flex-wrap: wrap; }
}
* { box-sizing: border-box; }
html {
  -webkit-text-size-adjust: 100%;
}
html.modal-scroll-locked {
  overflow: hidden;
  overscroll-behavior: none;
}
body {
  margin: 0;
  background:
    linear-gradient(90deg, rgba(23,23,23,.035) 1px, transparent 1px),
    linear-gradient(180deg, rgba(23,23,23,.035) 1px, transparent 1px),
    var(--paper);
  background-size: 28px 28px;
  color: var(--ink);
  font-family: "Avenir Next", "Gill Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
  letter-spacing: 0;
  overflow-x: hidden;
}
body.modal-scroll-locked {
  position: fixed;
  left: 0;
  right: 0;
  width: 100%;
  overflow: hidden;
  overscroll-behavior: none;
}
button, input, select {
  min-width: 0;
  font: inherit;
}
button {
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  height: 34px;
  padding: 0 11px;
  cursor: pointer;
}
button.active {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--paper);
}
button:disabled {
  color: #a29a8b;
  cursor: not-allowed;
}
#app {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 230px minmax(0, 1fr);
  transition: grid-template-columns .18s ease;
}
body.sidebar-collapsed #app {
  grid-template-columns: 28px minmax(0, 1fr);
}
.sidebar {
  position: sticky;
  top: 0;
  align-self: start;
  height: 100vh;
  border-right: 1px solid var(--line);
  background: rgba(255,253,248,.70);
  padding: 18px 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 0;
}
.sidebar-toggle {
  position: fixed;
  z-index: 60;
  left: 230px; /* 骑在侧边栏与内容区的分割线上 */
  top: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  min-width: 30px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--panel);
  font-size: 15px;
  line-height: 1;
  box-shadow: 0 2px 10px rgba(60, 50, 30, .14);
  transition: left .18s ease, background-color .15s ease, color .15s ease;
}
.sidebar-toggle:hover {
  background: var(--panel-2);
}
body.sidebar-collapsed .sidebar {
  padding: 8px 4px;
}
body.sidebar-collapsed .sidebar-toggle {
  left: 28px;
}
.brand {
  border: 1px solid var(--ink);
  background: var(--accent-2);
  padding: 12px;
  margin-bottom: 16px;
}
.brand-copy { min-width: 0; }
.brand strong { display: block; font-size: 17px; white-space: nowrap; }
.brand span { display: block; margin-top: 4px; font-size: 11px; color: #3a3328; white-space: nowrap; }
nav { display: grid; gap: 8px; }
body.sidebar-collapsed .brand,
body.sidebar-collapsed nav {
  display: none;
}
.nav-item {
  width: 100%;
  max-width: 196px;
  text-align: left;
  justify-content: flex-start;
  background: var(--panel);
}
.workspace {
  max-width: 1680px;
  width: 100%;
  margin: 0 auto;
  padding: 22px 28px 42px;
}
.page { display: none; }
.page.active { display: block; }

.auth-gate {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    linear-gradient(90deg, rgba(23,23,23,.04) 1px, transparent 1px),
    linear-gradient(180deg, rgba(23,23,23,.04) 1px, transparent 1px),
    rgba(247,245,239,.98);
  background-size: 28px 28px;
}
.auth-gate[hidden] { display: none; }
/* 公网首屏的 auth-pending / auth-pending-login 规则内联在 index.html 的 <head> 里，
   避免 styles.css 还是旧缓存（max-age=300）时首屏锁失效、又闪出业务界面。 */
.auth-card {
  width: min(420px, 100%);
  padding: clamp(26px, 6vw, 40px);
  border: 1px solid var(--ink);
  border-top: 8px solid var(--ink);
  background: var(--panel);
  box-shadow: var(--shadow);
}
.auth-kicker {
  color: var(--accent);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .22em;
}
.auth-card h1 {
  margin: 16px 0 12px;
  font-family: Georgia, "Songti SC", "STSong", serif;
  font-size: clamp(30px, 7vw, 44px);
  line-height: 1.05;
  letter-spacing: -.05em;
}
.auth-card p {
  margin: 0;
  color: #3e392f;
  font-size: 14px;
  line-height: 1.7;
}
.auth-card small {
  display: block;
  margin-top: 20px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.auth-form {
  display: grid;
  gap: 12px;
  margin-top: 20px;
}
.auth-field {
  display: grid;
  gap: 5px;
}
.auth-field > span {
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
  color: var(--muted);
}
/* 与其它控件保持一致：34px 高、--line 边框、--panel 底色。
   字号固定 16px 是为了避免 iOS 聚焦输入框时整体放大页面。 */
.auth-field input {
  width: 100%;
  height: 34px;
  padding: 0 10px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  font: inherit;
  font-size: 16px;
}
.auth-field input:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 1px;
}
.auth-remember {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 34px;
  font-size: 13px;
  color: var(--muted);
}
.auth-remember input {
  margin: 0;
  accent-color: var(--accent);
}
.auth-error {
  margin: 0;
  padding: 9px 11px;
  border-left: 3px solid var(--bad);
  background: rgba(201, 42, 42, .08);
  color: var(--bad);
  font-size: 13px;
  line-height: 1.5;
}
.auth-error[hidden] { display: none; }
.auth-submit {
  height: 34px;
  padding: 0 11px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--paper);
  font: inherit;
  font-weight: 700;
  letter-spacing: .06em;
  cursor: pointer;
}
.auth-submit:disabled {
  opacity: .55;
  cursor: progress;
}
body.auth-blocked #app { visibility: hidden; }
.page-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  margin-bottom: 14px;
}
h1 {
  margin: 0;
  font-size: 28px;
  line-height: 1.1;
}
.page-head p {
  margin: 6px 0 0;
  color: var(--muted);
}
.toolbar {
  display: flex;
  align-items: end;
  gap: 8px;
  flex-wrap: wrap;
}
.toolbar label {
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 12px;
}
.toolbar .intraday-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 34px;
  padding: 0 9px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.72);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}
.toolbar .intraday-toggle input {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--accent);
}
input[type="date"] {
  height: 34px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  padding: 0 8px;
}
input.monday-date-input {
  height: 34px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  padding: 0 8px;
  cursor: pointer;
  caret-color: transparent;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -webkit-user-drag: none;
  touch-action: manipulation;
}
.monday-date-picker {
  position: fixed;
  z-index: 1200;
  width: 304px;
  padding: 10px;
  border: 1px solid var(--ink);
  border-radius: 4px;
  background: var(--panel);
  box-shadow: 0 16px 44px rgba(23, 23, 23, .18);
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  touch-action: manipulation;
  overscroll-behavior: contain;
}
.monday-date-picker button {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.monday-date-picker[hidden] {
  display: none;
}
.monday-date-picker-head {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) 32px;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
}
.monday-date-picker-head strong,
.monday-date-picker-title {
  text-align: center;
  font-size: 13px;
  font-weight: 900;
}
.monday-date-picker-title {
  width: 100%;
  min-width: 0;
  height: 32px;
  min-height: 32px;
  padding: 0 6px;
  border: 1px solid transparent;
  border-radius: 2px;
  background: transparent;
  color: var(--ink);
  line-height: 1;
}
.monday-date-picker-head button {
  width: 32px;
  height: 32px;
  min-height: 32px;
  padding: 0;
  border-color: transparent;
  background: transparent;
  color: var(--ink);
  font-size: 20px;
  line-height: 1;
}
.monday-date-picker-head .monday-date-picker-title {
  width: 100%;
  min-width: 0;
  padding: 0 6px;
  font-size: 13px;
  line-height: 1;
}
.monday-date-picker-head button:hover,
.monday-date-picker-head button:focus-visible {
  border-color: var(--ink);
  background: var(--panel-2);
}
.monday-date-picker-week,
.monday-date-picker-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
.monday-date-picker-week span {
  display: grid;
  place-items: center;
  height: 26px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.monday-date-picker-grid {
  gap: 2px;
}
.monday-date-picker-grid button {
  aspect-ratio: 1;
  min-width: 0;
  min-height: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 2px;
  background: transparent;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}
.monday-date-picker-grid button:hover,
.monday-date-picker-grid button:focus-visible {
  border-color: var(--ink);
  background: var(--panel-2);
}
.monday-date-picker-grid button.outside {
  color: #aaa397;
}
.monday-date-picker-grid button.today {
  border-color: var(--accent);
  color: var(--accent);
}
.monday-date-picker-grid button.selected {
  border-color: var(--ink);
  background: var(--ink);
  color: #fff;
}
.monday-date-picker-grid button:disabled {
  border-color: transparent;
  background: transparent;
  color: #d0cbc1;
  cursor: not-allowed;
}
.monday-date-picker-month-grid,
.monday-date-picker-year-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
  padding: 4px 0 2px;
}
.monday-date-picker-month-grid button,
.monday-date-picker-year-grid button {
  min-width: 0;
  height: 42px;
  min-height: 42px;
  padding: 0 4px;
  border: 1px solid transparent;
  border-radius: 2px;
  background: transparent;
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}
.monday-date-picker-month-grid button:hover,
.monday-date-picker-month-grid button:focus-visible,
.monday-date-picker-year-grid button:hover,
.monday-date-picker-year-grid button:focus-visible,
.monday-date-picker-title:hover,
.monday-date-picker-title:focus-visible {
  border-color: var(--ink);
  background: var(--panel-2);
}
.monday-date-picker-month-grid button.selected,
.monday-date-picker-year-grid button.selected {
  border-color: var(--ink);
  background: var(--ink);
  color: #fff;
}
.monday-date-picker-month-grid button:disabled,
.monday-date-picker-year-grid button:disabled {
  border-color: transparent;
  background: transparent;
  color: #d0cbc1;
  cursor: not-allowed;
}
select {
  height: 34px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  padding: 0 8px;
  font-family: "Avenir Next", "Gill Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-variant-numeric: tabular-nums;
}
.date-control {
  display: grid;
  grid-template-columns: 34px minmax(142px, 1fr) 34px;
  gap: 4px;
  align-items: center;
}
.date-step {
  width: 34px;
  min-width: 34px;
  padding: 0;
  border-color: var(--line);
  font-size: 18px;
  line-height: 1;
}
.status-strip {
  border: 1px solid var(--line);
  background: rgba(255,253,248,.82);
  color: var(--muted);
  padding: 9px 12px;
  margin-bottom: 12px;
  font-size: 13px;
}
.status-strip.error { color: var(--bad); border-color: var(--bad); }
.monitor-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: -2px;
  margin-bottom: 14px;
}
.monitor-status[hidden] {
  display: none;
}
.monitor-status-main {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.monitor-status-main > span[id$="StatusText"] {
  overflow: hidden;
  white-space: normal;
  line-height: 1.35;
}
.monitor-status-dot {
  width: 8px;
  min-width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--muted);
}
.monitor-status.running .monitor-status-dot {
  background: var(--accent);
  box-shadow: 0 0 0 5px rgba(31, 122, 74, .1);
  animation: monitorPulse 1.2s ease-in-out infinite;
}
.monitor-status.success .monitor-status-dot {
  background: var(--good);
}
.monitor-status.error .monitor-status-dot {
  background: var(--bad);
}
.monitor-status-steps {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.monitor-status-step {
  border: 1px solid var(--line);
  background: rgba(255,255,255,.55);
  color: var(--muted);
  padding: 3px 7px;
  font-size: 12px;
  font-weight: 800;
}
.monitor-status-step.done {
  border-color: rgba(31,122,74,.25);
  background: rgba(31,122,74,.08);
  color: var(--good);
}
.monitor-status-step.active {
  border-color: var(--ink);
  background: var(--accent-2);
  color: var(--ink);
}
@keyframes monitorPulse {
  0%, 100% { transform: scale(1); opacity: .68; }
  50% { transform: scale(1.28); opacity: 1; }
}
.portfolio-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  position: relative;
}
.portfolio-log-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.portfolio-log-badge {
  width: 26px;
  min-width: 26px;
  height: 26px;
  padding: 0;
  border-color: var(--ink);
  background: var(--accent-2);
  color: var(--ink);
  font-weight: 900;
}
.portfolio-log-popover {
  position: absolute;
  right: 0;
  top: 32px;
  width: min(960px, 90vw);
  max-height: min(72vh, 720px);
  overflow: auto;
  z-index: 30;
  border: 1px solid var(--ink);
  background: #171717;
  color: #f7f5ef;
  box-shadow: var(--shadow);
  padding: 12px;
}
.portfolio-log-popover pre {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  word-break: break-word;
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
  font-size: 12px;
  line-height: 1.55;
}
.metrics {
  display: grid;
  gap: 8px;
  margin-bottom: 14px;
}
.metric-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 2px 0;
}
.metric-section-head.secondary {
  margin-top: 4px;
}
.metric-section-head strong {
  font-size: 13px;
}
.metric-section-head span {
  color: var(--muted);
  font-size: 12px;
}
.metric-row {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
}
.metric {
  --metric-accent: var(--ink);
  position: relative;
  background: var(--panel);
  border: 1px solid var(--line);
  padding: 10px 10px 9px;
  min-height: 106px;
  border-top: 4px solid var(--metric-accent);
}
.metric-card {
  cursor: pointer;
}
.metric-card:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.metric-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}
.metric-card-top span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.metric-info-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 22px;
  min-width: 22px;
  height: 22px;
  min-height: 22px;
  padding: 0;
  border-color: rgba(23,23,23,.28);
  background: rgba(236,230,216,.42);
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
}
.metric strong {
  display: block;
  margin-top: 8px;
  font-size: 24px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.metric strong { color: var(--metric-accent); }
.metric small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.metric em {
  display: block;
  min-height: 16px;
  margin-top: 5px;
  color: #4a4032;
  font-size: 11px;
  font-style: normal;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.metric-info-popover {
  position: absolute;
  z-index: 18;
  top: 34px;
  right: 9px;
  width: min(280px, calc(100vw - 40px));
  padding: 10px 11px;
  border: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: 0 14px 34px rgba(34, 27, 12, .18);
  color: #3a3328;
  font-size: 12px;
  line-height: 1.45;
  box-sizing: border-box;
  max-width: calc(100vw - 24px);
}
.market-regime {
  margin-bottom: 14px;
}
.regime-command {
  --regime-edge: var(--ink);
  display: grid;
  grid-template-columns: minmax(260px, 1.15fr) minmax(300px, 1fr) minmax(210px, .72fr);
  grid-template-areas:
    "primary gauges playbook"
    "styles styles styles";
  gap: 0;
  overflow: hidden;
  border: 1px solid var(--ink);
  border-left: 6px solid var(--regime-edge);
  background:
    linear-gradient(135deg, rgba(255,253,248,.98), rgba(236,230,216,.62));
  box-shadow: var(--shadow);
}
.regime-command.regime-attack { --regime-edge: var(--good); }
.regime-command.regime-repair { --regime-edge: #216099; }
.regime-command.regime-balance { --regime-edge: #8a5a00; }
.regime-command.regime-defense,
.regime-command.regime-wait { --regime-edge: var(--bad); }
.regime-command.regime-pending {
  display: block;
  min-height: 186px;
  border-left-color: #8d877d;
  box-sizing: border-box;
}
.regime-command.regime-pending.error {
  border-left-color: var(--bad);
}
.regime-pending .regime-primary {
  max-width: 620px;
}
.regime-pending .regime-call strong {
  color: #6f6a61;
}
.regime-pending.error .regime-call strong {
  color: var(--bad);
}
.regime-pending-bars {
  display: grid;
  gap: 8px;
  margin-top: 18px;
}
.regime-pending-bars i {
  display: block;
  width: min(100%, 540px);
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(23, 23, 23, .09);
}
.regime-pending-bars i:nth-child(2) { width: min(82%, 440px); }
.regime-pending-bars i:nth-child(3) { width: min(64%, 340px); }
.regime-pending:not(.error) .regime-pending-bars i::after {
  display: block;
  width: 42%;
  height: 100%;
  border-radius: inherit;
  background: rgba(255, 253, 248, .72);
  animation: regime-loading-slide 1.2s ease-in-out infinite;
  content: '';
}
@keyframes regime-loading-slide {
  from { transform: translateX(-110%); }
  to { transform: translateX(260%); }
}
@media (prefers-reduced-motion: reduce) {
  .regime-pending:not(.error) .regime-pending-bars i::after { animation: none; }
}
.regime-primary {
  grid-area: primary;
  min-width: 0;
  padding: 15px 16px 14px;
}
.regime-kicker {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.regime-kicker-title {
  display: inline-flex;
  min-width: 0;
  align-items: center;
  gap: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-kicker-title em {
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-style: normal;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-calendar-btn {
  flex: 0 0 auto;
  height: 24px;
  min-height: 24px;
  padding: 0 8px;
  border-color: rgba(23,23,23,.32);
  background: rgba(255,253,248,.84);
  color: var(--ink);
  font-size: 11px;
  font-weight: 900;
}
.regime-call {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  align-items: end;
  gap: 10px;
  margin-top: 8px;
}
.regime-call strong {
  color: var(--regime-edge);
  font-size: 26px;
  line-height: 1;
  font-weight: 950;
  white-space: nowrap;
}
.regime-call span {
  min-width: 0;
  overflow: hidden;
  color: #3a3328;
  font-size: 13px;
  font-weight: 850;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-primary p {
  margin: 9px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.42;
}
.regime-summary-body { margin-top: 8px; }
.rs-summary {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted);
}
.rs-summary strong {
  font-size: 13px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}
.rs-line {
  color: var(--muted);
}
.rs-pos { color: var(--good); }
.rs-neg { color: var(--bad); }
.rs-ink { color: var(--ink); }
.regime-gauge-wrap {
  grid-area: gauges;
  display: grid;
  gap: 8px;
  min-width: 0;
  padding: 13px 16px;
  border-left: 1px solid var(--line);
  border-right: 1px solid var(--line);
}
.regime-gauge {
  --regime-color: var(--ink);
  --regime-width: 0%;
  min-width: 0;
}
.regime-gauge div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  font-weight: 900;
}
.regime-gauge span,
.regime-gauge em {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-gauge strong {
  color: var(--regime-color);
  font-size: 16px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.regime-gauge i {
  position: relative;
  display: block;
  height: 6px;
  margin-top: 5px;
  overflow: hidden;
  background: rgba(23,23,23,.09);
}
.regime-gauge i::after {
  content: "";
  display: block;
  width: var(--regime-width);
  height: 100%;
  background: var(--regime-color);
}
.regime-gauge em {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
}
.regime-playbook {
  grid-area: playbook;
  display: grid;
  min-width: 0;
  background: rgba(23,23,23,.035);
}
.regime-playbook div {
  min-width: 0;
  padding: 10px 12px;
}
.regime-playbook div + div {
  border-top: 1px dashed rgba(23,23,23,.18);
}
.regime-playbook span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
}
.regime-playbook strong {
  display: block;
  margin-top: 3px;
  overflow: hidden;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.24;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-style-strip {
  grid-area: styles;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  background: rgba(255,253,248,.70);
}
.regime-style {
  min-width: 0;
  padding: 10px 12px;
}
.regime-style + .regime-style {
  border-left: 1px solid var(--line);
}
.regime-style-head {
  display: flex;
  align-items: baseline;
  min-width: 0;
  overflow: hidden;
}
.regime-style-head .rs-name {
  overflow: hidden;
  color: var(--bad);
  font-size: 15px;
  font-weight: 900;
  letter-spacing: .2px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-style-head .rs-sep {
  flex: none;
  margin: 0 5px;
  color: var(--muted);
  font-size: 14px;
  font-weight: 700;
}
.regime-style strong {
  flex: none;
  color: var(--ink);
  font-size: 18px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.regime-style em {
  display: block;
  margin-top: 4px;
  overflow: hidden;
  color: #4a4032;
  font-size: 11px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-calendar-dialog {
  display: grid;
  gap: 12px;
}
.detail-panel.regime-calendar-panel {
  width: min(760px, 100%);
  max-height: min(84vh, 820px);
}
.regime-calendar-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.regime-calendar-switch,
.regime-calendar-nav {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.regime-calendar-switch button,
.regime-calendar-nav button {
  height: 30px;
  min-height: 30px;
  padding: 0 10px;
  font-size: 12px;
  font-weight: 900;
}
.regime-calendar-nav strong {
  min-width: 92px;
  text-align: center;
  font-size: 14px;
}
.regime-help-btn {
  width: 30px;
  min-width: 30px;
  height: 30px;
  min-height: 30px;
  padding: 0;
  border-radius: 50%;
  border-color: rgba(23,23,23,.38);
  background: rgba(255,253,248,.92);
  color: var(--ink);
  font-weight: 950;
}
.regime-help-btn[aria-expanded="true"] {
  border-color: var(--ink);
  background: var(--ink);
  color: #fffdf8;
}
.regime-help-wrap {
  position: relative;
  flex: 0 0 auto;
}
.regime-help-pop {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  z-index: 30;
  width: min(360px, calc(100vw - 40px));
  box-sizing: border-box;
  padding: 10px 12px;
  border: 1px solid var(--ink);
  border-radius: 4px;
  background: #fffdf8;
  box-shadow: 0 12px 28px rgba(23,23,23,.18);
  color: #3a3328;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  white-space: normal;
  text-align: left;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease, visibility 0.15s ease;
}
.regime-help-pop.is-open {
  visibility: visible;
  opacity: 1;
  pointer-events: auto;
}
.regime-help-pop strong {
  display: block;
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}
.regime-help-pop dl {
  display: grid;
  gap: 6px;
  margin: 8px 0 0;
}
.regime-help-pop dl div {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 8px;
}
.regime-help-pop dt,
.regime-help-pop dd {
  margin: 0;
}
.regime-help-pop dt {
  color: var(--ink);
  font-weight: 900;
}
.regime-help-pop dd {
  color: var(--muted);
}
.regime-help-note {
  margin: 10px 0 0;
  padding-top: 8px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-weight: 600;
}
.regime-calendar-sub {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.detail-head .regime-calendar-sub > .regime-calendar-meta {
  display: inline;
  margin: 0;
}
.regime-expand-btn {
  padding: 1px 9px;
  border-radius: 999px;
  border: 1px solid rgba(23,23,23,.28);
  background: rgba(255,253,248,.92);
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.35;
  cursor: pointer;
}
.regime-expand-btn:hover {
  border-color: rgba(23,23,23,.55);
  background: #fff;
}
.regime-year-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.regime-month-card {
  --cal-edge: var(--line);
  display: block;
  min-width: 0;
  height: auto;
  min-height: 108px;
  padding: 10px;
  border-left: 5px solid var(--cal-edge);
  text-align: left;
}
.regime-month-card span,
.regime-month-card strong,
.regime-month-card em {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-month-card span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.regime-month-card strong {
  margin-top: 6px;
  font-size: 15px;
}
.regime-month-card em {
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.regime-month-weekdays,
.regime-month-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
}
.regime-calendar-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 210px;
  gap: 10px;
  align-items: stretch;
}
.regime-calendar-main {
  min-width: 0;
}
.regime-month-weekdays span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  text-align: center;
}
.regime-day-cell {
  --cal-edge: var(--line);
  display: grid;
  align-content: start;
  gap: 3px;
  min-width: 0;
  min-height: 64px;
  height: auto;
  padding: 6px 7px;
  border-left: 4px solid var(--cal-edge);
  background: rgba(255,253,248,.92);
  text-align: left;
}
.regime-day-cell.empty,
.regime-day-cell.muted {
  border-left-color: transparent;
  background: rgba(236,230,216,.30);
}
.regime-day-cell.selected {
  border-color: rgba(23,23,23,.55);
  border-left-color: var(--cal-edge);
  background: #fff7df;
  box-shadow: inset 0 0 0 1px rgba(23,23,23,.18);
}
.regime-day-cell span,
.regime-day-cell strong,
.regime-day-cell em,
.regime-day-cell i {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-day-cell span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.regime-day-cell i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: fit-content;
  max-width: 100%;
  min-height: 17px;
  padding: 0 5px;
  border: 1px solid color-mix(in srgb, var(--cal-edge) 42%, transparent);
  background: color-mix(in srgb, var(--cal-edge) 12%, #fffdf8);
  color: var(--ink);
  font-size: 10px;
  font-style: normal;
  font-weight: 950;
  line-height: 15px;
}
.regime-day-cell strong {
  font-size: 13px;
  line-height: 1;
}
.regime-day-cell em {
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
}
/* 市场日历日期/月份卡片配色，与"市场环境总控" status 卡片保持完全一致 */
.regime-day-cell.regime-attack,
.regime-day-row.regime-attack,
.regime-month-card.regime-attack { --cal-edge: var(--good); }
.regime-day-cell.regime-repair,
.regime-day-row.regime-repair,
.regime-month-card.regime-repair { --cal-edge: #216099; }
.regime-day-cell.regime-balance,
.regime-day-row.regime-balance,
.regime-month-card.regime-balance { --cal-edge: #8a5a00; }
.regime-day-cell.regime-defense,
.regime-day-row.regime-defense,
.regime-month-card.regime-defense { --cal-edge: var(--bad); }
.regime-day-cell.regime-wait,
.regime-day-row.regime-wait,
.regime-month-card.regime-wait { --cal-edge: var(--bad); }
.regime-selected-day {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-content: start;
  gap: 6px;
  height: 100%;
  padding: 14px 12px;
  border: 1px solid var(--line);
  background:
    linear-gradient(180deg, rgba(255,253,248,.95) 0%, rgba(255,251,240,.88) 100%);
}
.regime-selected-day header {
  min-width: 0;
  padding-bottom: 10px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--line);
}
.regime-selected-day .regime-metric-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px 10px;
}
.regime-selected-day .regime-metric-wide {
  grid-column: 1 / -1;
}
.regime-selected-day .regime-metric-grid > div {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  padding: 5px 7px;
  border-radius: 6px;
  background: rgba(255,255,255,.55);
  border: 1px solid rgba(23,23,23,.06);
}
.regime-selected-day span,
.regime-selected-day header span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.regime-selected-day strong,
.regime-selected-day header strong {
  display: block;
  margin-top: 4px;
  overflow: hidden;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-selected-day .regime-style-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.regime-style-chip {
  display: inline-block;
  padding: 2px 9px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.6;
  color: #8a5a00;
  background: rgba(255, 179, 64, .16);
  border: 1px solid rgba(255, 179, 64, .38);
  border-radius: 999px;
  white-space: nowrap;
}
.regime-style-empty {
  display: inline-block;
  margin-top: 4px;
  font-size: 13px;
  color: var(--muted);
}
.regime-selected-day .regime-metric-grid > div > span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .02em;
}
.regime-selected-day .regime-metric-grid > div > strong {
  margin-top: 2px;
  font-size: 16px;
  font-weight: 800;
  line-height: 1.2;
}
.regime-selected-day header strong {
  color: var(--ink);
  font-size: 18px;
}
.regime-day-list {
  display: grid;
  gap: 6px;
}
.regime-day-row {
  --cal-edge: var(--line);
  display: grid;
  grid-template-columns: 92px minmax(90px, 1fr) 70px 70px minmax(130px, 1.1fr);
  align-items: center;
  gap: 8px;
  height: auto;
  min-height: 38px;
  padding: 7px 9px;
  border-left: 4px solid var(--cal-edge);
  text-align: left;
}
.regime-day-row span,
.regime-day-row strong,
.regime-day-row em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.regime-day-row em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.metric-mini-bars {
  display: grid;
  gap: 3px;
}
.metric-mini-bars span {
  display: grid;
  grid-template-columns: 16px minmax(0, 1fr);
  align-items: center;
  gap: 4px;
}
.metric-mini-bars b {
  color: var(--muted);
  font-size: 10px;
}
.metric-mini-bars i {
  display: block;
  height: 5px;
  min-width: 4px;
  background: var(--accent);
}
.metric-mini-bars.empty {
  display: block;
  color: var(--muted);
}
.metric-history-body {
  display: grid;
  gap: 12px;
}
.detail-metrics.metric-history-stats {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: 0;
}
.metric-history-chart {
  height: 320px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #fffdf8 0%, #f3eee3 100%);
  overflow: hidden;
}
.metric-history-chart svg {
  display: block;
  width: 100%;
  height: 100%;
}
.metric-history-hover-layer {
  opacity: 0;
  pointer-events: none;
}
.metric-history-hover-slice:hover .metric-history-hover-layer {
  opacity: 1;
}
.tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.stock-universe-controls {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  margin-bottom: 14px;
}
.stock-universe-controls .tabs {
  margin-bottom: 0;
}
.stock-universe-adhoc-bar {
  display: grid;
  grid-template-columns: minmax(120px, 240px) auto;
  align-items: stretch;
  gap: 0;
  margin: 0;
  padding: 0;
  border: 1px solid var(--line);
  background: var(--panel);
  border-radius: 0;
  overflow: hidden;
}
.stock-universe-adhoc-bar input {
  min-width: 0;
  height: 32px;
  padding: 0 10px;
  border: 0;
  background: transparent;
  color: var(--text);
  font-size: 13px;
  outline: none;
}
.stock-universe-adhoc-bar input:focus {
  background: rgba(255, 253, 248, 0.6);
}
.stock-universe-adhoc-bar button {
  height: 34px;
  padding: 0 14px;
  border: 0;
  border-left: 1px solid var(--ink);
  background: var(--ink);
  color: #fffdf8;
  font-size: 12px;
  font-weight: 850;
  border-radius: 0;
}
.stock-universe-adhoc-bar button:hover {
  background: #2a2418;
}
.theme-filter-bar {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: -4px 0 12px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.78);
}
.theme-filter-row {
  display: flex;
  flex-wrap: nowrap;
  gap: 5px;
  align-items: center;
  min-width: 0;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scrollbar-width: thin;
}
.theme-filter-label {
  flex: 0 0 auto;
  position: sticky;
  left: 0;
  z-index: 1;
  min-width: 34px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  background: rgba(255,253,248,.94);
}
.theme-filter-row-primary {
  padding: 6px;
  border-bottom: 1px solid var(--line);
  background: transparent;
}
.theme-filter-row-secondary {
  min-height: 30px;
  padding: 6px;
  background: transparent;
}
.theme-filter-bar button {
  flex: 0 0 auto;
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.82);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
  -webkit-tap-highlight-color: transparent;
  touch-action: pan-x;
}
.theme-filter-row-primary button,
.theme-filter-row-secondary button {
  border-color: transparent;
  background: transparent;
}
.theme-filter-bar button.active {
  border-color: var(--ink);
  background: var(--ink);
  color: #fffdf8;
}
@media (hover: hover) and (pointer: fine) {
  .theme-filter-bar button:hover {
    border-color: var(--ink);
    background: var(--ink);
    color: #fffdf8;
  }
}
.theme-filter-hint {
  flex: 0 0 auto;
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
}
.source-filter-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: -2px 0 14px;
  padding: 9px 12px;
  border: 1px solid rgba(11,95,255,.22);
  background: rgba(11,95,255,.06);
  color: var(--text);
  font-size: 13px;
}
.source-filter-banner[hidden] {
  display: none;
}
.source-filter-banner span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.source-filter-banner em {
  color: var(--muted);
  font-style: normal;
  white-space: nowrap;
}
.source-filter-banner button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid rgba(11,95,255,.22);
  background: rgba(255,253,248,.88);
  color: var(--text);
  font-size: 12px;
  font-weight: 800;
}
.market-section-divider {
  margin: 4px 0 12px;
  padding: 12px 14px;
  border-top: 2px solid var(--ink);
  border-bottom: 1px solid var(--line);
  background: rgba(255,253,248,.72);
}
.market-section-divider strong {
  display: block;
  font-size: 16px;
}
.market-section-divider span {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
}
.market-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  align-items: start;
}
.market-grid-flat {
  grid-template-columns: minmax(0, 1fr);
}
.market-column,
.trend-table-wrap,
.ranking-panel {
  min-width: 0;
  background: rgba(255,253,248,.94);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}
.trend-table-wrap {
  margin-top: 16px;
}
.section-head {
  min-height: 50px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}
.section-head strong {
  display: block;
  font-size: 15px;
}
.section-head span {
  display: block;
  color: var(--muted);
  font-size: 12px;
  margin-top: 2px;
}
#monitorDetailHint:empty,
#monitorEditTitle:empty {
  display: none;
}
.sector-group {
  padding: 12px 14px;
}
.sector-group + .sector-group {
  border-top: 1px dashed #c8bfae;
}
.market-column-flat .sector-group {
  min-width: 0;
}
.market-column-flat .tile-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.sector-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 8px;
  font-size: 13px;
}
.sector-head strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 15px;
  font-weight: 950;
  letter-spacing: 0;
}
.sector-head span {
  display: inline-flex;
  flex: 0 0 auto;
  gap: 8px;
  color: var(--muted);
}
.sector-head b {
  font-variant-numeric: tabular-nums;
}
.tile-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(176px, 1fr));
  gap: 8px;
}
.heat-tile {
  display: grid;
  gap: 7px;
  align-content: start;
  width: 100%;
  min-height: 132px;
  padding: 10px;
  border: 1px solid var(--line);
  border-top: 6px solid var(--line);
  background: rgba(236,230,216,.24);
  text-align: left;
}
.heat-tile:hover {
  border-color: var(--ink);
  background: var(--panel);
}
.tile-top {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: center;
  min-width: 0;
}
.tile-name {
  font-size: 13px;
  font-weight: 900;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.heat-tile .trend-pill {
  min-width: 48px;
  height: 22px;
  padding: 0 7px;
  font-size: 11px;
}
.tile-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tile-meta > span:first-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tile-link-action {
  flex: 0 0 auto;
  padding: 2px 6px;
  border: 1px solid rgba(11,95,255,.22);
  background: rgba(11,95,255,.06);
  color: #0b5fff;
  font-size: 11px;
  font-weight: 850;
  line-height: 16px;
}
.tile-link-action:hover,
.tile-link-action:focus-visible {
  border-color: #0b5fff;
  background: rgba(11,95,255,.12);
  outline: none;
}
.tile-score-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  padding-top: 2px;
}
.tile-score-row span {
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
.tile-score-row small,
.tile-score-row b {
  display: block;
}
.tile-score-row small {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.1;
  font-weight: 800;
}
.tile-score-row b {
  margin-top: 2px;
  overflow: hidden;
  font-size: 18px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tile-bars {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px;
  font-size: 11px;
}
.tile-bars span {
  min-width: 0;
}
.tile-bars small {
  display: block;
  color: var(--muted);
}
.good { color: var(--good); }
.bad { color: var(--bad); }
.muted-text { color: var(--muted); }
.history-empty.compact {
  padding: 9px 10px;
  font-size: 12px;
}
.trend-board {
  margin-bottom: 16px;
  display: grid;
  gap: 14px;
}
.trend-overview-panel {
  min-width: 0;
  background: rgba(255,253,248,.94);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}
.trend-state-grid {
  display: flex;
  flex: 0 1 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 5px;
  max-width: 58%;
  min-width: 0;
}
.trend-state-card {
  --trend-card-accent: var(--ink);
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  min-height: 26px;
  padding: 0 8px;
  border: 1px solid var(--line);
  background: rgba(236,230,216,.24);
  text-align: left;
  box-shadow: none;
  overflow: hidden;
}
.trend-state-card.active,
.trend-state-card:hover {
  background: var(--panel);
}
.trend-state-card.active {
  border-color: var(--trend-card-accent);
  box-shadow: inset 0 -2px 0 var(--trend-card-accent);
}
.trend-state-card.empty:not(.active) {
  opacity: .58;
}
.trend-state-card span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 24px;
  white-space: nowrap;
}
.trend-state-card strong {
  display: block;
  margin-top: 0;
  font-size: 14px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.trend-state-card small {
  display: none;
}
.trend-state-card small b {
  display: none;
}
.trend-watch-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(188px, 1fr));
  gap: 10px;
}
.trend-watch-panel {
  --watch-accent: var(--ink);
  min-width: 0;
  overflow: hidden;
  background: rgba(255,253,248,.94);
  border: 1px solid var(--line);
  box-shadow: var(--shadow);
}
.trend-watch-head {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 48px;
  padding: 10px 11px;
  border-bottom: 1px solid var(--line);
  background: transparent;
}
.trend-watch-head > div {
  min-width: 0;
}
.trend-watch-head strong {
  display: block;
  overflow: hidden;
  color: var(--text);
  font-size: 14px;
  font-weight: 950;
  line-height: 1.12;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.trend-watch-head span {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.1;
}
.rule-help {
  position: relative;
  display: inline-grid;
  flex: 0 0 22px;
  width: 22px;
  min-width: 22px;
  height: 22px;
  min-height: 22px;
  aspect-ratio: 1;
  place-items: center;
  padding: 0;
  border: 1px solid rgba(112,91,59,.35);
  border-radius: 50%;
  background: rgba(255,253,248,.92);
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}
.rule-help::after {
  display: none;
}
.rule-help:hover::after,
.rule-help:focus-visible::after {
  display: none;
}
.trend-mini-card {
  --mini-accent: var(--muted);
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 36px;
  grid-template-rows: auto auto;
  gap: 4px 7px;
  width: calc(100% - 14px);
  min-height: 58px;
  margin: 7px;
  padding: 8px 8px 8px 9px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--mini-accent);
  background: rgba(236,230,216,.24);
  text-align: left;
  align-items: center;
  box-shadow: none;
}
.trend-mini-card:last-child {
  margin-bottom: 7px;
}
.trend-mini-card:hover {
  border-color: var(--ink);
  border-left-color: var(--mini-accent);
  background: var(--panel);
  transform: translateY(-1px);
}
.trend-mini-card span {
  min-width: 0;
}
.trend-mini-market {
  grid-row: 1 / 3;
  align-self: center;
}
.trend-mini-market .market-badge {
  width: 30px;
  height: 18px;
  justify-content: center;
  padding: 0;
  font-size: 9px;
  line-height: 18px;
}
.trend-mini-title {
  display: flex;
  align-items: center;
  gap: 6px;
}
.trend-mini-title b {
  flex: 1 1 auto;
  min-width: 0;
}
.trend-mini-card b {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 12px;
  line-height: 1.15;
  white-space: nowrap;
}
.trend-mini-status {
  flex: 0 0 auto;
  max-width: 48px;
  padding: 1px 5px;
  border: 1px solid rgba(31,122,74,.28);
  background: rgba(31,122,74,.08);
  color: var(--good);
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  line-height: 16px;
  white-space: nowrap;
}
.trend-mini-status.open {
  border-color: rgba(138,90,0,.28);
  background: rgba(138,90,0,.08);
  color: #8a5a00;
}
.trend-mini-status.sell {
  border-color: rgba(185,28,28,.25);
  background: rgba(185,28,28,.08);
  color: var(--bad);
}
.trend-mini-status.buy {
  border-color: rgba(31,122,74,.28);
  background: rgba(31,122,74,.08);
  color: var(--good);
}
.trend-mini-status.discovery {
  border-color: rgba(33,96,153,.28);
  background: rgba(33,96,153,.08);
  color: #216099;
}
.trend-mini-quality {
  flex: 0 0 auto;
  max-width: 64px;
  padding: 1px 5px;
  border: 1px solid rgba(96,90,82,.24);
  background: rgba(96,90,82,.07);
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 10px;
  font-style: normal;
  font-weight: 800;
  line-height: 16px;
  white-space: nowrap;
}
.trend-mini-quality.preferred {
  border-color: rgba(31,122,74,.32);
  background: rgba(31,122,74,.12);
  color: var(--good);
}
.trend-mini-quality.watch {
  border-color: rgba(33,96,153,.3);
  background: rgba(33,96,153,.1);
  color: #216099;
}
.trend-mini-quality.risk {
  border-color: rgba(185,28,28,.28);
  background: rgba(185,28,28,.09);
  color: var(--bad);
}
.trend-mini-quality.standard {
  border-color: rgba(96,90,82,.24);
  background: rgba(96,90,82,.07);
  color: var(--muted);
}
.trend-mini-card em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.trend-mini-card strong {
  grid-row: 1 / 3;
  grid-column: 3;
  align-self: center;
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.trend-mini-card em {
  grid-column: 2;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.trend-watch-pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 7px 7px;
  border-top: 1px solid rgba(39,35,30,.1);
  color: var(--muted);
  font-size: 11px;
}
.trend-watch-pager button {
  min-width: 44px;
  min-height: 26px;
  padding: 0 7px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.9);
  color: var(--text);
  font-size: 11px;
}
.trend-watch-pager button:disabled {
  opacity: .45;
  cursor: not-allowed;
}
.compact-head {
  min-height: 42px;
  padding-top: 9px;
  padding-bottom: 9px;
}
.trend-table {
  min-width: 1280px;
}
.trend-table th:first-child,
.trend-table td:first-child {
  width: 60px;
  white-space: nowrap;
}
.trend-table th:nth-child(2),
.trend-table td:nth-child(2) {
  width: 116px;
  max-width: 116px;
  overflow: hidden;
}
.trend-table th:nth-child(3),
.trend-table td:nth-child(3) {
  width: 74px;
  max-width: 74px;
  overflow: hidden;
}
.trend-table .etf-cell strong,
.trend-table .etf-cell span,
.trend-table td:nth-child(3) {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.trend-table th:nth-child(4),
.trend-table td:nth-child(4) {
  width: 68px;
  white-space: nowrap;
}
/* 交易分 / 趋势分 / 确认分：窄列、右对齐 */
.trend-table th:nth-child(5),
.trend-table td:nth-child(5) {
  width: 60px;
  white-space: nowrap;
  text-align: right;
}
.trend-table th:nth-child(6),
.trend-table td:nth-child(6),
.trend-table th:nth-child(7),
.trend-table td:nth-child(7) {
  width: 54px;
  white-space: nowrap;
  text-align: right;
}
/* 收盘价 / 今日 / 3日 / 5日 / 20日 / 60日：窄列 */
.trend-table th:nth-child(8),
.trend-table td:nth-child(8),
.trend-table th:nth-child(9),
.trend-table td:nth-child(9),
.trend-table th:nth-child(10),
.trend-table td:nth-child(10),
.trend-table th:nth-child(11),
.trend-table td:nth-child(11),
.trend-table th:nth-child(12),
.trend-table td:nth-child(12),
.trend-table th:nth-child(13),
.trend-table td:nth-child(13) {
  width: 62px;
  white-space: nowrap;
}
.trend-table th:nth-child(14),
.trend-table td:nth-child(14) {
  width: 70px;
  white-space: nowrap;
}
.trend-table th:nth-child(15),
.trend-table td:nth-child(15),
.trend-table th:nth-child(16),
.trend-table td:nth-child(16) {
  width: 68px;
  white-space: nowrap;
}
.trend-table th:nth-child(17),
.trend-table td:nth-child(17) {
  width: 82px;
  white-space: nowrap;
}
.trend-table td.num,
.trend-table th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.trend-table th.sortable {
  cursor: pointer;
  user-select: none;
}
.trend-table th.sortable:hover {
  color: var(--accent);
}
.trend-table th.sorted {
  color: var(--accent);
}
.trend-table th .sort-ind {
  font-size: 10px;
  margin-left: 2px;
  opacity: .85;
}
.table-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  margin-top: 6px;
}
.tb-filter {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
  white-space: nowrap;
}
.tb-filter-select {
  height: 28px;
  padding: 0 6px;
  font-size: 12px;
}
.tb-filter-reset {
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.92);
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}
.tb-filter-reset:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.trend-table th:last-child,
.trend-table td:last-child {
  width: 190px;
}
.trend-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  height: 24px;
  padding: 0 8px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}
.trend-pill.accelerating {
  border-color: rgba(201,42,42,.34);
  background: rgba(201,42,42,.07);
  color: #c92a2a;
}
.trend-pill.strengthening {
  border-color: rgba(31,122,74,.34);
  background: rgba(31,122,74,.07);
  color: var(--good);
}
.trend-pill.warming {
  border-color: rgba(138,90,0,.34);
  background: rgba(138,90,0,.07);
  color: #8a5a00;
}
.trend-pill.cooling {
  border-color: rgba(11,95,255,.26);
  background: rgba(11,95,255,.06);
  color: #0b5fff;
}
.trend-pill.weakening {
  border-color: rgba(23,23,23,.28);
  background: rgba(23,23,23,.05);
  color: #4a4032;
}
.trend-pill.neutral,
.trend-pill.all {
  border-color: var(--line);
  background: rgba(236,230,216,.18);
  color: var(--muted);
}
.risk-cell {
  min-width: 220px;
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.45;
}
.risk-cell span {
  color: var(--muted);
  font-size: 11px;
}
.risk-cell span + span::before {
  content: " / ";
  color: var(--muted);
}
.discovery-cell {
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
}
.discovery-tag {
  display: inline-flex;
  align-items: center;
  max-width: 96px;
  padding: 2px 6px;
  border: 1px solid rgba(33,96,153,.24);
  background: rgba(33,96,153,.08);
  color: #216099;
  font-size: 11px;
  font-weight: 850;
  line-height: 16px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.discovery-tag-opportunity {
  border-color: rgba(178,88,22,.34);
  background: rgba(178,88,22,.10);
  color: #9d4f16;
}
.discovery-tag-risk {
  border-color: rgba(20,104,150,.34);
  background: rgba(20,104,150,.10);
  color: #146896;
}
.discovery-tag + .discovery-tag {
  margin-left: 4px;
}
.discovery-signal-section {
  margin-top: 12px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.9);
  box-shadow: var(--shadow);
}
.discovery-signal-section .section-head {
  border-bottom: 1px solid var(--line);
}
.discovery-signal-table {
  width: 100%;
  min-width: 980px;
  border-collapse: collapse;
  font-size: 12px;
}
.discovery-signal-table th,
.discovery-signal-table td {
  padding: 8px 9px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  white-space: nowrap;
}
.discovery-signal-table th {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.discovery-signal-table tbody tr[data-code] {
  cursor: pointer;
  transition: background .12s;
}
.discovery-signal-table tbody tr[data-code]:hover {
  background: rgba(180, 160, 120, 0.12);
}
.discovery-signal-table .etf-cell strong {
  color: var(--text);
}
.discovery-signal-table tbody tr[data-code]:hover .etf-cell strong {
  color: var(--accent, #b5913b);
}
.discovery-signal-table .etf-cell {
  max-width: 148px;
  overflow: hidden;
}
.discovery-signal-table .etf-cell strong,
.discovery-signal-table .etf-cell span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.discovery-history-dialog,
.history-dialog.discovery-history-dialog {
  width: min(1180px, 96vw);
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  align-content: stretch;
  overflow: hidden;
}
.discovery-history-top-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
  background: rgba(236,230,216,.16);
  min-height: 0;
}
.discovery-history-title {
  margin-right: auto;
  white-space: nowrap;
  flex: 0 0 auto;
}
.discovery-history-title strong {
  display: block;
  font-size: 15px;
}
.discovery-history-title span {
  display: block;
  margin-top: 1px;
  color: var(--muted);
  font-size: 12px;
}
.discovery-history-inline {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}
.discovery-history-inline span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
  white-space: nowrap;
  flex: 0 0 auto;
}
.discovery-history-inline input,
.discovery-history-inline select {
  width: auto;
  min-width: 70px;
  max-width: 130px;
  height: 30px;
  padding: 0 6px;
  border: 1px solid var(--line);
  background: #fffdf8;
  color: var(--text);
  font-size: 12px;
}
.discovery-history-return-filter[hidden] {
  display: none !important;
}
.discovery-history-inline input[type="date"],
.discovery-history-inline input.monday-date-input {
  min-width: 110px;
  max-width: 125px;
}
.discovery-history-code-filter input[type="search"] {
  width: 112px;
  min-width: 92px;
  max-width: 132px;
}
.discovery-history-date-group {
  gap: 4px;
}
.discovery-date-sep {
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
}
.discovery-close-btn {
  height: 30px;
  width: 30px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
}
.discovery-history-actions {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  flex: 0 0 auto;
}
.discovery-close-btn:hover {
  background: rgba(180, 160, 120, 0.12);
  color: var(--ink);
}
.disc-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}
.disc-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 1px 7px;
  border: 1px solid var(--tag-border, var(--line));
  background: var(--tag-bg, rgba(236,230,216,.24));
  color: var(--tag-text, var(--text));
  font-size: 10px;
  font-weight: 750;
  white-space: nowrap;
}
.disc-tag em {
  font-style: normal;
  font-size: 9px;
  font-weight: 900;
  opacity: .78;
}
.disc-tag-opportunity {
  --tag-bg: rgba(178,88,22,.10);
  --tag-border: rgba(178,88,22,.34);
  --tag-text: #9d4f16;
}
.disc-tag-risk {
  --tag-bg: rgba(20,104,150,.10);
  --tag-border: rgba(20,104,150,.34);
  --tag-text: #146896;
}
.history-dialog.discovery-history-dialog > .discovery-history-panel {
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
}
.discovery-refresh-btn {
  height: 30px;
  padding: 0 10px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: #fffdf8;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
  flex: 0 0 auto;
}
.discovery-refresh-btn:hover {
  background: #2a2418;
}
.discovery-workbench-tabs {
  display: flex;
  align-items: center;
  gap: 6px;
  min-height: 38px;
  padding: 5px 14px;
  border-bottom: 1px solid var(--line);
  background: rgba(255,253,248,.9);
}
.discovery-workbench-tabs button {
  height: 28px;
  padding: 0 11px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
  cursor: pointer;
}
.discovery-workbench-tabs button:hover,
.discovery-workbench-tabs button.active {
  border-color: var(--line);
  background: rgba(236,230,216,.28);
  color: var(--ink);
}
.discovery-workbench-tabs span {
  margin-left: auto;
  color: var(--muted);
  font-size: 10px;
  font-weight: 750;
  white-space: nowrap;
}
.discovery-history-panel {
  padding: 0 14px 12px;
}
.signal-workbench {
  display: grid;
  gap: 12px;
  padding-top: 10px;
}
.signal-workbench-note {
  padding: 8px 10px;
  border: 1px solid rgba(180,160,120,.28);
  background: rgba(236,230,216,.16);
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
  line-height: 1.5;
}
.signal-candidate-section {
  display: grid;
  gap: 6px;
}
.signal-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.signal-section-head strong {
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}
.signal-section-head span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 750;
}
.signal-candidate-table-wrap,
.signal-library-table-wrap {
  border: 1px solid var(--line);
  background: #fffdf8;
}
.signal-candidate-table,
.signal-library-table {
  width: 100%;
  min-width: 1080px;
  border-collapse: collapse;
  font-size: 11px;
}
.signal-library-table {
  min-width: 1420px;
}
.signal-candidate-table th,
.signal-candidate-table td,
.signal-library-table th,
.signal-library-table td {
  padding: 7px 8px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  vertical-align: top;
}
.signal-candidate-table th,
.signal-library-table th {
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
  white-space: nowrap;
}
.signal-candidate-table tr:last-child td,
.signal-library-table tr:last-child td {
  border-bottom: 0;
}
.signal-candidate-table td small,
.signal-library-table td small {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 9px;
  font-weight: 650;
  line-height: 1.3;
}
.candidate-utility {
  display: inline-flex;
  min-width: 42px;
  justify-content: center;
  padding: 3px 6px;
  border: 1px solid rgba(178,88,22,.28);
  background: rgba(178,88,22,.08);
  color: #9d4f16;
  font-size: 13px;
  font-weight: 900;
}
.candidate-utility-risk {
  border-color: rgba(20,104,150,.28);
  background: rgba(20,104,150,.08);
  color: #146896;
}
.candidate-invalidation {
  max-width: 190px;
  color: var(--muted);
  line-height: 1.4;
}
.discovery-history-page {
  display: grid;
  gap: 8px;
  padding-top: 10px;
}
.discovery-history-pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 750;
}
.discovery-history-pager > div {
  display: flex;
  gap: 6px;
}
.discovery-history-pager button {
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--line);
  background: #fffdf8;
  color: var(--text);
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}
.discovery-history-pager button:disabled {
  cursor: not-allowed;
  opacity: .45;
}
.reliability-status {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 7px;
  border: 1px solid var(--line);
  background: rgba(236,230,216,.18);
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
}
.reliability-status.good {
  border-color: rgba(31,122,74,.28);
  background: rgba(31,122,74,.08);
  color: var(--good);
}
.reliability-status.bad {
  border-color: rgba(185,57,57,.28);
  background: rgba(185,57,57,.08);
  color: var(--bad);
}
.related-stocks-panel {
  margin-top: 16px;
  min-width: 0;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.86);
}
.related-stocks-placeholder {
  height: 96px;
  border: 0;
  background: rgba(236,230,216,.18);
}
.related-stocks-groups {
  display: grid;
  min-width: 0;
  gap: 0;
}
.related-stocks-market {
  min-width: 0;
}
.related-stocks-market + .related-stocks-market {
  border-top: 1px dashed #c8bfae;
}
.related-stocks-market-head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px 8px;
}
.related-stocks-market-head strong {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.related-stocks-table-wrap {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
  touch-action: pan-x pan-y;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.related-stocks-table {
  min-width: 968px;
  table-layout: fixed;
}
.related-stocks-table th,
.related-stocks-table td {
  white-space: nowrap;
}
.related-stocks-table th:first-child,
.related-stocks-table td:first-child {
  width: 96px;
}
.related-stocks-table th:nth-child(2),
.related-stocks-table td:nth-child(2) {
  width: 128px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.related-stocks-table th:nth-child(3),
.related-stocks-table td:nth-child(3) {
  width: 104px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.related-stocks-table th:nth-child(4),
.related-stocks-table td:nth-child(4) {
  width: 88px;
}
.related-stocks-table th:nth-child(5),
.related-stocks-table td:nth-child(5),
.related-stocks-table th:nth-child(6),
.related-stocks-table td:nth-child(6),
.related-stocks-table th:nth-child(7),
.related-stocks-table td:nth-child(7),
.related-stocks-table th:nth-child(8),
.related-stocks-table td:nth-child(8),
.related-stocks-table th:nth-child(9),
.related-stocks-table td:nth-child(9),
.related-stocks-table th:nth-child(10),
.related-stocks-table td:nth-child(10),
.related-stocks-table th:nth-child(11),
.related-stocks-table td:nth-child(11) {
  width: 72px;
}
.rel-stock-row {
  cursor: pointer;
  transition: background .12s;
  touch-action: pan-x pan-y;
}
.rel-stock-row:hover {
  background: rgba(180, 160, 120, 0.12);
}
.rel-stock-row:focus-visible {
  outline: 2px solid var(--accent, #b5913b);
  outline-offset: -2px;
}
.rel-stock-link {
  color: var(--text);
  text-decoration: none;
  transition: color .12s;
}
.rel-stock-row:hover .rel-stock-link {
  color: var(--accent, #b5913b);
}
.rel-stock-row:hover .rel-stock-link::after {
  content: ' →';
  opacity: .5;
  font-size: 11px;
}
.related-stocks-pager {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  color: var(--muted);
  font-size: 12px;
}
.related-stocks-pager button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.9);
  color: var(--text);
  font-size: 12px;
  font-weight: 800;
}
.related-stocks-pager button:disabled {
  opacity: .45;
  cursor: not-allowed;
}
.holdings-table-wrap {
  border: 1px solid var(--line);
  background: rgba(255,253,248,.86);
}
.holdings-table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}
.holdings-table th,
.holdings-table td {
  white-space: nowrap;
}
.holdings-table th:first-child,
.holdings-table td:first-child {
  width: 96px;
}
.holdings-table th:nth-child(2),
.holdings-table td:nth-child(2) {
  overflow: hidden;
  text-overflow: ellipsis;
}
.holdings-table th:nth-child(3),
.holdings-table td:nth-child(3) {
  width: 68px;
  text-align: right;
}
.ranking-panel {
  margin-top: 16px;
}
.portfolio-runner {
  display: flex;
  align-items: end;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
  margin: 0;
}
.portfolio-runner label {
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 12px;
}
.portfolio-runner > label:first-child {
  flex: 1 1 0;
  min-width: 220px;
}
.portfolio-runner > label {
  flex: 0 0 auto;
}
.portfolio-runner select {
  min-width: 0;
  max-width: 100%;
  text-overflow: ellipsis;
}
#portfolioMonitorPage .portfolio-runner select {
  min-width: 0;
}
#monitorStrategy {
  width: 190px;
}
#monitorRunMode {
  width: 142px;
}
.portfolio-runner input[type="text"] {
  width: 260px;
  height: 34px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  padding: 0 10px;
}
.portfolio-runner option {
  font-family: "Avenir Next", "Gill Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
}
.history-modal {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: rgba(23, 23, 23, .38);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  overflow: hidden;
  overscroll-behavior: none;
  touch-action: none;
}
.history-modal[hidden] { display: none; }
#dataHealthUpdateModal,
#dataHealthBatchModal,
#dataHealthDeleteModal {
  z-index: 80;
}
.position-sizing-config-modal { z-index: 100; background: rgba(20, 24, 31, .54); backdrop-filter: blur(3px); }
.position-sizing-config-dialog {
  overflow: hidden;
  border: 1px solid rgba(23, 23, 23, .22);
  border-radius: 12px;
  background: linear-gradient(145deg, #fffdf8 0%, #f5efe4 100%);
  box-shadow: 0 22px 70px rgba(23, 23, 23, .24);
}
.position-sizing-config-dialog .history-dialog-head {
  padding: 18px 20px 14px;
  border-bottom: 1px solid rgba(23, 23, 23, .12);
}
.position-sizing-config-dialog .history-dialog-head strong { font-size: 17px; letter-spacing: .02em; }
.position-sizing-config-dialog .history-dialog-head span { color: #887966; font-size: 11px; }
.position-sizing-config-dialog .history-dialog-head > button { width: 30px; height: 30px; border: 1px solid rgba(23,23,23,.16); border-radius: 50%; background: rgba(255,255,255,.55); font-size: 18px; }
.position-sizing-config-dialog .history-actions { padding: 14px 20px 18px; border-top: 1px solid rgba(23, 23, 23, .1); }
.position-sizing-config-dialog .history-actions button:last-child { border-color: var(--ink); background: var(--ink); color: var(--paper); }
.app-toast {
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 90;
  min-width: 116px;
  max-width: min(320px, calc(100vw - 32px));
  padding: 10px 14px;
  border: 1px solid rgba(31, 122, 74, .28);
  background: #f7fff8;
  color: var(--good);
  box-shadow: 0 14px 34px rgba(23,23,23,.16);
  font-size: 13px;
  font-weight: 900;
  text-align: center;
  transform: translate(-50%, calc(-50% + 8px));
  opacity: 0;
  transition: opacity .16s ease, transform .16s ease;
}
.app-toast[hidden] {
  display: none;
}
.app-toast.show {
  transform: translate(-50%, -50%);
  opacity: 1;
}
.history-dialog {
  width: min(860px, 96vw);
  max-height: min(82vh, 760px);
  min-height: 0;
  overflow: hidden;
  overscroll-behavior: contain;
  touch-action: auto;
  background: var(--panel);
  border: 1px solid var(--ink);
  box-shadow: var(--shadow);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
}
.data-health-update-dialog {
  width: min(760px, 96vw);
  grid-template-rows: auto minmax(0, 1fr);
}
.data-health-batch-dialog {
  width: min(1080px, 97vw);
  max-height: min(90vh, 900px);
  grid-template-rows: auto minmax(0, 1fr) auto;
}
.data-health-delete-dialog {
  width: min(520px, 94vw);
  grid-template-rows: auto minmax(0, 1fr);
}
.history-dialog-head {
  display: flex;
  justify-content: space-between;
  align-items: start;
  gap: 12px;
  border-bottom: 1px solid var(--line);
  padding: 12px 14px;
}
.history-dialog-head strong {
  display: block;
  font-size: 15px;
}
.history-dialog-head span {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
}
.history-dialog-head em {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}
.portfolio-history-panel {
  display: grid;
  grid-auto-rows: minmax(54px, auto);
  align-content: start;
  gap: 8px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  touch-action: pan-y;
  min-height: 0;
  padding: 12px 14px;
}
.history-task {
  height: auto;
  min-height: 54px;
  display: flex;
  align-items: center;
  width: 100%;
  text-align: left;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.2;
  background: rgba(255,253,248,.94);
}
.history-task-grid {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px 10px;
  width: 100%;
  min-width: 0;
  -webkit-transform: translateZ(0);
}
.history-task.active {
  border-color: var(--ink);
  background: rgba(255,176,0,.38);
  color: var(--ink);
}
.history-task strong,
.history-task b {
  font-variant-numeric: tabular-nums;
}
.history-task strong {
  min-width: 0;
  white-space: nowrap;
}
.history-task-id {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.history-task b {
  min-width: max-content;
  text-align: right;
  white-space: nowrap;
}
.history-more {
  justify-content: center;
  width: 100%;
  min-height: 36px;
  border-style: dashed;
  background: rgba(255,253,248,.72);
  color: var(--muted);
}
.history-more:not(:disabled):hover {
  border-color: var(--ink);
  color: var(--ink);
}
.history-empty {
  border: 1px solid var(--line);
  background: rgba(255,253,248,.82);
  color: var(--muted);
  padding: 10px 12px;
}
.history-actions {
  border-top: 1px solid var(--line);
  padding: 12px 14px;
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}
.history-actions .danger-button {
  margin-right: auto;
}
.danger-button {
  border-color: var(--bad);
  color: var(--bad);
  background: rgba(201,42,42,.08);
}
.danger-button:not(:disabled):hover {
  background: rgba(201,42,42,.14);
}
.checkbox-label {
  grid-auto-flow: column;
  align-items: center;
  gap: 6px;
  height: 34px;
}
.checkbox-label input {
  margin: 0;
}
.portfolio-log {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: hidden;
  overflow-y: visible;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  word-break: break-word;
  box-sizing: border-box;
  background: transparent;
  color: var(--ink);
  border: 0;
  border-left: 3px solid var(--ink);
  padding: 0 0 0 12px;
  margin: 16px 0;
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
  font-size: 12px;
  line-height: 1.65;
}
.portfolio-report-frame {
  width: 100%;
  min-height: 760px;
  border: 0;
  display: block;
  background: transparent;
  margin-top: 8px;
}
.portfolio-report-loading {
  width: 100%;
  min-height: 760px;
  margin-top: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  background: rgba(255, 253, 248, .82);
  color: var(--muted);
}
.portfolio-report-loading-inner {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}
.portfolio-report-loading-inner .monitor-status-dot {
  background: var(--accent);
  box-shadow: 0 0 0 5px rgba(31, 122, 74, .1);
  animation: monitorPulse 1.2s ease-in-out infinite;
}
/* hidden 属性必须真正隐藏：避免 .portfolio-report-frame { display: block } 等规则覆盖 [hidden] 的默认 display:none */
.portfolio-report-frame[hidden],
.portfolio-report-loading[hidden] {
  display: none;
}
.table-wrap {
  overflow-x: auto;
}
.monitor-pager {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin: 8px 0;
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.monitor-pager button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.92);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}
.monitor-pager button:disabled {
  cursor: default;
  opacity: .42;
}
.market-pager {
  min-height: 44px;
  padding: 8px 14px 10px;
  border-top: 1px solid var(--line);
  background: rgba(255,253,248,.72);
}
.market-pager:empty {
  display: none;
}
.market-pager-inner {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.market-pager button {
  min-height: 28px;
  padding: 0 9px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.92);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}
.market-pager button:disabled {
  cursor: default;
  opacity: .42;
}
table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
th {
  text-align: left;
  color: var(--muted);
  padding: 9px 10px;
  border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
td {
  padding: 9px 10px;
  border-bottom: 1px solid rgba(217,210,195,.68);
  font-variant-numeric: tabular-nums;
}
tr[data-code] { cursor: pointer; }
tr[data-code]:hover { background: rgba(11,95,255,.06); }
.rank-idx {
  color: var(--muted);
  width: 40px;
  font-weight: 900;
}
.market-badge {
  display: inline-flex;
  align-items: center;
  height: 24px;
  padding: 0 8px;
  border: 1px solid currentColor;
  font-weight: 900;
  white-space: nowrap;
  word-break: keep-all;
}
.market-badge.a { color: #c92a2a; }
.market-badge.hk { color: #8a5a00; }
.market-badge.us { color: #0b5fff; }
.market-badge.other { color: var(--muted); }
.etf-cell strong {
  display: block;
}
.etf-cell span {
  display: block;
  margin-top: 2px;
  color: var(--muted);
}
.overlay {
  position: fixed;
  inset: 0;
  z-index: 70;
  background: rgba(23, 23, 23, .38);
  padding: 24px;
  overflow-y: auto;
  overscroll-behavior: none;
  -webkit-overflow-scrolling: touch;
  display: flex;
  align-items: center;
  justify-content: center;
}
.overlay[hidden] { display: none; }
.detail-panel {
  width: min(820px, 100%);
  max-height: min(88vh, 840px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  background: var(--panel);
  border: 1px solid var(--ink);
  box-shadow: var(--shadow);
}
.detail-head {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding: 8px 14px;
  border-bottom: 1px solid var(--line);
  background: var(--panel);
  box-shadow: 0 1px 0 rgba(23,23,23,.04);
}
.detail-head h2 {
  margin: 0;
  font-size: 17px;
  line-height: 1.15;
}
.detail-head span {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
}
.detail-head .detail-score {
  display: flex;
  align-items: center;
  min-height: 34px;
  font-size: 36px;
  font-weight: 900;
  line-height: .95;
  font-variant-numeric: tabular-nums;
  margin: 0;
}
.detail-head .detail-score.good,
.detail-head .detail-score.bad {
  font-size: 18px;
  letter-spacing: .06em;
}
.detail-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.detail-focus-button {
  min-height: 32px;
  padding: 0 11px;
  border: 1px solid rgba(31,122,74,.32);
  background: rgba(31,122,74,.08);
  color: var(--good);
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.detail-focus-button.active {
  border-color: rgba(31,122,74,.62);
  background: rgba(31,122,74,.18);
  color: #145c37;
}
.detail-score-cluster {
  display: grid;
  grid-template-columns: repeat(3, minmax(48px, 1fr));
  gap: 8px;
  min-width: 178px;
  padding: 3px 0;
}
.detail-score-cluster span {
  min-width: 0;
  text-align: right;
}
.detail-score-cluster small,
.detail-score-cluster strong {
  display: block;
}
.detail-score-cluster small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.1;
}
.detail-score-cluster strong {
  margin-top: 2px;
  font-size: 26px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.detail-score-stack {
  display: grid;
  gap: 2px;
  min-width: 178px;
}
.stock-score-context-note {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  line-height: 1.25;
  text-align: right;
  white-space: normal;
}
.detail-close {
  min-width: 28px;
  width: 28px;
  height: 28px;
  padding: 0;
  border-color: var(--ink);
}
.detail-secondary {
  min-height: 28px;
  height: 28px;
  padding: 0 10px;
  border-color: var(--ink);
  background: rgba(255,176,0,.22);
  font-size: 12px;
}
.data-health-detail-heading {
  flex: 1 1 auto;
  min-width: 0;
}
.data-health-detail-actions {
  flex: 0 0 auto;
}
.data-health-detail-actions .detail-secondary {
  flex: 0 0 auto;
  white-space: nowrap;
}
.detail-body {
  padding: 12px 14px 14px;
}
.detail-metrics {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 7px;
  margin-bottom: 10px;
}
.data-health-detail-metrics {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.mini-stat {
  border: 1px solid var(--line);
  background: rgba(236,230,216,.32);
  padding: 8px;
  min-height: 48px;
}
.mini-stat span {
  display: block;
  color: var(--muted);
  font-size: 11px;
  margin-bottom: 3px;
}
.mini-stat strong {
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.detail-title {
  margin: 18px 0 8px;
  font-size: 13px;
  font-weight: 900;
}
.chart-container {
  position: relative;
  height: 230px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #fffdf8 0%, #f3eee3 100%);
  margin-bottom: 16px;
  overflow: hidden;
}
.detail-price-chart {
  margin-bottom: 6px;
  cursor: crosshair;
  touch-action: none;
  user-select: none;
}
.detail-price-chart.brushing .market-chart-hover-layer {
  opacity: 0 !important;
}
.kline-range-brush {
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 2;
  pointer-events: none;
  border-left: 1px solid rgba(11,95,255,.74);
  border-right: 1px solid rgba(11,95,255,.74);
  background: rgba(11,95,255,.13);
  box-shadow: inset 0 0 0 1px rgba(11,95,255,.18);
}
.detail-range-control {
  border: 1px solid rgba(201,190,169,.72);
  background: rgba(255,253,248,.76);
  padding: 7px 9px 8px;
  margin: 6px 0 10px;
}
.detail-range-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.detail-range-head strong {
  color: var(--ink);
  font-size: 12px;
  font-weight: 900;
}
.detail-range-head span {
  min-width: 0;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.detail-range-presets {
  display: flex;
  align-items: center;
  gap: 4px;
}
.detail-range-presets button {
  min-height: 22px;
  height: 22px;
  padding: 0 7px;
  border-color: rgba(112,91,59,.32);
  background: rgba(236,230,216,.28);
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
}
.detail-range-presets .detail-range-reset {
  border-color: rgba(11,95,255,.40);
  background: rgba(11,95,255,.08);
  color: var(--accent);
}
.detail-range-presets button:disabled {
  opacity: .36;
  cursor: not-allowed;
}
.detail-range-presets .detail-history-load-btn {
  border-color: rgba(11,95,255,.42);
  background: rgba(11,95,255,.08);
  color: var(--accent);
}
.detail-range-sliders {
  position: relative;
  height: 24px;
  cursor: ew-resize;
}
.detail-range-sliders::before,
.detail-range-sliders::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: 10px;
  height: 4px;
  border-radius: 0;
}
.detail-range-sliders::before {
  background: rgba(201,190,169,.52);
}
.detail-range-sliders::after {
  left: var(--range-start);
  right: calc(100% - var(--range-end));
  background: rgba(11,95,255,.58);
}
.detail-range-sliders input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 24px;
  margin: 0;
  background: transparent;
  pointer-events: none;
  appearance: none;
}
.detail-range-sliders input::-webkit-slider-runnable-track {
  height: 4px;
  background: transparent;
}
.detail-range-sliders input::-webkit-slider-thumb {
  appearance: none;
  width: 12px;
  height: 18px;
  margin-top: -7px;
  border: 1px solid var(--ink);
  border-radius: 2px;
  background: #fffdf8;
  box-shadow: 0 1px 2px rgba(23,23,23,.16);
  pointer-events: auto;
  cursor: ew-resize;
}
.detail-range-sliders input::-moz-range-track {
  height: 4px;
  background: transparent;
}
.detail-range-sliders input::-moz-range-thumb {
  width: 12px;
  height: 18px;
  border: 1px solid var(--ink);
  border-radius: 2px;
  background: #fffdf8;
  box-shadow: 0 1px 2px rgba(23,23,23,.16);
  pointer-events: auto;
  cursor: ew-resize;
}
.chart-container svg {
  display: block;
  width: 100%;
  height: 100%;
}
.trend-score-chart-frame {
  margin-top: 0;
}
.trend-score-chart {
  position: relative;
  height: 124px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #fffdf8 0%, #f3eee3 100%);
  margin-bottom: 0;
  overflow: hidden;
}
.trend-series-legend {
  cursor: pointer;
  outline: none;
}
.trend-series-legend:not(.active) {
  opacity: .62;
}
.trend-series-legend:focus-visible rect {
  stroke-width: 2;
}
.trend-correlation-result {
  min-height: 15px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.2;
  text-align: right;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.trend-correlation-result.positive {
  color: var(--good);
}
.trend-correlation-result.negative,
.trend-correlation-result.warn {
  color: var(--bad);
}
.trend-effectiveness-panel {
  margin: 8px 0 10px;
}
.trend-effectiveness-summary {
  margin: 2px 0 10px;
}
.trend-effectiveness-summary h3 {
  margin: 0 0 4px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}
.trend-effectiveness-summary .trend-correlation-result {
  display: flex;
  align-items: baseline;
  justify-content: flex-start;
  gap: 0;
  min-height: 0;
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 400;
  text-align: left;
  white-space: normal;
}
.trend-rule-summary-text {
  color: var(--good);
  font-weight: 400;
}
.trend-effectiveness-summary .trend-correlation-result button {
  appearance: none;
  border: 0;
  min-height: 0;
  height: auto;
  padding: 0;
  margin-left: 6px;
  background: transparent;
  color: var(--accent);
  font: inherit;
  font-weight: 900;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.trend-signal-title {
  margin-top: 14px;
}
.trend-rule-mining {
  border: 1px solid rgba(112,91,59,.22);
  background: linear-gradient(180deg, rgba(255,253,248,.86), rgba(246,240,226,.66));
  padding: 9px;
  margin-bottom: 9px;
}
.trend-rule-mining > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.trend-rule-mining > header strong {
  display: block;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.15;
}
.trend-rule-mining > header span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}
.trend-rule-mining > header p {
  margin: 0;
  color: var(--accent);
  font-size: 11px;
  font-weight: 900;
  line-height: 1.35;
  text-align: right;
}
.trend-rule-mining-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.trend-rule-card {
  border: 1px solid rgba(201,190,169,.72);
  background: rgba(255,253,248,.72);
  padding: 7px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.trend-rule-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 5px;
}
.trend-rule-card-head strong {
  font-size: 12px;
}
.trend-rule-card-head span {
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}
.trend-rule-card table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 11px;
}
.trend-rule-card tbody tr,
.trend-effectiveness-card tbody tr {
  cursor: pointer;
}
.trend-rule-card th,
.trend-rule-card td {
  padding: 4px 3px;
  border-bottom: 1px solid rgba(201,190,169,.55);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.trend-rule-card th:first-child,
.trend-rule-card td:first-child {
  width: 32%;
  min-width: 0;
  text-align: left;
  white-space: normal;
}
.trend-rule-card th:not(:first-child),
.trend-rule-card td:not(:first-child) {
  width: 13.6%;
}
.trend-rule-card tr.selected td {
  background: rgba(201,42,42,.08);
  font-weight: 900;
}
.trend-rule-card tr.active td,
.trend-effectiveness-card tr.active td {
  background: rgba(45,108,223,.13);
  box-shadow: inset 0 1px rgba(45,108,223,.24), inset 0 -1px rgba(45,108,223,.24);
  color: #244f9f;
  font-weight: 900;
}
.trend-rule-note {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}
.trend-effectiveness-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.trend-effectiveness-card {
  border: 1px solid var(--line);
  background: rgba(255,253,248,.72);
  padding: 8px;
}
.trend-effectiveness-card header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
}
.trend-effectiveness-card header strong {
  font-size: 12px;
}
.trend-effectiveness-card header span {
  color: var(--accent);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.trend-effectiveness-card table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
}
.trend-effectiveness-card th,
.trend-effectiveness-card td {
  padding: 4px 5px;
  border-bottom: 1px solid rgba(201,190,169,.55);
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.trend-effectiveness-card th:first-child,
.trend-effectiveness-card td:first-child {
  text-align: left;
}
.trend-effectiveness-card tr.selected td {
  background: rgba(201,42,42,.08);
  font-weight: 900;
}
.shared-kline-svg {
  display: block;
  width: 100%;
  height: 100%;
  font-variant-numeric: tabular-nums;
}
.shared-kline-bg {
  fill: rgba(236,230,216,.28);
}
.shared-kline-area {
  fill: var(--kline-color);
  opacity: .16;
}
.shared-kline-line {
  stroke: var(--kline-color);
  stroke-width: 2;
}
.shared-kline-axis {
  stroke: #d9d2c3;
}
.shared-kline-axis-label {
  fill: var(--muted);
  font-size: 11px;
}
.shared-kline-wick {
  stroke: rgba(23,23,23,.20);
  stroke-width: 1;
}
.shared-kline-hover-hit {
  fill: transparent;
  cursor: crosshair;
}
.shared-kline-hover-layer {
  opacity: 0;
  pointer-events: none;
  transition: opacity .12s ease;
}
.shared-kline-hover-slice:hover .shared-kline-hover-layer,
.shared-kline-hover-layer.active {
  opacity: 1;
}
.shared-kline-crosshair {
  stroke: rgba(23,23,23,.42);
  stroke-width: 1;
  stroke-dasharray: 4 4;
}
.shared-kline-crosshair-dot {
  fill: #fffdf8;
  stroke: var(--kline-color);
  stroke-width: 1.8;
}
.shared-kline-tooltip-bg {
  fill: rgba(255,253,248,.97);
  stroke: rgba(23,23,23,.24);
}
.shared-kline-tooltip-date {
  fill: var(--ink);
  font-size: 11px;
  font-weight: 900;
}
.shared-kline-tooltip-value {
  fill: var(--kline-tooltip-color, var(--muted));
  font-size: 10px;
}
.shared-kline-tooltip-value.good {
  fill: var(--good);
  font-weight: 900;
}
.shared-kline-tooltip-value.bad {
  fill: var(--bad);
  font-weight: 900;
}
.shared-kline-point-marker {
  fill: #c92a2a;
  stroke: #fffdf8;
  stroke-width: 1.4;
}
.shared-kline-point-marker.rule {
  filter: drop-shadow(0 1px 2px rgba(93,18,18,.35));
}
.shared-kline-point-marker.issue {
  filter: drop-shadow(0 1px 2px rgba(93,18,18,.28));
}
.shared-kline-marker-label {
  fill: #c92a2a;
  font-size: 11px;
  font-weight: 800;
}
.trend-effectiveness-card p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.45;
}
.trend-score-chart svg {
  display: block;
  width: 100%;
  height: 100%;
}
.market-chart-hover-layer,
.trend-hover-layer {
  opacity: 0;
  pointer-events: none;
}
.market-chart-hover-slice:hover .market-chart-hover-layer,
.market-chart-hover-layer.active,
.trend-hover-slice:hover .trend-hover-layer,
.trend-hover-layer.active {
  opacity: 1;
}
.market-chart-crosshair-line {
  stroke: rgba(23,23,23,.42);
  stroke-width: 1;
  stroke-dasharray: 4 4;
}
.trend-signal-table {
  margin-bottom: 8px;
}
.trend-signal-table table {
  min-width: 780px;
}
.trend-signal-pager {
  margin: 0 0 12px;
}
.stock-favorite-button.active {
  border-color: var(--accent-2);
  background: rgba(255,176,0,.34);
  color: var(--ink);
}
.stock-rule-panel {
  border: 1px solid rgba(112,91,59,.22);
  background: linear-gradient(180deg, rgba(255,253,248,.92), rgba(246,240,226,.70));
  padding: 10px;
  margin: 10px 0 12px;
}
.stock-rule-panel > header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 9px;
}
.stock-rule-panel > header strong,
.stock-rule-panel > header span {
  display: block;
}
.stock-rule-panel > header strong {
  font-size: 14px;
}
.stock-rule-panel > header span {
  margin-top: 2px;
  color: var(--muted);
  font-size: 11px;
}
.stock-rule-panel > header p {
  margin: 0;
  color: var(--accent);
  font-size: 12px;
  font-weight: 900;
  text-align: right;
}
.stock-rule-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}
.stock-rule-card {
  border: 1px solid var(--line);
  background: rgba(255,253,248,.78);
  padding: 9px;
  min-width: 0;
}
.stock-rule-card header {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: flex-start;
  margin-bottom: 8px;
}
.stock-rule-card header div {
  min-width: 0;
}
.stock-rule-card strong,
.stock-rule-card span {
  display: block;
}
.stock-rule-card strong {
  font-size: 13px;
}
.stock-rule-card span {
  margin-top: 3px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.35;
}
.stock-rule-card em {
  flex: 0 0 auto;
  min-width: 58px;
  padding: 4px 6px;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
  text-align: center;
  white-space: nowrap;
}
.stock-rule-card em.good {
  border-color: rgba(8,127,91,.28);
  background: rgba(8,127,91,.08);
  color: var(--good);
}
.stock-rule-card em.bad {
  border-color: rgba(201,42,42,.28);
  background: rgba(201,42,42,.08);
  color: var(--bad);
}
.stock-rule-card em.buy {
  border-color: rgba(255,176,0,.48);
  background: rgba(255,176,0,.22);
  color: #8a5a00;
}
.stock-rule-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.stock-rule-metrics .mini-stat {
  min-height: 46px;
  padding: 7px;
}
.stock-rule-metrics .mini-stat strong {
  font-size: 14px;
}
.stock-rule-card p {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}
.stock-strategy-panel {
  border: 1px solid rgba(11,95,255,.18);
  background: linear-gradient(180deg, rgba(255,253,248,.94), rgba(236,242,255,.46));
  padding: 10px;
  margin: 12px 0 14px;
}
.stock-strategy-panel > header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 9px;
}
.stock-strategy-panel > header strong,
.stock-strategy-panel > header span {
  display: block;
}
.stock-strategy-panel > header strong {
  font-size: 14px;
}
.stock-strategy-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.stock-strategy-title-row label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.stock-strategy-title-row label span {
  display: inline;
  margin: 0;
  font-size: 11px;
}
.stock-strategy-title-row select {
  min-width: 106px;
  height: 28px;
  border: 1px solid rgba(23,23,23,.18);
  background: #fffdf8;
  color: var(--ink);
  font: inherit;
  font-weight: 900;
  padding: 0 8px;
}
.stock-strategy-panel > header span {
  margin-top: 2px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.45;
}
.stock-strategy-panel > header p {
  margin: 0;
  color: var(--accent);
  font-size: 12px;
  font-weight: 900;
  text-align: right;
  white-space: nowrap;
}
.stock-strategy-table table {
  min-width: 860px;
}
.stock-strategy-table th,
.stock-strategy-table td {
  white-space: nowrap;
}
.stock-strategy-trade-row {
  cursor: pointer;
  outline: none;
}
.stock-strategy-trade-row:hover {
  background: rgba(11,95,255,.06);
}
.stock-strategy-trade-row.selected {
  background: rgba(255,176,0,.18);
  box-shadow: inset 3px 0 0 var(--accent-2);
}
.stock-strategy-trade-row:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}
.stock-strategy-table th:first-child,
.stock-strategy-table td:first-child,
.stock-strategy-table th:nth-child(3),
.stock-strategy-table td:nth-child(3) {
  width: 116px;
}
.stock-strategy-table th:nth-child(2),
.stock-strategy-table td:nth-child(2),
.stock-strategy-table th:nth-child(4),
.stock-strategy-table td:nth-child(4),
.stock-strategy-table th:nth-child(5),
.stock-strategy-table td:nth-child(5),
.stock-strategy-table th:nth-child(6),
.stock-strategy-table td:nth-child(6) {
  width: 104px;
}
.data-health-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
  align-items: start;
  min-width: 0;
}
.monitor-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: start;
  max-width: 100%;
  overflow: hidden;
}
.monitor-table-panel,
.monitor-detail-panel {
  min-width: 0;
  overflow: hidden;
}
.monitor-metric.good strong { color: var(--good); }
.monitor-metric.bad strong { color: var(--bad); }
.monitor-row {
  cursor: pointer;
}
.monitor-row:hover {
  background: rgba(11,95,255,.06);
}
.monitor-row.active {
  background: rgba(255,176,0,.16);
}
.monitor-edit-button {
  min-height: 26px;
  height: 26px;
  padding: 0 9px;
  font-size: 12px;
  background: rgba(255,253,248,.86);
  white-space: nowrap;
}
.monitor-conclusion {
  min-width: 280px;
  white-space: normal;
  line-height: 1.45;
}
.monitor-detail-body {
  padding: 12px 14px 14px;
}
.monitor-verdict {
  border: 1px solid var(--line);
  border-left: 5px solid var(--good);
  background: rgba(255,253,248,.86);
  padding: 10px 12px;
  margin-bottom: 10px;
}
.monitor-verdict.watch {
  border-left-color: var(--accent-2);
}
.monitor-verdict.pause {
  border-left-color: var(--bad);
}
.monitor-verdict.not_run {
  border-left-color: var(--muted);
}
.monitor-verdict strong {
  display: block;
  line-height: 1.45;
}
.monitor-verdict ul {
  margin: 8px 0 0;
  padding-left: 18px;
  color: var(--muted);
  line-height: 1.5;
  font-size: 12px;
}
.monitor-detail-metrics,
.monitor-health-metrics {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.monitor-health-panel {
  display: grid;
  gap: 10px;
  margin-bottom: 10px;
}
.monitor-subtitle {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  margin: 0 0 6px;
}
.monitor-window-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 7px;
  margin-bottom: 10px;
}
.monitor-window-card {
  border: 1px solid var(--line);
  background: rgba(236,230,216,.28);
  padding: 9px 10px;
  min-height: 104px;
}
.monitor-window-card strong {
  display: block;
  margin-bottom: 7px;
  font-size: 14px;
}
.monitor-window-card span {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.7;
}
.monitor-window-card b {
  color: var(--ink);
  font-size: 15px;
  font-weight: 900;
}
.monitor-window-card b.good { color: var(--good); }
.monitor-window-card b.bad { color: var(--bad); }
.monitor-chart {
  height: 300px;
  background: linear-gradient(180deg, #fffdf8 0%, #fbf7ee 100%);
}
.monitor-nav-svg {
  shape-rendering: geometricPrecision;
  text-rendering: geometricPrecision;
  font-variant-numeric: tabular-nums;
}
.monitor-nav-svg text {
  font-size: 12px;
  fill: var(--muted);
}
.chart-hover-band {
  fill: transparent;
  cursor: crosshair;
}
.chart-crosshair {
  opacity: 0;
  pointer-events: none;
  transition: opacity .12s ease;
}
.chart-hover-slice:hover .chart-crosshair {
  opacity: 1;
}
.chart-crosshair-line {
  stroke: rgba(23,23,23,.46);
  stroke-width: 1;
  stroke-dasharray: 4 4;
  vector-effect: non-scaling-stroke;
}
.chart-crosshair-dot {
  fill: #fffdf8;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}
.chart-crosshair-dot.shadow {
  stroke: #d99a00;
}
.chart-crosshair-dot.live {
  stroke: #2563eb;
}
.chart-hover-label-bg {
  fill: rgba(255,253,248,.96);
  stroke: rgba(23,23,23,.24);
  vector-effect: non-scaling-stroke;
}
.chart-hover-label-date {
  fill: var(--ink);
  font-size: 12px;
  font-weight: 900;
}
.chart-hover-label-value {
  fill: var(--muted);
  font-size: 11px;
}
.chart-hover-label-value.shadow {
  fill: #b97800;
}
.chart-hover-label-value.live {
  fill: #2563eb;
}
.monitor-nav-line {
  stroke-width: 3;
  stroke-linejoin: round;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}
.monitor-nav-area {
  stroke: none;
  pointer-events: none;
}
.monitor-nav-area.shadow {
  fill: rgba(217,154,0,.12);
}
.monitor-nav-area.live {
  fill: rgba(37,99,235,.14);
}
.monitor-nav-line.shadow {
  stroke: #d99a00;
  stroke-dasharray: 8 6;
}
.monitor-nav-line.live {
  stroke: #2563eb;
  stroke-width: 3.2;
}
.monitor-nav-single-point.live {
  fill: #fffdf8;
  stroke: #2563eb;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}
.monitor-nav-legend {
  stroke-width: 3;
  vector-effect: non-scaling-stroke;
}
.monitor-nav-legend.shadow {
  stroke: #d99a00;
  stroke-dasharray: 8 6;
}
.monitor-nav-legend.live {
  stroke: #2563eb;
  stroke-width: 3.2;
}
.chart-x-axis text {
  font-size: 12px;
}
.trade-marker circle {
  fill: var(--panel);
  stroke: var(--ink);
  stroke-width: 2;
}
.trade-marker text {
  font-size: 12px;
  font-weight: 900;
  fill: var(--ink);
}
.trade-marker.buy circle { fill: rgba(8,127,91,.14); stroke: var(--good); }
.trade-marker.sell circle { fill: rgba(201,42,42,.13); stroke: var(--bad); }
.trade-marker.both circle { fill: rgba(255,176,0,.20); stroke: #8a5a00; }
.kline-trade-marker {
  pointer-events: none;
}
.kline-trade-marker rect {
  fill: rgba(255,253,248,.82);
  stroke: none;
}
.kline-trade-marker text {
  fill: var(--ink);
  font-size: 10px;
  font-weight: 900;
}
.kline-trade-anchor {
  fill: var(--ink);
  stroke: none;
}
.kline-trade-marker.buy rect {
  fill: rgba(8,127,91,.10);
}
.kline-trade-marker.sell rect {
  fill: rgba(201,42,42,.10);
}
.kline-trade-marker.both rect {
  fill: rgba(255,176,0,.16);
}
.kline-trade-marker.buy text,
.kline-trade-marker.buy .kline-trade-anchor {
  fill: var(--good);
}
.kline-trade-marker.sell text,
.kline-trade-marker.sell .kline-trade-anchor {
  fill: var(--bad);
}
.kline-trade-marker.both text,
.kline-trade-marker.both .kline-trade-anchor {
  fill: #8a5a00;
}
.monitor-signal-table table {
  table-layout: fixed;
  min-width: 1080px;
}
.monitor-signal-table th:nth-child(1),
.monitor-signal-table td:nth-child(1) { width: 104px; }
.monitor-signal-table th:nth-child(2),
.monitor-signal-table td:nth-child(2) { width: 118px; }
.monitor-signal-table th:nth-child(3),
.monitor-signal-table td:nth-child(3) { width: 76px; }
.monitor-signal-table th:nth-child(4),
.monitor-signal-table td:nth-child(4) { width: 280px; }
.monitor-signal-table th:nth-child(5),
.monitor-signal-table td:nth-child(5) { width: 88px; }
.monitor-signal-table th:nth-child(6),
.monitor-signal-table td:nth-child(6) { width: 124px; }
.monitor-signal-table th:nth-child(7),
.monitor-signal-table td:nth-child(7) { width: 132px; }
.monitor-signal-table th:nth-child(8),
.monitor-signal-table td:nth-child(8),
.monitor-signal-table th:nth-child(9),
.monitor-signal-table td:nth-child(9),
.monitor-signal-table th:nth-child(10),
.monitor-signal-table td:nth-child(10) { width: 112px; }
.monitor-position-change {
  white-space: normal;
}
.monitor-forward-cell {
  font-variant-numeric: tabular-nums;
  line-height: 1.25;
}
.signal-date-cell strong {
  display: block;
}
.signal-date-cell small {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
  white-space: nowrap;
}
.forward-return-main {
  display: block;
  font-size: 12px;
  font-weight: 900;
}
.forward-return-excess {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  font-weight: 900;
}
.monitor-risk-cell.alert {
  background: transparent;
}
.monitor-risk-pill {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 0 7px;
  border: 1px solid rgba(111,106,95,.32);
  background: rgba(236,230,216,.32);
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.monitor-risk-pill.alert {
  border-color: rgba(201,42,42,.42);
  background: rgba(201,42,42,.10);
  color: var(--bad);
}
.position-change-line {
  display: grid;
  gap: 4px;
  line-height: 1.45;
  font-variant-numeric: tabular-nums;
  padding: 4px 0;
}
.position-change-line + .position-change-line {
  border-top: 1px solid rgba(217,210,195,.65);
}
.position-change-head {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr) auto;
  gap: 6px;
  align-items: center;
}
.position-change-head b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}
.position-change-flow {
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.position-change-flow i {
  color: var(--ink);
  font-style: normal;
  font-weight: 900;
}
.position-change-delta {
  justify-self: end;
  border: 1px solid rgba(111,106,95,.28);
  background: rgba(236,230,216,.42);
  color: var(--muted);
  padding: 1px 5px;
  font-size: 11px;
  font-style: normal;
  white-space: nowrap;
  font-weight: 900;
}
.position-change-delta.good {
  color: var(--good);
  border-color: rgba(8,127,91,.28);
  background: rgba(8,127,91,.08);
}
.position-change-delta.bad {
  color: var(--bad);
  border-color: rgba(201,42,42,.28);
  background: rgba(201,42,42,.08);
}
.position-change-bars {
  position: relative;
  height: 7px;
  margin-left: 82px;
  background: rgba(217,210,195,.55);
  overflow: hidden;
}
.position-change-bars i,
.position-change-bars strong {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  display: block;
}
.position-change-bars i {
  background: rgba(111,106,95,.35);
}
.position-change-bars strong {
  background: rgba(11,95,255,.65);
}
.monitor-warning {
  border: 1px solid var(--accent-2);
  background: rgba(255,176,0,.14);
  color: #6f4700;
  padding: 8px 10px;
  margin-bottom: 8px;
  font-size: 12px;
  line-height: 1.45;
}
.monitor-warning div + div {
  margin-top: 4px;
}
.monitor-info {
  border: 1px solid var(--line);
  background: rgba(11,95,255,.06);
  color: var(--muted);
  padding: 8px 10px;
  margin-bottom: 8px;
  font-size: 12px;
  line-height: 1.45;
}
.monitor-live-section {
  margin-top: 26px;
  padding-top: 18px;
  border-top: 2px solid rgba(23,23,23,.16);
  background: linear-gradient(180deg, rgba(11,95,255,.045), rgba(255,253,248,0) 150px);
}
.monitor-live-section > .detail-title {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 0 10px;
  margin-top: 0;
  border-left: 4px solid #2563eb;
  background: rgba(37,99,235,.08);
}
.monitor-live-metrics {
  grid-template-columns: repeat(5, minmax(0, 1fr));
}
.monitor-live-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
  gap: 12px;
  margin-bottom: 12px;
}
.monitor-live-grid h4,
.monitor-live-subtitle {
  margin: 18px 0 7px;
  font-size: 13px;
  color: var(--ink);
}
.monitor-live-table table {
  table-layout: fixed;
  min-width: 0;
}
.monitor-live-position-table th:nth-child(1),
.monitor-live-position-table td:nth-child(1) { width: 86px; }
.monitor-live-position-table th:nth-child(2),
.monitor-live-position-table td:nth-child(2) { width: 104px; }
.monitor-live-position-table th:nth-child(3),
.monitor-live-position-table td:nth-child(3) { width: 56px; }
.monitor-live-position-table th:nth-child(4),
.monitor-live-position-table td:nth-child(4),
.monitor-live-position-table th:nth-child(5),
.monitor-live-position-table td:nth-child(5) { width: 66px; }
.monitor-live-position-table th:nth-child(6),
.monitor-live-position-table td:nth-child(6),
.monitor-live-position-table th:nth-child(7),
.monitor-live-position-table td:nth-child(7) { width: 78px; }
.monitor-live-position-table th:nth-child(8),
.monitor-live-position-table td:nth-child(8),
.monitor-live-position-table th:nth-child(9),
.monitor-live-position-table td:nth-child(9),
.monitor-live-position-table th:nth-child(10),
.monitor-live-position-table td:nth-child(10) { width: 66px; }
.monitor-live-position-table th:nth-child(11),
.monitor-live-position-table td:nth-child(11) { width: 62px; }
.monitor-live-position-table th:nth-child(12),
.monitor-live-position-table td:nth-child(12) { width: 76px; }
.monitor-live-position-table tfoot td {
  border-top: 2px solid rgba(23,23,23,.2);
  background: rgba(23,23,23,.035);
  color: var(--ink);
  font-weight: 700;
}
.monitor-live-position-table tfoot td:first-child {
  letter-spacing: .02em;
}
.monitor-live-execution-table th:nth-child(1),
.monitor-live-execution-table td:nth-child(1),
.monitor-live-execution-table th:nth-child(2),
.monitor-live-execution-table td:nth-child(2) { width: 98px; }
.monitor-live-execution-table th:nth-child(3),
.monitor-live-execution-table td:nth-child(3) { width: 238px; }
.monitor-live-execution-table th:nth-child(4),
.monitor-live-execution-table td:nth-child(4) { width: 178px; }
.monitor-live-execution-table th:nth-child(5),
.monitor-live-execution-table td:nth-child(5) { width: 150px; }
.monitor-live-execution-table th:nth-child(6),
.monitor-live-execution-table td:nth-child(6) { width: 82px; }
.monitor-live-table td[rowspan] {
  vertical-align: top;
}
.monitor-live-execution-table tr.execution-group-start > td {
  border-top: 1px solid rgba(23,23,23,.18);
}
.monitor-live-execution-table tbody tr:first-child > td {
  border-top: 0;
}
.monitor-live-op {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
}
.monitor-live-op-code {
  display: inline-flex;
  min-width: 0;
  color: var(--ink);
  font-weight: 900;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.monitor-live-op-body {
  min-width: 0;
}
.trade-keyword {
  font-weight: 900;
}
.trade-keyword.buy {
  color: var(--good);
}
.trade-keyword.sell {
  color: var(--bad);
}
.monitor-live-table td strong,
.monitor-live-table td small {
  display: block;
}
.monitor-live-table td small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 11px;
}
.monitor-live-action-note {
  margin-left: 82px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.monitor-live-pill {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 0 7px;
  border: 1px solid rgba(111,106,95,.28);
  background: rgba(236,230,216,.35);
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.monitor-live-pill.good {
  color: var(--good);
  border-color: rgba(8,127,91,.28);
  background: rgba(8,127,91,.08);
}
.monitor-live-pill.warn {
  color: #8a5a00;
  border-color: rgba(255,176,0,.45);
  background: rgba(255,176,0,.14);
}
.monitor-live-pill.bad {
  color: var(--bad);
  border-color: rgba(201,42,42,.34);
  background: rgba(201,42,42,.09);
}
@media (max-width: 980px) {
  .monitor-live-grid {
    grid-template-columns: 1fr;
  }
  .monitor-live-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.monitor-edit-dialog {
  width: min(980px, 96vw);
}
.monitor-edit-body {
  display: grid;
  grid-template-columns: minmax(260px, 330px) minmax(0, 1fr);
  gap: 12px;
  padding: 12px 14px 14px;
  min-height: min(520px, calc(82vh - 118px));
  overflow: hidden;
}
.monitor-edit-status.error {
  color: var(--bad);
}
.monitor-edit-status.good {
  color: var(--good);
}
.monitor-edit-form {
  display: grid;
  align-content: start;
  gap: 10px;
}
.monitor-edit-form label {
  display: grid;
  gap: 5px;
}
.monitor-edit-form label span,
.monitor-edit-account-path span,
.monitor-edit-account span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.monitor-edit-form input[type="text"],
.monitor-edit-form input[type="date"],
.monitor-edit-form input.monday-date-input,
.monitor-edit-form select {
  width: 100%;
  min-width: 0;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  height: 34px;
  padding: 0 8px;
}
#monitorEditStrategyInput:not(:disabled) {
  background: #fff;
}
#monitorEditStatus:empty {
  display: none;
}
.monitor-edit-account-path {
  border: 1px solid var(--line);
  background: rgba(236,230,216,.24);
  padding: 9px 10px;
  display: grid;
  gap: 4px;
}
.monitor-edit-account-path strong {
  word-break: break-all;
  font-size: 12px;
}
.monitor-edit-account {
  min-width: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 8px;
}
.monitor-edit-account strong {
  display: block;
}
.monitor-edit-account textarea {
  width: 100%;
  min-height: 0;
  height: 100%;
  resize: none;
  border: 1px solid var(--line);
  background: #fffdf8;
  color: var(--ink);
  padding: 10px;
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
  font-size: 12px;
  line-height: 1.55;
}
.monitor-account-binding {
  border: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(11,95,255,.06), rgba(255,253,248,.92));
  padding: 12px;
  min-height: 100%;
  display: grid;
  align-content: start;
  gap: 9px;
}
.monitor-account-binding-row {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  min-height: 34px;
  border-bottom: 1px solid rgba(217,210,195,.72);
}
.monitor-account-binding-row span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.monitor-account-binding-row strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
}
.monitor-account-binding-note {
  margin-top: 6px;
  border: 1px solid rgba(37,99,235,.22);
  background: rgba(37,99,235,.07);
  padding: 10px;
  line-height: 1.5;
}
.monitor-account-binding-note strong {
  margin-bottom: 4px;
}
.monitor-account-binding-note span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}
.data-health-runner select {
  min-width: 118px;
}
.data-health-search-label {
  flex: 0 0 240px;
  min-width: 240px;
}
.data-health-search-control {
  display: block;
  width: 240px;
}
.data-health-runner .data-health-search-control input {
  width: 100%;
  height: 34px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  padding: 0 8px;
  font-family: "Avenir Next", "Gill Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  outline: none;
}
.data-health-search-control input::placeholder {
  color: rgba(93,82,64,.68);
}
.data-health-search-control input:focus {
  border-color: var(--ink);
  background: var(--panel);
}
.data-health-metrics {
  grid-template-columns: repeat(var(--data-health-metric-cols, 5), minmax(0, 1fr));
}
.data-health-metrics .metric {
  position: relative;
  overflow: hidden;
}
.data-health-metrics .metric::after {
  content: "";
  position: absolute;
  right: -24px;
  top: -34px;
  width: 92px;
  height: 92px;
  border: 1px solid rgba(23,23,23,.12);
  transform: rotate(18deg);
  background: rgba(255,176,0,.16);
}
.data-health-metric.good strong { color: var(--good); }
.data-health-metric.bad strong { color: var(--bad); }
.data-health-table-panel table {
  min-width: 1040px;
  table-layout: fixed;
}
.data-health-table-panel th:nth-child(1),
.data-health-table-panel td:nth-child(1) {
  width: 68px;
}
.data-health-table-panel th:nth-child(2),
.data-health-table-panel td:nth-child(2) {
  width: 180px;
  overflow: hidden;
}
.data-health-table-panel th:nth-child(3),
.data-health-table-panel td:nth-child(3) {
  width: 126px;
}
.data-health-table-panel th:nth-child(4),
.data-health-table-panel td:nth-child(4),
.data-health-table-panel th:nth-child(5),
.data-health-table-panel td:nth-child(5) {
  width: 108px;
  white-space: nowrap;
}
.data-health-table-panel th:nth-child(6),
.data-health-table-panel td:nth-child(6),
.data-health-table-panel th:nth-child(8),
.data-health-table-panel td:nth-child(8) {
  width: 76px;
}
.data-health-table-panel th:nth-child(7),
.data-health-table-panel td:nth-child(7) {
  width: 200px;
  overflow: hidden;
}
.data-health-table-panel th:nth-child(9),
.data-health-table-panel td:nth-child(9) {
  width: 96px;
}
.data-health-type-list {
  display: flex;
  flex-wrap: nowrap;
  gap: 3px;
  overflow: hidden;
}
/* 窗口化渲染依赖固定行高：每行恒定 52px，内容单行省略，不允许换行撑高。 */
.data-health-table-panel tbody td {
  box-sizing: border-box;
  height: 52px;
  padding-top: 0;
  padding-bottom: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.data-health-table-panel tbody tr.data-health-spacer td {
  height: 0;
  padding: 0;
  border: 0;
}
.data-health-type-pill {
  flex: 0 1 auto;
  min-width: 0;
}
.data-health-type-pill {
  display: inline-flex;
  max-width: 100%;
  padding: 2px 5px;
  border: 1px solid rgba(23,23,23,.22);
  overflow: hidden;
  font-size: 10px;
  font-weight: 900;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-health-type-pill.etf {
  color: #174f91;
  background: rgba(37,99,235,.08);
}
.data-health-type-pill.stock {
  color: #17633d;
  background: rgba(31,122,74,.08);
}
.data-health-table-panel .etf-cell strong,
.data-health-table-panel .etf-cell span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-health-table-panel tr[data-health-code] {
  cursor: pointer;
}
.data-health-table-panel tr[data-health-code]:hover {
  background: rgba(255,176,0,.16);
}
.quality-pill {
  display: inline-flex;
  align-items: center;
  max-width: 100%;
  min-height: 23px;
  padding: 0 8px;
  border: 1px solid currentColor;
  font-weight: 900;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.quality-pill.good {
  color: var(--good);
  background: rgba(8,127,91,.08);
}
.quality-pill.warn {
  color: #8a5a00;
  background: rgba(255,176,0,.18);
}
.quality-pill.bad {
  color: var(--bad);
  background: rgba(201,42,42,.08);
}
.quality-pill.accepted-no {
  border-width: 2px;
  background: rgba(201,42,42,.14);
  box-shadow: 0 0 0 3px rgba(201,42,42,.08);
}
.data-health-chart {
  height: 300px;
  margin-bottom: 7px;
}
.data-health-summary-table table {
  width: 100%;
  table-layout: fixed;
}
.data-health-summary-table {
  overflow-x: visible;
}
.data-health-summary-table th:first-child,
.data-health-summary-table td:first-child {
  width: 104px;
  white-space: nowrap;
}
.data-health-summary-table th:nth-child(2),
.data-health-summary-table td:nth-child(2),
.data-health-summary-table th:nth-child(3),
.data-health-summary-table td:nth-child(3) {
  width: 92px;
}
.data-health-summary-table th:nth-child(4),
.data-health-summary-table td:nth-child(4) {
  width: 164px;
}
.data-health-summary-table th:nth-child(5),
.data-health-summary-table td:nth-child(5) {
  width: 118px;
}
.data-health-summary-table th:last-child,
.data-health-summary-table td:last-child {
  width: auto;
  white-space: normal;
  word-break: break-word;
  line-height: 1.55;
}
.data-health-samples-title {
  margin-top: 22px;
}
.data-health-update-body {
  display: grid;
  grid-template-rows: auto minmax(180px, 1fr);
  gap: 12px;
  padding: 12px 14px 14px;
  min-height: 420px;
}
.data-health-update-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)) max-content auto auto auto;
  gap: 10px;
  align-items: end;
}
.data-health-update-form label {
  display: grid;
  gap: 5px;
}
.data-health-update-date-shortcuts {
  display: grid;
  gap: 5px;
  min-width: 0;
}
.data-health-update-date-shortcuts > span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.data-health-update-date-shortcuts > div {
  display: inline-flex;
  height: 34px;
}
.data-health-update-date-shortcuts button {
  min-width: 50px;
  padding: 0 7px;
  border: 1px solid var(--line);
  border-right-width: 0;
  background: rgba(255,253,248,.72);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}
.data-health-update-date-shortcuts button:first-child {
  border-radius: 3px 0 0 3px;
}
.data-health-update-date-shortcuts button:last-child {
  border-right-width: 1px;
  border-radius: 0 3px 3px 0;
}
.data-health-update-date-shortcuts button:hover:not(:disabled),
.data-health-update-date-shortcuts button:focus-visible,
.data-health-update-date-shortcuts button.active {
  position: relative;
  z-index: 1;
  border-color: var(--accent);
  background: rgba(11, 95, 255, .08);
  color: var(--accent);
  outline: none;
}
.data-health-update-date-shortcuts button:disabled {
  cursor: not-allowed;
  opacity: .55;
}
.data-health-update-form .data-health-update-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 34px;
  padding: 0 9px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.72);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}
.data-health-update-toggle input {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--accent);
}
.data-health-update-form label span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.data-health-update-form .data-health-update-toggle span {
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}
.data-health-update-log {
  margin: 0;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--line);
  background: #171717;
  color: #f3eee3;
  padding: 12px;
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
  font-size: 12px;
  line-height: 1.55;
  white-space: pre-wrap;
}
.data-health-batch-body {
  min-height: 0;
  overflow: auto;
  display: grid;
  grid-template-rows: auto auto auto auto minmax(180px, 1fr);
  gap: 8px;
  padding: 10px 12px 12px;
}
.data-health-batch-groups {
  display: grid;
  grid-template-columns: repeat(9, minmax(0, 1fr));
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}
.data-health-batch-group {
  min-width: 0;
  min-height: 42px;
  display: grid;
  grid-template-columns: 14px minmax(0, 1fr);
  align-items: center;
  gap: 5px;
  padding: 5px 6px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: rgba(255,253,248,.58);
  cursor: pointer;
}
.data-health-batch-group:has(input:checked) {
  background: rgba(31,122,74,.08);
}
.data-health-batch-group input {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--good);
}
.data-health-batch-group span,
.data-health-batch-group strong,
.data-health-batch-group small {
  min-width: 0;
}
.data-health-batch-group strong,
.data-health-batch-group small {
  display: block;
}
.data-health-batch-group strong {
  color: var(--ink);
  overflow: hidden;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-health-batch-group small {
  margin-top: 1px;
  color: var(--muted);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.data-health-batch-summary,
.data-health-batch-progress > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.data-health-batch-summary {
  min-height: 24px;
  padding-bottom: 5px;
  border-bottom: 1px solid var(--line);
}
.data-health-batch-summary span,
.data-health-batch-progress span {
  color: var(--muted);
  font-size: 12px;
}
.data-health-batch-summary strong,
.data-health-batch-progress strong {
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.data-health-batch-form {
  display: grid;
  min-width: 845px;
  grid-template-columns:
    minmax(112px, 1fr)
    minmax(112px, 1fr)
    max-content
    minmax(68px, .58fr)
    minmax(76px, .64fr)
    minmax(96px, .78fr)
    auto
    auto;
  gap: 7px;
  align-items: end;
}
.data-health-batch-form label:not(.data-health-update-toggle) {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.data-health-batch-form label > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.data-health-batch-form input[type="number"] {
  width: 100%;
  height: 34px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  padding: 0 7px;
  font-variant-numeric: tabular-nums;
}
.data-health-batch-form input[type="date"],
.data-health-batch-form input.monday-date-input {
  width: 100%;
}
.data-health-batch-date-shortcuts {
  display: grid;
  gap: 3px;
}
.data-health-batch-date-shortcuts > span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.data-health-batch-date-shortcuts > div {
  display: inline-flex;
  height: 34px;
}
.data-health-batch-date-shortcuts button {
  min-width: 51px;
  padding: 0 7px;
  border: 1px solid var(--line);
  border-right-width: 0;
  background: rgba(255,253,248,.72);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
  cursor: pointer;
}
.data-health-batch-date-shortcuts button:first-child {
  border-radius: 3px 0 0 3px;
}
.data-health-batch-date-shortcuts button:last-child {
  border-right-width: 1px;
  border-radius: 0 3px 3px 0;
}
.data-health-batch-date-shortcuts button:hover:not(:disabled),
.data-health-batch-date-shortcuts button:focus-visible,
.data-health-batch-date-shortcuts button.active {
  position: relative;
  z-index: 1;
  border-color: var(--accent);
  background: rgba(11, 95, 255, .08);
  color: var(--accent);
  outline: none;
}
.data-health-batch-date-shortcuts button:disabled {
  cursor: not-allowed;
  opacity: .55;
}
.data-health-batch-form .data-health-update-toggle {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 0 8px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.72);
  white-space: nowrap;
  cursor: pointer;
}
.data-health-batch-form .batch-label-mobile { display: none; }
.data-health-batch-progress {
  display: grid;
  gap: 4px;
}
.data-health-batch-progress progress {
  width: 100%;
  height: 8px;
  accent-color: var(--good);
}
.data-health-batch-actions {
  padding: 10px 12px;
  border-top: 1px solid var(--line);
  background: var(--panel);
}
.data-health-batch-actions button {
  min-height: 32px;
}
.data-health-delete-body {
  display: grid;
  gap: 12px;
  padding: 14px;
}
.data-health-delete-body label {
  display: grid;
  gap: 6px;
}
.data-health-delete-body label span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.data-health-delete-body input {
  width: 100%;
  height: 38px;
  border: 1px solid var(--bad);
  background: var(--panel);
  color: var(--ink);
  padding: 0 10px;
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
}
.data-health-delete-body p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}
.data-health-delete-body .history-actions {
  margin: 0 -14px -14px;
}
@media (min-width: 721px) and (max-width: 900px) {
  .data-health-batch-groups {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.placeholder {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  text-align: center;
  padding: 12px;
}
.holdings-table th,
.holdings-table td {
  padding: 7px 8px;
}

.tools-tabs {
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}
.tool-panel {
  display: none;
}
.tool-panel.active {
  display: block;
}
.position-sizing-layout {
  display: grid;
  grid-template-columns: minmax(320px, .9fr) minmax(420px, 1.1fr);
  gap: 16px;
  align-items: start;
}
.position-form-panel,
.position-result-panel,
.position-compare-panel {
  background: rgba(255,253,248,.94);
}
.position-compare-panel {
  margin-top: 16px;
}
.tool-badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 8px;
  border: 1px solid rgba(11,95,255,.22);
  background: rgba(11,95,255,.07);
  color: var(--accent);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.position-form-grid {
  display: grid;
  gap: 12px;
  padding: 14px;
}
.position-form-grid label {
  display: grid;
  gap: 7px;
  min-width: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 900;
}
.position-form-grid label > span:first-child {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.position-form-grid em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
  font-weight: 800;
}
.position-input-shell {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 64px;
  align-items: center;
  min-height: 44px;
  border: 1px solid var(--line);
  background: var(--panel);
}
.position-input-shell:focus-within {
  border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(11,95,255,.10);
}
.position-input-shell input {
  width: 100%;
  min-width: 0;
  height: 44px;
  box-sizing: border-box;
  border: 0;
  background: transparent;
  color: var(--ink);
  padding: 0 12px;
  font-size: 22px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  outline: none;
}
.position-input-shell input.invalid {
  color: var(--bad);
}
.position-input-shell b {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  border-left: 1px solid var(--line);
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.position-plan-switch {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin: 0 14px 14px;
  border: 1px solid var(--line);
  background: var(--panel);
}
.position-plan-switch button {
  width: 100%;
  border: 0;
  border-right: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-weight: 900;
}
.position-plan-switch button:last-child {
}
.position-plan-switch button.active {
  background: var(--ink);
  color: var(--paper);
}
.position-hero-result {
  display: grid;
  justify-items: center;
  gap: 4px;
  padding: 28px 16px 24px;
  border-bottom: 1px solid var(--line);
  background:
    linear-gradient(90deg, rgba(11,95,255,.08), transparent 34%),
    rgba(255,253,248,.72);
}
.position-hero-result span,
.position-hero-result em,
.position-metric-card span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
  font-style: normal;
}
.position-hero-result strong {
  color: var(--ink);
  font-family: Georgia, "Songti SC", "STSong", serif;
  font-size: clamp(44px, 6vw, 74px);
  line-height: .98;
  letter-spacing: 0;
  font-variant-numeric: tabular-nums;
}
.position-metric-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding: 14px;
}
.position-metric-card {
  min-width: 0;
  padding: 14px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.88);
}
.position-metric-card strong {
  display: block;
  margin-top: 8px;
  font-size: 24px;
  line-height: 1.05;
  font-weight: 950;
  font-variant-numeric: tabular-nums;
  overflow-wrap: anywhere;
}
.position-table th,
.position-table td {
  padding: 10px 12px;
  white-space: nowrap;
}
.position-table tr.selected td {
  background: rgba(255,176,0,.16);
}
.position-table td:first-child button {
  min-height: 28px;
  height: 28px;
  padding: 0 9px;
  border-color: var(--line);
  background: rgba(255,253,248,.86);
  font-size: 12px;
  font-weight: 900;
}
.position-table tr.selected td:first-child button {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
}
.position-status {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 0 8px;
  border: 1px solid rgba(8,127,91,.2);
  background: rgba(8,127,91,.08);
  color: var(--good);
  font-size: 12px;
  font-weight: 900;
}
.position-status.limited {
  border-color: rgba(201,42,42,.22);
  background: rgba(201,42,42,.08);
  color: var(--bad);
}
.position-formula-note {
  margin: 0;
  padding: 10px 14px 14px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.momentum-page .page-head {
  border-top: 0;
  padding-top: 0;
}
.momentum-toolbar {
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.momentum-toolbar .momentum-tech-filter { height: 34px; }
.momentum-navigation-scope {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 8px 16px;
  margin-bottom: 8px;
}
.momentum-toolbar .momentum-market-tabs {
  display: inline-flex;
  flex: 0 0 auto;
  gap: 2px;
  padding: 3px;
  margin: 0 12px 0 0;
  border: 1px solid var(--line);
  background: rgba(27,31,35,.035);
}
.momentum-toolbar .momentum-market-tabs button {
  min-width: 62px;
  min-height: 30px;
  height: 30px;
  padding: 0 12px;
  border: 0;
  background: transparent;
}
.momentum-toolbar .momentum-market-tabs button.active {
  background: var(--ink);
  color: var(--paper);
}
.momentum-toolbar label {
  color: var(--muted);
}
.momentum-toolbar input[type="date"],
.momentum-toolbar input.monday-date-input {
  min-width: 148px;
}
.momentum-date-control {
  display: inline-flex;
  min-width: 230px;
}
.momentum-selection-mode {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}
.momentum-selection-mode select {
  height: 34px;
  box-sizing: border-box;
  min-width: 132px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.72);
  color: var(--ink); /* 与“仅看科技”控件文字保持一致 */
  font-size: 12px;
  font-weight: 800;
}
.momentum-date-step-control {
  width: 100%;
  grid-template-columns: 34px minmax(112px, 1fr) 34px;
}
.momentum-market-tabs {
  margin-bottom: 14px;
}
.momentum-market-tabs button {
  min-width: 88px;
}
.momentum-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.momentum-tech-filter {
  display: inline-flex !important;
  align-items: center;
  gap: 7px;
  height: 38px;
  padding: 0 10px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.72);
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
}
.momentum-tech-filter input { accent-color: var(--accent); }
.momentum-page #momentumRefreshBtn {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
  font-weight: 900;
}
.momentum-page #momentumRefreshBtn:hover {
  background: #000;
}
.momentum-summary {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  font-size: 12px;
  color: var(--muted);
}
.momentum-summary:empty { display: none; }
.momentum-summary-stat { line-height: 1.6; }
.momentum-summary-stat strong {
  color: var(--ink);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.momentum-stage-tabs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin-bottom: 0;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--line);
}
.momentum-stage-tab {
  display: inline-flex;
  align-items: center;
  position: relative;
  min-width: 0;
  background: transparent;
}
.momentum-stage-tab::after { display: none; }
.momentum-stage-tab > button[data-momentum-stage] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  height: 34px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 2px;
  background: rgba(255,253,248,.78);
  color: var(--muted);
  font-weight: 800;
}
.momentum-stage-tab > button[data-momentum-stage]:hover {
  color: var(--ink);
  background: rgba(27,31,35,.035);
}
.momentum-stage-tab-divider {
  margin-left: 2px;
  padding-left: 14px;
  border-left: 1px solid var(--line);
}
.momentum-stage-count {
  flex: 0 0 auto;
  min-width: 18px;
  padding: 1px 5px;
  border: 1px solid rgba(27,31,35,.14);
  border-radius: 999px;
  color: inherit;
  font-size: 10px;
  line-height: 1;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.momentum-stage-tab > button[data-momentum-stage] > span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.momentum-stage-tab.active > button[data-momentum-stage] {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
}
.momentum-stage-tab.active .momentum-stage-count {
  border-color: rgba(255,253,248,.28);
  background: rgba(255,253,248,.08);
  color: var(--paper);
}
.momentum-help-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  min-width: 14px;
  height: 14px;
  min-height: 14px;
  flex: 0 0 14px;
  aspect-ratio: 1;
  margin: 0 0 0 1px;
  padding: 0;
  border: 1px solid currentColor;
  border-radius: 50%;
  background: transparent;
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
  line-height: 1;
  opacity: .62;
  font-style: normal;
}
.momentum-help-button:hover,
.momentum-help-button:focus-visible,
.momentum-stage-tab.active .momentum-help-button[aria-expanded="true"] {
  color: var(--accent);
  opacity: 1;
}
.momentum-stage-tab.active .momentum-help-button {
  color: var(--paper);
}
.momentum-adhoc-code-input {
  align-self: center;
  flex: 0 1 168px;
  min-width: 0;
  height: 34px;
  width: 168px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 2px;
  background: var(--paper);
  color: var(--ink);
  font-size: 12px;
}
.momentum-adhoc-code-input:focus {
  border-color: var(--ink);
  outline: none;
}
.momentum-stage-controls {
  display: flex;
  align-items: center;
  align-self: center;
  gap: 8px;
  margin-left: auto;
}
.momentum-mode-switch {
  display: flex;
  align-items: center;
  border: 1px solid var(--line);
}
.momentum-mode-switch button {
  height: 34px;
  min-height: 34px;
  padding: 0 12px;
  border: 0;
  border-right: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 900;
}
.momentum-mode-switch button:last-child {
  border-right: 0;
}
.momentum-mode-switch button.active {
  background: var(--ink);
  color: #fffdf8;
}
.momentum-mode-switch button:disabled {
  opacity: .42;
  cursor: not-allowed;
}

.momentum-live-breakout-alert,
.momentum-live-ma-alert {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 0 14px 8px;
  padding: 9px 10px;
  border: 1px solid;
  border-radius: 0;
  border-left-width: 3px;
  font-size: 12px;
}
.momentum-live-breakout-alert[hidden],
.momentum-live-ma-alert[hidden] {
  display: none;
}
/* A 股习惯：涨=红、跌=绿。形态机会是上涨突破用红色，风险监控是均线跌破用绿色。 */
.momentum-live-breakout-alert {
  border-color: #e1b6b6;
  background: #fff0f0;
  color: #8f2525;
}
.momentum-live-ma-alert {
  border-color: #aad9bd;
  background: #eaf7ef;
  color: #195f3b;
}
.momentum-live-alert-summary {
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: 2px 9px;
  min-width: max-content;
}
.momentum-live-alert-kicker {
  grid-row: 1 / span 2;
  display: inline-flex;
  align-items: center;
  height: 26px;
  padding: 0 8px;
  border: 1px solid currentColor;
  border-radius: 0;
  font-size: 10px;
  font-weight: 900;
  white-space: nowrap;
}
.momentum-live-alert-summary strong {
  color: inherit;
  line-height: 1.2;
}
.momentum-live-alert-summary small {
  color: currentColor;
  font-size: 10px;
  line-height: 1.2;
  opacity: .72;
}
.momentum-live-alert-items {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 5px;
}
.momentum-live-alert-items button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
  margin: 0;
  padding: 3px 8px;
  border: 1px solid currentColor;
  border-radius: 0;
  background: rgba(255, 255, 255, .82);
  color: inherit;
  font: inherit;
  cursor: pointer;
  white-space: nowrap;
}

.momentum-position-sizing-inline {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 7px;
  height: 32px;
  max-width: 188px;
  box-sizing: border-box;
  margin: 0;
  padding: 3px 0 3px 6px;
  border: 1px solid #c6b99f;
  border-radius: 0;
  background: #fffaf0;
  color: #3f372b;
  white-space: nowrap;
  grid-column: 2;
  grid-row: 1;
  justify-self: start;
}
.momentum-position-sizing-inline[hidden] { display: none; }
.momentum-position-sizing-quantity { display: inline-flex; align-items: center; line-height: 1; }
.momentum-position-sizing-quantity b { font-size: 13px; line-height: 1.05; font-variant-numeric: tabular-nums; white-space: nowrap; }
.momentum-position-sizing-values { display: grid; gap: 1px; min-width: 0; }
.momentum-position-sizing-values small { overflow: hidden; color: #756b5c; font-size: 9px; line-height: 1.1; text-overflow: ellipsis; white-space: nowrap; }
.momentum-detail-chart-tools .momentum-position-sizing-config { border: 1px solid #d8cdb9; border-right: 0; border-radius: 0; background: transparent; color: #675335; padding: 2px 5px; font: inherit; font-size: 10px; cursor: pointer; }
.position-sizing-config-dialog { width: min(430px, calc(100vw - 28px)); }
.position-config-form { display: grid; gap: 12px; padding: 18px 20px 4px; }
.position-config-form label { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 8px; font-size: 13px; }
.position-config-form label > span { grid-column: 1 / -1; color: #5e5548; font-weight: 700; }
.position-config-form input, .position-config-form select { grid-column: 1; width: 100%; box-sizing: border-box; border: 1px solid #cfc5b4; border-radius: 4px; background: #fffdf8; padding: 8px 9px; font: inherit; }
.position-config-form b { grid-column: 2; font-size: 11px; color: #847766; }
.momentum-live-alert-items button:hover,
.momentum-live-alert-items button:focus-visible {
  background: #fff;
}
.momentum-live-alert-items button b {
  font-size: 11px;
  font-weight: 900;
}
.momentum-live-alert-items button span {
  font-size: 10px;
  opacity: .76;
}
.momentum-live-alert-items button em {
  margin-left: -3px;
  font-size: 10px;
  font-style: normal;
  font-variant-numeric: tabular-nums;
  opacity: .76;
}
.momentum-live-alert-items button em::before { content: '· '; }
/* 候选（未真正触发）用虚线边框和视觉降一档，跟已触发区分开。 */
.momentum-live-alert-items button.candidate { border-style: dashed; background: rgba(255, 255, 255, .5); }
/* 展开/收起只服务移动端横滑，桌面端自动换行不需要。 */
.momentum-live-alert-toggle { display: none; }
.momentum-live-alert-items button.new { animation: momentum-live-alert-pulse 1.8s ease-in-out infinite; }
@keyframes momentum-live-alert-pulse { 50% { box-shadow: 0 0 0 3px rgba(165, 43, 43, .14); } }
.momentum-live-ma-alert .momentum-live-alert-items button.new { animation-name: momentum-live-risk-pulse; }
@keyframes momentum-live-risk-pulse { 50% { box-shadow: 0 0 0 3px rgba(33, 122, 75, .15); } }
/* 风险区与"次日形态"同为左右结构：左侧是说明，右侧按均线分行展示 code。
   code 按钮沿用形态区的方形边框，只是内容简化为单个 code。 */
.momentum-live-ma-alert {
  /* 左侧说明与右侧分组整体垂直居中 */
  align-items: center;
  gap: 14px;
}
.momentum-ma-groups {
  display: flex;
  flex-direction: column;
  /* 各行等宽（取最宽的一行），code 的左边界才能对齐成一列 */
  align-items: stretch;
  gap: 5px;
}
.momentum-ma-row {
  display: grid;
  /* 首列固定宽度容纳"跌破MA200 + 计数"，第二列 code 统一从这里左对齐 */
  grid-template-columns: 88px minmax(0, 1fr);
  align-items: center;
  gap: 8px;
}
.momentum-ma-tag {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.momentum-ma-tag i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 17px;
  height: 17px;
  box-sizing: border-box;
  padding: 0 4px;
  border: 1px solid rgba(25, 95, 59, .3);
  border-radius: 9px;
  background: rgba(25, 95, 59, .12);
  font-size: 10px;
  font-weight: 800;
  font-style: normal;
  font-variant-numeric: tabular-nums;
}
/* 形态区的 code 靠右排，风险区改左对齐，跟标签列形成整齐的两列。 */
.momentum-ma-codes {
  justify-content: flex-start;
}
/* 形态区按钮 28px 偏高，四行叠起来会压过左侧说明，这里收一档。 */
.momentum-ma-codes button {
  min-height: 24px;
  padding: 2px 7px;
}
.momentum-ma-codes button b {
  font-size: 11px;
  font-weight: 900;
}
.momentum-live-breakout-row > td { background: rgba(185, 54, 54, .08); }
.momentum-live-breakout-candidate-row > td { background: rgba(185, 54, 54, .045); }
.momentum-live-ma-row > td { background: rgba(46, 139, 87, .075); }
.watchlist-monitor-cell {
  min-width: 112px;
}
.watchlist-monitor-state {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.watchlist-monitor-chip {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 2px 6px;
  border: 1px solid;
  border-radius: 4px;
  font-size: 10px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}
.watchlist-monitor-chip.breakout {
  border-color: #deb0b0;
  background: #fff0f0;
  color: #982a2a;
}
.watchlist-monitor-chip.breakout.candidate {
  background: #fdf3f3;
  color: #a84444;
}
.watchlist-monitor-chip.breakdown {
  border-color: #92cbaa;
  background: #eaf7ef;
  color: #19633d;
}
.watchlist-monitor-empty {
  color: var(--muted);
  opacity: .55;
}
.momentum-market-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.momentum-market-status[hidden] { display: none; }
.momentum-market-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 22px;
  padding: 0 9px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
  white-space: nowrap;
}
.momentum-market-chip::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.momentum-market-chip.open {
  color: #2f6f65;
  border-color: rgba(47,111,101,.42);
}
.momentum-market-chip.closed {
  opacity: .72;
}
.momentum-stage-update-button {
  align-self: center;
  height: 34px;
  padding: 0 13px;
  border: 1px solid var(--ink);
  border-radius: 2px;
  background: var(--ink);
  color: var(--paper);
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.momentum-stage-update-button:hover,
.momentum-stage-update-button:focus-visible {
  background: #000;
}
.momentum-watchlist-table {
  min-width: 720px;
}
.momentum-watchlist-table.watchlist-table-wide {
  min-width: 1420px;
}
.momentum-watchlist-panel .table-wrap {
  overflow-x: auto;
  overscroll-behavior-x: contain;
}
.momentum-watchlist-panel .momentum-table-actions button {
  height: 30px;
  padding: 0 12px;
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
/* 实时看盘：红涨绿跌（与国内看盘习惯一致，仅作用于本面板） */
.momentum-watchlist-panel .positive { color: #c92a2a; }
.momentum-watchlist-panel .negative { color: #087f5b; }
.watchlist-pct-chip {
  display: inline-flex;
  justify-content: flex-end;
  min-width: 68px;
  padding: 2px 7px;
  border-radius: 2px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}
.watchlist-pct-chip.up {
  color: #c92a2a;
  background: rgba(201,42,42,.10);
}
.watchlist-pct-chip.down {
  color: #087f5b;
  background: rgba(8,127,91,.10);
}
.watchlist-range {
  color: var(--muted);
  font-size: 11px;
}
/* 量比：对明显放量/缩量做视觉区分（暖色=放量，冷色=缩量） */
.watchlist-vol-ratio.vol-surge {
  color: #b91c1c;
  background: rgba(220,38,38,.14);
  padding: 1px 5px;
  border-radius: 2px;
  font-weight: 700;
}
.watchlist-vol-ratio.vol-expand {
  color: #c2410c;
  font-weight: 700;
}
.watchlist-vol-ratio.vol-shrink {
  color: #1e6b8a;
  font-weight: 700;
}
.watchlist-vol-ratio.vol-dry {
  color: #155e75;
  background: rgba(8,145,178,.14);
  padding: 1px 5px;
  border-radius: 2px;
  font-weight: 700;
}
th.watchlist-sortable {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
th.watchlist-sortable:hover {
  color: var(--ink);
}
th.watchlist-sortable .watchlist-sort-arrow {
  margin-left: 3px;
  font-size: 9px;
  font-style: normal;
  opacity: .38;
}
th.watchlist-sortable.sorted-asc,
th.watchlist-sortable.sorted-desc {
  color: var(--ink);
}
th.watchlist-sortable.sorted-asc .watchlist-sort-arrow,
th.watchlist-sortable.sorted-desc .watchlist-sort-arrow {
  opacity: 1;
}
#momentumBatchModal .data-health-batch-groups {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
.momentum-stage-help {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 2px 12px;
  align-items: start;
  margin: -4px 0 14px;
  padding: 10px 12px;
  border-left: 3px solid var(--accent);
  background: rgba(11,95,255,.06);
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}
.momentum-stage-help-title {
  display: grid;
  gap: 2px;
  min-width: 94px;
}
.momentum-stage-help-title > span {
  color: var(--accent);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
}
.momentum-stage-help-title strong { color: var(--ink); white-space: nowrap; }
.momentum-stage-help-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.momentum-stage-help-copy p { margin: 0; }
.momentum-stage-help[hidden] { display: none; }
.momentum-table-panel {
  background: rgba(255,253,248,.92);
}
.momentum-table-actions,
.momentum-pattern-filter {
  display: flex;
  align-items: center;
}
.momentum-table-actions { gap: 10px; }
.momentum-pattern-filter {
  gap: 7px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}
.momentum-pattern-filter select {
  width: 224px;
  height: 32px;
  padding: 0 30px 0 9px;
  border: 1px solid var(--line);
  border-radius: 2px;
  background-color: rgba(255,253,248,.96);
  color: var(--ink);
  font-size: 11px;
  font-weight: 800;
}
.momentum-pattern-filter select:focus-visible {
  border-color: var(--accent);
  outline: 2px solid rgba(11,95,255,.12);
  outline-offset: 1px;
}
.momentum-pattern-help-modal { z-index: 75; }
.momentum-pattern-help-dialog {
  width: min(920px, 96vw);
  max-height: min(82vh, 760px);
  max-height: min(82dvh, 760px);
  overflow: hidden;
  border: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: var(--shadow);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}
.momentum-pattern-help-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--line);
}
.momentum-pattern-help-head strong { display: block; font-size: 17px; }
.momentum-pattern-help-head span { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; line-height: 1.45; }
.momentum-pattern-help-body {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
  overflow-y: auto;
  padding: 18px;
}
.momentum-pattern-help-group { min-width: 0; }
.momentum-pattern-help-group h3 {
  margin: 0 0 10px;
  color: var(--accent);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}
.momentum-pattern-help-group div { margin-top: 9px; }
.momentum-pattern-help-group strong { color: var(--ink); font-size: 12px; }
.momentum-pattern-help-group p { margin: 3px 0 0; color: var(--muted); font-size: 11px; line-height: 1.55; }
.momentum-pager {
  padding: 10px 12px 12px;
  border-top: 1px solid var(--line);
}
.momentum-pager-inner { flex-wrap: wrap; gap: 8px 12px; }
.momentum-pager-total { margin-right: auto; white-space: nowrap; }
.momentum-page-size { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.momentum-page-size select {
  min-width: 66px;
  min-height: 30px;
  padding: 0 24px 0 8px;
  border: 1px solid var(--line);
  background-color: var(--paper);
  color: var(--ink);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.momentum-stage-tab-divider::after { left: 14px; }
.momentum-count-link {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--accent);
  font-size: inherit;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.momentum-count-link:hover { color: #0846c4; }
.momentum-count-modal { z-index: 78; }
.momentum-count-dialog {
  width: min(1000px, 95vw);
  max-height: min(80vh, 720px);
  max-height: min(80dvh, 720px);
}
.momentum-count-subtitle {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
}
.momentum-count-body {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-height: 0;
  overflow: hidden;
}
.momentum-count-summary {
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.momentum-count-chart {
  min-height: 0;
  padding: 10px 14px 14px;
  overflow: auto;
}
.momentum-count-plot { position: relative; }
.momentum-count-svg { display: block; width: 100%; height: auto; }
.momentum-count-grid { stroke: var(--line); stroke-width: 1; }
.momentum-count-axis { fill: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.momentum-count-month { stroke: rgba(27,31,35,.14); stroke-width: 1; stroke-dasharray: 2 4; }
.momentum-count-area { fill: rgba(11,95,255,.10); stroke: none; }
.momentum-count-line { fill: none; stroke: var(--accent); stroke-width: 1.8; stroke-linejoin: round; }
.momentum-count-point { fill: var(--accent); opacity: .5; }
.momentum-count-cursor { stroke: var(--ink); stroke-width: 1; stroke-dasharray: 3 3; }
.momentum-count-cursor-dot { fill: var(--paper); stroke: var(--ink); stroke-width: 2; }
.momentum-count-hit { fill: transparent; }
.momentum-count-hit:hover { fill: rgba(11,95,255,.05); }
.momentum-count-tooltip {
  position: absolute;
  z-index: 1;
  display: grid;
  gap: 2px;
  min-width: 124px;
  padding: 6px 9px;
  border: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: var(--shadow);
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  pointer-events: none;
  white-space: nowrap;
}
.momentum-count-tooltip strong { color: var(--ink); }
.momentum-count-tooltip[hidden] { display: none; }
.momentum-count-empty {
  margin: 0;
  padding: 24px 0;
  color: var(--muted);
  font-size: 12px;
  text-align: center;
}
.momentum-history-modal { z-index: 75; }
.momentum-history-dialog {
  width: min(1080px, 96vw);
  max-height: min(84vh, 800px);
  max-height: min(84dvh, 800px);
  overflow: hidden;
  border: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: var(--shadow);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}
.momentum-history-body {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-height: 0;
  overflow: hidden;
}
.momentum-history-table-wrap {
  overflow-y: auto;
}
.momentum-history-toggle {
  align-self: center;
  height: 30px;
  min-height: 30px;
  padding: 0 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255,255,255,.65);
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
}
.momentum-history-toggle:hover {
  border-color: var(--ink);
  color: var(--ink);
}
.momentum-history-toggle.active {
  background: var(--ink);
  border-color: var(--ink);
  color: #fff;
}
.momentum-history-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--line);
}
.momentum-history-actions,
.momentum-history-mode,
.momentum-history-summary {
  display: flex;
  align-items: center;
}
.momentum-history-actions {
  gap: 10px;
}
.momentum-history-mode {
  border: 1px solid var(--line);
}
.momentum-history-mode button {
  height: 30px;
  min-height: 30px;
  padding: 0 10px;
  border: 0;
  border-right: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.momentum-history-mode button:last-child {
  border-right: 0;
}
.momentum-history-mode button.active {
  background: var(--ink);
  color: #fffdf8;
}
.momentum-history-summary {
  gap: 18px;
  min-height: 34px;
  padding: 0 12px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.momentum-history-summary strong {
  margin-left: 4px;
  color: var(--ink);
}
.momentum-history-table {
  min-width: 980px;
}
.momentum-history-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--panel);
  box-shadow: 0 1px 0 var(--line);
}
.momentum-history-trigger-filter span {
  white-space: nowrap;
}
.momentum-history-trigger-filter select {
  width: 148px;
}
.momentum-history-date {
  color: var(--muted);
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
  font-size: 11px;
}
.momentum-return-pending {
  color: #aaa397;
}
.momentum-table th,
.momentum-table td {
  padding: 10px 11px;
  white-space: nowrap;
}
.momentum-table tbody tr {
  cursor: pointer;
}
.momentum-table tbody tr:hover td {
  background: rgba(11,95,255,.06);
}
.momentum-symbol {
  display: grid;
  height: auto;
  min-height: 34px;
  padding: 3px 8px;
  border: 0;
  background: transparent;
  text-align: left;
}
.momentum-symbol strong {
  font-family: "SF Mono", "Menlo", "Consolas", monospace;
  font-size: 12px;
}
.momentum-symbol span {
  margin-top: 3px;
  color: var(--muted);
  font-size: 11px;
}
.momentum-industry {
  max-width: 150px;
  overflow: hidden;
  color: var(--muted);
  text-overflow: ellipsis;
}
.momentum-score {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.momentum-table .positive { color: var(--bad); }
.momentum-table .negative { color: var(--good); }
.momentum-cell-skeleton {
  display: inline-block;
  width: 42px;
  height: 10px;
  border-radius: 2px;
  background: var(--line);
  vertical-align: middle;
  animation: momentum-cell-pulse 1.4s ease-in-out infinite alternate;
}
@keyframes momentum-cell-pulse { to { opacity: .35; } }
@media (prefers-reduced-motion: reduce) {
  .momentum-cell-skeleton { animation: none; }
}
.momentum-data-state {
  display: grid;
  gap: 3px;
  max-width: 230px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
  white-space: normal;
}
.momentum-data-state > span { font-weight: 700; }
.momentum-data-state small { font-size: 10px; overflow-wrap: anywhere; }
.momentum-data-state.error > span,
.momentum-data-state.stale > span { color: var(--bad); }
.momentum-classify-retry {
  margin-left: 8px;
  padding: 2px 6px;
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  font: inherit;
  cursor: pointer;
}
.momentum-classify-retry:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.momentum-signal {
  display: inline-flex;
  max-width: 250px;
  overflow: hidden;
  padding: 4px 7px;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.momentum-signal.triggered {
  border-color: rgba(8,127,91,.25);
  background: rgba(8,127,91,.09);
  color: var(--good);
  font-weight: 900;
}
.momentum-signal-column {
  min-width: 196px;
  white-space: normal !important;
}
.momentum-signal-stack {
  display: grid;
  width: min(230px, 100%);
  gap: 4px;
  line-height: 1.25;
}
.momentum-signal-primary {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 7px;
}
.momentum-signal-primary > span {
  flex: 0 0 auto;
  min-width: 34px;
  padding: 3px 5px;
  border: 1px solid var(--line);
  background: var(--panel-2);
  color: var(--muted);
  font-size: 9px;
  font-style: normal;
  font-weight: 900;
  letter-spacing: .08em;
  text-align: center;
}
.momentum-signal-primary > strong {
  overflow: hidden;
  color: var(--ink);
  font-size: 11px;
  font-weight: 900;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.momentum-signal-stack.focus .momentum-signal-primary > span {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
}
.momentum-signal-stack.focus .momentum-signal-primary > strong { color: var(--good); }
.momentum-signal-stack.candidate .momentum-signal-primary > span {
  border-color: rgba(11, 95, 255, .34);
  background: rgba(11, 95, 255, .08);
  color: var(--accent);
}
.momentum-signal-age {
  flex: 0 0 auto;
  padding: 1px 5px;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  line-height: 1.3;
  white-space: nowrap;
}
.momentum-signal-age.fresh {
  border-color: rgba(8, 127, 91, .35);
  background: rgba(8, 127, 91, .1);
  color: var(--good);
  font-weight: 900;
}
.momentum-signal-secondary {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.momentum-signal-secondary i {
  max-width: 130px;
  overflow: hidden;
  padding: 1px 5px;
  border: 1px solid var(--line);
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.momentum-signal-secondary i.risk {
  border-color: rgba(194, 65, 12, .4);
  background: rgba(194, 65, 12, .07);
  color: #c2410c;
}
.momentum-signal-secondary i.more { border-style: dashed; }
.momentum-symbol .momentum-symbol-industry {
  max-width: 150px;
  margin-top: 2px;
  overflow: hidden;
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  opacity: .8;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* 距触发位：逼近用暖色强调，已突破沿用本表的红涨约定，远离/无意义保持弱化 */
.momentum-table .momentum-gap b {
  display: block;
  font-variant-numeric: tabular-nums;
}
.momentum-table .momentum-gap small {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 400;
}
.momentum-table .momentum-gap.far b,
.momentum-table .momentum-gap.above b { color: var(--muted); font-weight: 500; }
.momentum-table .momentum-gap.near b,
.momentum-table .momentum-gap.near small { color: #c2410c; }
.momentum-table .momentum-gap.near b { font-weight: 900; }
.momentum-table .momentum-gap.broken b { color: var(--bad); font-weight: 900; }
.momentum-table td.extended { color: #c2410c; font-weight: 700; }
th.momentum-sortable {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
th.momentum-sortable:hover,
th.momentum-sortable.sorted-asc,
th.momentum-sortable.sorted-desc { color: var(--ink); }
th.momentum-sortable .momentum-sort-arrow {
  margin-left: 3px;
  font-size: 9px;
  font-style: normal;
  opacity: .38;
}
th.momentum-sortable.sorted-asc .momentum-sort-arrow,
th.momentum-sortable.sorted-desc .momentum-sort-arrow { opacity: 1; }
.momentum-timing-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line);
}
.momentum-timing-label {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}
.momentum-timing-chips button {
  display: inline-flex;
  height: 26px;
  min-height: 26px;
  align-items: center;
  gap: 6px;
  padding: 0 10px;
  border: 1px solid var(--line);
  background: var(--panel);
  color: var(--ink);
  font-size: 12px;
  cursor: pointer;
}
.momentum-timing-chips button b {
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.momentum-timing-chips button:hover { border-color: var(--ink); }
.momentum-timing-chips button.active {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
}
.momentum-timing-chips button.active b { color: inherit; opacity: .8; }
.momentum-detail-modal {
  z-index: 70;
}
.momentum-detail-dialog {
  width: min(1540px, 99vw);
  height: min(98vh, 1080px);
  height: min(98dvh, 1080px);
  max-height: 98vh;
  max-height: 98dvh;
  overflow: hidden;
  border: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: var(--shadow);
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
}
.momentum-detail-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
}
.momentum-detail-head > div { min-width: 0; }
.momentum-detail-head-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 8px;
}
.momentum-favorite-button {
  min-width: 72px;
  height: 36px;
  padding: 0 14px;
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
  font-weight: 900;
}
.momentum-favorite-button.active {
  background: var(--ink);
  color: var(--paper);
}
.momentum-detail-close {
  width: 36px;
  min-width: 36px;
  height: 36px;
  padding: 0;
}
.momentum-detail-head strong {
  display: block;
  font-size: 17px;
}
.momentum-detail-head span {
  display: block;
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
  font-variant-numeric: tabular-nums;
}
.momentum-detail-body {
  min-height: 0;
  overflow-y: auto;
  padding: 10px 12px 12px;
  overscroll-behavior: contain;
}
.momentum-detail-chart-wrap {
  overflow: hidden;
  border: 1px solid var(--line);
  background: #fffdf8;
  isolation: isolate;
}
.momentum-detail-chart-tools {
  display: grid;
  grid-template-columns: auto auto minmax(180px, 1fr);
  align-items: center;
  gap: 8px;
  margin: 8px 0;
  padding: 7px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.84);
  color: var(--muted);
  font-size: 12px;
}
.momentum-chart-tool-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.draw-tools-shell {
  gap: 4px;
}
.draw-tools-shell .draw-tools {
  flex: 0 1 auto;
}
.momentum-detail-chart-tools button {
  height: 32px;
  min-height: 32px;
  padding: 0 9px;
  border-color: var(--line);
  background: #fffdf8;
  font-size: 12px;
}
.momentum-detail-chart-tools button:hover { border-color: var(--ink); }
.momentum-detail-chart-tools button:disabled {
  border-color: var(--line);
  color: #b7b1a6;
  cursor: not-allowed;
  opacity: .55;
}
.momentum-chart-step {
  width: 34px;
  min-width: 34px;
  padding: 0 !important;
  font-size: 17px !important;
  font-weight: 900;
  line-height: 1;
}
.momentum-chart-step-overlay {
  position: absolute;
  left: 10px;
  bottom: 38px;
  z-index: 3;
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid rgba(23,23,23,.18);
  background: rgba(255,253,248,.9);
  box-shadow: 0 4px 14px rgba(23,23,23,.1);
  backdrop-filter: blur(4px);
  /* 逐根按钮不参与图表或页面的捏合缩放。 */
  touch-action: none;
}
.momentum-chart-step-overlay button {
  width: 36px;
  min-width: 36px;
  height: 34px;
  min-height: 34px;
  padding: 0;
  border: 1px solid var(--line);
  background: #fffdf8;
  color: var(--ink);
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
  touch-action: none;
}
.momentum-chart-step-overlay button:disabled {
  color: #b7b1a6;
  cursor: not-allowed;
  opacity: .55;
}
.momentum-benchmark-toggle[aria-pressed="true"] {
  border-color: var(--accent);
  background: rgba(11,95,255,.08);
  color: var(--accent);
  font-weight: 900;
}
.momentum-full-kline-toggle[aria-pressed="true"] {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
  font-weight: 900;
}
.draw-tools button[aria-pressed="true"] {
  border-color: #c98f00;
  background: var(--accent-2);
  color: var(--ink);
  font-weight: 900;
  box-shadow: inset 0 -2px 0 rgba(23,23,23,.28);
}
.momentum-draw-toggle[aria-pressed="true"] {
  border-color: #c98f00;
  background: var(--accent-2);
  color: var(--ink);
  font-weight: 900;
}
.draw-tools[hidden] { display: none; }
/* ── 时间范围：1M~全部 合并成一个分段控件，和右侧功能开关在视觉上分组 ── */
.range-tools [data-momentum-range] {
  background: #f3eee3;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.range-tools [data-momentum-range] + [data-momentum-range] { margin-left: -5px; }
.range-tools [data-momentum-range="all"] { margin-right: 4px; }
.range-tools [data-momentum-range]:hover { position: relative; z-index: 1; color: var(--ink); }
.range-tools [data-momentum-range][aria-pressed="true"] {
  position: relative;
  z-index: 1;
  border-color: var(--ink);
  background: var(--panel);
  color: var(--ink);
  font-weight: 900;
  box-shadow: inset 0 -2px 0 var(--ink);
}
/* ── 画线托盘：琥珀色底 + 左侧色条，与常规按钮明确区分；工具带图标，清空/完成为动作按钮 ── */
.draw-tools {
  padding: 2px;
  border: 1px solid #e6c46e;
  border-left: 3px solid var(--accent-2);
  background: #fff4d6;
  gap: 3px;
  animation: momentum-draw-tray-in .16s ease-out;
}
.draw-tools button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  border-color: #ead7a4;
  background: #fffdf6;
  color: #4a3a12;
}
.draw-tools [data-momentum-draw="clear"] {
  margin-left: 4px;
  border-color: transparent;
  background: transparent;
  color: var(--bad);
}
.momentum-detail-chart-tools .draw-tools [data-momentum-draw="clear"]:hover { border-color: rgba(201,42,42,.45); }
.draw-tools [data-momentum-draw="done"] {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--paper);
  font-weight: 800;
}
.momentum-draw-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
}
.momentum-draw-toggle::before,
.draw-tools [data-momentum-draw="horizontal"]::before,
.draw-tools [data-momentum-draw="trendline"]::before,
.draw-tools [data-momentum-draw="position-long"]::before,
.draw-tools [data-momentum-draw="done"]::before {
  content: "";
  flex: 0 0 auto;
  width: 13px;
  height: 13px;
  background: currentColor;
  -webkit-mask: var(--momentum-tool-icon) center / contain no-repeat;
  mask: var(--momentum-tool-icon) center / contain no-repeat;
}
.momentum-draw-toggle { --momentum-tool-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M10.6 2.4l3 3L5.4 13.6 1.8 14.2l.6-3.6z' fill='none' stroke='black' stroke-width='1.7' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.draw-tools [data-momentum-draw="horizontal"] { --momentum-tool-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M1.5 8h13' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3Ccircle cx='8' cy='8' r='2.3'/%3E%3C/svg%3E"); }
.draw-tools [data-momentum-draw="trendline"] { --momentum-tool-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 13L13 3' stroke='black' stroke-width='1.8' stroke-linecap='round'/%3E%3Ccircle cx='3' cy='13' r='2.2'/%3E%3Ccircle cx='13' cy='3' r='2.2'/%3E%3C/svg%3E"); }
.draw-tools [data-momentum-draw="position-long"] { --momentum-tool-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 1.5l5.5 6.2H9.8v6.8H6.2V7.7H2.5z'/%3E%3C/svg%3E"); }
.draw-tools [data-momentum-draw="done"] { --momentum-tool-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M2.8 8.6l3.4 3.2L13.2 4.4' fill='none' stroke='black' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
@keyframes momentum-draw-tray-in {
  from { opacity: 0; transform: translateY(-3px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .draw-tools { animation: none; }
}
.momentum-tools-legend {
  grid-column: -2 / -1;
  justify-self: end;
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 6px;
  min-width: 0;
  overflow-x: auto;
  white-space: nowrap;
  scrollbar-width: thin;
}
.momentum-ma-toggle i { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 7px; }
.momentum-ma-legend {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.momentum-ma-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  width: auto;
  min-width: 0;
  height: 24px;
  min-height: 24px;
  padding: 0 5px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 10px;
  font-weight: 800;
}
.momentum-ma-toggle:hover { background: rgba(23,23,23,.05); }
.momentum-ma-toggle[aria-pressed="true"],
.momentum-ma-toggle[aria-pressed="true"]:hover { border: 0; background: transparent; color: var(--ink); }
.momentum-ma-toggle[aria-pressed="false"] { opacity: .32; }
.momentum-ma-toggle[aria-pressed="false"] i { background: var(--muted) !important; }
.momentum-pressure-legend {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
  padding-left: 6px;
  border-left: 1px solid var(--line);
  white-space: nowrap;
}
.momentum-pressure-toggle {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  flex: 0 0 auto;
  width: auto;
  min-width: 0;
  height: 22px;
  min-height: 22px;
  padding: 0 4px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 9px;
  font-weight: 800;
  white-space: nowrap;
}
.momentum-pressure-toggle i { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 7px; background: #9f3b2d; }
.momentum-pressure-toggle.role-overhead i { background: #c92a2a; }
.momentum-pressure-toggle.role-testing i { background: #7048e8; }
.momentum-pressure-toggle.role-approaching i { background: #e67700; }
.momentum-pressure-toggle.role-recent_support i { background: #087f5b; }
.momentum-pressure-toggle.all i { background: linear-gradient(135deg, #9f3b2d 0 50%, #c92a2a 50%); }
.momentum-pressure-toggle.primary { color: var(--ink); font-weight: 950; }
.momentum-pressure-toggle:hover { background: rgba(23,23,23,.05); }
.momentum-pressure-toggle[aria-pressed="true"],
.momentum-pressure-toggle[aria-pressed="true"]:hover { border: 0; background: transparent; color: var(--ink); }
.momentum-pressure-toggle[aria-pressed="false"] { opacity: .3; }
.momentum-pressure-toggle[aria-pressed="false"] i { background: var(--muted) !important; }
.momentum-chart-stage {
  position: relative;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
}
.momentum-chart-stage * {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -webkit-user-drag: none;
  user-select: none;
}
.momentum-chart-benchmark-picker {
  position: absolute;
  top: 0;
  left: 1.75%;
  z-index: 2;
  display: block;
  height: 30px;
}
.momentum-chart-benchmark-picker select {
  width: 78px;
  height: 100%;
  box-sizing: border-box;
  padding: 0 24px 0 8px;
  border-color: var(--line);
  border-radius: 0 !important;
  background-color: rgba(255,253,248,.94);
  color: var(--ink);
  font-size: 11px;
  font-weight: 900;
}
.momentum-chart-subchart-picker {
  position: absolute;
  top: var(--momentum-subchart-top, 76%);
  left: 1.75%;
  z-index: 3;
  display: block;
  height: 30px;
  transform: translateY(1px);
}
.momentum-chart-subchart-picker select {
  width: 96px;
  height: 100%;
  box-sizing: border-box;
  padding: 0 24px 0 8px;
  border-color: var(--line);
  border-radius: 0 !important;
  background-color: rgba(255,253,248,.94);
  color: var(--ink);
  font-size: 11px;
  font-weight: 900;
}
.momentum-candle-svg {
  display: block;
  width: 100%;
  min-width: 0;
  height: min(70vh, 750px);
  min-height: 560px;
  touch-action: none;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  cursor: crosshair;
  user-select: none;
}
.momentum-candle-svg.dragging { cursor: grabbing; }
.momentum-candle-svg.pinching { cursor: zoom-in; }
.momentum-candle-svg.crosshair-active { cursor: crosshair; }
.momentum-candle-svg.drawing-precision { cursor: none; }
.momentum-single-chart { height: min(68vh, 680px); min-height: 560px; }
.momentum-dual-chart { height: min(76vh, 750px); min-height: 620px; }
.momentum-grid { stroke: rgba(23,23,23,.08); stroke-width: 1; vector-effect: non-scaling-stroke; }
.momentum-pane-label { fill: var(--ink); font-size: 12px; font-weight: 900; }
.momentum-crosshair-v,
.momentum-crosshair-h { stroke: var(--accent); stroke-width: 1; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; }
.momentum-crosshair-label,
.momentum-crosshair-date { fill: var(--ink); font-size: 11px; font-weight: 800; }
.momentum-chart-readout { font-size: 11px; font-weight: 800; }
.momentum-chart-readout .momentum-readout-label { fill: #8a8475; font-weight: 700; }
.momentum-chart-readout .momentum-readout-value { fill: var(--ink); font-weight: 800; }
.momentum-chart-readout .momentum-readout-up { fill: #d2332f; font-weight: 800; }
.momentum-chart-readout .momentum-readout-down { fill: #0a8f3c; font-weight: 800; }
.qqq-legend { color: var(--accent); font-weight: 900; }
.stock-legend { color: var(--ink); font-weight: 900; }
.momentum-candle-wick {
  stroke: currentColor;
  vector-effect: non-scaling-stroke;
  shape-rendering: crispEdges;
}
.momentum-candle-body {
  fill: currentColor;
  stroke: none;
  shape-rendering: crispEdges;
}
.momentum-candle.up { color: var(--bad); }
.momentum-candle.down { color: var(--good); }
.momentum-candle .momentum-volume {
  fill: currentColor;
  opacity: .24;
  stroke: none;
}
.momentum-score-line {
  fill: none;
  stroke: var(--accent);
  stroke-width: 2;
  stroke-linejoin: round;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}
.momentum-score-point {
  fill: var(--panel);
  stroke: var(--accent);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}
.momentum-score-threshold {
  stroke: rgba(159, 59, 45, .38);
  stroke-width: 1;
  stroke-dasharray: 4 4;
  vector-effect: non-scaling-stroke;
}
.momentum-score-axis-label {
  paint-order: stroke;
  stroke: #fffdf8;
  stroke-width: 3px;
  stroke-linejoin: round;
}
.momentum-rs-line {
  fill: none;
  stroke: #2f6f65;
  stroke-width: 2;
  stroke-linejoin: round;
  stroke-linecap: round;
  vector-effect: non-scaling-stroke;
}
.momentum-rs-baseline {
  stroke: rgba(23, 23, 23, .28);
  stroke-width: 1;
  stroke-dasharray: 4 4;
  vector-effect: non-scaling-stroke;
}
.momentum-rs-axis-label {
  paint-order: stroke;
  stroke: #fffdf8;
  stroke-width: 3px;
  stroke-linejoin: round;
}
.momentum-ma-line {
  fill: none;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}
.momentum-axis {
  stroke: var(--line);
  vector-effect: non-scaling-stroke;
}
.momentum-price-boundary-label {
  paint-order: stroke;
  stroke: #fffdf8;
  stroke-width: 3px;
  stroke-linejoin: round;
}
.momentum-chart-hit {
  fill: transparent;
  cursor: crosshair;
}
.momentum-annotation-line,
.momentum-annotation-trend {
  stroke: var(--bad);
  stroke-width: 3;
  stroke-dasharray: none;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}
.momentum-annotation-trend {
  stroke: var(--bad);
  stroke-dasharray: none;
}
.momentum-annotation-hit {
  fill: none;
  stroke: transparent;
  stroke-width: 18;
  pointer-events: stroke;
  cursor: pointer;
  vector-effect: non-scaling-stroke;
}
.momentum-annotation-item.selected .momentum-annotation-line,
.momentum-annotation-item.selected .momentum-annotation-trend {
  stroke-width: 4;
  stroke-dasharray: none;
}
.momentum-annotation-handle {
  fill: #fffdf8;
  stroke: var(--bad);
  stroke-width: 2;
  pointer-events: none;
  vector-effect: non-scaling-stroke;
}
.momentum-position-zone {
  pointer-events: all;
  cursor: pointer;
}
.momentum-position-zone.win { fill: rgba(201, 42, 42, .1); }
.momentum-position-zone.loss { fill: rgba(8, 127, 91, .1); }
.momentum-position-zone[data-momentum-annotation-handle] { cursor: move; }
/* 浅色区域分层：价格已走过的部分（持仓盈亏）用实色，尚未到达的空间保持浅色 */
.momentum-position-zone.progress { pointer-events: none; }
.momentum-position-zone.win.progress { fill: rgba(201, 42, 42, .22); }
.momentum-position-zone.loss.progress { fill: rgba(8, 127, 91, .22); }
.momentum-annotation-item.selected .momentum-position-zone.win { fill: rgba(201, 42, 42, .14); }
.momentum-annotation-item.selected .momentum-position-zone.loss { fill: rgba(8, 127, 91, .14); }
.momentum-annotation-item.selected .momentum-position-zone.win.progress { fill: rgba(201, 42, 42, .28); }
.momentum-annotation-item.selected .momentum-position-zone.loss.progress { fill: rgba(8, 127, 91, .28); }
.momentum-position-line {
  stroke-width: 1.5;
  stroke-dasharray: 5 4;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}
.momentum-position-line.win { stroke: var(--bad); }
.momentum-position-line.loss { stroke: var(--good); }
.momentum-position-line.entry {
  stroke: var(--accent);
  stroke-dasharray: none;
}
.momentum-position-pill { pointer-events: none; }
.momentum-position-pill rect { fill: #4f4a40; opacity: .94; }
.momentum-position-pill.win rect { fill: var(--bad); }
.momentum-position-pill.loss rect { fill: var(--good); }
.momentum-position-pill text {
  fill: #fffdf8;
  font-size: 10px;
  font-weight: 700;
}
.momentum-position-price.entry {
  fill: var(--accent);
}
.momentum-position-price {
  font-size: 10px;
  font-weight: 700;
  pointer-events: none;
}
.momentum-position-price.win { fill: var(--bad); }
.momentum-position-price.loss { fill: var(--good); }
/* 移动端单行标签：价格 + 涨跌幅/盈亏比，带描边底色，叠在 K 线上依然清晰 */
.momentum-position-tag {
  font-size: 9.5px;
  font-weight: 700;
  paint-order: stroke;
  stroke: #fffdf8;
  stroke-width: 3px;
  stroke-linejoin: round;
  pointer-events: none;
}
.momentum-position-tag.win { fill: var(--bad); }
.momentum-position-tag.loss { fill: var(--good); }
.momentum-position-tag.entry { fill: var(--accent); }
.momentum-position-handle-hit {
  fill: transparent;
  pointer-events: all;
}
.momentum-position-handle-dot {
  fill: #fffdf8;
  stroke: var(--ink);
  stroke-width: 2;
  pointer-events: none;
  vector-effect: non-scaling-stroke;
}

.momentum-draw-pending {
  fill: var(--accent);
  stroke: #fffdf8;
  stroke-width: 2;
  pointer-events: none;
  vector-effect: non-scaling-stroke;
}
/* 水平线绘制预览：随鼠标移动并吸附到最近 OHLC 点位 */
.momentum-draw-preview {
  pointer-events: none;
}
.momentum-draw-preview-line {
  stroke: var(--accent);
  stroke-width: 1.5;
  stroke-dasharray: 5 4;
  vector-effect: non-scaling-stroke;
}
.momentum-draw-preview-dot {
  fill: var(--accent);
  stroke: #fffdf8;
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}
.momentum-draw-preview-label {
  fill: var(--accent);
  font-size: 11px;
  font-weight: 800;
}
.momentum-annotation-delete {
  cursor: pointer;
  pointer-events: all;
  color: var(--bad);
  filter: drop-shadow(0 1px 3px rgba(23, 23, 23, .28));
}
/* 胶囊按钮：浅底 + 细红边 + 垃圾桶图标，和图表配色一致，不再是突兀的黑块 */
.momentum-annotation-delete rect {
  fill: #fffdf8;
  fill-opacity: .96;
  stroke: currentColor;
  stroke-opacity: .55;
  stroke-width: 1;
  rx: 12px;
  vector-effect: non-scaling-stroke;
}
.momentum-annotation-delete path {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}
.momentum-annotation-delete text {
  fill: currentColor;
  font-size: 10px;
  font-weight: 800;
  pointer-events: none;
}
.momentum-annotation-delete:hover rect,
.momentum-annotation-delete:active rect {
  fill: var(--bad);
  fill-opacity: 1;
  stroke-opacity: 1;
}
.momentum-annotation-delete:hover path,
.momentum-annotation-delete:active path { stroke: #fffdf8; }
.momentum-annotation-delete:hover text,
.momentum-annotation-delete:active text { fill: #fffdf8; }
.momentum-point-magnifier {
  position: absolute;
  z-index: 4;
  box-sizing: border-box;
  overflow: hidden;
  border: 1px solid var(--ink);
  border-radius: 4px;
  background: rgba(255,253,248,.98);
  box-shadow: 0 8px 22px rgba(23,23,23,.22);
  color: var(--ink);
  pointer-events: none;
}
.momentum-point-magnifier[hidden] { display: none; }
.momentum-magnifier-readout {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  height: 28px;
  padding: 0 8px;
  border-bottom: 1px solid var(--line);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.momentum-magnifier-readout strong { font-size: 11px; }
.momentum-magnifier-readout span { color: var(--accent); font-weight: 900; }
.momentum-point-magnifier svg { display: block; width: 100%; height: 96px; }
.momentum-magnifier-band { fill: rgba(11, 95, 255, .12); }
.momentum-magnifier-guide {
  stroke: var(--accent);
  stroke-width: 1;
  stroke-dasharray: 3 3;
  vector-effect: non-scaling-stroke;
}
.momentum-magnifier-candle { color: var(--good); }
.momentum-magnifier-candle.up { color: var(--bad); }
.momentum-magnifier-candle line { stroke: currentColor; stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.momentum-magnifier-candle rect { fill: currentColor; }
.momentum-magnifier-candle.current rect { stroke: var(--ink); stroke-width: 1; vector-effect: non-scaling-stroke; }
.momentum-magnifier-date {
  fill: var(--muted);
  font-size: 8px;
  paint-order: stroke;
  stroke: #fffdf8;
  stroke-width: 2px;
  stroke-linejoin: round;
}
.momentum-magnifier-anchor {
  fill: var(--accent);
  stroke: #fffdf8;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}
/* 长按精准定点：主图上的十字线、吸附点与放大镜覆盖范围 */
.momentum-precision-cursor { pointer-events: none; }
.momentum-precision-cursor[hidden] { display: none; }
.momentum-precision-window { fill: rgba(11, 95, 255, .08); }
.momentum-precision-v,
.momentum-precision-h {
  stroke: var(--accent);
  stroke-width: 1;
  stroke-dasharray: 4 3;
  vector-effect: non-scaling-stroke;
}
.momentum-precision-dot {
  fill: var(--accent);
  stroke: #fffdf8;
  stroke-width: 2;
  vector-effect: non-scaling-stroke;
}
.momentum-axis-label {
  fill: var(--muted);
  font-size: 11px;
}
.momentum-auto-pressure { pointer-events: none; }
.momentum-auto-pressure-zone { fill: rgba(159,59,45,.055); pointer-events: none; }
.momentum-auto-pressure-line,
.momentum-auto-pressure-trend { stroke: #9f3b2d; stroke-width: 1.2; stroke-dasharray: 5 3; vector-effect: non-scaling-stroke; pointer-events: none; }
.momentum-auto-pressure-label { fill: #9f3b2d; font-size: 9px; font-weight: 900; paint-order: stroke; stroke: #fffdf8; stroke-width: 3px; stroke-linejoin: round; pointer-events: none; }
.momentum-auto-pressure-zone.role-overhead { fill: rgba(201,42,42,.08); }
.momentum-auto-pressure-line.role-overhead,
.momentum-auto-pressure-trend.role-overhead { stroke: #c92a2a; stroke-width: 1.8; stroke-dasharray: 2 2; }
.momentum-auto-pressure-label.role-overhead { fill: #c92a2a; }
.momentum-auto-pressure-line.role-testing,
.momentum-auto-pressure-trend.role-testing { stroke: #7048e8; }
.momentum-auto-pressure-label.role-testing { fill: #7048e8; }
.momentum-auto-pressure-line.role-approaching,
.momentum-auto-pressure-trend.role-approaching { stroke: #e67700; }
.momentum-auto-pressure-label.role-approaching { fill: #e67700; }
.momentum-auto-pressure-zone.role-recent_support { fill: rgba(8,127,91,.05); }
.momentum-auto-pressure-line.role-recent_support,
.momentum-auto-pressure-trend.role-recent_support { stroke: #087f5b; stroke-dasharray: 3 3; }
.momentum-auto-pressure-label.role-recent_support { fill: #087f5b; }
.momentum-auto-pressure-line.primary,
.momentum-auto-pressure-trend.primary { stroke-width: 2.1; }
/* ── K 线详情 · 信号面板：结论 → 关键价位 → 条件核对 → 风险，依据默认折叠 ── */
.momentum-insight {
  display: grid;
  gap: 10px;
  margin-top: 12px;
  padding: 12px;
  border: 1px solid var(--line);
  background: var(--panel);
  font-size: 12px;
}
.momentum-insight-head {
  --insight-tone: #946200;
  --insight-wash: rgba(148,98,0,.1);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 4px 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
}
.momentum-insight-head.tone-triggered { --insight-tone: #315d8c; --insight-wash: rgba(49,93,140,.1); }
.momentum-insight-head.tone-supported { --insight-tone: var(--good); --insight-wash: rgba(8,127,91,.1); }
.momentum-insight-head.tone-risk { --insight-tone: var(--bad); --insight-wash: rgba(201,42,42,.08); }
.momentum-insight-verdict {
  grid-row: span 2;
  align-self: stretch;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 64px;
  padding: 0 10px;
  border: 1px solid var(--insight-tone);
  background: var(--insight-wash);
  color: var(--insight-tone);
  font-size: 12px;
  font-weight: 950;
  letter-spacing: .04em;
  white-space: nowrap;
}
.momentum-insight-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; min-width: 0; }
.momentum-insight-title strong { color: var(--ink); font-size: 15px; font-weight: 900; line-height: 1.3; }
.momentum-insight-title small { color: var(--muted); font-size: 11px; }
.momentum-insight-next { margin: 0; color: var(--ink); font-size: 12px; line-height: 1.45; }
.momentum-insight-next b {
  margin-right: 6px;
  padding: 1px 5px;
  background: var(--ink);
  color: var(--paper);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .04em;
}
.momentum-insight-levels { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.momentum-insight-level {
  display: grid;
  align-content: start;
  gap: 2px;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-top: 3px solid var(--line);
  background: #fffaf0;
}
.momentum-insight-level > span { color: var(--muted); font-size: 10px; font-weight: 800; letter-spacing: .04em; }
.momentum-insight-level > b { color: var(--ink); font-size: 18px; font-weight: 900; line-height: 1.2; font-variant-numeric: tabular-nums; }
.momentum-insight-level > b small { margin-left: 2px; color: var(--muted); font-size: 11px; font-weight: 700; }
.momentum-insight-level > small { overflow: hidden; color: var(--muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.momentum-insight-level.tone-watch { border-top-color: #e0a100; }
.momentum-insight-level.tone-good { border-top-color: var(--good); }
.momentum-insight-level.tone-good > b { color: var(--good); }
.momentum-insight-level.tone-risk { border-top-color: var(--bad); }
.momentum-insight-score { border-top-color: var(--ink); }
.momentum-insight-score-bar { display: flex; gap: 2px; height: 5px; margin: 3px 0 1px; }
.momentum-insight-score-bar i { position: relative; overflow: hidden; background: rgba(23,23,23,.1); }
.momentum-insight-score-bar em { position: absolute; inset: 0 auto 0 0; background: var(--ink); }
.momentum-insight-checks {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.momentum-insight-checks li {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  align-content: start;
  gap: 1px 7px;
  min-width: 0;
  padding: 7px 8px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.5);
}
.momentum-insight-checks i {
  grid-row: span 3;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  font-size: 11px;
  font-style: normal;
  font-weight: 900;
}
.momentum-insight-checks li.ok i { background: var(--good); color: #fff; }
.momentum-insight-checks li.pending i { border: 1.5px solid #b9ae98; color: #b9ae98; }
.momentum-insight-checks span { color: var(--muted); font-size: 10px; font-weight: 800; }
.momentum-insight-checks b { color: var(--ink); font-size: 12px; font-weight: 850; line-height: 1.35; }
.momentum-insight-checks li.pending b { color: var(--muted); }
.momentum-insight-checks small { color: var(--muted); font-size: 10px; line-height: 1.35; }
.momentum-insight-risks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  padding: 7px 9px;
  border-left: 3px solid var(--bad);
  background: rgba(201,42,42,.05);
}
.momentum-insight-risks strong { margin-right: 3px; color: var(--bad); font-size: 11px; font-weight: 950; }
.momentum-insight-risks span { padding: 2px 7px; border: 1px solid rgba(201,42,42,.28); background: #fff; color: #a52222; font-size: 11px; line-height: 1.4; }
.momentum-insight-toggle {
  justify-self: center;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 30px;
  padding: 0 14px;
  border-color: var(--line);
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.momentum-insight-toggle::after {
  content: "";
  width: 6px;
  height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform .15s ease;
}
.momentum-insight-toggle[aria-expanded="true"]::after { transform: translateY(1px) rotate(-135deg); }
.momentum-insight-toggle:hover { border-color: var(--ink); color: var(--ink); }
.momentum-insight-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--line);
}
.momentum-insight-details section { display: grid; align-content: start; gap: 6px; min-width: 0; }
.momentum-insight-details section.wide { grid-column: 1 / -1; }
.momentum-insight-details strong { color: var(--ink); font-size: 11px; font-weight: 900; }
.momentum-insight-details small { color: var(--muted); font-size: 10px; }
.momentum-insight-tags { display: flex; flex-wrap: wrap; gap: 4px; }
.momentum-insight-tags span { padding: 2px 6px; background: rgba(8,127,91,.08); color: var(--good); font-size: 11px; line-height: 1.45; }
.momentum-insight-tags span.pattern { background: rgba(49,93,140,.09); color: #315d8c; }
.momentum-insight-tags span.risk { background: rgba(201,42,42,.08); color: var(--bad); }
.momentum-insight-tags span.empty { padding: 0; background: transparent; color: var(--muted); }
.momentum-insight-details strong em { margin-left: 3px; color: var(--muted); font-style: normal; font-weight: 700; }
.momentum-insight-guides { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }
.momentum-insight-guides li {
  --guide-tone: #946200;
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: center;
  gap: 2px 8px;
  padding: 6px 8px;
  border-left: 3px solid var(--guide-tone);
  background: rgba(23,23,23,.025);
  cursor: help;
}
.momentum-insight-guides li.tone-supported { --guide-tone: var(--good); }
.momentum-insight-guides li.tone-asymmetric { --guide-tone: #b87300; }
.momentum-insight-guides li.tone-lifecycle { --guide-tone: var(--accent); }
.momentum-insight-guides li.tone-risk { --guide-tone: var(--bad); }
.momentum-insight-guides li > em {
  padding: 1px 6px;
  border: 1px solid var(--guide-tone);
  color: var(--guide-tone);
  font-size: 10px;
  font-style: normal;
  font-weight: 900;
  white-space: nowrap;
}
.momentum-insight-guides li > b { color: var(--ink); font-size: 12px; font-weight: 900; }
.momentum-insight-guides li > span { justify-self: end; color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.momentum-insight-guides li > p { grid-column: 2 / -1; margin: 0; color: #4a4338; font-size: 11px; line-height: 1.4; }
@media (prefers-reduced-motion: reduce) {
  .momentum-insight-toggle::after { transition: none; }
}
@media (max-width: 1100px) {
  #app,
  body.sidebar-collapsed #app {
    grid-template-columns: 1fr;
  }
  .sidebar {
    position: static;
    height: auto;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .sidebar-toggle,
  body.sidebar-collapsed .sidebar-toggle {
    position: static;
    left: auto;
    top: auto;
    transform: none;
    width: 28px;
    min-width: 28px;
    height: 28px;
    margin: 10px 0 0 auto;
  }
  nav {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .nav-item {
    max-width: none;
  }
  .metric-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .regime-command {
    grid-template-columns: minmax(0, 1fr) minmax(250px, .82fr);
    grid-template-areas:
      "primary playbook"
      "gauges gauges"
      "styles styles";
  }
  .regime-gauge-wrap {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-top: 1px solid var(--line);
    border-left: 0;
    border-right: 0;
  }
  .data-health-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .market-grid { grid-template-columns: 1fr; }
  .market-column-flat .tile-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .trend-state-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .trend-watch-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .data-health-layout { grid-template-columns: 1fr; }
  .monitor-layout { grid-template-columns: 1fr; }
  .position-sizing-layout { grid-template-columns: 1fr; }
  .momentum-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .stock-rule-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .momentum-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .momentum-stage-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 14px;
    padding-bottom: 6px;
  }
  .momentum-stage-tab { min-width: 0; }
  .momentum-stage-tab > button[data-momentum-stage] {
    min-width: 0;
    flex: 1;
    padding: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .momentum-stage-tab::after { left: 0; bottom: -7px; }
  .momentum-help-button {
    width: 14px;
    min-width: 14px;
    height: 14px;
    min-height: 14px;
    flex-basis: 14px;
    padding: 0;
    border-radius: 50%;
  }
  .momentum-stage-controls {
    grid-column: 1 / -1;
    width: 100%;
    margin-left: 0;
    justify-content: flex-end;
  }
  #momentumBatchModal .data-health-batch-groups {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .momentum-history-head { align-items: start; gap: 8px; }
  .momentum-table-panel .section-head { align-items: flex-start; gap: 8px; }
  .momentum-table-actions { width: 100%; justify-content: space-between; }
  .momentum-pattern-filter { min-width: 0; }
  .momentum-pattern-filter select { width: min(58vw, 224px); }
  .momentum-history-trigger-filter select { width: min(46vw, 148px); }
  .momentum-pattern-help-dialog { width: 100%; max-height: calc(100dvh - 20px); }
  .momentum-history-dialog { width: 100%; max-height: calc(100dvh - 20px); }
  .momentum-pattern-help-body { grid-template-columns: 1fr; gap: 14px; padding: 14px; }
  .momentum-history-actions { width: 100%; justify-content: space-between; }
  .momentum-history-mode { min-width: 0; }
  .momentum-history-mode button { height: 34px; min-height: 34px; padding: 0 9px; }
  .momentum-history-summary { gap: 12px; overflow-x: auto; white-space: nowrap; scrollbar-width: none; }
  .momentum-history-summary::-webkit-scrollbar { display: none; }
  .momentum-history-table-wrap { overflow-x: auto; overscroll-behavior-x: contain; }
  .momentum-history-table { min-width: 900px; }
  .momentum-detail-dialog { width: 100vw; height: 100dvh; max-height: 100dvh; border-left: 0; border-right: 0; }
  .momentum-detail-head { position: sticky; top: 0; z-index: 3; align-items: center; padding: 8px 10px; background: var(--panel); }
  .momentum-detail-head strong { font-size: 15px; }
  .momentum-detail-head span { margin-top: 2px; font-size: 10px; line-height: 1.35; }
  .momentum-detail-head-actions { gap: 6px; }
  .momentum-detail-head .momentum-favorite-button { width: auto; min-width: 64px; height: 38px; padding: 0 10px; }
  .momentum-detail-head .momentum-detail-close { width: 38px; min-width: 38px; height: 38px; padding: 0; }
  .momentum-detail-body { padding: 6px 8px 8px; }
  .momentum-detail-chart-tools { grid-template-columns: 1fr; gap: 6px; margin: 6px 0; padding: 6px; }
  .draw-tools-shell { display: contents; }
  .draw-tools-shell .draw-tools { width: 100%; }
  .momentum-position-sizing-inline { grid-column: auto; grid-row: auto; justify-self: start; }
  .momentum-chart-tool-group { width: 100%; }
  .range-tools { display: flex; gap: 0; }
  .draw-tools { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto auto; }
  .momentum-tools-legend { justify-self: stretch; justify-content: start; overflow-x: auto; scrollbar-width: none; }
  .momentum-tools-legend::-webkit-scrollbar { display: none; }
  .momentum-detail-chart-tools button { width: 100%; min-width: 0; height: 36px; padding: 0 5px; overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
  .momentum-chart-step-overlay { left: 8px; bottom: 34px; padding: 3px; }
  .momentum-chart-step-overlay .momentum-chart-step { width: 38px; min-width: 38px; height: 36px; min-height: 36px; padding: 0 !important; font-size: 16px !important; }
  .momentum-chart-benchmark-picker { top: 0; left: 2.3%; height: 29px; }
  .momentum-chart-benchmark-picker select { width: 72px; height: 100%; padding-left: 7px; font-size: 10px; }
  .momentum-chart-subchart-picker { left: 2.3%; height: 29px; }
  .momentum-chart-subchart-picker select { width: 86px; height: 100%; padding-left: 7px; font-size: 10px; }
  .momentum-ma-legend { display: grid; grid-template-columns: repeat(5, auto); flex: 0 0 auto; }
  .momentum-ma-toggle { justify-content: center; width: auto !important; height: 32px; min-height: 32px; padding: 0 4px; font-size: 9px; }
  .momentum-pressure-legend { flex: 0 0 auto; }
  .momentum-pressure-toggle { width: auto !important; height: 32px !important; min-height: 32px; padding: 0 6px !important; font-size: 9px !important; }
  .momentum-candle-svg { width: 100%; min-width: 0; min-height: 0; }
  .momentum-single-chart { height: 500px; min-height: 500px; }
  .momentum-dual-chart { height: 700px; min-height: 700px; }
  .momentum-pane-label { font-size: 12px; }
  .momentum-axis-label { font-size: 10px; }
  .momentum-crosshair-label,
  .momentum-crosshair-date,
  .momentum-chart-readout { font-size: 10px; }
  .momentum-insight { gap: 8px; margin-top: 8px; padding: 10px; }
  .momentum-insight-head { gap: 3px 9px; padding-bottom: 8px; }
  .momentum-insight-verdict { min-width: 56px; padding: 0 7px; font-size: 11px; }
  .momentum-insight-title strong { font-size: 14px; }
  .momentum-insight-levels { gap: 5px; }
  .momentum-insight-level { padding: 6px 7px; }
  .momentum-insight-level > b { font-size: 15px; }
  .momentum-insight-level > small { white-space: normal; line-height: 1.3; }
  .momentum-insight-checks { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
  .momentum-insight-checks li { padding: 6px 7px; }
  .momentum-insight-toggle { justify-self: stretch; justify-content: center; height: 34px; }
  .momentum-insight-details { grid-template-columns: 1fr; }
  .momentum-insight-guides li { grid-template-columns: auto minmax(0, 1fr); }
  .momentum-insight-guides li > span { grid-column: 2; justify-self: start; }
  .momentum-insight-guides li > p { grid-column: 2; }
  .position-metric-grid {
    grid-template-columns: 1fr;
  }
  .position-hero-result strong {
    font-size: clamp(38px, 12vw, 54px);
  }
  .tools-tabs {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .tools-tabs::-webkit-scrollbar {
    display: none;
  }
  .regime-help-pop {
    right: -35px;
  }
  .discovery-history-top-bar {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(0, 1.18fr) minmax(58px, .64fr);
    column-gap: 8px;
    row-gap: 6px;
    padding: 10px 12px;
    align-items: start;
  }
  .discovery-history-title {
    grid-column: 1 / 2;
    margin-right: 0;
    margin-bottom: 2px;
    overflow: hidden;
  }
  .discovery-history-title strong {
    font-size: 14px;
  }
  .discovery-history-title span {
    font-size: 11px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .discovery-history-actions {
    grid-column: 2 / -1;
    grid-row: 1;
    margin-left: 0;
    justify-content: flex-end;
  }
  .discovery-history-date-group {
    grid-column: 1 / 3;
    grid-row: 2;
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr) minmax(0, 1fr);
    gap: 3px;
    align-items: center;
  }
  .discovery-history-date-group input[type="date"],
  .discovery-history-date-group input.monday-date-input {
    min-width: 0;
    max-width: 100%;
    height: 34px;
    line-height: 1;
    box-sizing: border-box;
    appearance: none;
    -webkit-appearance: none;
    padding: 0 4px;
  }
  /* 市场下拉框占满第 3 列，宽度合理、左对齐，不再挤在右边 */
  .discovery-history-inline.discovery-history-market-filter {
    grid-column: 3;
    grid-row: 2;
    justify-content: flex-start;
  }
  .discovery-history-inline.discovery-history-market-filter select {
    width: 100%;
    max-width: 100%;
    flex: 1 1 auto;
  }
  /* 信号筛选放第 3 行第 1 列 */
  .discovery-history-inline.discovery-history-signal-filter {
    grid-column: 1;
    grid-row: 3;
  }
  /* Code 放第 3 行第 2 列：右边界与上方结束日期（date-group 最右列）同处 col2 右边界，强制对齐 */
  .discovery-history-inline.discovery-history-code-filter {
    grid-column: 2;
    grid-row: 3;
  }
  .discovery-history-inline.discovery-history-return-filter {
    grid-column: 1 / 3;
    grid-row: 4;
  }
  #discoveryHistoryRefresh {
    grid-column: 3;
    grid-row: 3;
  }
  .discovery-history-inline {
    min-width: 0;
    align-items: center;
  }
  .discovery-history-inline span {
    font-size: 12px;
  }
  .discovery-history-inline input,
  .discovery-history-inline select {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    height: 34px;
    line-height: 1;
    box-sizing: border-box;
    font-size: 11px;
    padding: 0 6px;
    flex: 1 1 auto;
  }
  #discoveryHistoryRefresh {
    min-width: 58px;
    height: 34px;
    padding: 0 14px;
    font-size: 11px;
    line-height: 1;
    align-self: center;
    justify-self: end;
  }
  .discovery-close-btn {
    height: 30px;
    font-size: 11px;
    line-height: 1;
    padding: 0 8px;
    align-self: center;
  }
  .discovery-workbench-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
    padding: 5px 12px 7px;
  }
  .discovery-workbench-tabs button {
    min-width: 0;
    padding: 0 5px;
    white-space: nowrap;
  }
  .discovery-workbench-tabs span {
    grid-column: 1 / -1;
    margin-left: 0;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  #app,
  body.sidebar-collapsed #app {
    display: block;
  }
  .sidebar,
  body.sidebar-collapsed .sidebar {
    position: sticky;
    top: 0;
    z-index: 40;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 36px;
    align-items: center;
    gap: 6px 8px;
    height: auto;
    padding: 7px 12px;
    overflow: visible;
    border-right: 0;
    border-bottom: 1px solid var(--line);
    background: rgba(255,253,248,.94);
    backdrop-filter: blur(10px);
  }
  .market-column-flat .tile-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .brand,
  body.sidebar-collapsed .brand {
    display: flex;
    align-items: center;
    height: 36px;
    min-width: 0;
    margin: 0;
    padding: 0 9px;
  }
  .brand strong {
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 14px;
    line-height: 36px;
  }
  .brand span {
    display: none;
    margin-top: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 9px;
    line-height: 1.15;
  }
  .sidebar-toggle,
  body.sidebar-collapsed .sidebar-toggle {
    position: static;
    left: auto;
    top: auto;
    transform: none;
    grid-column: 2;
    grid-row: 1;
    width: 36px;
    min-width: 36px;
    height: 36px;
    margin: 0;
    padding: 0;
    font-size: 18px;
  }
  nav {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin: 0;
    padding: 0;
    overflow: visible;
  }
  body.sidebar-collapsed nav {
    display: none;
  }
  .nav-item {
    width: 100%;
    max-width: none;
    min-width: 0;
    height: 36px;
    padding: 0 8px;
    text-align: center;
  }
  .workspace {
    max-width: 100%;
    padding: 14px 12px 32px;
  }
  .page-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
    margin-bottom: 12px;
  }
  .page-head > div {
    min-width: 0;
  }
  h1 {
    font-size: 25px;
    line-height: 1.14;
  }
  .page-head p {
    font-size: 14px;
    line-height: 1.45;
  }
  button {
    min-height: 36px;
  }
  input[type="date"],
  input.monday-date-input,
  select,
  .portfolio-runner input[type="text"] {
    width: 100%;
    height: 38px;
    font-size: 13px;
    border-color: rgba(23,23,23,.32);
    background-color: rgba(255,253,248,.96);
    border-radius: 0;
  }
  select {
    appearance: none;
    -webkit-appearance: none;
    padding: 0 30px 0 10px;
    background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);
    background-position: calc(100% - 16px) 16px, calc(100% - 11px) 16px;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  input[type="date"],
  input.monday-date-input {
    appearance: none;
    -webkit-appearance: none;
    display: block;
    inline-size: 100%;
    min-inline-size: 0;
    max-inline-size: 100%;
    max-width: 100%;
    margin: 0;
    padding: 0 7px;
    min-width: 0;
    overflow: hidden;
    text-align: center;
    line-height: 38px;
  }
  input[type="date"]::-webkit-date-and-time-value {
    text-align: center;
    line-height: 38px;
  }
  input[type="date"]::-webkit-calendar-picker-indicator {
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
    width: 16px;
  }
  #marketPage .toolbar,
  #stockUniversePage .toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: stretch;
    gap: 6px;
  }
  #marketPage .toolbar label:not(.intraday-toggle),
  #stockUniversePage .toolbar label:not(.intraday-toggle) {
    min-width: 0;
    width: auto;
    display: block;
    overflow: visible;
    contain: none;
  }
  #marketPage .date-control,
  #stockUniversePage .date-control {
    grid-template-columns: 28px minmax(0, 1fr) 28px;
    gap: 0;
    width: 100%;
    height: 36px;
  }
  #marketPage .date-step,
  #stockUniversePage .date-step {
    width: 28px;
    min-width: 28px;
    height: 36px;
    min-height: 36px;
    padding: 0;
  }
  #marketPage #dateInput,
  #stockUniversePage #stockUniverseDateInput {
    height: 36px;
    line-height: 36px;
    font-size: 12px;
  }
  #marketPage #dateInput::-webkit-date-and-time-value,
  #stockUniversePage #stockUniverseDateInput::-webkit-date-and-time-value {
    line-height: 36px;
  }
  #marketPage .toolbar .intraday-toggle,
  #stockUniversePage .toolbar .intraday-toggle,
  #marketPage .toolbar > button,
  #stockUniversePage .toolbar > button {
    height: 36px;
    min-height: 36px;
    width: auto;
    min-width: 52px;
    padding: 0 8px;
    white-space: nowrap;
  }
  #marketPage .toolbar .intraday-toggle,
  #stockUniversePage .toolbar .intraday-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    font-size: 11px;
  }
  #tabs,
  #stockUniverseTabs {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 5px;
  }
  #tabs button,
  #stockUniverseTabs button {
    min-height: 34px;
    height: 34px;
    padding: 0 4px;
    font-size: 12px;
  }
  .stock-universe-controls {
    flex-wrap: nowrap;
    gap: 6px;
    margin-bottom: 10px;
  }
  #stockUniverseTabs {
    flex: 1;
    min-width: 0;
  }
  .stock-universe-adhoc-bar {
    grid-template-columns: minmax(60px, 100px) auto;
    gap: 0;
    margin: 0;
    padding: 0;
    flex: 0 0 auto;
  }
  .stock-universe-adhoc-bar input {
    height: 32px;
    font-size: 12px;
  }
  .stock-universe-adhoc-bar button {
    height: 34px;
    padding: 0 8px;
    font-size: 11px;
  }
  #stockUniverseThemeFilters {
    gap: 0;
    margin: -2px 0 10px;
  }
  #stockUniverseThemeFilters .theme-filter-row {
    padding: 0 12px 2px;
    scrollbar-width: none;
  }
  #stockUniverseThemeFilters .theme-filter-row::-webkit-scrollbar {
    display: none;
  }
  #stockUniverseThemeFilters .theme-filter-row-primary {
    padding-top: 5px;
    padding-bottom: 5px;
  }
  #stockUniverseThemeFilters .theme-filter-row-secondary {
    min-height: 28px;
  }
  #stockUniverseThemeFilters .theme-filter-label {
    min-width: 30px;
    padding-right: 3px;
    font-size: 11px;
  }
  #stockUniverseThemeFilters button {
    min-height: 26px;
    padding: 0 8px;
    font-size: 11px;
  }
  .metric-section-head {
    display: grid;
    gap: 3px;
    padding-top: 6px;
  }
  .metric-section-head span {
    font-size: 11px;
  }
  .metric-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
  }
  .market-regime {
    margin-bottom: 12px;
  }
  .regime-command {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "primary"
      "gauges"
      "playbook"
      "styles";
  }
  .regime-primary {
    padding: 13px 12px 12px;
  }
  .regime-call {
    grid-template-columns: minmax(0, 1fr);
    gap: 5px;
  }
  .regime-call strong {
    font-size: 23px;
  }
  .regime-call span {
    white-space: normal;
  }
  .regime-kicker {
    display: grid;
    grid-template-columns: minmax(0, 1fr) max-content;
  }
  .regime-kicker-title {
    display: grid;
    gap: 2px;
  }
  .regime-primary p {
    font-size: 11px;
  }
  .regime-gauge-wrap {
    grid-template-columns: minmax(0, 1fr);
    padding: 11px 12px;
  }
  .regime-playbook {
    border-top: 1px solid var(--line);
  }
  .regime-style-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .regime-style:nth-child(odd) {
    border-left: 0;
  }
  .regime-style:nth-child(n + 3) {
    border-top: 1px solid var(--line);
  }
  .regime-calendar-toolbar {
    display: grid;
    gap: 8px;
  }
  .regime-calendar-switch,
  .regime-calendar-nav {
    width: 100%;
  }
  .regime-calendar-switch button {
    flex: 1 1 0;
  }
  .regime-calendar-nav {
    justify-content: space-between;
  }
  .regime-year-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .regime-calendar-layout {
    grid-template-columns: minmax(0, 1fr);
  }
  .regime-month-weekdays,
  .regime-month-grid {
    gap: 4px;
  }
  .regime-day-cell {
    min-height: 58px;
    padding: 5px 5px;
  }
  .regime-day-cell strong {
    font-size: 11px;
  }
  .regime-day-cell em {
    font-size: 9px;
  }
  .regime-selected-day {
    grid-template-columns: minmax(0, 1fr);
  }
  .regime-day-row {
    grid-template-columns: 84px minmax(0, 1fr) 58px;
  }
  .regime-day-row em:nth-of-type(n + 3) {
    display: none;
  }
  .data-health-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .metric {
    min-height: 108px;
    padding: 9px 9px 8px;
  }
  .metric strong {
    font-size: 23px;
  }
  .metric small,
  .metric em {
    white-space: normal;
  }
  .metric-info-popover {
    position: fixed;
    right: 12px;
    left: 12px;
    top: 72px;
    width: auto;
    max-height: calc(100vh - 84px);
    overflow: auto;
  }
  .trend-board {
    margin-bottom: 14px;
  }
  .trend-state-grid {
    justify-content: flex-start;
    max-width: 100%;
    gap: 5px;
  }
  .trend-state-card {
    min-height: 25px;
    padding: 0 7px;
  }
  .trend-state-card strong {
    font-size: 13px;
  }
  .trend-watch-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
  }
  .trend-watch-head {
    min-height: 38px;
    padding: 8px 9px;
  }
  .trend-mini-card {
    grid-template-columns: 40px minmax(0, 1fr) 36px;
    min-height: 52px;
    padding: 8px 9px;
  }
  .market-section-divider {
    margin: 2px 0 10px;
    padding: 10px 11px;
  }
  .tile-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 7px;
  }
  .heat-tile {
    min-height: 124px;
    padding: 8px;
    gap: 6px;
  }
  .tile-name {
    font-size: 12px;
  }
  .heat-tile .trend-pill {
    min-width: 42px;
    height: 20px;
    padding: 0 5px;
    font-size: 10px;
  }
  .tile-meta {
    font-size: 10px;
  }
  .tile-score-row {
    gap: 5px;
  }
  .tile-score-row span {
    padding: 0;
  }
  .tile-score-row small {
    font-size: 9px;
  }
  .tile-score-row b {
    font-size: 16px;
  }
  .tile-bars {
    gap: 3px;
    font-size: 10px;
  }
  .trend-table {
    min-width: 1320px;
  }
  .toolbar,
  .portfolio-runner {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    justify-content: stretch;
    width: 100%;
    gap: 8px;
  }
  .toolbar label,
  .portfolio-runner label {
    width: 100%;
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    contain: paint;
  }
  .stock-rule-panel > header,
  .stock-strategy-panel > header,
  .stock-rule-card header {
    display: grid;
  }
  .stock-rule-panel > header p,
  .stock-strategy-panel > header p {
    text-align: left;
    white-space: normal;
  }
  .stock-rule-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .toolbar > button,
  .portfolio-runner > button {
    width: 100%;
  }
  .date-control {
    grid-template-columns: 36px minmax(0, 1fr) 36px;
    width: 100%;
    gap: 4px;
    overflow: hidden;
    contain: paint;
  }
  .date-step {
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    font-size: 16px;
  }
  #portfolioPage .portfolio-runner,
  #stockPage .portfolio-runner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #portfolioMonitorPage .portfolio-runner {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #portfolioPage .portfolio-runner label:first-child,
  #stockPage .portfolio-runner label:first-child,
  #portfolioMonitorPage .portfolio-runner label:first-child {
    grid-column: 1 / -1;
  }
  #portfolioPage .portfolio-runner label:nth-child(2),
  #portfolioPage .portfolio-runner label:nth-child(3),
  #stockPage .portfolio-runner label:nth-child(2),
  #stockPage .portfolio-runner label:nth-child(3),
  #portfolioMonitorPage .portfolio-runner label:nth-child(2),
  #portfolioMonitorPage .portfolio-runner label:nth-child(3) {
    grid-column: auto;
    overflow: hidden;
  }
  #portfolioPage .portfolio-runner input[type="date"],
  #portfolioPage .portfolio-runner input.monday-date-input,
  #stockPage .portfolio-runner input[type="date"],
  #stockPage .portfolio-runner input.monday-date-input {
    font-size: 12px;
    padding: 0 4px;
  }
  #stockPage .portfolio-runner {
    grid-template-columns: minmax(0, 1.08fr) repeat(2, minmax(0, .96fr));
    gap: 6px;
  }
  #stockPage .portfolio-runner label:first-child,
  #stockPage .portfolio-runner label:nth-child(2),
  #stockPage .portfolio-runner label:nth-child(3) {
    grid-column: auto;
  }
  #stockPage .portfolio-runner input[type="text"],
  #stockPage .portfolio-runner input[type="date"],
  #stockPage .portfolio-runner input.monday-date-input {
    width: 100%;
    min-width: 0;
    height: 34px;
    padding: 0 5px;
    font-size: 11px;
  }
  #stockPage .portfolio-runner > button {
    min-height: 34px;
    font-size: 12px;
  }
  #stockRunBtn { grid-column: 1 / span 2; }
  #stockHistoryBtn { grid-column: 3; }
  .portfolio-runner select,
  #monitorStrategy,
  #monitorRunMode {
    min-width: 0;
    width: 100%;
  }
  #portfolioPage .portfolio-runner > label:first-child,
  #portfolioMonitorPage .portfolio-runner > label:first-child {
    min-width: 180px;
  }
  .portfolio-runner > button {
    flex: 0 0 auto;
  }
  #portfolioPage .page-head,
  #portfolioMonitorPage .page-head {
    gap: 8px;
  }
  #portfolioPage .portfolio-runner,
  #portfolioMonitorPage .portfolio-runner {
    grid-template-columns: minmax(0, 1.28fr) minmax(0, .86fr) minmax(0, .86fr);
    gap: 6px;
  }
  #portfolioPage .portfolio-runner label:first-child,
  #portfolioMonitorPage .portfolio-runner label:first-child,
  #portfolioPage .portfolio-runner label:nth-child(2),
  #portfolioPage .portfolio-runner label:nth-child(3),
  #portfolioMonitorPage .portfolio-runner label:nth-child(2),
  #portfolioMonitorPage .portfolio-runner label:nth-child(3) {
    grid-column: auto;
  }
  #portfolioPage .portfolio-runner label:nth-child(-n+3) > span,
  #portfolioMonitorPage .portfolio-runner label:nth-child(-n+3) > span {
    display: none;
  }
  #portfolioPage .portfolio-runner select,
  #portfolioPage .portfolio-runner input[type="date"],
  #portfolioPage .portfolio-runner input.monday-date-input,
  #portfolioMonitorPage .portfolio-runner select,
  #portfolioMonitorPage .portfolio-runner input[type="date"],
  #portfolioMonitorPage .portfolio-runner input.monday-date-input {
    height: 34px;
    font-size: 11px;
    line-height: 34px;
  }
  #portfolioPage .portfolio-runner input[type="date"],
  #portfolioPage .portfolio-runner input.monday-date-input,
  #portfolioMonitorPage .portfolio-runner input[type="date"],
  #portfolioMonitorPage .portfolio-runner input.monday-date-input {
    padding: 0 3px;
  }
  #portfolioPage .portfolio-runner input[type="date"]::-webkit-date-and-time-value,
  #portfolioMonitorPage .portfolio-runner input[type="date"]::-webkit-date-and-time-value {
    line-height: 34px;
  }
  #portfolioPage .portfolio-runner > button,
  #portfolioMonitorPage .portfolio-runner > button {
    min-height: 34px;
    font-size: 12px;
  }
  .history-task {
    font-size: 11px;
  }
  .history-task-id {
    font-size: 10px;
  }
  .data-health-runner {
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 6px;
  }
  .data-health-search-label {
    grid-column: 1 / span 4;
    min-width: 0;
  }
  .data-health-runner label:nth-child(2),
  .data-health-runner label:nth-child(3),
  .data-health-runner label:nth-child(4) { min-width: 0; }
  .data-health-runner label:nth-child(2) { grid-column: 5 / span 2; }
  .data-health-runner label:nth-child(3) { grid-column: 7 / span 3; }
  .data-health-runner label:nth-child(4) { grid-column: 10 / span 3; }
  .data-health-runner label > span:first-child {
    display: none;
  }
  .data-health-search-control {
    width: 100%;
  }
  .data-health-search-control input {
    width: 100%;
    height: 36px;
    padding: 0 7px;
    font-size: 12px;
  }
  .data-health-runner select {
    height: 36px;
    font-size: 12px;
  }
  .data-health-runner .checkbox-label {
    grid-column: 1 / span 4;
    display: inline-flex;
    justify-content: center;
    min-height: 38px;
    height: 38px;
    width: 100%;
    gap: 4px;
    padding: 0 5px;
    border: 1px solid rgba(23,23,23,.32);
    background: rgba(255,253,248,.96);
    color: var(--ink);
    font-size: 11px;
    font-weight: 800;
    cursor: pointer;
  }
  .data-health-runner .checkbox-label input {
    width: 16px;
    height: 16px;
    accent-color: var(--ink);
  }
  #dataHealthRefreshBtn {
    grid-column: 10 / span 3;
    height: 38px;
    min-height: 38px;
    border-color: rgba(23,23,23,.32);
    background: rgba(255,253,248,.96);
  }
  #dataHealthBatchBtn {
    grid-column: 5 / span 5;
    height: 38px;
    min-height: 38px;
    white-space: nowrap;
  }
  .status-strip {
    padding: 8px 10px;
    overflow-wrap: anywhere;
    line-height: 1.45;
  }
  .portfolio-status,
  .monitor-status {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    justify-content: stretch;
  }
  .monitor-status-steps {
    justify-content: flex-start;
  }
  .tabs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px;
  }
  .tabs button {
    width: 100%;
    padding: 0 6px;
  }
  .tile-grid {
    grid-template-columns: repeat(auto-fill, minmax(136px, 1fr));
  }
  .section-head {
    min-height: 0;
    padding: 10px 12px;
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .section-head > div {
    min-width: 0;
  }
  .table-wrap {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .monitor-table-panel table {
    table-layout: fixed;
    min-width: 1080px;
  }
  .monitor-table-panel th:nth-child(2),
  .monitor-table-panel td:nth-child(2) {
    width: 190px;
  }
  .monitor-table-panel th:nth-child(1),
  .monitor-table-panel td:nth-child(1) {
    width: 74px;
  }
  .monitor-table-panel th:nth-child(8),
  .monitor-table-panel td:nth-child(8) {
    width: 320px;
  }
  .monitor-table-panel th:nth-child(9),
  .monitor-table-panel td:nth-child(9) {
    width: 68px;
  }
  table {
    min-width: 680px;
  }
  .monitor-detail-metrics,
  .monitor-health-metrics {
    grid-template-columns: 1fr;
  }
  .monitor-window-grid { grid-template-columns: 1fr; }
  .monitor-chart,
  .data-health-chart {
    height: 280px;
  }
  .monitor-nav-svg,
  .monitor-nav-svg text,
  .trade-marker text {
    shape-rendering: geometricPrecision;
    text-rendering: geometricPrecision;
  }
  .trade-marker circle {
    r: 5.5px;
  }
  .trade-marker text {
    font-size: 13px;
    font-weight: 900;
  }
  .monitor-live-op {
    grid-template-columns: 1fr;
    gap: 3px;
  }
  .monitor-live-action-note,
  .position-change-bars {
    margin-left: 0;
  }
  .position-change-head {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .position-change-head b {
    grid-column: 1 / -1;
  }
  .position-change-flow,
  .monitor-live-action-note {
    white-space: normal;
  }
  .monitor-edit-body { grid-template-columns: 1fr; overflow: auto; }
  .monitor-edit-account textarea { min-height: 280px; height: 42vh; }
  .detail-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .detail-panel .detail-metrics {
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 4px;
  }
  .detail-panel .detail-metrics .mini-stat {
    min-height: 48px;
    padding: 6px 5px;
  }
  .detail-panel .detail-metrics .mini-stat span {
    font-size: 10px;
    margin-bottom: 4px;
  }
  .detail-panel .detail-metrics .mini-stat strong {
    font-size: 13px;
    line-height: 1.1;
  }
  .detail-panel .metric-history-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .metric-history-chart {
    height: 280px;
  }
  .trend-effectiveness-grid {
    grid-template-columns: 1fr;
  }
  .trend-rule-mining > header {
    display: block;
  }
  .trend-rule-mining > header p {
    margin-top: 5px;
    text-align: left;
  }
  .trend-rule-mining-grid {
    grid-template-columns: 1fr;
  }
  .trend-rule-card table {
    min-width: 0;
    font-size: 10px;
  }
  .trend-effectiveness-card {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .trend-effectiveness-card table {
    min-width: 300px;
  }
  .data-health-detail-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .overlay,
  .history-modal {
    padding: 10px;
    align-items: flex-start;
  }
  .detail-panel,
  .history-dialog {
    width: 100%;
    max-height: calc(100dvh - 20px);
  }
  #portfolioHistoryModal .history-dialog,
  #stockHistoryModal .history-dialog {
    height: calc(100dvh - 20px);
  }
  .detail-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 8px;
    padding: 9px 10px;
  }
  .detail-head > div:first-child {
    min-width: 0;
  }
  .detail-head h2 {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 16px;
  }
  .detail-head span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .detail-actions {
    display: grid;
    grid-template-columns: auto auto;
    justify-items: end;
    justify-content: flex-end;
    gap: 6px;
    min-width: 0;
  }
  .detail-actions .detail-focus-button {
    grid-column: 1;
    grid-row: 1;
    min-height: 28px;
    padding: 0 8px;
    font-size: 11px;
  }
  .detail-close {
    grid-column: 2;
    grid-row: 1;
    width: 28px;
    min-width: 28px;
    height: 28px;
  }
  .detail-score-stack {
    grid-column: 1 / -1;
    grid-row: 2;
    min-width: 0;
    width: 100%;
  }
  .detail-score-cluster {
    width: 100%;
    min-width: 0;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
  }
  .detail-score-cluster span {
    text-align: right;
  }
  .detail-score-cluster strong {
    font-size: 18px;
  }
  .detail-score-cluster small,
  .stock-score-context-note {
    font-size: 9px;
  }
  .detail-body {
    padding: 10px;
  }
  .detail-title {
    margin-top: 13px;
  }
  .holdings-table-wrap,
  .related-stocks-table-wrap {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .holdings-table {
    min-width: 0;
    font-size: 12px;
  }
  .holdings-table th:first-child,
  .holdings-table td:first-child {
    width: 84px;
  }
  .holdings-table th:nth-child(3),
  .holdings-table td:nth-child(3) {
    width: 62px;
  }
  .related-stocks-panel {
    margin-top: 13px;
  }
  .related-stocks-panel .section-head {
    padding: 10px;
  }
  .related-stocks-panel .section-head span {
    white-space: normal;
  }
  .related-stocks-table {
    min-width: 798px;
    font-size: 11px;
  }
  .related-stocks-table th:first-child,
  .related-stocks-table td:first-child {
    width: 82px;
  }
  .related-stocks-table th:nth-child(2),
  .related-stocks-table td:nth-child(2) {
    width: 104px;
  }
  .related-stocks-table th:nth-child(3),
  .related-stocks-table td:nth-child(3),
  .related-stocks-table th:nth-child(4),
  .related-stocks-table td:nth-child(4) {
    width: 78px;
  }
  .related-stocks-table th:nth-child(5),
  .related-stocks-table td:nth-child(5),
  .related-stocks-table th:nth-child(6),
  .related-stocks-table td:nth-child(6),
  .related-stocks-table th:nth-child(7),
  .related-stocks-table td:nth-child(7),
  .related-stocks-table th:nth-child(8),
  .related-stocks-table td:nth-child(8),
  .related-stocks-table th:nth-child(9),
  .related-stocks-table td:nth-child(9),
  .related-stocks-table th:nth-child(10),
  .related-stocks-table td:nth-child(10),
  .related-stocks-table th:nth-child(11),
  .related-stocks-table td:nth-child(11) {
    width: 62px;
  }
  .related-stocks-pager {
    justify-content: space-between;
    padding: 8px 10px;
  }
  .related-stocks-pager button {
    min-height: 30px;
  }
  .trend-score-chart {
    height: 132px;
  }
  .detail-head .detail-score {
    font-size: 28px;
  }
  .portfolio-history-panel {
    grid-auto-rows: minmax(64px, auto);
    padding: 10px;
  }
  .history-task {
    min-height: 64px;
    padding: 10px;
  }
  .history-task-grid {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 5px 10px;
  }
  .history-task-grid strong {
    grid-column: 1;
    grid-row: 1;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .history-task-id {
    grid-column: 1 / -1;
    grid-row: 2;
  }
  .history-task b {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
  }
  .history-actions {
    justify-content: stretch;
  }
  .history-actions button {
    flex: 1 1 0;
  }
  .data-health-update-form { grid-template-columns: 1fr; }
  .data-health-update-date-shortcuts {
    gap: 3px;
  }
  .data-health-update-date-shortcuts > div {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: 100%;
  }
  .data-health-update-date-shortcuts button {
    width: 100%;
    min-width: 0;
    min-height: 34px;
    padding: 0 4px;
  }
  #dataHealthBatchModal {
    padding: 0;
  }
  .data-health-batch-dialog {
    width: 100vw;
    height: 100dvh;
    max-height: none;
    border: 0;
    grid-template-rows: auto minmax(0, 1fr) auto;
  }
  .data-health-batch-dialog .history-dialog-head {
    align-items: center;
    padding: max(9px, env(safe-area-inset-top)) 12px 9px;
    background: var(--panel);
  }
  .data-health-batch-dialog .history-dialog-head span { display: none; }
  .data-health-batch-dialog .history-dialog-head button {
    width: 34px;
    min-width: 34px;
    height: 34px;
    min-height: 34px;
    padding: 0;
  }
  .data-health-batch-body {
    grid-template-rows: auto auto auto auto minmax(88px, 1fr);
    gap: 7px;
    overflow-x: hidden;
    overflow-y: auto;
    padding: 8px 10px;
    -webkit-overflow-scrolling: touch;
  }
  .data-health-batch-groups {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .data-health-batch-group {
    min-height: 40px;
    padding: 4px 5px;
  }
  .data-health-batch-form {
    min-width: 0;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 6px;
  }
  .data-health-batch-form > label:nth-child(1) { grid-column: 1 / span 3; }
  .data-health-batch-form > label:nth-child(2) { grid-column: 4 / span 3; }
  .data-health-batch-date-shortcuts {
    grid-column: 1 / -1;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 8px;
  }
  .data-health-batch-date-shortcuts > div {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    width: 100%;
  }
  .data-health-batch-date-shortcuts button {
    width: 100%;
    min-width: 0;
    min-height: 34px;
    padding: 0 4px;
  }
  .data-health-batch-form > label:nth-child(4) { grid-column: 1 / span 2; }
  .data-health-batch-form > label:nth-child(5) { grid-column: 3 / span 2; }
  .data-health-batch-form > label:nth-child(6) { grid-column: 5 / span 2; }
  .data-health-batch-form > label:nth-child(7) { grid-column: 1 / span 3; }
  .data-health-batch-form > label:nth-child(8) { grid-column: 4 / span 3; }
  .data-health-batch-form select,
  .data-health-batch-form input[type="date"],
  .data-health-batch-form input.monday-date-input,
  .data-health-batch-form input[type="number"] {
    width: 100%;
    min-width: 0;
    height: 34px;
    padding: 0 5px;
    font-size: 11px;
  }
  .data-health-batch-form .data-health-update-toggle {
    justify-content: center;
    min-width: 0;
    padding: 0 5px;
    font-size: 11px;
  }
  .data-health-batch-progress > div {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }
  .data-health-batch-summary {
    align-items: baseline;
    flex-direction: row;
    gap: 6px;
  }
  .data-health-batch-summary strong {
    text-align: right;
  }
  .data-health-batch-body .data-health-update-log {
    min-height: 88px;
    max-height: none;
    padding: 9px;
    font-size: 11px;
  }
  .data-health-batch-actions {
    padding: 8px max(10px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left));
    background: rgba(255, 253, 248, .98);
    box-shadow: 0 -8px 24px rgba(34, 27, 12, .08);
  }
  .data-health-batch-actions button {
    min-height: 42px;
    font-weight: 900;
  }
  .data-health-detail-actions {
    grid-template-columns: minmax(0, 1fr) 28px;
  }
  .data-health-detail-actions .detail-score {
    grid-column: 1 / -1;
    grid-row: 1;
    justify-self: end;
  }
  .data-health-detail-actions [data-health-force-update] {
    grid-column: 1;
    grid-row: 2;
    width: 100%;
  }
  .data-health-detail-actions [data-health-delete] {
    grid-column: 1;
    grid-row: 3;
    width: 100%;
  }
  .data-health-detail-actions .detail-close {
    grid-column: 2;
    grid-row: 2;
  }
  .data-health-summary-table {
    overflow-x: auto;
  }
  .data-health-summary-table table {
    min-width: 720px;
  }
  .market-badge {
    height: 22px;
    padding: 0 7px;
    font-size: 12px;
  }
  .portfolio-log-popover {
    position: fixed;
    left: 10px;
    right: 10px;
    top: auto;
    bottom: 10px;
    width: auto;
    max-height: 60vh;
  }
  .portfolio-log {
    max-height: min(48vh, 420px);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  .portfolio-report-frame {
    min-height: calc(100vh - 220px);
  }
}
@supports (padding: max(0px)) {
  @media (max-width: 720px) {
    .sidebar,
    body.sidebar-collapsed .sidebar {
      padding-left: max(12px, env(safe-area-inset-left));
      padding-right: max(12px, env(safe-area-inset-right));
    }
    .workspace {
      padding-left: max(12px, env(safe-area-inset-left));
      padding-right: max(12px, env(safe-area-inset-right));
    }
  }
}

/* ─── Daily review v3: aligned with Market Insights ────────── */
.daily-review-page .review-toolbar { flex-wrap: wrap; }
.daily-review-page .review-refresh {
  border-color: var(--line);
  border-radius: 0;
  background: var(--panel);
  color: var(--ink);
  font-weight: 800;
}
.daily-review-page .review-refresh:hover {
  border-color: var(--ink);
  background: var(--panel-2);
}
.daily-review-page .review-status {
  min-height: auto;
  margin: -2px 0 14px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 0;
  background: rgba(255,253,248,.82);
}
.daily-review-page .review-market-tabs { margin-bottom: 14px; }
.review-market-command { margin-bottom: 14px; }
.review-command {
  --review-command-edge: var(--ink);
  display: grid;
  grid-template-columns: minmax(280px, 1.05fr) minmax(360px, 1fr) minmax(250px, .72fr);
  grid-template-areas:
    "primary evidence quality"
    "summary summary summary";
  overflow: hidden;
  border: 1px solid var(--ink);
  border-left: 6px solid var(--review-command-edge);
  background: linear-gradient(135deg, rgba(255,253,248,.98), rgba(236,230,216,.58));
  box-shadow: var(--shadow);
}
.review-command-positive { --review-command-edge: var(--good); }
.review-command-warning { --review-command-edge: #9a6900; }
.review-command-risk { --review-command-edge: var(--bad); }
.review-command-primary {
  grid-area: primary;
  min-width: 0;
  padding: 18px 18px 16px;
  border-right: 1px solid var(--line);
}
.review-command-kicker {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.review-command-kicker em { font-style: normal; font-weight: 650; }
.review-command-call {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-top: 10px;
}
.review-command-call strong {
  color: var(--review-command-edge);
  font-size: 30px;
  line-height: 1;
  letter-spacing: -.03em;
}
.review-command-call span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-command-primary p {
  margin: 12px 0 0;
  color: #413b32;
  font-size: 14px;
  line-height: 1.55;
}
.review-command-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 13px; }
.review-command-tags span {
  padding: 4px 8px;
  border: 1px solid var(--line);
  background: rgba(255,253,248,.76);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.review-command-evidence {
  grid-area: evidence;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  min-width: 0;
}
.review-command-metric {
  min-width: 0;
  padding: 15px 16px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.review-command-metric:nth-child(2n) { border-right: 0; }
.review-command-metric:nth-last-child(-n+2) { border-bottom: 0; }
.review-command-metric span,
.review-command-metric small { display: block; }
.review-command-metric span { color: var(--muted); font-size: 11px; font-weight: 800; }
.review-command-metric strong { display: block; margin: 5px 0 4px; font-size: 22px; line-height: 1; }
.review-command-metric small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
  white-space: normal;
}
.review-command-quality {
  grid-area: quality;
  min-width: 0;
  padding: 18px 16px;
  border-left: 1px solid var(--line);
  background: rgba(236,230,216,.48);
}
.review-command-quality-label { display: block; color: var(--muted); font-size: 11px; font-weight: 850; }
.review-command-quality > strong { display: block; margin-top: 8px; font-size: 18px; }
.review-command-quality > p { margin: 10px 0 0; color: #4c4539; font-size: 12px; line-height: 1.45; }
.review-command-quality details { margin-top: 12px; border-top: 1px solid var(--line); padding-top: 10px; }
.review-command-quality summary { color: var(--accent); font-size: 12px; font-weight: 850; cursor: pointer; }
.review-command-quality ul { display: grid; gap: 7px; margin: 10px 0 0; padding-left: 18px; }
.review-command-quality li { color: var(--muted); font-size: 12px; line-height: 1.4; }
.review-command-summary {
  grid-area: summary;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--ink);
  background: rgba(255,253,248,.78);
}
.review-command-summary-cell {
  min-width: 0;
  padding: 12px 14px;
  border-right: 1px solid var(--line);
}
.review-command-summary-cell:last-child { border-right: 0; }
.review-command-summary-cell span,
.review-command-summary-cell strong,
.review-command-summary-cell small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-command-summary-cell span { color: var(--muted); font-size: 11px; }
.review-command-summary-cell strong { margin-top: 4px; font-size: 16px; }
.review-command-summary-cell small { margin-top: 3px; color: var(--muted); font-size: 11px; }
.review-workbench { margin-bottom: 14px; }
.review-workbench .section-head { min-height: 64px; }
.review-workbench .trend-state-grid { max-width: 64%; }
.review-workbench .trend-state-card { cursor: pointer; }
.review-workbench .trend-state-card.active { --trend-card-accent: var(--accent); }
.review-workbench-body { min-width: 0; }
.review-signal-workbench { min-width: 0; }
.review-signal-note {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--ink);
  background: rgba(11,95,255,.05);
}
.review-signal-note strong { font-size: 13px; }
.review-signal-note span { color: var(--muted); font-size: 12px; line-height: 1.45; }
.review-signal-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-bottom: 1px solid var(--ink);
}
.review-signal-summary > div {
  min-width: 0;
  padding: 14px 16px;
  border-right: 1px solid var(--line);
}
.review-signal-summary > div:last-child { border-right: 0; }
.review-signal-summary span,
.review-signal-summary strong,
.review-signal-summary small { display: block; }
.review-signal-summary span { color: var(--muted); font-size: 11px; font-weight: 800; }
.review-signal-summary strong { margin-top: 5px; font-size: 22px; line-height: 1; }
.review-signal-summary small { margin-top: 5px; color: var(--muted); font-size: 11px; }
.review-signal-section { border-bottom: 1px solid var(--ink); }
.review-signal-section:last-child { border-bottom: 0; }
.review-signal-section > header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  background: rgba(236,230,216,.2);
}
.review-signal-section > header strong { font-size: 14px; }
.review-signal-section > header span { color: var(--muted); font-size: 11px; }
.review-signal-paths { display: grid; }
.review-signal-path {
  display: grid;
  grid-template-columns: minmax(120px, .5fr) minmax(0, 1.5fr);
  gap: 16px;
  align-items: center;
  min-height: 48px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--line);
}
.review-signal-path:last-child { border-bottom: 0; }
.review-signal-path > strong { font-size: 13px; }
.review-signal-path > div { display: grid; grid-template-columns: repeat(5, minmax(68px, 1fr)); gap: 6px; }
.review-signal-path .review-stage-badge { justify-content: center; min-width: 0; padding-inline: 5px; }
.review-signal-cohort-layout {
  display: grid;
  grid-template-columns: 100px minmax(210px, 1fr) repeat(3, minmax(105px, .45fr));
  gap: 12px;
  align-items: center;
}
.review-signal-cohort-head {
  min-height: 34px;
  padding: 0 16px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.review-signal-cohort-row {
  min-height: 52px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--line);
  font-size: 12px;
}
.review-signal-cohort-row:last-child { border-bottom: 0; }
.review-signal-cohort-row > strong { font-variant-numeric: tabular-nums; }
.review-signal-cohort-row div b,
.review-signal-cohort-row div span { display: block; }
.review-signal-cohort-row div b { font-size: 13px; }
.review-signal-cohort-row div span { margin-top: 3px; color: var(--muted); }
.review-signal-cohort-row > span { font-variant-numeric: tabular-nums; font-weight: 800; }
.review-signal-matured-list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.review-signal-matured-list > div {
  min-width: 0;
  padding: 12px 14px;
  border-right: 1px solid var(--line);
}
.review-signal-matured-list > div:last-child { border-right: 0; }
.review-signal-matured-list strong,
.review-signal-matured-list span,
.review-signal-matured-list b { display: block; }
.review-signal-matured-list strong { font-size: 12px; }
.review-signal-matured-list span { margin-top: 3px; color: var(--muted); font-size: 11px; }
.review-signal-matured-list b { margin-top: 8px; font-size: 12px; }
.review-signal-matured-list > p { grid-column: 1 / -1; margin: 0; padding: 16px; color: var(--muted); font-size: 12px; }
.review-hk-evidence-v4 { border-bottom: 1px solid var(--ink); background: rgba(236,230,216,.16); }
.review-hk-evidence-v4 > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
}
.review-hk-evidence-v4 > header strong,
.review-hk-evidence-v4 > header span { display: block; }
.review-hk-evidence-v4 > header strong { font-size: 14px; }
.review-hk-evidence-v4 > header span { margin-top: 3px; color: #4c4539; font-size: 12px; }
.review-hk-evidence-v4 > header small { color: var(--muted); font-size: 11px; }
.review-hk-metrics-v4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.review-hk-metrics-v4 > div { min-width: 0; padding: 12px 16px; border-right: 1px solid var(--line); }
.review-hk-metrics-v4 > div:last-child { border-right: 0; }
.review-hk-metrics-v4 span,
.review-hk-metrics-v4 strong,
.review-hk-metrics-v4 small { display: block; }
.review-hk-metrics-v4 span { color: var(--muted); font-size: 11px; font-weight: 800; }
.review-hk-metrics-v4 strong { margin-top: 5px; font-size: 17px; font-variant-numeric: tabular-nums; }
.review-hk-metrics-v4 small { margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.35; }
.review-hk-watch-v4 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--line); }
.review-hk-watch-v4 > div { min-width: 0; padding: 10px 16px; border-right: 1px solid var(--line); }
.review-hk-watch-v4 > div:last-child { border-right: 0; }
.review-hk-watch-v4 strong { display: block; font-size: 11px; }
.review-hk-watch-v4 span { display: block; overflow: hidden; margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.review-a-evidence-v4 { border-bottom: 1px solid var(--ink); background: rgba(255,179,0,.045); }
.review-a-evidence-v4 > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.review-a-evidence-v4 > header strong,
.review-a-evidence-v4 > header span { display: block; }
.review-a-evidence-v4 > header strong { font-size: 14px; }
.review-a-evidence-v4 > header span { margin-top: 3px; color: #55420e; font-size: 12px; }
.review-a-evidence-v4 > header small { color: var(--muted); font-size: 11px; }
.review-a-metrics-v4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.review-a-metrics-v4 > div { min-width: 0; padding: 12px 16px; border-right: 1px solid var(--line); }
.review-a-metrics-v4 > div:last-child { border-right: 0; }
.review-a-metrics-v4 span,
.review-a-metrics-v4 strong,
.review-a-metrics-v4 small { display: block; }
.review-a-metrics-v4 span { color: var(--muted); font-size: 11px; font-weight: 800; }
.review-a-metrics-v4 strong { margin-top: 5px; font-size: 17px; font-variant-numeric: tabular-nums; }
.review-a-metrics-v4 small { margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.35; }
.review-a-watch-v4 { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); border-top: 1px solid var(--line); }
.review-a-watch-v4 > div { min-width: 0; padding: 10px 16px; border-right: 1px solid var(--line); }
.review-a-watch-v4 > div:last-child { border-right: 0; }
.review-a-watch-v4 strong { display: block; font-size: 11px; }
.review-a-watch-v4 span { display: block; overflow: hidden; margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.review-us-evidence-v4 { border-bottom: 1px solid var(--ink); background: rgba(230,236,242,.18); }
.review-us-evidence-v4 > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
}
.review-us-evidence-v4 > header strong,
.review-us-evidence-v4 > header span { display: block; }
.review-us-evidence-v4 > header strong { font-size: 14px; }
.review-us-evidence-v4 > header span { margin-top: 3px; color: #394756; font-size: 12px; }
.review-us-evidence-v4 > header small { color: var(--muted); font-size: 11px; }
.review-us-metrics-v4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.review-us-metrics-v4 > div { min-width: 0; padding: 12px 16px; border-right: 1px solid var(--line); }
.review-us-metrics-v4 > div:last-child { border-right: 0; }
.review-us-metrics-v4 span,
.review-us-metrics-v4 strong,
.review-us-metrics-v4 small { display: block; }
.review-us-metrics-v4 span { color: var(--muted); font-size: 11px; font-weight: 800; }
.review-us-metrics-v4 strong { margin-top: 5px; font-size: 17px; font-variant-numeric: tabular-nums; }
.review-us-metrics-v4 small { margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.35; }
.review-us-watch-v4 { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); border-top: 1px solid var(--line); }
.review-us-watch-v4 > div { min-width: 0; padding: 10px 16px; border-right: 1px solid var(--line); }
.review-us-watch-v4 > div:last-child { border-right: 0; }
.review-us-watch-v4 strong { display: block; font-size: 11px; }
.review-us-watch-v4 span { display: block; overflow: hidden; margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.review-anomaly-evidence-v4 { border-bottom: 1px solid var(--ink); background: rgba(255,179,0,.07); }
.review-anomaly-evidence-v4 > header { display: flex; align-items: baseline; gap: 10px; padding: 9px 16px; border-bottom: 1px solid var(--line); }
.review-anomaly-evidence-v4 > header strong { font-size: 13px; }
.review-anomaly-evidence-v4 > header span { color: #5b4814; font-size: 12px; }
.review-anomaly-evidence-v4 > header small { margin-left: auto; color: var(--muted); font-size: 11px; }
.review-anomaly-evidence-v4 > div { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.review-anomaly-evidence-v4 > div > span { display: grid; grid-template-columns: 1fr auto; gap: 3px 10px; min-width: 0; padding: 10px 16px; border-right: 1px solid var(--line); }
.review-anomaly-evidence-v4 > div > span:last-child { border-right: 0; }
.review-anomaly-evidence-v4 b { grid-column: 1 / -1; font-size: 11px; }
.review-anomaly-evidence-v4 strong { font-size: 16px; }
.review-anomaly-evidence-v4 small { align-self: end; color: var(--muted); font-size: 10px; }
.review-anomaly-evidence-v4 .risk strong { color: var(--red); }
.review-anomaly-evidence-v4 .positive strong { color: var(--green); }
.review-anomaly-evidence-v4 .warning strong { color: #a16b00; }
.review-calibration-v4 { border-bottom: 1px solid var(--ink); background: rgba(18,18,18,.025); }
.review-calibration-v4 > header { display: flex; gap: 10px; padding: 9px 16px; border-bottom: 1px solid var(--line); }
.review-calibration-v4 > header strong { font-size: 12px; }
.review-calibration-v4 > header span { color: var(--muted); font-size: 11px; }
.review-calibration-v4 > div { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.review-calibration-v4 > div > span { display: grid; grid-template-columns: 1fr auto; gap: 3px 8px; padding: 9px 16px; border-right: 1px solid var(--line); }
.review-calibration-v4 > div > span:last-child { border-right: 0; }
.review-calibration-v4 b { font-size: 11px; }
.review-calibration-v4 small { color: var(--muted); font-size: 10px; }
.review-calibration-v4 strong { grid-column: 1 / -1; font-size: 12px; }
.review-industry-pulse {
  padding: 14px 16px 16px;
  border-bottom: 1px solid var(--ink);
  background: rgba(236,230,216,.2);
}
.review-industry-pulse > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}
.review-industry-pulse > header strong { display: block; font-size: 14px; }
.review-industry-pulse > header span,
.review-industry-pulse > header small { color: var(--muted); font-size: 11px; }
.review-industry-pulse > header span { display: block; margin-top: 3px; }
.review-pulse-layout {
  display: grid;
  grid-template-columns: minmax(120px, 1.2fr) repeat(4, minmax(72px, .55fr));
  gap: 12px;
  align-items: center;
}
.review-pulse-head {
  min-height: 28px;
  padding: 0 10px;
  border-block: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-weight: 800;
}
.review-pulse-row {
  min-height: 34px;
  padding: 0 10px;
  border-bottom: 1px solid rgba(34,31,27,.1);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.review-pulse-row:last-child { border-bottom: 0; }
.review-pulse-row b { font-size: 13px; }
.review-list-head,
.review-insight-row { padding: 0 16px; }
.review-mainline-layout {
  display: grid;
  grid-template-columns: minmax(220px, 1.35fr) repeat(3, minmax(70px, .45fr)) minmax(240px, 1.2fr);
  gap: 14px;
  align-items: center;
}
.review-list-head {
  min-height: 38px;
  border-bottom: 1px solid var(--line);
  background: rgba(236,230,216,.22);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-insight-row {
  min-height: 84px;
  border-bottom: 1px solid var(--line);
}
.review-insight-row:last-child { border-bottom: 0; }
.review-insight-row > b { font-size: 14px; font-variant-numeric: tabular-nums; }
.review-insight-identity { min-width: 0; }
.review-insight-identity > strong { margin-right: 8px; font-size: 16px; }
.review-insight-identity > small {
  display: block;
  overflow: hidden;
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.daily-review-page .review-stage-badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 8px;
  border-radius: 0;
  background: rgba(11,95,255,.08);
  color: #1747b8;
  font-size: 11px;
  font-weight: 850;
}
.daily-review-page .review-stage-badge.warning { background: rgba(255,176,0,.14); color: #805300; }
.daily-review-page .review-stage-badge.risk { background: rgba(201,42,42,.09); color: var(--bad); }
.review-insight-evidence { min-width: 0; }
.review-insight-evidence strong,
.review-insight-evidence span { display: block; }
.review-insight-evidence strong { font-size: 13px; }
.review-insight-evidence span { margin-top: 5px; color: var(--muted); font-size: 12px; line-height: 1.4; }
.review-core-grid-v3 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  padding: 16px;
}
.review-core-card-v3 {
  min-width: 0;
  padding: 15px;
  border: 1px solid var(--line);
  border-top: 3px solid var(--accent);
  background: rgba(255,253,248,.78);
}
.review-core-card-v3 header,
.review-portfolio-grid-v3 header { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; }
.review-core-card-v3 header strong { display: block; font-size: 16px; }
.review-core-card-v3 header span:not(.review-stage-badge) { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; }
.review-core-metrics-v3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 14px; padding: 10px 0; border-block: 1px solid var(--line); }
.review-core-metrics-v3 span { color: var(--muted); font-size: 12px; }
.review-core-metrics-v3 b { display: block; margin-top: 3px; color: var(--ink); font-size: 14px; }
.review-core-card-v3 > p { margin: 12px 0; color: #4c4539; font-size: 13px; line-height: 1.5; }
.review-core-card-v3 dl { display: grid; gap: 8px; margin: 0; }
.review-core-card-v3 dl > div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 8px; }
.review-core-card-v3 dt { color: var(--muted); font-size: 12px; font-weight: 850; }
.review-core-card-v3 dd { margin: 0; font-size: 12px; line-height: 1.45; }
.review-core-card-v3 dl > div:last-child dd { color: var(--bad); }
.review-plan-posture-v3 {
  margin: 16px 16px 0;
  padding: 12px 14px;
  border-left: 4px solid var(--accent);
  background: rgba(11,95,255,.06);
  color: #33405f;
  font-size: 14px;
  line-height: 1.5;
}
.review-plan-list-v3 { display: grid; padding: 6px 16px 16px; }
.review-plan-list-v3 article {
  display: grid;
  grid-template-columns: minmax(180px, .8fr) minmax(240px, 1.25fr) minmax(240px, 1.25fr);
  gap: 18px;
  align-items: start;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
}
.review-plan-list-v3 article:last-child { border-bottom: 0; }
.review-plan-list-v3 strong { display: block; font-size: 15px; }
.review-plan-list-v3 div > span { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; }
.review-plan-list-v3 p { margin: 0; font-size: 13px; line-height: 1.5; }
.review-plan-list-v3 p b { display: block; margin-bottom: 4px; color: var(--muted); font-size: 11px; }
.review-plan-list-v3 .review-plan-risk { color: var(--bad); }
.review-plan-review-v4 { border-bottom: 1px solid var(--line-strong); }
.review-plan-review-head-v4,
.review-next-plan-v4 > header,
.review-plan-history-v4 > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
}
.review-plan-review-head-v4 strong,
.review-next-plan-v4 > header strong,
.review-plan-history-v4 > header strong { display: block; font-size: 15px; }
.review-plan-review-head-v4 span,
.review-next-plan-v4 > header span,
.review-plan-history-v4 > header span,
.review-plan-review-head-v4 small { color: var(--muted); font-size: 12px; }
.review-plan-review-head-v4 div > span { display: block; margin-top: 3px; }
.review-plan-summary-v4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-bottom: 1px solid var(--line);
}
.review-plan-summary-v4 > div { min-width: 0; padding: 13px 16px; border-right: 1px solid var(--line); }
.review-plan-summary-v4 > div:last-child { border-right: 0; }
.review-plan-summary-v4 span,
.review-plan-summary-v4 strong,
.review-plan-summary-v4 small { display: block; }
.review-plan-summary-v4 span { color: var(--muted); font-size: 11px; font-weight: 800; }
.review-plan-summary-v4 strong { margin-top: 5px; font-size: 20px; font-variant-numeric: tabular-nums; }
.review-plan-summary-v4 small { margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.35; }
.review-plan-validation-list-v4 { padding: 0 16px; }
.review-plan-validation-list-v4 article {
  display: grid;
  grid-template-columns: minmax(160px, .65fr) minmax(300px, 1.6fr) minmax(160px, .65fr);
  gap: 18px;
  align-items: center;
  min-height: 88px;
  padding: 13px 0;
  border-bottom: 1px solid var(--line);
}
.review-plan-validation-list-v4 article:last-child { border-bottom: 0; }
.review-plan-validation-id-v4 strong,
.review-plan-validation-id-v4 span { display: block; }
.review-plan-validation-id-v4 strong { font-size: 15px; }
.review-plan-validation-id-v4 span { margin-top: 3px; color: var(--muted); font-size: 11px; }
.review-plan-status-v4 { display: inline-flex; margin-top: 8px; padding: 4px 7px; font-size: 11px; }
.review-plan-status-v4.positive { background: rgba(8,127,91,.1); color: var(--good); }
.review-plan-status-v4.risk { background: rgba(201,42,42,.09); color: var(--bad); }
.review-plan-status-v4.warning { background: rgba(255,176,0,.14); color: #805300; }
.review-plan-status-v4.neutral { background: rgba(92,87,76,.09); color: var(--muted); }
.review-plan-validation-result-v4 strong { font-size: 13px; }
.review-plan-validation-result-v4 p { margin: 5px 0 0; color: #4c4539; font-size: 12px; line-height: 1.5; }
.review-plan-validation-list-v4 details { color: var(--muted); font-size: 12px; }
.review-plan-validation-list-v4 summary { cursor: pointer; font-weight: 800; }
.review-plan-validation-list-v4 details p { margin: 7px 0 0; color: var(--ink); line-height: 1.45; }
.review-plan-validation-list-v4 details p b { display: block; color: var(--muted); font-size: 10px; }
.review-plan-validation-list-v4 details .review-plan-risk { color: var(--bad); }
.review-plan-history-v4 { border-top: 1px solid var(--line); }
.review-plan-history-v4 > div { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.review-plan-history-v4 > div > span { min-width: 0; padding: 11px 14px; border-right: 1px solid var(--line); }
.review-plan-history-v4 > div > span:last-child { border-right: 0; }
.review-plan-history-v4 b,
.review-plan-history-v4 em,
.review-plan-history-v4 div strong { display: block; }
.review-plan-history-v4 b { font-size: 12px; }
.review-plan-history-v4 em { margin-top: 4px; color: var(--muted); font-size: 10px; font-style: normal; }
.review-plan-history-v4 div strong { margin-top: 5px; color: var(--accent); font-size: 15px; }
.review-next-plan-v4 > header { background: rgba(236,230,216,.22); }
.review-portfolio-grid-v3 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  padding: 16px;
}
.review-portfolio-grid-v3 article { padding: 15px; border: 1px solid var(--line); background: rgba(255,253,248,.78); }
.review-portfolio-grid-v3 header strong { font-size: 16px; }
.review-portfolio-grid-v3 header span { font-size: 13px; font-weight: 850; }
.review-portfolio-grid-v3 p { margin: 12px 0; color: var(--muted); font-size: 13px; line-height: 1.5; }
.review-portfolio-grid-v3 article > div { display: flex; flex-wrap: wrap; gap: 18px; font-size: 12px; }
.review-portfolio-grid-v3 b { font-size: 14px; }
.daily-review-page .review-lineage {
  margin-top: 0;
  padding-top: 10px;
  color: var(--muted);
  font-size: 11px;
}
@media (max-width: 1100px) {
  .review-command {
    grid-template-columns: minmax(260px, 1fr) minmax(340px, 1fr);
    grid-template-areas:
      "primary evidence"
      "quality quality"
      "summary summary";
  }
  .review-command-quality { border-top: 1px solid var(--line); border-left: 0; }
  .review-mainline-layout { grid-template-columns: minmax(190px, 1.2fr) repeat(3, 66px) minmax(190px, 1fr); gap: 10px; }
}
@media (max-width: 720px) {
  .daily-review-page .review-toolbar { display: flex; width: auto; }
  .daily-review-page .review-market-tabs { flex-wrap: nowrap; overflow-x: auto; }
  .review-command {
    grid-template-columns: 1fr;
    grid-template-areas: "primary" "evidence" "quality" "summary";
  }
  .review-command-primary { border-right: 0; border-bottom: 1px solid var(--line); }
  .review-command-call strong { font-size: 26px; }
  .review-command-quality { border-top: 1px solid var(--line); }
  .review-command-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-command-summary-cell:nth-child(2) { border-right: 0; }
  .review-command-summary-cell:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .review-workbench .section-head { display: grid; align-items: start; }
  .review-workbench .trend-state-grid {
    max-width: 100%;
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
  }
  .review-list-head { display: none; }
  .review-signal-note { display: grid; gap: 4px; padding: 12px; }
  .review-signal-summary > div { padding: 12px 10px; }
  .review-signal-summary strong { font-size: 19px; }
  .review-signal-summary small { line-height: 1.35; }
  .review-signal-section > header { align-items: flex-start; padding: 11px 12px; }
  .review-signal-path { grid-template-columns: 1fr; gap: 7px; padding: 10px 12px; }
  .review-signal-path > div { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
  .review-signal-path .review-stage-badge { min-height: 28px; white-space: normal; text-align: center; }
  .review-signal-cohort-head { display: none; }
  .review-signal-cohort-row.review-signal-cohort-layout {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    padding: 12px;
  }
  .review-signal-cohort-row > strong,
  .review-signal-cohort-row > div { grid-column: 1 / -1; }
  .review-signal-cohort-row > span { padding: 7px 5px; background: rgba(236,230,216,.28); text-align: center; }
  .review-signal-matured-list { grid-template-columns: 1fr; }
  .review-signal-matured-list > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .review-signal-matured-list > div:last-child { border-bottom: 0; }
  .review-hk-evidence-v4 > header { padding: 11px 12px; }
  .review-hk-metrics-v4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-hk-metrics-v4 > div { padding: 11px 12px; border-bottom: 1px solid var(--line); }
  .review-hk-metrics-v4 > div:nth-child(2) { border-right: 0; }
  .review-hk-metrics-v4 > div:nth-last-child(-n+2) { border-bottom: 0; }
  .review-hk-watch-v4 { grid-template-columns: 1fr; }
  .review-hk-watch-v4 > div { padding: 10px 12px; border-right: 0; border-bottom: 1px solid var(--line); }
  .review-hk-watch-v4 > div:last-child { border-bottom: 0; }
  .review-hk-watch-v4 span { white-space: normal; }
  .review-a-evidence-v4 > header { padding: 11px 12px; }
  .review-a-metrics-v4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-a-metrics-v4 > div { padding: 11px 12px; border-bottom: 1px solid var(--line); }
  .review-a-metrics-v4 > div:nth-child(2) { border-right: 0; }
  .review-a-metrics-v4 > div:nth-last-child(-n+2) { border-bottom: 0; }
  .review-a-watch-v4 { grid-template-columns: 1fr; }
  .review-a-watch-v4 > div { padding: 10px 12px; border-right: 0; border-bottom: 1px solid var(--line); }
  .review-a-watch-v4 > div:last-child { border-bottom: 0; }
  .review-a-watch-v4 span { white-space: normal; }
  .review-us-evidence-v4 > header { padding: 11px 12px; }
  .review-us-metrics-v4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-us-metrics-v4 > div { padding: 11px 12px; border-bottom: 1px solid var(--line); }
  .review-us-metrics-v4 > div:nth-child(2) { border-right: 0; }
  .review-us-metrics-v4 > div:nth-last-child(-n+2) { border-bottom: 0; }
  .review-us-watch-v4 { grid-template-columns: 1fr; }
  .review-us-watch-v4 > div { padding: 10px 12px; border-right: 0; border-bottom: 1px solid var(--line); }
  .review-us-watch-v4 > div:last-child { border-bottom: 0; }
  .review-us-watch-v4 span { white-space: normal; }
  .review-anomaly-evidence-v4 > header { display: grid; gap: 3px; padding: 10px 12px; }
  .review-anomaly-evidence-v4 > header small { margin-left: 0; }
  .review-anomaly-evidence-v4 > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-anomaly-evidence-v4 > div > span { padding: 10px 12px; border-bottom: 1px solid var(--line); }
  .review-calibration-v4 > header { display: grid; gap: 3px; padding: 9px 12px; }
  .review-calibration-v4 > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-calibration-v4 > div > span { padding: 9px 12px; border-bottom: 1px solid var(--line); }
  .review-industry-pulse { padding: 12px; }
  .review-industry-pulse > header { min-width: 0; }
  .review-pulse-layout {
    min-width: 0;
    grid-template-columns: minmax(82px, 1.15fr) repeat(4, minmax(46px, .58fr));
    gap: 6px;
  }
  .review-pulse-head,
  .review-pulse-row { padding-inline: 6px; }
  .review-insight-row.review-mainline-layout {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    padding: 14px;
  }
  .review-insight-identity,
  .review-insight-evidence { grid-column: 1 / -1; }
  .review-insight-row > b { padding: 8px; background: rgba(236,230,216,.28); text-align: center; }
  .review-core-grid-v3,
  .review-portfolio-grid-v3 { grid-template-columns: 1fr; padding: 12px; }
  .review-plan-posture-v3 { margin: 12px 12px 0; }
  .review-plan-list-v3 { padding: 4px 12px 12px; }
  .review-plan-list-v3 article { grid-template-columns: 1fr; gap: 10px; }
  .review-plan-review-head-v4,
  .review-next-plan-v4 > header,
  .review-plan-history-v4 > header { align-items: flex-start; padding: 11px 12px; }
  .review-plan-summary-v4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-plan-summary-v4 > div { padding: 11px 12px; border-bottom: 1px solid var(--line); }
  .review-plan-summary-v4 > div:nth-child(2) { border-right: 0; }
  .review-plan-summary-v4 > div:nth-last-child(-n+2) { border-bottom: 0; }
  .review-plan-validation-list-v4 { padding: 0 12px; }
  .review-plan-validation-list-v4 article { grid-template-columns: 1fr; gap: 10px; padding: 13px 0; }
  .review-plan-validation-list-v4 details { padding: 8px 0; border-top: 1px dashed var(--line); }
  .review-plan-history-v4 > div { grid-template-columns: 1fr; }
  .review-plan-history-v4 > div > span { display: grid; grid-template-columns: 92px minmax(0, 1fr) 52px; align-items: center; gap: 8px; border-right: 0; border-bottom: 1px solid var(--line); }
  .review-plan-history-v4 > div > span:last-child { border-bottom: 0; }
  .review-plan-history-v4 em,
  .review-plan-history-v4 div strong { margin-top: 0; }
  .review-plan-history-v4 div strong { text-align: right; }
  .daily-review-page .review-lineage { display: grid; }
}

/* V12 must remain the final review cascade after the legacy v3 block. */
.review-sector-board {
  border-top: 1px solid var(--ink);
  background: var(--panel);
}
.review-sector-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  min-height: 68px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
}
.review-sector-head > div:first-child > strong,
.review-sector-head > div:first-child > span { display: block; }
.review-sector-head > div:first-child > strong {
  font-size: 16px;
}
.review-sector-head > div:first-child > span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
}
.review-sector-source {
  display: inline-flex;
  flex: 0 0 auto;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 0;
  background: rgba(236, 230, 216, .28);
}
.review-sector-controls {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}
.review-sector-source button {
  min-height: 34px;
  padding: 0 12px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}
.review-sector-source button:hover,
.review-sector-source button:focus-visible { color: var(--ink); background: var(--panel-2); }
.review-sector-source button.active { color: var(--panel); background: var(--ink); }
.review-sector-table { min-width: 0; }
.review-sector-layout {
  display: grid;
  grid-template-columns: minmax(250px, 1.35fr) repeat(4, minmax(78px, .42fr)) minmax(210px, 1.05fr);
  gap: 12px;
  align-items: center;
}
.review-sector-table-head {
  min-height: 38px;
  padding: 0 16px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .2);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-sector-row {
  min-height: 88px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
}
.review-sector-row:last-child { border-bottom: 0; }
.review-sector-empty {
  display: grid;
  gap: 5px;
  padding: 18px 16px;
  color: var(--muted);
}
.review-sector-empty strong { color: var(--ink); font-size: 14px; }
.review-sector-empty span { font-size: 13px; }
.review-sector-row > b {
  font-size: 14px;
  font-variant-numeric: tabular-nums;
}
.review-sector-identity { min-width: 0; }
.review-sector-identity > strong {
  margin-right: 8px;
  font-size: 16px;
}
.review-sector-identity > small {
  display: block;
  overflow: hidden;
  margin-top: 7px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.review-sector-kind {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 7px;
  background: rgba(92, 87, 76, .09);
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-sector-confirm strong,
.review-sector-confirm span { display: block; }
.review-sector-confirm strong { font-size: 14px; }
.review-sector-confirm span {
  margin-top: 5px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}
.review-sector-row.interactive { cursor: pointer; }
.review-sector-row.interactive:hover,
.review-sector-row.interactive:focus-visible {
  background: rgba(11, 95, 255, .045);
  box-shadow: inset 3px 0 0 var(--accent);
  outline: 0;
}
.review-inline-link {
  min-height: 34px;
  margin-top: 14px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: transparent;
  color: var(--accent);
  font-size: 13px;
  font-weight: 800;
}
.review-inline-link:hover,
.review-inline-link:focus-visible { border-color: var(--accent); background: rgba(11, 95, 255, .05); }
@media (max-width: 1100px) {
  .review-sector-layout {
    grid-template-columns: minmax(210px, 1.2fr) repeat(4, minmax(64px, .42fr)) minmax(180px, 1fr);
    gap: 8px;
  }
}
@media (max-width: 720px) {
  .review-sector-head { align-items: flex-start; flex-direction: column; padding: 12px; }
  .review-sector-source { width: 100%; }
  .review-sector-source button { flex: 1 1 0; }
  .review-sector-table-head { display: none; }
  .review-sector-row.review-sector-layout {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 9px 6px;
    padding: 14px 12px;
  }
  .review-sector-identity,
  .review-sector-confirm { grid-column: 1 / -1; }
  .review-sector-row > b {
    padding: 8px 4px;
    background: rgba(236, 230, 216, .28);
    text-align: center;
  }
  .review-sector-row > b::before {
    display: block;
    margin-bottom: 4px;
    color: var(--muted);
    content: attr(data-label);
    font-size: 12px;
    font-weight: 700;
  }
  .review-sector-confirm { padding-top: 2px; }
}
.history-modal.review-detail-shell {
  align-items: stretch;
  justify-content: flex-end;
  padding: 0;
}
.history-modal.review-detail-shell .review-detail-drawer {
  width: min(520px, 92vw);
  height: 100%;
  max-height: none;
  margin: 0;
  border-radius: 0;
}
@media (max-width: 720px) {
  .history-modal.review-detail-shell .review-detail-drawer { width: 100vw; }
}
.daily-review-page .review-toolbar label > span:first-child,
.daily-review-page .review-status-meta,
.daily-review-page .review-a-evidence-v4 > header small,
.daily-review-page .review-a-metrics-v4 span,
.daily-review-page .review-a-metrics-v4 small,
.daily-review-page .review-a-watch-v4 strong,
.daily-review-page .review-a-watch-v4 span,
.daily-review-page .review-hk-evidence-v4 > header small,
.daily-review-page .review-hk-metrics-v4 span,
.daily-review-page .review-hk-metrics-v4 small,
.daily-review-page .review-hk-watch-v4 strong,
.daily-review-page .review-hk-watch-v4 span,
.daily-review-page .review-us-evidence-v4 > header small,
.daily-review-page .review-us-metrics-v4 span,
.daily-review-page .review-us-metrics-v4 small,
.daily-review-page .review-us-watch-v4 strong,
.daily-review-page .review-us-watch-v4 span,
.daily-review-page .review-anomaly-evidence-v4 > header small,
.daily-review-page .review-anomaly-evidence-v4 b,
.daily-review-page .review-anomaly-evidence-v4 small,
.daily-review-page .review-calibration-v4 > header span,
.daily-review-page .review-calibration-v4 b,
.daily-review-page .review-calibration-v4 small,
.daily-review-page .review-industry-pulse > header span,
.daily-review-page .review-industry-pulse > header small,
.daily-review-page .review-pulse-head,
.daily-review-page .review-stage-badge,
.daily-review-page .review-lineage,
.daily-review-page .review-lineage > span,
.daily-review-page .review-lineage .review-help {
  font-size: 12px;
}
.daily-review-page .review-a-evidence-v4 > header span,
.daily-review-page .review-hk-evidence-v4 > header span,
.daily-review-page .review-us-evidence-v4 > header span,
.daily-review-page .review-anomaly-evidence-v4 > header span,
.daily-review-page .review-industry-pulse > header strong,
.daily-review-page .review-pulse-row,
.daily-review-page .review-insight-row,
.daily-review-page .review-signal-path,
.daily-review-page .review-signal-cohort-row {
  font-size: 14px;
}
.daily-review-page .review-lineage {
  display: flex;
  align-items: center;
  gap: 7px;
}
@media (max-width: 720px) {
  .daily-review-page .review-lineage { display: flex; flex-wrap: wrap; }
}

/* Daily review v13: tactical hierarchy and mapped sector evidence. */
.review-workbench .trend-state-card.active,
.review-workbench .trend-state-card.active span,
.review-workbench .trend-state-card.active strong {
  color: #fff;
}
.review-workbench .trend-state-card.active strong { opacity: .78; }

.review-a-tactical-v13 {
  border-bottom: 1px solid var(--ink);
  background: var(--panel);
}
.review-a-tactical-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
  min-height: 66px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .18);
}
.review-a-tactical-head > div:first-child span,
.review-a-tactical-head > div:first-child strong,
.review-a-tactical-head > small { display: block; }
.review-a-tactical-head > div:first-child span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-a-tactical-head > div:first-child strong {
  margin-top: 4px;
  font-size: 16px;
  line-height: 1.35;
}
.review-a-tactical-head > small {
  color: var(--muted);
  font-size: 12px;
  text-align: right;
}
.review-a-tactical-chain {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.review-a-tactical-chain article {
  min-width: 0;
  padding: 16px;
  border-right: 1px solid var(--line);
}
.review-a-tactical-chain article:last-child { border-right: 0; }
.review-a-tactical-chain article > strong,
.review-a-tactical-chain article > small { display: block; }
.review-a-step {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-a-tactical-chain article > strong {
  margin-top: 8px;
  font-size: 20px;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}
.review-a-tactical-chain article > small {
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.review-a-balance {
  display: flex;
  overflow: hidden;
  height: 5px;
  margin-top: 12px;
  background: var(--panel-2);
}
.review-a-balance span { display: block; min-width: 2px; }
.review-a-balance .positive { background: var(--good); }
.review-a-balance .negative { background: var(--bad); }
.review-a-flow-split {
  display: flex;
  gap: 14px;
  margin-top: 12px;
  font-size: 12px;
}
.review-a-turnover-split {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin-top: 12px;
  color: var(--muted);
  font-size: 12px;
}
.review-sector-evidence small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.review-news-digest {
  margin-top: 14px;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  background: var(--panel);
}
.review-news-digest > header {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
  min-height: 62px;
  padding: 11px 16px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .18);
}
.review-news-digest > header strong,
.review-news-digest > header span { display: block; }
.review-news-digest > header strong { font-size: 16px; }
.review-news-digest > header span,
.review-news-digest > header small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
}
.review-news-list a {
  display: grid;
  grid-template-columns: 48px 92px minmax(0, 1fr) 20px;
  gap: 12px;
  align-items: center;
  min-height: 64px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  color: var(--ink);
  text-decoration: none;
}
.review-news-list a:last-child { border-bottom: 0; }
.review-news-list a:hover,
.review-news-list a:focus-visible { background: rgba(236, 230, 216, .26); }
.review-news-list time {
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.review-news-category {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-news-list div { min-width: 0; }
.review-news-list div strong,
.review-news-list div small { display: block; }
.review-news-list div strong {
  overflow: hidden;
  font-size: 14px;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.review-news-list div small {
  margin-top: 3px;
  color: var(--muted);
  font-size: 12px;
}
.review-news-list > a > b {
  color: var(--muted);
  font-size: 14px;
  text-align: right;
}
.review-news-empty {
  display: grid;
  gap: 4px;
  padding: 14px 16px;
}
.review-news-empty strong { font-size: 14px; }
.review-news-empty span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.review-news-events {
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .1);
}
.review-news-subhead {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 16px;
  border-bottom: 1px solid var(--line);
}
.review-news-subhead strong { font-size: 13px; }
.review-news-subhead span { color: var(--muted); font-size: 11px; }
.review-news-event {
  display: grid;
  grid-template-columns: 150px 76px minmax(0, 1fr);
  gap: 12px;
  align-items: baseline;
  min-height: 42px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
}
.review-news-event:last-child { border-bottom: 0; }
.review-news-event time,
.review-news-event span { color: var(--muted); font-size: 12px; }
.review-news-event span { font-weight: 800; }
.review-news-event strong { font-size: 13px; line-height: 1.45; }
.review-a-flow-split b:first-child { color: var(--good); }
.review-a-flow-split b:last-child { color: var(--bad); }
.review-a-tactical-notes {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(260px, .8fr);
  border-top: 1px solid var(--line);
}
.review-a-tactical-notes > div {
  min-width: 0;
  padding: 12px 16px;
  border-right: 1px solid var(--line);
}
.review-a-tactical-notes > div:last-child { border-right: 0; }
.review-a-tactical-notes span,
.review-a-tactical-notes strong,
.review-a-tactical-notes small { display: block; }
.review-a-tactical-notes span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-a-tactical-notes strong {
  margin-top: 5px;
  font-size: 13px;
  line-height: 1.45;
}
.review-a-tactical-notes small {
  margin-top: 5px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

.review-sector-layout.enriched {
  grid-template-columns: minmax(210px, 1.18fr) repeat(3, minmax(68px, .4fr)) minmax(130px, .72fr) minmax(150px, .82fr) minmax(190px, 1fr);
  gap: 10px;
}
.review-sector-evidence { min-width: 0; }
.review-sector-evidence strong,
.review-sector-evidence span { display: block; }
.review-sector-evidence strong {
  font-size: 13px;
  line-height: 1.35;
  font-variant-numeric: tabular-nums;
}
.review-sector-evidence span {
  margin-top: 5px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}

@media (max-width: 1180px) and (min-width: 721px) {
  .review-sector-layout.enriched {
    grid-template-columns: minmax(190px, 1.1fr) repeat(3, minmax(60px, .38fr)) minmax(115px, .68fr) minmax(135px, .75fr) minmax(165px, .9fr);
    gap: 7px;
  }
  .review-sector-row.enriched,
  .review-sector-table-head.enriched { padding-right: 12px; padding-left: 12px; }
}

@media (max-width: 720px) {
  .review-a-tactical-head {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    padding: 12px;
  }
  .review-a-tactical-head > small {
    grid-column: 1 / -1;
    text-align: left;
  }
  .review-a-tactical-chain { grid-template-columns: 1fr; }
  .review-a-tactical-chain article {
    padding: 14px 12px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-a-tactical-chain article:last-child { border-bottom: 0; }
  .review-a-tactical-chain article > strong { font-size: 19px; }
  .review-a-tactical-notes { grid-template-columns: 1fr; }
  .review-a-tactical-notes > div {
    padding: 12px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-a-tactical-notes > div:last-child { border-bottom: 0; }
  .review-sector-row.review-sector-layout.enriched {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .review-sector-row.enriched .review-sector-identity { grid-column: 1 / -1; }
  .review-sector-row.enriched .review-sector-evidence {
    padding: 9px 8px;
    border: 1px solid var(--line);
    background: rgba(236, 230, 216, .18);
  }
  .review-sector-row.enriched .review-sector-evidence strong { font-size: 12px; }
  .review-sector-row.enriched .review-sector-evidence span { font-size: 12px; }
  .review-sector-controls { width: 100%; justify-content: stretch; }
  .review-sector-controls .review-sector-source { flex: 1 1 160px; }
  .review-news-digest > header {
    grid-template-columns: minmax(0, 1fr) auto;
    padding: 11px 12px;
  }
  .review-news-digest > header > small { grid-column: 1 / -1; }
  .review-news-list a {
    grid-template-columns: 42px minmax(0, 1fr) 18px;
    gap: 9px;
    padding: 11px 12px;
  }
  .review-news-category { display: none; }
  .review-news-list div strong {
    overflow: visible;
    white-space: normal;
  }
}

/* Daily review v14: one evidence hierarchy across markets, with native metrics per market. */
.review-native-evidence {
  border-bottom: 1px solid var(--ink);
  background: rgba(18, 18, 18, .018);
}
.review-native-hk { background: rgba(236, 230, 216, .16); }
.review-native-us { background: rgba(230, 236, 242, .18); }
.review-native-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: start;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--line);
}
.review-native-head span,
.review-native-head strong,
.review-native-head small { display: block; }
.review-native-head span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-native-head strong {
  margin-top: 4px;
  font-size: 17px;
  line-height: 1.35;
}
.review-native-head > small {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
  text-align: right;
}
.review-native-chain {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.review-native-chain article {
  min-width: 0;
  padding: 16px;
  border-right: 1px solid var(--line);
}
.review-native-chain article:last-child { border-right: 0; }
.review-native-step {
  display: block;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.review-native-chain article > strong {
  display: block;
  margin-top: 7px;
  font-size: 20px;
  line-height: 1.25;
  font-variant-numeric: tabular-nums;
}
.review-native-pairs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  margin-top: 12px;
}
.review-native-pairs b {
  font-size: 13px;
  line-height: 1.35;
  font-variant-numeric: tabular-nums;
}
.review-native-chain article > small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}
.review-native-notes {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  border-top: 1px solid var(--line);
}
.review-native-notes > div {
  min-width: 0;
  padding: 12px 16px;
  border-right: 1px solid var(--line);
}
.review-native-notes > div:last-child { border-right: 0; }
.review-native-notes span,
.review-native-notes strong,
.review-native-notes small { display: block; }
.review-native-notes span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-native-notes strong {
  margin-top: 5px;
  font-size: 13px;
  line-height: 1.45;
}
.review-native-notes small {
  margin-top: 5px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}
.review-native-events {
  display: grid;
  gap: 5px;
  margin: 7px 0 0;
  padding: 0;
  list-style: none;
}
.review-native-events li {
  display: grid;
  grid-template-columns: 112px 34px minmax(0, 1fr);
  gap: 7px;
  align-items: baseline;
  font-size: 12px;
  line-height: 1.4;
}
.review-native-events time {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.review-native-events b { color: #8a6200; }
.review-native-events span { min-width: 0; }
.review-sector-fallback-note {
  display: block;
  margin-top: 5px;
  color: #8a6200;
  font-size: 12px;
  line-height: 1.4;
}

@media (max-width: 720px) {
  .review-native-head {
    grid-template-columns: minmax(0, 1fr) auto;
    padding: 12px;
  }
  .review-native-head > small {
    grid-column: 1 / -1;
    text-align: left;
  }
  .review-native-chain { grid-template-columns: 1fr; }
  .review-native-chain article {
    padding: 14px 12px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-native-chain article:last-child { border-bottom: 0; }
  .review-native-chain article > strong { font-size: 19px; }
  .review-native-notes { grid-template-columns: 1fr; }
  .review-native-notes > div {
    padding: 12px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-native-notes > div:last-child { border-bottom: 0; }
  .review-native-events li {
    grid-template-columns: 1fr auto;
    gap: 2px 8px;
  }
  .review-native-events li span { grid-column: 1 / -1; }
}

/* Daily review v16: one market overview, then event and sector drill-down. */
.review-overview-v16 {
  --review-command-edge: var(--ink);
  overflow: hidden;
  border: 1px solid var(--ink);
  border-left: 5px solid var(--review-command-edge);
  border-radius: 0;
  background: var(--panel);
  box-shadow: 0 10px 28px rgba(34, 27, 12, .08);
}
.review-overview-v16.review-command-positive { --review-command-edge: var(--good); }
.review-overview-v16.review-command-warning { --review-command-edge: #946200; }
.review-overview-v16.review-command-risk { --review-command-edge: var(--bad); }
.review-overview-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 18px 20px 16px;
  border-bottom: 1px solid var(--ink);
}
.review-overview-state { min-width: 0; }
.review-overview-state .review-command-call {
  flex-wrap: wrap;
  align-items: center;
  margin-top: 10px;
}
.review-overview-state .review-command-call strong {
  color: var(--review-command-edge);
  font-size: 30px;
  letter-spacing: 0;
}
.review-overview-state > p {
  max-width: 760px;
  margin: 10px 0 0;
  color: #413b32;
  font-size: 15px;
  line-height: 1.6;
}
.review-overview-head .review-trust-entry {
  flex: 0 0 auto;
  margin-top: 2px;
}
.review-overview-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  border-bottom: 1px solid var(--line);
}
.review-overview-metric {
  min-width: 0;
  min-height: 118px;
  padding: 15px 14px;
  border-right: 1px solid var(--line);
}
.review-overview-metric:last-child { border-right: 0; }
.review-overview-metric span,
.review-overview-metric strong,
.review-overview-metric small { display: block; }
.review-overview-metric span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}
.review-overview-metric strong {
  margin-top: 10px;
  font-size: 21px;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}
.review-overview-metric small {
  margin-top: 8px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
}
.review-overview-insight {
  display: grid;
  grid-template-columns: 116px minmax(0, 1fr);
  gap: 14px;
  align-items: baseline;
  padding: 11px 16px;
  border-bottom: 1px solid var(--line);
  background: rgba(255, 179, 0, .07);
}
.review-overview-insight.risk { background: rgba(217, 48, 37, .055); }
.review-overview-insight.neutral { background: rgba(236, 230, 216, .18); }
.review-overview-insight span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.review-overview-insight strong {
  font-size: 13px;
  line-height: 1.55;
}
.review-overview-detail { border-bottom: 1px solid var(--ink); }
.review-overview-detail-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .16);
}
.review-overview-detail-head strong { font-size: 13px; }
.review-overview-detail-head span {
  color: var(--muted);
  font-size: 12px;
}
.review-overview-focus-groups {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.review-overview-focus-groups > section {
  min-width: 0;
  padding: 12px 16px 14px;
  border-right: 1px solid var(--line);
}
.review-overview-focus-groups > section:last-child { border-right: 0; }
.review-overview-focus-groups section > header {
  margin-bottom: 7px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.review-overview-focus-groups section > p {
  margin: 9px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.5;
}
.review-overview-focus-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 2px 12px;
  align-items: baseline;
  min-height: 42px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(222, 214, 198, .7);
}
.review-overview-focus-row:last-child { border-bottom: 0; }
.review-overview-focus-row strong,
.review-overview-focus-row b { font-size: 13px; }
.review-overview-focus-row b {
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.review-overview-focus-row small {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}
.review-overview-gap small {
  display: block;
  margin-top: 7px;
  color: var(--muted);
  font-size: 11px;
}
.review-overview-event-list { display: grid; }
.review-overview-event-list > div {
  display: grid;
  grid-template-columns: 150px 68px minmax(0, 1fr);
  gap: 12px;
  align-items: baseline;
  min-height: 42px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--line);
}
.review-overview-event-list time,
.review-overview-event-list span {
  color: var(--muted);
  font-size: 12px;
}
.review-overview-event-list time { font-variant-numeric: tabular-nums; }
.review-overview-event-list span { font-weight: 800; }
.review-overview-event-list strong { font-size: 13px; line-height: 1.45; }
.review-overview-event-list > p {
  margin: 0;
  padding: 14px 16px;
  color: var(--muted);
  font-size: 12px;
}
.review-overview-risk-gap {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: 12px;
  padding: 10px 16px;
  background: rgba(236, 230, 216, .16);
}
.review-overview-risk-gap span { color: var(--muted); font-size: 12px; font-weight: 800; }
.review-overview-risk-gap strong { font-size: 12px; }
.review-overview-decisions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  background: rgba(236, 230, 216, .22);
}
.review-overview-decisions .review-command-summary-cell {
  padding: 13px 16px;
}
.review-overview-decisions .review-command-summary-cell span,
.review-overview-decisions .review-command-summary-cell small { font-size: 12px; }
.review-overview-decisions .review-command-summary-cell strong {
  overflow: visible;
  margin-top: 5px;
  font-size: 16px;
  text-overflow: clip;
  white-space: normal;
}
.review-overview-decisions .review-command-summary-cell small {
  overflow: visible;
  line-height: 1.45;
  text-overflow: clip;
  white-space: normal;
}

@media (max-width: 1100px) {
  .review-overview-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .review-overview-metric { border-bottom: 1px solid var(--line); }
  .review-overview-metric:nth-child(3n) { border-right: 0; }
  .review-overview-metric:nth-last-child(-n+3) { border-bottom: 0; }
}

@media (max-width: 720px) {
  .review-overview-head {
    display: grid;
    gap: 12px;
    padding: 15px 12px;
  }
  .review-overview-head .review-trust-entry { justify-self: start; margin-top: 0; }
  .review-overview-state .review-command-kicker { display: grid; gap: 4px; }
  .review-overview-state .review-command-call strong { font-size: 27px; }
  .review-overview-state > p { font-size: 14px; }
  .review-overview-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-overview-metric {
    min-height: 112px;
    padding: 13px 12px;
    border-right: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
  }
  .review-overview-metric:nth-child(3n) { border-right: 1px solid var(--line); }
  .review-overview-metric:nth-child(2n) { border-right: 0; }
  .review-overview-metric:nth-last-child(-n+3) { border-bottom: 1px solid var(--line); }
  .review-overview-metric:nth-last-child(-n+2) { border-bottom: 0; }
  .review-overview-metric strong { font-size: 19px; }
  .review-overview-insight { grid-template-columns: 1fr; gap: 4px; padding: 11px 12px; }
  .review-overview-detail-head { align-items: flex-start; flex-direction: column; gap: 3px; padding: 10px 12px; }
  .review-overview-focus-groups { grid-template-columns: 1fr; }
  .review-overview-focus-groups > section {
    padding: 11px 12px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-overview-focus-groups > section:last-child { border-bottom: 0; }
  .review-overview-event-list > div {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 3px 10px;
    padding: 10px 12px;
  }
  .review-overview-event-list strong { grid-column: 1 / -1; }
  .review-overview-risk-gap { grid-template-columns: 1fr; gap: 4px; padding: 10px 12px; }
  .review-overview-decisions { grid-template-columns: 1fr; }
  .review-overview-decisions .review-command-summary-cell {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .review-overview-decisions .review-command-summary-cell:last-child { border-bottom: 0; }
}

@media (max-width: 720px) {
  .review-workbench .review-workbench-nav { padding: 7px; }
  .review-news-subhead { align-items: flex-start; flex-direction: column; gap: 2px; padding: 9px 12px; }
  .review-news-event {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 3px 10px;
    padding: 10px 12px;
  }
  .review-news-event strong { grid-column: 1 / -1; }
}

/* Daily review v17: square geometry and task-first navigation. */
.daily-review-page .review-overview-v16,
.daily-review-page .review-workbench.trend-overview-panel,
.daily-review-page .review-workbench .trend-state-grid,
.daily-review-page .review-workbench .trend-state-card,
.daily-review-page .review-sector-source,
.daily-review-page .review-sector-source button {
  border-radius: 0;
}
.daily-review-page .review-workbench .section-head.review-workbench-nav {
  justify-content: flex-start;
  min-height: 52px;
  padding: 8px 12px;
}
.daily-review-page .review-workbench .review-workbench-nav .trend-state-grid {
  width: auto;
  max-width: 100%;
}
@media (max-width: 720px) {
  .daily-review-page .review-workbench .section-head.review-workbench-nav { padding: 7px; }
}

/* Daily review v18: market-research terminal. */
.daily-review-page {
  --research-blue: #064fd8;
  --research-yellow: #f2b700;
  --research-green: #087f5b;
  --research-red: #b42318;
  --research-grid: rgba(23, 23, 23, .055);
}
.daily-review-page .page-head { margin-bottom: 10px; }
.daily-review-page .page-head h1 {
  font-family: Georgia, "Songti SC", "STSong", serif;
  letter-spacing: -.045em;
}
.daily-review-page .review-status { margin-bottom: 10px; }

.review-research-overview {
  overflow: hidden;
  margin-bottom: 10px;
  border: 1px solid var(--ink);
  background:
    linear-gradient(90deg, var(--research-grid) 1px, transparent 1px) 0 0 / 48px 48px,
    linear-gradient(var(--research-grid) 1px, transparent 1px) 0 0 / 48px 48px,
    var(--panel);
  box-shadow: 0 8px 24px rgba(34, 27, 12, .06);
}
.review-panorama-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  min-height: 39px;
  padding: 6px 11px;
  border-bottom: 1px solid var(--ink);
  background: rgba(255, 253, 248, .94);
}
.review-panorama-head span,
.review-panorama-head strong { display: block; }
.review-panorama-head span {
  color: var(--research-blue);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.review-panorama-head strong {
  margin-top: 2px;
  font-size: 14px;
}
.review-panorama-head small {
  color: var(--muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.review-panorama-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  background: rgba(255, 253, 248, .88);
}
.review-panorama-card {
  position: relative;
  height: auto;
  min-height: 108px;
  min-width: 0;
  padding: 8px 11px 7px;
  border: 0;
  border-right: 1px solid var(--ink);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  text-align: left;
  transition: background .14s ease, box-shadow .14s ease;
}
.review-panorama-card:last-child { border-right: 0; }
.review-panorama-card::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 4px;
  background: transparent;
  content: "";
}
.review-panorama-card:hover,
.review-panorama-card:focus-visible { background: rgba(6, 79, 216, .045); }
.review-panorama-card.active {
  background: #fff;
  color: var(--ink);
  box-shadow: inset 0 -3px 0 var(--research-blue);
}
.review-panorama-card.active::before { background: var(--research-blue); }
.review-panorama-card > header,
.review-panorama-card > footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.review-panorama-card > header span {
  font-size: 11px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}
.review-panorama-card > header b {
  padding: 2px 5px;
  background: var(--panel-2);
  font-size: 10px;
}
.review-panorama-card > header b.warning { background: rgba(242, 183, 0, .18); color: #775600; }
.review-panorama-card > header b.risk { background: rgba(180, 35, 24, .10); color: var(--research-red); }
.review-panorama-call {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-top: 5px;
}
.review-panorama-call strong {
  font-family: Georgia, "Songti SC", serif;
  font-size: 18px;
  letter-spacing: -.035em;
}
.review-panorama-call small {
  overflow: hidden;
  color: var(--muted);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.review-panorama-axes {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 3px;
  margin-top: 6px;
}
.review-panorama-axes span {
  min-width: 0;
  padding: 3px 4px;
  border-top: 2px solid var(--line);
  background: rgba(236, 230, 216, .35);
  text-align: center;
}
.review-panorama-axes span.positive { border-top-color: var(--research-green); }
.review-panorama-axes span.warning { border-top-color: var(--research-yellow); }
.review-panorama-axes span.risk { border-top-color: var(--research-red); }
.review-panorama-axes em,
.review-panorama-axes b { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-panorama-axes em { color: var(--muted); font-size: 9px; font-style: normal; }
.review-panorama-axes b { margin-top: 2px; font-size: 10px; }
.review-panorama-card > footer {
  margin-top: 5px;
  padding-top: 4px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 10px;
}
.review-panorama-card > footer b { color: var(--research-blue); }
.review-panorama-stories {
  display: grid;
  grid-template-columns: 112px repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--ink);
  background: #151515;
  color: #fffdf8;
}
.review-panorama-stories > span {
  display: grid;
  place-items: center;
  padding: 8px;
  color: var(--research-yellow);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}
.review-panorama-stories article {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 0 7px;
  min-width: 0;
  padding: 7px 9px;
  border-left: 1px solid rgba(255,255,255,.22);
}
.review-panorama-stories article > b {
  grid-row: 1 / span 2;
  color: var(--research-yellow);
  font-family: Georgia, serif;
  font-size: 15px;
}
.review-panorama-stories article > strong,
.review-panorama-stories article > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-panorama-stories article > strong { font-size: 11px; }
.review-panorama-stories article > small { margin-top: 2px; color: rgba(255,255,255,.62); font-size: 9px; }

.daily-review-page .review-market-tabs {
  width: fit-content;
  margin: 0 0 10px;
  border-color: var(--ink);
  border-radius: 0;
}
.daily-review-page .review-market-tabs button { min-width: 88px; border-radius: 0; }

.review-research-command {
  overflow: hidden;
  margin-bottom: 10px;
  border: 1px solid var(--ink);
  border-left: 5px solid var(--ink);
  background: var(--panel);
}
.review-research-command.positive { border-left-color: var(--research-green); }
.review-research-command.warning { border-left-color: var(--research-yellow); }
.review-research-command.risk { border-left-color: var(--research-red); }
.review-research-command > header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 8px 12px 7px;
  border-bottom: 1px solid var(--ink);
}
.review-research-command-title { min-width: 0; }
.review-research-command-title > strong {
  display: block;
  max-width: 920px;
  margin-top: 3px;
  font-family: Georgia, "Songti SC", serif;
  font-size: 16px;
  line-height: 1.45;
  letter-spacing: -.018em;
}
.review-research-axis-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border-bottom: 1px solid var(--ink);
}
.review-research-axis-grid article {
  min-width: 0;
  min-height: 64px;
  padding: 7px 10px;
  border-right: 1px solid var(--line);
  border-top: 3px solid transparent;
}
.review-research-axis-grid article:last-child { border-right: 0; }
.review-research-axis-grid article.positive { border-top-color: var(--research-green); }
.review-research-axis-grid article.warning { border-top-color: var(--research-yellow); }
.review-research-axis-grid article.risk { border-top-color: var(--research-red); }
.review-research-axis-grid span,
.review-research-axis-grid strong,
.review-research-axis-grid small { display: block; }
.review-research-axis-grid span { color: var(--muted); font-size: 10px; font-weight: 850; }
.review-research-axis-grid strong { margin-top: 3px; font-size: 15px; }
.review-research-axis-grid small {
  overflow: hidden;
  margin-top: 4px;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.review-research-change-grid {
  display: grid;
  grid-template-columns: 118px repeat(3, minmax(0, 1fr));
  min-height: 60px;
  border-bottom: 1px solid var(--ink);
  background: rgba(236, 230, 216, .18);
}
.review-research-change-title,
.review-research-change-grid > article { padding: 7px 10px; border-right: 1px solid var(--line); }
.review-research-change-grid > article:last-child { border-right: 0; }
.review-research-change-title span,
.review-research-change-title strong,
.review-research-change-title small { display: block; }
.review-research-change-title span { color: var(--research-blue); font-size: 9px; font-weight: 900; letter-spacing: .1em; }
.review-research-change-title strong { margin-top: 2px; font-size: 13px; }
.review-research-change-title small { margin-top: 4px; color: var(--muted); font-size: 9px; }
.review-research-change-grid > article {
  display: grid;
  grid-template-columns: 25px minmax(0, 1fr);
  gap: 7px;
  align-items: start;
}
.review-research-change-grid > article > b {
  color: var(--muted);
  font-family: Georgia, serif;
  font-size: 16px;
}
.review-research-change-grid > article.positive > b { color: var(--research-green); }
.review-research-change-grid > article.warning > b { color: #8a6500; }
.review-research-change-grid > article.risk > b { color: var(--research-red); }
.review-research-change-grid article strong,
.review-research-change-grid article small { display: block; }
.review-research-change-grid article strong { font-size: 11px; line-height: 1.35; }
.review-research-change-grid article small { margin-top: 3px; color: var(--muted); font-size: 9px; line-height: 1.35; }
.review-research-command > footer {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  background: #fbf8f0;
}
.review-research-command > footer .review-command-summary-cell {
  min-height: 59px;
  padding: 7px 10px;
}
.review-research-command > footer .review-command-summary-cell strong { margin-top: 3px; font-size: 13px; }
.review-research-command > footer .review-command-summary-cell small {
  display: -webkit-box;
  margin-top: 4px;
  overflow: hidden;
  font-size: 10px;
  line-height: 1.35;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.daily-review-page .review-workbench.trend-overview-panel {
  margin-top: 0;
  border-color: var(--ink);
  background: transparent;
  box-shadow: none;
}
.daily-review-page .review-workbench .section-head.review-workbench-nav {
  position: sticky;
  top: 0;
  z-index: 8;
  min-height: 46px;
  padding: 6px 8px;
  border-bottom-color: var(--ink);
  background: rgba(247, 245, 239, .96);
  backdrop-filter: blur(10px);
}
.daily-review-page .review-workbench .trend-state-card { min-height: 32px; padding: 6px 10px; }
.daily-review-page .review-workbench .trend-state-card span,
.daily-review-page .review-workbench .trend-state-card strong { font-size: 11px; }

.review-research-chains,
.review-validator-board,
.review-structure-metrics,
.review-framework-health,
.review-hypothesis-prior,
.review-hypothesis-next {
  border-bottom: 1px solid var(--ink);
  background: var(--panel);
}
.review-research-chains > header,
.review-validator-board > header,
.review-structure-metrics > header,
.review-framework-health > header,
.review-hypothesis-prior > header,
.review-hypothesis-next > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  min-height: 52px;
  padding: 9px 12px;
  border-bottom: 1px solid var(--ink);
}
.review-research-chains > header span,
.review-research-chains > header strong,
.review-validator-board > header span,
.review-validator-board > header strong,
.review-structure-metrics > header span,
.review-structure-metrics > header strong,
.review-framework-health > header span,
.review-framework-health > header strong,
.review-hypothesis-prior > header span,
.review-hypothesis-prior > header strong,
.review-hypothesis-next > header span,
.review-hypothesis-next > header strong { display: block; }
.review-research-chains > header span,
.review-validator-board > header span,
.review-structure-metrics > header span,
.review-framework-health > header span,
.review-hypothesis-prior > header span,
.review-hypothesis-next > header span { color: var(--research-blue); font-size: 10px; font-weight: 900; letter-spacing: .1em; }
.review-research-chains > header strong,
.review-validator-board > header strong,
.review-structure-metrics > header strong,
.review-framework-health > header strong,
.review-hypothesis-prior > header strong,
.review-hypothesis-next > header strong { margin-top: 2px; font-size: 15px; }
.review-research-chains > header small,
.review-validator-board > header small,
.review-structure-metrics > header small,
.review-framework-health > header small,
.review-hypothesis-prior > header small,
.review-hypothesis-next > header small { color: var(--muted); font-size: 10px; }
.review-research-chain {
  display: grid;
  grid-template-columns: minmax(130px, .8fr) minmax(175px, 1fr) minmax(150px, .9fr) minmax(210px, 1.25fr) minmax(170px, 1fr);
  border-bottom: 1px solid var(--line);
}
.review-research-chain:last-child { border-bottom: 0; }
.review-research-chain > div {
  min-width: 0;
  padding: 11px 12px;
  border-right: 1px solid var(--line);
}
.review-research-chain > div:nth-child(5) { border-right: 0; }
.review-chain-identity { cursor: pointer; }
.review-chain-identity:hover strong { color: var(--research-blue); }
.review-chain-identity > strong,
.review-chain-identity > small { display: block; }
.review-chain-identity > strong { margin-top: 7px; font-family: Georgia, "Songti SC", serif; font-size: 17px; }
.review-chain-identity > small { margin-top: 4px; color: var(--muted); font-size: 10px; }
.review-chain-performance { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; align-content: center; }
.review-chain-performance span { color: var(--muted); font-size: 10px; }
.review-chain-performance b { display: block; margin-top: 4px; font-size: 13px; }
.review-chain-validation span,
.review-chain-validation strong,
.review-chain-validation small,
.review-chain-catalyst > span,
.review-chain-stocks > span { display: block; }
.review-chain-validation span,
.review-chain-catalyst > span,
.review-chain-stocks > span { color: var(--muted); font-size: 10px; font-weight: 850; }
.review-chain-validation strong { margin-top: 6px; font-size: 12px; line-height: 1.45; }
.review-chain-validation small { margin-top: 4px; color: var(--muted); font-size: 10px; }
.review-chain-catalyst a,
.review-chain-catalyst > strong { display: block; margin-top: 5px; color: var(--ink); text-decoration: none; }
.review-chain-catalyst a:hover strong { color: var(--research-blue); }
.review-chain-catalyst strong { display: -webkit-box; overflow: hidden; font-size: 11px; line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.review-chain-catalyst small { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; }
.review-chain-stocks button {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  width: 100%;
  margin-top: 4px;
  padding: 3px 0;
  border: 0;
  border-bottom: 1px dotted var(--line);
  background: transparent;
  color: var(--ink);
  text-align: left;
}
.review-chain-stocks button:hover strong { color: var(--research-blue); }
.review-chain-stocks button strong { font-size: 11px; }
.review-chain-stocks button small { color: var(--muted); font-size: 9px; }
.review-chain-hypothesis { grid-column: 1 / -1; padding: 7px 12px 9px; background: rgba(236, 230, 216, .17); }
.review-chain-hypothesis summary { cursor: pointer; color: var(--research-blue); font-size: 10px; font-weight: 850; }
.review-chain-hypothesis p { display: grid; grid-template-columns: 42px minmax(0, 1fr); gap: 8px; margin: 6px 0 0; font-size: 10px; line-height: 1.45; }
.review-chain-hypothesis p b { color: var(--muted); }
.review-no-mainline {
  display: grid;
  gap: 4px;
  padding: 17px 14px;
  border-bottom: 1px solid var(--ink);
  background: rgba(242, 183, 0, .07);
}
.review-no-mainline strong { font-size: 15px; }
.review-no-mainline span { color: var(--muted); font-size: 11px; }

.review-structure-workbench { display: grid; gap: 10px; background: transparent; }
.review-structure-workbench > section { border: 1px solid var(--ink); border-top: 0; }
.review-structure-metrics .review-overview-metric { min-height: 94px; padding: 11px 12px; }
.review-structure-metrics .review-overview-metric strong { margin-top: 6px; font-size: 18px; }
.review-structure-metrics .review-overview-metric small { margin-top: 5px; }

.review-validator-board .review-core-grid-v3 { padding: 12px; }
.review-validator-board .review-core-card-v3 { border-top-color: var(--research-blue); }

.review-framework-health { border-left: 5px solid var(--line); }
.review-framework-health.positive { border-left-color: var(--research-green); }
.review-framework-health.warning { border-left-color: var(--research-yellow); }
.review-framework-health.risk { border-left-color: var(--research-red); }
.review-framework-health > p { margin: 0; padding: 10px 12px; border-bottom: 1px solid var(--line); font-size: 12px; line-height: 1.5; }
.review-framework-health > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.review-framework-health > div article { padding: 10px 12px; border-right: 1px solid var(--line); }
.review-framework-health > div article:last-child { border-right: 0; }
.review-framework-health article span,
.review-framework-health article strong,
.review-framework-health article small { display: block; }
.review-framework-health article span { color: var(--muted); font-size: 10px; font-weight: 850; }
.review-framework-health article strong { margin-top: 4px; font-size: 17px; }
.review-framework-health article small { margin-top: 3px; color: var(--muted); font-size: 10px; }

.review-hypothesis-workbench { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(350px, .85fr); gap: 10px; background: transparent; }
.review-hypothesis-prior,
.review-hypothesis-next { border: 1px solid var(--ink); }
.review-hypothesis-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-bottom: 1px solid var(--ink); }
.review-hypothesis-summary > div { padding: 9px 11px; border-right: 1px solid var(--line); border-top: 3px solid var(--line); }
.review-hypothesis-summary > div:last-child { border-right: 0; }
.review-hypothesis-summary > div.positive { border-top-color: var(--research-green); }
.review-hypothesis-summary > div.risk { border-top-color: var(--research-red); }
.review-hypothesis-summary > div.warning { border-top-color: var(--research-yellow); }
.review-hypothesis-summary span,
.review-hypothesis-summary strong { display: block; }
.review-hypothesis-summary span { color: var(--muted); font-size: 10px; }
.review-hypothesis-summary strong { margin-top: 3px; font-size: 18px; }
.review-hypothesis-list { padding: 0 12px; }
.review-hypothesis-list > article {
  display: grid;
  grid-template-columns: minmax(120px, .7fr) auto minmax(200px, 1.3fr);
  gap: 8px 12px;
  align-items: start;
  padding: 11px 0;
  border-bottom: 1px solid var(--line);
}
.review-hypothesis-list > article:last-child { border-bottom: 0; }
.review-hypothesis-list article > div strong,
.review-hypothesis-list article > div span { display: block; }
.review-hypothesis-list article > div strong { font-size: 12px; }
.review-hypothesis-list article > div span { margin-top: 3px; color: var(--muted); font-size: 10px; }
.review-hypothesis-list article > b { padding: 3px 6px; background: var(--panel-2); font-size: 10px; }
.review-hypothesis-list article > b.positive { background: rgba(8,127,91,.1); color: var(--research-green); }
.review-hypothesis-list article > b.risk { background: rgba(180,35,24,.09); color: var(--research-red); }
.review-hypothesis-list article > b.warning { background: rgba(242,183,0,.14); color: #775600; }
.review-hypothesis-list article > p { margin: 0; color: #413b32; font-size: 11px; line-height: 1.45; }
.review-hypothesis-list details { grid-column: 1 / -1; }
.review-hypothesis-list summary { cursor: pointer; color: var(--research-blue); font-size: 10px; font-weight: 850; }
.review-hypothesis-list details p { display: grid; grid-template-columns: 40px minmax(0,1fr); gap: 8px; margin: 5px 0 0; font-size: 10px; line-height: 1.45; }
.review-hypothesis-history { border-top: 1px solid var(--ink); }
.review-hypothesis-history > header { display: flex; justify-content: space-between; gap: 12px; padding: 8px 11px; border-bottom: 1px solid var(--line); }
.review-hypothesis-history header strong { font-size: 11px; }
.review-hypothesis-history header span { color: var(--muted); font-size: 9px; }
.review-hypothesis-history > div { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.review-hypothesis-history > div > span { padding: 8px; border-right: 1px solid var(--line); }
.review-hypothesis-history > div > span:last-child { border-right: 0; }
.review-hypothesis-history b,
.review-hypothesis-history em,
.review-hypothesis-history strong { display: block; }
.review-hypothesis-history b { font-size: 10px; }
.review-hypothesis-history em { margin-top: 3px; color: var(--muted); font-size: 9px; font-style: normal; }
.review-hypothesis-history strong { margin-top: 4px; color: var(--research-blue); font-size: 13px; }
.review-hypothesis-next > .review-plan-posture-v3 { margin: 10px 10px 0; }
.review-hypothesis-blocked {
  display: grid;
  gap: 5px;
  margin: 10px;
  padding: 14px;
  border-left: 4px solid var(--research-red);
  background: rgba(180,35,24,.07);
}
.review-hypothesis-blocked strong { color: var(--research-red); font-size: 13px; }
.review-hypothesis-blocked span { color: #5d413e; font-size: 11px; line-height: 1.5; }
.review-hypothesis-next > div:last-child:not(.review-hypothesis-blocked) { padding: 0 10px 10px; }
.review-hypothesis-next > div:last-child:not(.review-hypothesis-blocked) article { padding: 11px 0; border-bottom: 1px solid var(--line); }
.review-hypothesis-next > div:last-child:not(.review-hypothesis-blocked) article:last-child { border-bottom: 0; }
.review-hypothesis-next article > span { color: var(--research-blue); font-size: 9px; font-weight: 900; letter-spacing: .08em; }
.review-hypothesis-next article > strong { display: block; margin-top: 4px; font-size: 12px; line-height: 1.45; }
.review-hypothesis-next article > p { display: grid; grid-template-columns: 40px minmax(0,1fr); gap: 8px; margin: 7px 0 0; color: #413b32; font-size: 10px; line-height: 1.45; }
.review-hypothesis-next article > p b { color: var(--muted); }

.review-portfolio-appendix { margin-top: 10px; }
.review-portfolio-appendix > details { border: 1px solid var(--line); background: rgba(255,253,248,.62); }
.review-portfolio-appendix summary {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 9px 11px;
  cursor: pointer;
  list-style: none;
}
.review-portfolio-appendix summary::-webkit-details-marker { display: none; }
.review-portfolio-appendix summary span { font-size: 11px; font-weight: 850; }
.review-portfolio-appendix summary strong { color: var(--research-blue); font-size: 11px; }
.review-portfolio-appendix summary small { margin-left: auto; color: var(--muted); font-size: 9px; }
.review-portfolio-appendix .review-portfolio-grid-v3 { padding: 10px; border-top: 1px solid var(--line); }

@media (max-width: 1180px) {
  .review-panorama-call { display: block; }
  .review-panorama-call small { display: block; margin-top: 3px; }
  .review-panorama-stories { grid-template-columns: 95px repeat(3, minmax(0, 1fr)); }
  .review-research-chain { grid-template-columns: minmax(130px, .8fr) minmax(175px, 1fr) minmax(150px, .9fr) minmax(220px, 1.4fr); }
  .review-chain-stocks { grid-column: 1 / -1; display: grid; grid-template-columns: 80px repeat(3, minmax(0, 1fr)); gap: 6px; border-top: 1px solid var(--line); }
  .review-chain-stocks > span { align-self: center; }
  .review-chain-hypothesis { grid-column: 1 / -1; }
  .review-hypothesis-workbench { grid-template-columns: 1fr; }
}

@media (max-width: 820px) {
  .review-panorama-head { align-items: flex-start; flex-direction: column; gap: 4px; }
  .review-panorama-grid { grid-template-columns: 1fr; }
  .review-panorama-card { border-right: 0; border-bottom: 1px solid var(--ink); }
  .review-panorama-card:last-child { border-bottom: 0; }
  .review-panorama-stories { grid-template-columns: 1fr; }
  .review-panorama-stories > span { justify-content: start; place-items: initial; }
  .review-panorama-stories article { border-top: 1px solid rgba(255,255,255,.18); border-left: 0; }
  .review-research-axis-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .review-research-axis-grid article { border-bottom: 1px solid var(--line); }
  .review-research-axis-grid article:nth-child(2n) { border-right: 0; }
  .review-research-axis-grid article:last-child { grid-column: 1 / -1; border-bottom: 0; }
  .review-research-change-grid { grid-template-columns: 1fr; }
  .review-research-change-title,
  .review-research-change-grid > article { border-right: 0; border-bottom: 1px solid var(--line); }
  .review-research-change-grid > article:last-child { border-bottom: 0; }
  .review-research-command > footer { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .review-research-command > footer .review-command-summary-cell:nth-child(2n) { border-right: 0; }
  .review-research-chain { grid-template-columns: 1fr 1fr; }
  .review-research-chain > div { border-bottom: 1px solid var(--line); }
  .review-research-chain > div:nth-child(2n) { border-right: 0; }
  .review-chain-catalyst,
  .review-chain-stocks,
  .review-chain-hypothesis { grid-column: 1 / -1; }
  .review-chain-stocks { display: block; }
}

@media (max-width: 560px) {
  .review-panorama-axes { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .review-research-command > header { display: grid; gap: 8px; }
  .review-research-command-title > strong { font-size: 16px; }
  .review-research-command > footer { grid-template-columns: 1fr; }
  .review-research-command > footer .review-command-summary-cell { min-height: 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .review-research-command > footer .review-command-summary-cell:last-child { border-bottom: 0; }
  .review-research-chain { grid-template-columns: 1fr; }
  .review-research-chain > div,
  .review-research-chain > div:nth-child(2n) { grid-column: 1; border-right: 0; }
  .review-chain-performance { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .review-hypothesis-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .review-hypothesis-summary > div:nth-child(2n) { border-right: 0; }
  .review-hypothesis-list > article { grid-template-columns: 1fr auto; }
  .review-hypothesis-list article > p { grid-column: 1 / -1; }
  .review-hypothesis-history > div { grid-template-columns: 1fr; }
  .review-hypothesis-history > div > span { display: grid; grid-template-columns: 82px minmax(0,1fr) 42px; align-items: center; border-right: 0; border-bottom: 1px solid var(--line); }
}


/* Daily review v19: align with Market Insights and consolidate research evidence. */

/* Daily review v27: evidence-first ledger built on the original research board. */
.daily-review-page .review-evidence-ledger {
  --ledger-tone: var(--ink);
  overflow: hidden;
  margin: 9px 0 13px;
  border: 1px solid var(--ink);
  border-top: 4px solid var(--ledger-tone);
  background: var(--panel);
  box-shadow: 0 6px 18px rgba(34, 27, 12, .04);
}
.daily-review-page .review-evidence-ledger.positive { --ledger-tone: var(--good); }
.daily-review-page .review-evidence-ledger.warning { --ledger-tone: var(--accent-2); }
.daily-review-page .review-evidence-ledger.risk { --ledger-tone: var(--bad); }
.daily-review-page .review-ledger-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 39px;
  padding: 5px 12px 5px 14px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .24);
}
.daily-review-page .review-ledger-meta > div {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  min-width: 0;
  font-variant-numeric: tabular-nums;
}
.daily-review-page .review-ledger-meta strong { font-size: 14px; }
.daily-review-page .review-ledger-meta time,
.daily-review-page .review-ledger-meta span,
.daily-review-page .review-ledger-meta small { color: var(--muted); font-size: 12px; }
.daily-review-page .review-ledger-meta > div > time::before,
.daily-review-page .review-ledger-meta > div > span::before,
.daily-review-page .review-ledger-meta > div > small::before { margin: 0 8px; color: #c5bfb3; content: "·"; }
.daily-review-page .review-ledger-meta .review-trust-entry {
  min-height: 29px;
  margin: 0;
  padding: 0 9px;
  font-size: 12px;
  white-space: nowrap;
}
.daily-review-page .review-ledger-meta .review-trust-entry b { font-size: 11px; }
.daily-review-page .review-ledger-verdict {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
  min-height: 76px;
  padding: 12px 15px;
  border-bottom: 1px solid var(--ink);
}
.daily-review-page .review-ledger-verdict > div { min-width: 0; }
.daily-review-page .review-ledger-verdict span {
  display: block;
  color: var(--accent);
  font-size: 11px;
  font-weight: 900;
}
.daily-review-page .review-ledger-verdict strong {
  display: inline-block;
  margin-top: 4px;
  color: var(--ledger-tone);
  font-family: Georgia, "Songti SC", serif;
  font-size: 24px;
  line-height: 1.2;
}
.daily-review-page .review-ledger-state b { color: var(--accent); }
.daily-review-page .review-ledger-state b.positive { color: var(--good); }
.daily-review-page .review-ledger-state b.warning { color: #9b6500; }
.daily-review-page .review-ledger-state b.risk { color: var(--bad); }
.daily-review-page .review-ledger-state i {
  margin: 0 5px;
  color: #b5aea1;
  font-style: normal;
  font-weight: 500;
}
.daily-review-page .review-ledger-verdict em {
  display: inline-flex;
  margin-left: 8px;
  padding: 3px 7px;
  border: 1px solid #d5cfc3;
  background: var(--panel-2);
  color: #655e53;
  font-size: 11px;
  font-style: normal;
  font-weight: 850;
  vertical-align: 3px;
}
.daily-review-page .review-ledger-verdict em.positive { border-color: #9ecfb4; background: #edf8f1; color: #147649; }
.daily-review-page .review-ledger-verdict em.warning { border-color: #e6c374; background: #fff4d9; color: #8a5900; }
.daily-review-page .review-ledger-verdict em.risk { border-color: #e2aaa5; background: #fff0ee; color: var(--bad); }
.daily-review-page .review-ledger-verdict h2 {
  max-width: 820px;
  margin: 0;
  color: var(--ink);
  font-family: Georgia, "Songti SC", serif;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0;
}
.daily-review-page .review-ledger-axes {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border-bottom: 1px solid var(--ink);
  background: #fffdf8;
}
.daily-review-page .review-ledger-axes article {
  position: relative;
  min-width: 0;
  min-height: 94px;
  padding: 12px 13px 11px;
}
.daily-review-page .review-ledger-axes article + article { border-left: 1px solid var(--line); }
.daily-review-page .review-ledger-axes article::before {
  position: absolute;
  top: 0;
  right: 13px;
  left: 13px;
  height: 3px;
  background: #b9b3a8;
  content: "";
}
.daily-review-page .review-ledger-axes article.positive::before { background: var(--good); }
.daily-review-page .review-ledger-axes article.warning::before { background: var(--accent-2); }
.daily-review-page .review-ledger-axes article.risk::before { background: var(--bad); }
.daily-review-page .review-ledger-axes span,
.daily-review-page .review-ledger-axes strong,
.daily-review-page .review-ledger-axes small { display: block; }
.daily-review-page .review-ledger-axes span {
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.daily-review-page .review-ledger-axes strong {
  margin-top: 4px;
  font-size: 17px;
  line-height: 1.3;
}
.daily-review-page .review-ledger-axes small {
  margin-top: 6px;
  color: #625c51;
  font-size: 12px;
  line-height: 1.45;
}
.daily-review-page .review-ledger-lower {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(310px, .75fr);
  min-height: 106px;
  border-bottom: 1px solid var(--ink);
}
.daily-review-page .review-ledger-changes { min-width: 0; }
.daily-review-page .review-ledger-changes > header,
.daily-review-page .review-ledger-next > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 39px;
  padding: 7px 13px;
  border-bottom: 1px solid var(--line);
}
.daily-review-page .review-ledger-changes header span,
.daily-review-page .review-ledger-changes header strong { display: inline; }
.daily-review-page .review-ledger-changes header span {
  margin-right: 7px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
}
.daily-review-page .review-ledger-changes header strong { font-size: 13px; }
.daily-review-page .review-ledger-changes header time,
.daily-review-page .review-ledger-next header time { color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.daily-review-page .review-ledger-changes > div {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: 0 8px;
}
.daily-review-page .review-ledger-changes article {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  align-content: center;
  min-width: 0;
  min-height: 67px;
  padding: 10px 13px;
}
.daily-review-page .review-ledger-changes article + article { margin-left: 4px; }
.daily-review-page .review-ledger-changes article > b { color: var(--muted); font-size: 12px; }
.daily-review-page .review-ledger-changes article.positive > b { color: var(--good); }
.daily-review-page .review-ledger-changes article.warning > b { color: #916000; }
.daily-review-page .review-ledger-changes article.risk > b { color: var(--bad); }
.daily-review-page .review-ledger-changes article strong,
.daily-review-page .review-ledger-changes article small { display: block; }
.daily-review-page .review-ledger-changes article > div { align-self: center; }
.daily-review-page .review-ledger-changes article strong { font-size: 13px; line-height: 1.35; }
.daily-review-page .review-ledger-changes article small { margin-top: 4px; color: var(--muted); font-size: 12px; line-height: 1.4; }
.daily-review-page .review-ledger-next {
  min-width: 0;
  overflow: hidden;
  border-left: 1px solid var(--ink);
  background: rgba(236, 230, 216, .27);
  box-shadow: inset 4px 0 0 var(--accent-2);
}
.daily-review-page .review-ledger-next header span { color: #8a5a00; font-size: 11px; font-weight: 900; }
.daily-review-page .review-ledger-next > strong {
  display: -webkit-box;
  padding: 10px 13px 0;
  overflow: hidden;
  font-size: 13px;
  line-height: 1.45;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.daily-review-page .review-ledger-next dl { display: grid; gap: 4px; margin: 7px 13px 10px; }
.daily-review-page .review-ledger-next dl > div {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 7px;
}
.daily-review-page .review-ledger-next dt { color: var(--good); font-size: 11px; font-weight: 900; }
.daily-review-page .review-ledger-next dl > div:last-child dt { color: var(--bad); }
.daily-review-page .review-ledger-next dd {
  overflow: hidden;
  margin: 0;
  color: #5c554a;
  font-size: 12px;
  line-height: 1.4;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.daily-review-page .review-ledger-next > p { margin: 11px 13px; color: var(--muted); font-size: 12px; }
.daily-review-page .review-ledger-foot {
  display: grid;
  grid-template-columns: minmax(250px, .8fr) minmax(340px, 1.2fr);
  min-height: 46px;
  background: rgba(236, 230, 216, .18);
}
.daily-review-page .review-ledger-foot > span {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  min-width: 0;
  padding: 7px 13px;
}
.daily-review-page .review-ledger-foot > span + span { border-left: 1px solid var(--line); }
.daily-review-page .review-ledger-foot em { color: var(--muted); font-size: 11px; font-style: normal; font-weight: 850; }
.daily-review-page .review-ledger-foot strong { font-size: 13px; white-space: nowrap; }
.daily-review-page .review-ledger-foot small {
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (max-width: 900px) {
  .daily-review-page .review-ledger-verdict { grid-template-columns: 170px minmax(0, 1fr); }
  .daily-review-page .review-ledger-axes { display: flex; overflow-x: auto; scrollbar-width: thin; }
  .daily-review-page .review-ledger-axes article { flex: 0 0 180px; }
  .daily-review-page .review-ledger-lower { grid-template-columns: 1fr 290px; }
  .daily-review-page .review-ledger-foot { grid-template-columns: minmax(210px, .8fr) minmax(280px, 1.2fr); }
}
@media (max-width: 620px) {
  .daily-review-page .review-evidence-ledger { border-top-width: 3px; }
  .daily-review-page .review-ledger-meta { padding-inline: 10px; }
  .daily-review-page .review-ledger-meta small { display: none; }
  .daily-review-page .review-ledger-verdict { display: block; padding: 12px; }
  .daily-review-page .review-ledger-verdict strong { font-size: 22px; }
  .daily-review-page .review-ledger-verdict h2 { margin-top: 8px; font-size: 17px; }
  .daily-review-page .review-ledger-axes article { flex-basis: 155px; min-height: 100px; padding-inline: 11px; }
  .daily-review-page .review-ledger-lower { grid-template-columns: 1fr; }
  .daily-review-page .review-ledger-changes > div { grid-template-columns: 1fr; }
  .daily-review-page .review-ledger-changes article + article { margin-left: 0; border-top: 1px solid var(--line); border-left: 0; }
  .daily-review-page .review-ledger-changes article { min-height: 67px; }
  .daily-review-page .review-ledger-next { border-top: 1px solid var(--ink); border-left: 0; }
  .daily-review-page .review-ledger-foot { grid-template-columns: 1fr; }
  .daily-review-page .review-ledger-foot > span + span { border-top: 1px solid var(--line); border-left: 0; }
}

.daily-review-page {
  --research-blue: var(--accent);
  --research-green: var(--good);
  --research-red: var(--bad);
  --research-yellow: #8a5a00;
  font-size: 14px;
}

.daily-review-page .review-panorama-head span,
.daily-review-page .review-research-axis-grid span,
.daily-review-page .review-research-chains > header span,
.daily-review-page .review-validator-board > header span,
.daily-review-page .review-structure-metrics > header span,
.daily-review-page .review-framework-health > header span,
.daily-review-page .review-hypothesis-prior > header span,
.daily-review-page .review-hypothesis-next > header span { font-size: 12px; }

.daily-review-page .review-panorama-head strong,
.daily-review-page .review-research-chains > header strong,
.daily-review-page .review-validator-board > header strong,
.daily-review-page .review-structure-metrics > header strong,
.daily-review-page .review-framework-health > header strong,
.daily-review-page .review-hypothesis-prior > header strong,
.daily-review-page .review-hypothesis-next > header strong { font-size: 16px; }

.daily-review-page .review-panorama-head small,
.daily-review-page .review-panorama-call small,
.daily-review-page .review-research-axis-grid small,
.daily-review-page .review-research-change-title small,
.daily-review-page .review-research-change-grid article small,
.daily-review-page .review-command-summary-cell small,
.daily-review-page .review-research-chains > header small,
.daily-review-page .review-validator-board > header small,
.daily-review-page .review-structure-metrics > header small,
.daily-review-page .review-framework-health > header small,
.daily-review-page .review-hypothesis-prior > header small,
.daily-review-page .review-hypothesis-next > header small { font-size: 12px; }

.daily-review-page .review-panorama-card { min-height: 124px; padding: 11px 13px 10px; }
.daily-review-page .review-panorama-card > header span { font-size: 13px; }
.daily-review-page .review-panorama-card > header b { font-size: 11px; }
.daily-review-page .review-panorama-call { margin-top: 8px; }
.daily-review-page .review-panorama-call strong { font-size: 20px; }
.daily-review-page .review-panorama-axes { margin-top: 9px; }
.daily-review-page .review-panorama-axes em { font-size: 11px; }
.daily-review-page .review-panorama-axes b { font-size: 12px; }
.daily-review-page .review-panorama-card > footer { margin-top: 8px; font-size: 12px; }
.daily-review-page .review-panorama-stories > span,
.daily-review-page .review-panorama-stories article > strong { font-size: 12px; }
.daily-review-page .review-panorama-stories article > small { font-size: 11px; }
.daily-review-page .review-panorama-card.active {
  z-index: 1;
  background: rgba(11, 95, 255, .075);
  box-shadow: inset 0 0 0 2px var(--accent), inset 0 -4px 0 var(--accent);
}
.daily-review-page .review-panorama-card.active::before { height: 5px; background: var(--accent); }
.daily-review-page .review-panorama-card.active > footer b { font-weight: 900; }

.daily-review-page .review-research-command-title > strong { font-size: 18px; }
.daily-review-page .review-research-axis-grid article { min-height: 75px; padding: 10px 12px; }
.daily-review-page .review-research-axis-grid strong { font-size: 17px; }
.daily-review-page .review-research-change-title span { font-size: 11px; }
.daily-review-page .review-research-change-title strong { font-size: 15px; }
.daily-review-page .review-research-change-grid article strong { font-size: 13px; }
.daily-review-page .review-research-command > footer .review-command-summary-cell { min-height: 68px; padding: 9px 12px; }
.daily-review-page .review-research-command > footer .review-command-summary-cell span { font-size: 12px; }
.daily-review-page .review-research-command > footer .review-command-summary-cell strong { font-size: 15px; }
.daily-review-page .review-workbench .trend-state-card { min-height: 36px; padding: 7px 12px; }
.daily-review-page .review-workbench .trend-state-card span,
.daily-review-page .review-workbench .trend-state-card strong { font-size: 13px; }

.daily-review-page .review-sector-layout.research {
  grid-template-columns: minmax(210px, 1.08fr) repeat(4, minmax(62px, .36fr)) minmax(180px, .86fr) minmax(275px, 1.32fr);
  gap: 9px;
}
.daily-review-page .review-sector-layout.enriched.research {
  grid-template-columns: minmax(175px, .94fr) repeat(3, minmax(58px, .32fr)) minmax(110px, .58fr) minmax(130px, .68fr) minmax(160px, .82fr) minmax(260px, 1.28fr);
}
.review-theme-research {
  min-width: 0;
  padding-left: 12px;
  border-left: 1px solid var(--line);
}
.review-theme-research > span,
.review-theme-research > strong,
.review-theme-research > a,
.review-theme-research > small { display: block; }
.review-theme-research > span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.review-theme-research > strong,
.review-theme-research > a {
  display: -webkit-box;
  overflow: hidden;
  margin-top: 5px;
  color: var(--ink);
  font-size: 13px;
  font-weight: 800;
  line-height: 1.4;
  text-decoration: none;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.review-theme-research > a:hover { color: var(--accent); }
.review-theme-research.empty > small { margin-top: 5px; color: var(--muted); font-size: 12px; line-height: 1.4; }
.review-theme-validator-list {
  display: grid;
  margin-top: 8px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.review-theme-validator-list button {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  min-height: 31px;
  padding: 5px 2px;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  text-align: left;
}
.review-theme-validator-list button:last-child { border-bottom: 0; }
.review-theme-validator-list button:hover b { color: var(--accent); }
.review-theme-validator-list button b { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.review-theme-validator-list button small { color: var(--muted); font-size: 12px; }
.review-theme-validator-list em { padding: 7px 2px; color: var(--muted); font-size: 12px; font-style: normal; }
.review-theme-research > p {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr);
  gap: 7px;
  margin: 7px 0 0;
  color: #413b32;
  font-size: 12px;
  line-height: 1.45;
}
.review-theme-research > p b { color: var(--bad); }

.review-validator-method {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-bottom: 1px solid var(--ink);
  background: var(--panel-2);
}
.review-validator-method > div { padding: 12px 14px; border-right: 1px solid var(--line); }
.review-validator-method > div:last-child { border-right: 0; }
.review-validator-method strong { font-size: 14px; }
.review-validator-method p { margin: 5px 0 0; color: #4c4539; font-size: 13px; line-height: 1.55; }
.daily-review-page .review-validator-board .review-core-grid-v3 { gap: 12px; padding: 14px; background: var(--panel); }
.daily-review-page .review-core-card-v3 {
  border-radius: 0;
  background: #fffdf8;
  box-shadow: none;
}
.review-core-evidence-v19 {
  display: grid;
  gap: 7px;
  margin-top: 12px;
}
.review-core-evidence-v19 span {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 8px;
  color: #4c4539;
  font-size: 13px;
  line-height: 1.45;
}
.review-core-evidence-v19 b { color: var(--muted); }
.daily-review-page .review-core-card-v3 .review-inline-link { border-radius: 0; }

.daily-review-page .review-anomaly-evidence-v4 {
  border-left: 4px solid var(--accent);
  background: var(--panel);
}
.daily-review-page .review-anomaly-evidence-v4 > header { min-height: 52px; padding: 10px 13px; background: var(--panel-2); }
.daily-review-page .review-anomaly-evidence-v4 > header strong { font-size: 15px; }
.daily-review-page .review-anomaly-evidence-v4 > header span { color: var(--muted); font-size: 13px; }
.daily-review-page .review-anomaly-evidence-v4 > header small { font-size: 12px; }
.daily-review-page .review-anomaly-evidence-v4 > div { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.daily-review-page .review-anomaly-evidence-v4 > div > article {
  min-width: 0;
  padding: 13px 14px;
  border-right: 1px solid var(--line);
  background: #fffdf8;
}
.daily-review-page .review-anomaly-evidence-v4 > div > article:last-child { border-right: 0; }
.review-anomaly-evidence-v4 article > div { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.daily-review-page .review-anomaly-evidence-v4 article b { font-size: 13px; }
.daily-review-page .review-anomaly-evidence-v4 article strong { font-size: 18px; }
.daily-review-page .review-anomaly-evidence-v4 article p { margin: 8px 0 0; color: #413b32; font-size: 13px; line-height: 1.5; }
.daily-review-page .review-anomaly-evidence-v4 article small { display: block; margin-top: 7px; color: var(--muted); font-size: 12px; line-height: 1.4; }
.daily-review-page .review-anomaly-evidence-v4 article.risk strong { color: var(--bad); }
.daily-review-page .review-anomaly-evidence-v4 article.positive strong { color: var(--good); }
.daily-review-page .review-anomaly-evidence-v4 article.warning strong { color: #7a5600; }

.daily-review-page .review-framework-health,
.daily-review-page .review-signal-workbench,
.daily-review-page .review-signal-note,
.daily-review-page .review-signal-summary,
.daily-review-page .review-signal-section,
.daily-review-page .review-signal-paths,
.daily-review-page .review-signal-cohort-head,
.daily-review-page .review-signal-cohort-row,
.daily-review-page .review-signal-matured-list { background: var(--panel); }
.daily-review-page .review-framework-health > p { font-size: 13px; }
.daily-review-page .review-framework-health article span,
.daily-review-page .review-framework-health article small,
.daily-review-page .review-signal-summary span,
.daily-review-page .review-signal-summary small,
.daily-review-page .review-signal-section > header span,
.daily-review-page .review-signal-matured-list span { font-size: 12px; }
.daily-review-page .review-signal-note strong,
.daily-review-page .review-signal-path > strong,
.daily-review-page .review-signal-cohort-row div b,
.daily-review-page .review-signal-matured-list strong,
.daily-review-page .review-signal-matured-list b { font-size: 13px; }
.daily-review-page .review-signal-note span,
.daily-review-page .review-signal-cohort-row { font-size: 13px; }

@media (max-width: 720px) {
  .daily-review-page .review-panorama-card { min-height: 0; }
  .daily-review-page .review-sector-row.review-sector-layout.research,
  .daily-review-page .review-sector-row.review-sector-layout.enriched.research { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .daily-review-page .review-sector-row.research .review-sector-identity,
  .daily-review-page .review-sector-row.research .review-sector-confirm,
  .daily-review-page .review-sector-row.research .review-theme-research { grid-column: 1 / -1; }
  .review-theme-research { margin-top: 3px; padding: 11px 0 0; border-top: 1px solid var(--line); border-left: 0; }
  .review-validator-method { grid-template-columns: 1fr; }
  .review-validator-method > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .review-validator-method > div:last-child { border-bottom: 0; }
  .daily-review-page .review-core-grid-v3 { grid-template-columns: 1fr; }
  .daily-review-page .review-anomaly-evidence-v4 > div { grid-template-columns: 1fr; }
  .daily-review-page .review-anomaly-evidence-v4 > div > article { border-right: 0; border-bottom: 1px solid var(--line); }
  .daily-review-page .review-anomaly-evidence-v4 > div > article:last-child { border-bottom: 0; }
}

/* Daily review v20: shared product palette, readable hypotheses and direct stock drill-down. */
.daily-review-page {
  --research-blue: var(--accent);
  --research-green: var(--good);
  --research-red: var(--bad);
  --research-yellow: var(--accent-2);
}

/* Structure uses ink and paper; semantic colors are reserved for data meaning. */
.daily-review-page .review-panorama-head span,
.daily-review-page .review-research-change-title span,
.daily-review-page .review-research-chains > header span,
.daily-review-page .review-validator-board > header span,
.daily-review-page .review-structure-metrics > header span,
.daily-review-page .review-framework-health > header span,
.daily-review-page .review-hypothesis-prior > header span,
.daily-review-page .review-hypothesis-next > header span,
.daily-review-page .review-hypothesis-next article > span { color: var(--muted); }

.daily-review-page .review-panorama-card.active {
  background: rgba(236, 230, 216, .58);
  box-shadow: inset 0 0 0 2px var(--ink), inset 0 -4px 0 var(--accent-2);
}
.daily-review-page .review-panorama-card.active::before { background: var(--ink); }
.daily-review-page .review-panorama-card > footer { justify-content: flex-start; }
.daily-review-page .review-panorama-stories > span,
.daily-review-page .review-panorama-stories article > b { color: var(--accent-2); }
.daily-review-page .review-validator-board .review-core-card-v3 { border-top-color: var(--ink); }
.daily-review-page .review-anomaly-evidence-v4 { border-left-color: var(--accent-2); }

.daily-review-page .review-stage-badge {
  background: rgba(11, 95, 255, .08);
  color: var(--accent);
}
.daily-review-page .review-stage-badge.warning,
.daily-review-page .review-plan-status-v4.warning {
  background: rgba(255, 176, 0, .14);
  color: #8a5a00;
}
.daily-review-page .review-stage-badge.risk,
.daily-review-page .review-plan-status-v4.risk {
  background: rgba(201, 42, 42, .09);
  color: var(--bad);
}
.daily-review-page .review-plan-status-v4.positive {
  background: rgba(8, 127, 91, .10);
  color: var(--good);
}
.daily-review-page .review-panorama-card > header b.warning,
.daily-review-page .review-hypothesis-list article > b.warning {
  background: rgba(255, 176, 0, .14);
  color: #8a5a00;
}
.daily-review-page .review-panorama-card > header b.risk,
.daily-review-page .review-hypothesis-list article > b.risk {
  background: rgba(201, 42, 42, .09);
  color: var(--bad);
}
.daily-review-page .review-hypothesis-list article > b.positive {
  background: rgba(8, 127, 91, .10);
  color: var(--good);
}
.daily-review-page .review-hypothesis-blocked {
  border-left-color: var(--bad);
  background: rgba(201, 42, 42, .07);
}
.daily-review-page .review-no-mainline { background: rgba(255, 176, 0, .07); }
.daily-review-page .review-anomaly-evidence-v4 article.warning strong,
.daily-review-page .review-research-change-grid > article.warning > b { color: #8a5a00; }

/* Hypothesis review is a reading surface, not a caption layer. */
.daily-review-page .review-hypothesis-summary > div { padding: 12px 13px; }
.daily-review-page .review-hypothesis-summary span { font-size: 13px; }
.daily-review-page .review-hypothesis-summary strong { margin-top: 5px; font-size: 21px; }
.daily-review-page .review-hypothesis-list { padding: 0 14px; }
.daily-review-page .review-hypothesis-list > article {
  gap: 10px 14px;
  padding: 14px 0;
}
.daily-review-page .review-hypothesis-list article > div strong { font-size: 15px; }
.daily-review-page .review-hypothesis-list article > div span { font-size: 12px; }
.daily-review-page .review-hypothesis-list article > b { padding: 4px 7px; font-size: 12px; }
.daily-review-page .review-hypothesis-list article > p { font-size: 14px; line-height: 1.55; }
.daily-review-page .review-hypothesis-list summary { color: var(--ink); font-size: 13px; }
.daily-review-page .review-hypothesis-list details p { font-size: 13px; line-height: 1.55; }
.daily-review-page .review-hypothesis-history > header { padding: 11px 13px; }
.daily-review-page .review-hypothesis-history header strong { font-size: 14px; }
.daily-review-page .review-hypothesis-history header span { font-size: 12px; }
.daily-review-page .review-hypothesis-history > div > span { padding: 11px; }
.daily-review-page .review-hypothesis-history b,
.daily-review-page .review-hypothesis-history em { font-size: 12px; }
.daily-review-page .review-hypothesis-history strong { color: var(--ink); font-size: 15px; }
.daily-review-page .review-hypothesis-next > .review-plan-posture-v3 { font-size: 14px; line-height: 1.55; }
.daily-review-page .review-plan-posture-v3 {
  border-left-color: var(--ink);
  background: rgba(236, 230, 216, .48);
  color: #413b32;
}
.daily-review-page .review-hypothesis-next > div:last-child:not(.review-hypothesis-blocked) article { padding: 14px 0; }
.daily-review-page .review-hypothesis-next article > span { font-size: 12px; }
.daily-review-page .review-hypothesis-next article > strong { font-size: 15px; line-height: 1.5; }
.daily-review-page .review-hypothesis-next article > p { font-size: 13px; line-height: 1.55; }
.daily-review-page .review-hypothesis-blocked strong { font-size: 15px; }
.daily-review-page .review-hypothesis-blocked span { font-size: 13px; }

/* Explain calibration drift in plain language before showing the affected themes. */
.daily-review-page .review-calibration-v4 { background: var(--panel); }
.daily-review-page .review-calibration-v4 > header {
  align-items: center;
  justify-content: space-between;
  min-height: 54px;
  padding: 10px 13px;
  background: var(--panel-2);
}
.daily-review-page .review-calibration-v4 > header strong,
.daily-review-page .review-calibration-v4 > header span { display: block; }
.daily-review-page .review-calibration-v4 > header strong { font-size: 15px; }
.daily-review-page .review-calibration-v4 > header span { margin-top: 4px; color: var(--muted); font-size: 13px; }
.daily-review-page .review-calibration-v4 > header small { color: var(--muted); font-size: 12px; }
.review-calibration-conclusion {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: 10px;
  margin: 0;
  padding: 12px 13px;
  border-bottom: 1px solid var(--line);
  color: #413b32;
  font-size: 13px;
  line-height: 1.55;
}
.review-calibration-conclusion b { color: var(--ink); }
.daily-review-page .review-calibration-v4 > div > span { padding: 11px 13px; }
.daily-review-page .review-calibration-v4 b { font-size: 13px; }
.daily-review-page .review-calibration-v4 small { font-size: 12px; }
.daily-review-page .review-calibration-v4 strong { font-size: 13px; }

/* A validator card is now the drill-down affordance itself. */
.daily-review-page .review-core-card-v3[data-review-open-stock] {
  cursor: pointer;
  transition: border-color .14s ease, box-shadow .14s ease, background .14s ease;
}
.daily-review-page .review-core-card-v3[data-review-open-stock]:hover,
.daily-review-page .review-core-card-v3[data-review-open-stock]:focus-visible {
  border-color: var(--ink);
  background: var(--panel);
  box-shadow: inset 4px 0 0 var(--accent-2);
  outline: 0;
}

/* Forward outcomes use the same positive/negative colors as Market Insights. */
.daily-review-page .review-signal-cohort-row > .review-signal-outcome {
  font-size: 13px;
  font-weight: 900;
}
.daily-review-page .review-signal-cohort-row > .review-signal-outcome:not(.review-positive):not(.review-negative) { color: var(--muted); }

/* Keep the prior-day comparison vertically balanced. */
.daily-review-page .review-research-change-title {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.daily-review-page .review-research-change-grid > article { align-items: center; }
.daily-review-page .review-research-change-grid > article > b { align-self: center; }

@media (max-width: 720px) {
  .daily-review-page .review-hypothesis-list > article { grid-template-columns: 1fr auto; }
  .daily-review-page .review-hypothesis-list article > p { grid-column: 1 / -1; }
  .daily-review-page .review-calibration-v4 > header { align-items: flex-start; }
}

/* Daily review v21: one accent per interaction and comparable liquidity ratios. */
.daily-review-page .review-panorama-card.active::before { background: var(--accent-2); }

.daily-review-page .review-research-axis-grid article,
.daily-review-page .review-research-axis-grid article.positive,
.daily-review-page .review-research-axis-grid article.warning,
.daily-review-page .review-research-axis-grid article.risk { border-top-color: transparent; }
.daily-review-page .review-research-axis-grid article.positive > strong { color: var(--good); }
.daily-review-page .review-research-axis-grid article.warning > strong { color: #8a5a00; }
.daily-review-page .review-research-axis-grid article.risk > strong { color: var(--bad); }
.daily-review-page .review-research-axis-grid [data-review-axis="liquidity"] small {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
}

.daily-review-page .review-workbench .trend-state-card.active {
  --trend-card-accent: var(--ink);
  border-color: var(--ink);
  background: var(--ink);
  box-shadow: none;
}
.daily-review-page .review-workbench .trend-state-card.active::after { display: none; }

.daily-review-page .review-research-command-title .review-command-kicker {
  justify-content: flex-start;
  gap: 7px;
}
.daily-review-page .review-research-command-title .review-command-kicker em::before {
  margin-right: 7px;
  color: var(--line);
  content: "·";
}

.daily-review-page .review-overview-metric strong { overflow-wrap: anywhere; }
.daily-review-page .review-overview-metric.turnover strong { font-size: 18px; line-height: 1.3; }
.daily-review-page .review-a-turnover-split b,
.daily-review-page .review-native-pairs b { line-height: 1.45; }

/* Daily review v22: one structure summary and one native evidence chain. */
.daily-review-page .review-panorama-card.active {
  border-right-color: var(--accent-2);
  outline: 2px solid var(--accent-2);
  outline-offset: -2px;
  box-shadow: inset 0 -4px 0 var(--accent-2);
}
.daily-review-page .review-panorama-card:has(+ .review-panorama-card.active) { border-right-color: var(--accent-2); }

.daily-review-page .review-structure-workbench > .review-structure-lead {
  border: 1px solid var(--ink);
  background: var(--panel);
}
.review-structure-lead > header {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  min-height: 58px;
  padding: 11px 14px;
  border-bottom: 1px solid var(--ink);
}
.review-structure-lead > header span,
.review-structure-lead > header strong { display: block; }
.review-structure-lead > header span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 850;
}
.review-structure-lead > header strong {
  margin-top: 4px;
  font-size: 17px;
  line-height: 1.4;
}
.review-structure-lead > header small {
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.review-structure-lead .review-overview-insight { border-bottom: 0; }

.daily-review-page .review-structure-workbench > .review-native-evidence {
  border: 1px solid var(--ink);
  background: var(--panel);
}
.daily-review-page .review-native-a,
.daily-review-page .review-native-hk,
.daily-review-page .review-native-us { background: var(--panel); }
.daily-review-page .review-native-head {
  align-items: center;
  min-height: 64px;
  padding: 11px 14px;
  border-bottom-color: var(--ink);
  background: rgba(236, 230, 216, .28);
}
.daily-review-page .review-native-head strong {
  margin-top: 0;
  font-size: 16px;
}
.daily-review-page .review-native-head div > span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: 0;
}
.daily-review-page .review-native-head > small { font-size: 12px; }
.daily-review-page .review-native-chain { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.daily-review-page .review-native-chain article {
  display: flex;
  flex-direction: column;
  min-height: 174px;
  padding: 15px 14px;
  background: #fffdf8;
}
.daily-review-page .review-native-step { color: var(--muted); font-size: 12px; }
.daily-review-page .review-native-chain article > strong {
  margin-top: 9px;
  font-size: 20px;
  line-height: 1.25;
}
.daily-review-page .review-native-pairs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  margin-top: 12px;
}
.daily-review-page .review-native-pairs b {
  min-width: 0;
  padding: 6px 7px;
  border: 1px solid var(--line);
  background: rgba(236, 230, 216, .30);
  color: #413b32;
  font-size: 12px;
  font-weight: 800;
}
.daily-review-page .review-native-pairs b:only-child { grid-column: 1 / -1; }
.daily-review-page .review-native-chain article > small {
  margin-top: auto;
  padding-top: 10px;
  font-size: 12px;
}
.daily-review-page .review-a-balance { margin-top: 14px; }
.daily-review-page .review-a-flow-split { margin-top: 14px; }
.daily-review-page .review-native-notes {
  border-top-color: var(--ink);
  background: rgba(236, 230, 216, .13);
}
.daily-review-page .review-native-notes > div { padding: 12px 14px; }
.daily-review-page .review-native-notes span,
.daily-review-page .review-native-notes small { font-size: 12px; }
.daily-review-page .review-native-notes strong { font-size: 13px; line-height: 1.5; }

@media (max-width: 1100px) and (min-width: 721px) {
  .daily-review-page .review-native-chain { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .daily-review-page .review-native-chain article:nth-child(2n) { border-right: 0; }
  .daily-review-page .review-native-chain article:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
}

@media (max-width: 720px) {
  .review-structure-lead > header {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
    padding: 11px 12px;
  }
  .daily-review-page .review-native-chain { grid-template-columns: 1fr; }
  .daily-review-page .review-native-chain article { min-height: 0; padding: 14px 12px; }
  .daily-review-page .review-native-chain article:nth-child(-n + 3) { border-bottom: 1px solid var(--line); }
}

/* Daily review v23: decision-first hierarchy and compact research scanning. */
.daily-review-page .page-head h1 { font-size: clamp(30px, 3vw, 40px); }
.daily-review-page .page-head p { max-width: 620px; color: #514b40; }
.daily-review-page .review-refresh {
  border-color: var(--ink);
  background: var(--ink);
  color: var(--panel);
}
.daily-review-page .review-refresh:hover,
.daily-review-page .review-refresh:focus-visible {
  border-color: var(--accent-2);
  background: var(--accent-2);
  color: var(--ink);
}

.daily-review-page .review-panorama-head { min-height: 48px; padding: 8px 13px; }
.daily-review-page .review-panorama-head span {
  color: var(--muted);
  font-size: 11px;
  letter-spacing: .09em;
}
.daily-review-page .review-panorama-head strong { font-size: 15px; }
.daily-review-page .review-panorama-card > footer { justify-content: space-between; }
.daily-review-page .review-panorama-card > footer b {
  color: var(--ink);
  font-weight: 900;
}

/* Key changes are evidence, not a second hero banner. */
.daily-review-page .review-panorama-stories {
  border-top: 1px solid var(--ink);
  background: var(--panel-2);
  color: var(--ink);
}
.daily-review-page .review-panorama-stories > span {
  justify-content: start;
  padding: 10px 12px;
  background: var(--ink);
  color: var(--panel);
  line-height: 1.25;
  text-align: left;
}
.daily-review-page .review-panorama-stories article {
  position: relative;
  padding: 9px 11px;
  border-left-color: var(--line);
  background: rgba(255, 253, 248, .68);
}
.daily-review-page .review-panorama-stories article::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 3px;
  background: var(--line);
  content: "";
}
.daily-review-page .review-panorama-stories article.positive::before { background: var(--good); }
.daily-review-page .review-panorama-stories article.warning::before { background: var(--accent-2); }
.daily-review-page .review-panorama-stories article.risk::before { background: var(--bad); }
.daily-review-page .review-panorama-stories article > b { color: var(--muted); }
.daily-review-page .review-panorama-stories article > small { color: var(--muted); }

/* The selected-market thesis is the primary decision statement. */
.daily-review-page .review-research-command > header { padding: 11px 13px 10px; }
.daily-review-page .review-research-command-title > strong {
  max-width: 980px;
  margin-top: 5px;
  font-size: 19px;
  line-height: 1.45;
}
.daily-review-page .review-command-kicker { color: var(--muted); }
.daily-review-page .review-research-command > footer { background: rgba(236, 230, 216, .24); }
.daily-review-page .review-research-command > footer .review-command-summary-cell {
  min-height: 72px;
  border-right: 1px solid var(--line);
}
.daily-review-page .review-research-command > footer .review-command-summary-cell:last-child { border-right: 0; }
.daily-review-page .review-research-command > footer .review-command-summary-cell span {
  color: var(--muted);
  font-weight: 850;
}
.daily-review-page .review-research-command > footer .review-command-summary-cell strong { font-size: 16px; }

.daily-review-page .review-workbench .section-head.review-workbench-nav { padding: 7px; }
.daily-review-page .review-workbench .trend-state-grid { max-width: none; }
.daily-review-page .review-workbench .trend-state-card strong {
  font-size: 11px;
  font-weight: 750;
  opacity: .72;
}
.daily-review-page .review-sector-evidence.sentiment strong,
.daily-review-page .review-sector-evidence.flow strong { line-height: 1.35; }
.daily-review-page .review-sector-evidence.flow strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 820px) {
  /* One card per swipe keeps the cross-market comparison above the fold. */
  .daily-review-page .review-panorama-grid {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
  }
  .daily-review-page .review-panorama-card {
    flex: 0 0 calc(100% - 32px);
    min-height: 0;
    border-right: 1px solid var(--ink);
    border-bottom: 0;
    scroll-snap-align: start;
  }
  .daily-review-page .review-panorama-card:last-child { border-right: 0; }
  .daily-review-page .review-panorama-stories {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
  }
  .daily-review-page .review-panorama-stories > span { flex: 0 0 116px; }
  .daily-review-page .review-panorama-stories article {
    flex: 0 0 min(300px, calc(100vw - 92px));
    border-top: 0;
    border-left: 1px solid var(--line);
    scroll-snap-align: start;
  }
}

@media (max-width: 560px) {
  .daily-review-page .page-head h1 { font-size: 28px; }
  .daily-review-page .page-head p { font-size: 13px; line-height: 1.45; }
  .daily-review-page .review-panorama-head { gap: 5px; }
  .daily-review-page .review-panorama-card { flex-basis: calc(100% - 22px); }
  .daily-review-page .review-research-command > header { gap: 10px; }
  .daily-review-page .review-research-command-title > strong { font-size: 17px; }
  .daily-review-page .review-research-axis-grid,
  .daily-review-page .review-research-change-grid {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
  }
  .daily-review-page .review-research-axis-grid article {
    flex: 0 0 148px;
    min-height: 76px;
    border-right: 1px solid var(--line);
    border-bottom: 0;
    scroll-snap-align: start;
  }
  .daily-review-page .review-research-axis-grid article:last-child {
    grid-column: auto;
    border-right: 0;
  }
  .daily-review-page .review-research-change-title {
    flex: 0 0 106px;
    border-right: 1px solid var(--line);
    border-bottom: 0;
  }
  .daily-review-page .review-research-change-grid > article {
    flex: 0 0 236px;
    border-right: 1px solid var(--line);
    border-bottom: 0;
    scroll-snap-align: start;
  }
  .daily-review-page .review-research-command > footer {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .daily-review-page .review-research-command > footer .review-command-summary-cell {
    min-height: 86px;
    border-right: 1px solid var(--line);
    border-bottom: 1px solid var(--line);
  }
  .daily-review-page .review-research-command > footer .review-command-summary-cell:nth-child(2n) { border-right: 0; }
  .daily-review-page .review-research-command > footer .review-command-summary-cell:nth-last-child(-n + 2) { border-bottom: 0; }
}

/* Daily review v24: market structure as a continuous evidence ledger. */
.daily-review-page .review-structure-workbench {
  gap: 14px;
  padding: 14px;
  background: rgba(236, 230, 216, .14);
}
.daily-review-page .review-structure-workbench > section,
.daily-review-page .review-structure-workbench > .review-structure-lead,
.daily-review-page .review-structure-workbench > .review-native-evidence {
  border: 0;
  background: var(--panel);
  box-shadow: 0 8px 24px rgba(34, 27, 12, .055);
}

.daily-review-page .review-structure-verdict {
  position: relative;
  overflow: hidden;
  border-top: 1px solid var(--ink) !important;
  border-bottom: 1px solid var(--ink) !important;
}
.daily-review-page .review-structure-verdict::before {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 5px;
  background: var(--accent-2);
  content: "";
}
.daily-review-page .review-structure-verdict > header {
  min-height: 66px;
  padding: 12px 16px 11px 18px;
  border-bottom: 0;
}
.daily-review-page .review-structure-verdict > header span {
  color: var(--muted);
  font-size: 11px;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.daily-review-page .review-structure-verdict > header strong {
  margin-top: 5px;
  font-family: Georgia, "Songti SC", "STSong", serif;
  font-size: 21px;
  letter-spacing: -.018em;
}
.daily-review-page .review-structure-verdict .review-overview-insight {
  grid-template-columns: 118px minmax(0, 1fr);
  gap: 12px;
  padding: 11px 16px 11px 18px;
  border-top: 1px solid var(--line);
  background: rgba(255, 176, 0, .055);
}
.daily-review-page .review-structure-verdict .review-overview-insight span {
  color: #755200;
  font-size: 12px;
  letter-spacing: .04em;
}
.daily-review-page .review-structure-verdict .review-overview-insight strong {
  font-size: 13px;
  font-weight: 750;
  line-height: 1.55;
}
.daily-review-page .review-structure-verdict .review-overview-insight.risk {
  background: rgba(201, 42, 42, .055);
}
.daily-review-page .review-structure-verdict .review-overview-insight.risk span { color: var(--bad); }

/* One dark header, then an uninterrupted four-step reading path. */
.daily-review-page .review-native-evidence {
  overflow: hidden;
  border-top: 1px solid var(--ink) !important;
  border-bottom: 1px solid var(--ink) !important;
}
.daily-review-page .review-native-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto auto;
  gap: 16px;
  align-items: center;
  min-height: 62px;
  padding: 10px 15px;
  border: 0;
  background: var(--ink);
  color: var(--panel);
}
.daily-review-page .review-native-head div:first-child { min-width: 150px; }
.daily-review-page .review-native-head div:first-child > span,
.daily-review-page .review-native-head div:first-child > strong { display: block; }
.daily-review-page .review-native-head div:first-child > span {
  margin: 0;
  color: rgba(255, 253, 248, .58);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.daily-review-page .review-native-head div:first-child > strong {
  margin: 3px 0 0;
  color: var(--panel);
  font-size: 17px;
}
.daily-review-page .review-native-route {
  overflow: hidden;
  color: rgba(255, 253, 248, .76);
  font-size: 12px;
  font-weight: 700;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.daily-review-page .review-native-route i {
  padding: 0 8px;
  color: var(--accent-2);
  font-style: normal;
}
.daily-review-page .review-native-head > small {
  color: rgba(255, 253, 248, .56);
  font-size: 11px;
  white-space: nowrap;
}
.daily-review-page .review-native-head .review-help > button {
  border-color: rgba(255, 253, 248, .34);
  background: transparent;
  color: var(--panel);
}
.daily-review-page .review-native-head .review-help > button:hover,
.daily-review-page .review-native-head .review-help > button:focus-visible {
  border-color: var(--accent-2);
  background: var(--accent-2);
  color: var(--ink);
}

.daily-review-page .review-native-chain {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  background: var(--panel);
}
.daily-review-page .review-native-step-card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 252px;
  padding: 16px 15px 14px;
  border-right: 1px solid var(--line);
  background: transparent;
}
.daily-review-page .review-native-step-card:last-child { border-right: 0; }
.daily-review-page .review-native-step-card::before {
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 4px;
  background: var(--line);
  content: "";
}
.daily-review-page .review-native-step-card.tone-positive::before { background: var(--good); }
.daily-review-page .review-native-step-card.tone-negative::before { background: var(--bad); }
.daily-review-page .review-native-step-card.tone-warning::before { background: var(--accent-2); }
.daily-review-page .review-native-step-card > header {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-height: 20px;
}
.daily-review-page .review-native-step-card > header span {
  color: var(--muted);
  font-family: Georgia, serif;
  font-size: 12px;
  font-weight: 900;
}
.daily-review-page .review-native-step-card > header strong {
  font-size: 12px;
  letter-spacing: .035em;
}
.daily-review-page .review-native-reading { margin-top: 14px; }
.daily-review-page .review-native-reading > strong {
  display: block;
  color: var(--ink);
  font-family: Georgia, "Songti SC", "STSong", serif;
  font-size: clamp(20px, 1.65vw, 25px);
  font-variant-numeric: tabular-nums;
  line-height: 1.22;
  letter-spacing: -.02em;
}
.daily-review-page .review-native-step-card.tone-positive .review-native-reading > strong { color: var(--good); }
.daily-review-page .review-native-step-card.tone-negative .review-native-reading > strong { color: var(--bad); }
.daily-review-page .review-native-step-card.tone-warning .review-native-reading > strong { color: #805800; }
.daily-review-page .review-native-reading > em {
  display: block;
  margin-top: 7px;
  color: #4c4539;
  font-size: 12px;
  font-style: normal;
  font-weight: 750;
  line-height: 1.4;
}
.daily-review-page .review-native-metrics {
  display: grid;
  gap: 0;
  margin-top: 15px;
  border-top: 1px solid var(--line);
}
.daily-review-page .review-native-metric {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  padding: 7px 0 6px;
  border-bottom: 1px dotted var(--line);
}
.daily-review-page .review-native-metric em {
  color: var(--muted);
  font-size: 11px;
  font-style: normal;
}
.daily-review-page .review-native-metric b {
  color: var(--ink);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.daily-review-page .review-native-metric.tone-positive b { color: var(--good); }
.daily-review-page .review-native-metric.tone-negative b { color: var(--bad); }
.daily-review-page .review-native-metric.tone-warning b { color: #805800; }
.daily-review-page .review-native-step-card > p {
  margin: auto 0 0;
  padding-top: 13px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}
.daily-review-page .review-native-balance {
  display: flex;
  overflow: hidden;
  height: 5px;
  margin-top: 16px;
  background: var(--line);
}
.daily-review-page .review-native-balance .positive { background: var(--good); }
.daily-review-page .review-native-balance .negative { background: var(--bad); }

.daily-review-page .review-native-notes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--ink);
  background: rgba(236, 230, 216, .16);
}
.daily-review-page .review-native-notes > div {
  position: relative;
  min-width: 0;
  padding: 12px 15px 12px 18px;
  border-right: 1px solid var(--line);
}
.daily-review-page .review-native-notes > div:last-child { border-right: 0; }
.daily-review-page .review-native-notes > div::before {
  position: absolute;
  top: 12px;
  bottom: 12px;
  left: 0;
  width: 3px;
  background: var(--line);
  content: "";
}
.daily-review-page .review-native-notes > div.positive::before { background: var(--good); }
.daily-review-page .review-native-notes > div.warning::before { background: var(--accent-2); }
.daily-review-page .review-native-notes > div.risk::before { background: var(--bad); }
.daily-review-page .review-native-notes span { color: var(--muted); font-size: 11px; }
.daily-review-page .review-native-notes strong { margin-top: 5px; font-size: 13px; line-height: 1.45; }
.daily-review-page .review-native-notes small { margin-top: 5px; font-size: 11px; line-height: 1.45; }
.daily-review-page .review-native-events li { grid-template-columns: 108px 34px minmax(0, 1fr); }
.daily-review-page .review-native-events b { color: #805800; }

/* Rare evidence becomes a ranked alert ledger, not another card grid. */
.daily-review-page .review-anomaly-evidence-v4 {
  overflow: hidden;
  border: 0;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  border-left: 0;
  background: var(--panel);
}
.daily-review-page .review-anomaly-evidence-v4 > header {
  display: flex;
  align-items: baseline;
  min-height: 48px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--ink);
  background: rgba(255, 176, 0, .105);
}
.daily-review-page .review-anomaly-evidence-v4 > header strong { font-size: 14px; }
.daily-review-page .review-anomaly-evidence-v4 > header span { color: #5f4a13; font-size: 12px; }
.daily-review-page .review-anomaly-evidence-v4 > header small { margin-left: auto; font-size: 11px; }
.daily-review-page .review-anomaly-evidence-v4 > div { display: block; }
.daily-review-page .review-anomaly-evidence-v4 > div > article {
  display: grid;
  grid-template-columns: minmax(190px, .8fr) minmax(300px, 1.5fr) minmax(220px, .9fr);
  gap: 18px;
  align-items: center;
  min-height: 76px;
  padding: 11px 14px;
  border: 0;
  border-bottom: 1px solid var(--line);
  background: transparent;
}
.daily-review-page .review-anomaly-evidence-v4 > div > article:last-child { border-bottom: 0; }
.daily-review-page .review-anomaly-evidence-v4 article > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: baseline;
}
.daily-review-page .review-anomaly-evidence-v4 article b { font-size: 13px; }
.daily-review-page .review-anomaly-evidence-v4 article strong { font-size: 21px; }
.daily-review-page .review-anomaly-evidence-v4 article p { margin: 0; font-size: 12px; line-height: 1.5; }
.daily-review-page .review-anomaly-evidence-v4 article small { margin: 0; text-align: right; }

/* Calibration is a compact audit table. */
.daily-review-page .review-calibration-v4 {
  overflow: hidden;
  border: 0;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  background: var(--panel);
}
.daily-review-page .review-calibration-v4 > header {
  min-height: 50px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--line);
  background: rgba(236, 230, 216, .44);
}
.daily-review-page .review-calibration-v4 > header strong { font-size: 14px; }
.daily-review-page .review-calibration-v4 > header span { font-size: 12px; }
.daily-review-page .review-calibration-conclusion {
  grid-template-columns: 58px minmax(0, 1fr);
  padding: 11px 14px;
  border-bottom: 1px solid var(--ink);
  font-size: 12px;
}
.daily-review-page .review-calibration-v4 > div {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.daily-review-page .review-calibration-v4 > div > span {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 8px;
  padding: 10px 14px;
  border-right: 1px solid var(--line);
}
.daily-review-page .review-calibration-v4 > div > span:last-child { border-right: 0; }
.daily-review-page .review-calibration-v4 b { font-size: 12px; }
.daily-review-page .review-calibration-v4 small { text-align: right; }
.daily-review-page .review-calibration-v4 strong {
  grid-column: 1 / -1;
  color: #805800;
  font-size: 12px;
}

@media (max-width: 1100px) and (min-width: 721px) {
  .daily-review-page .review-native-head { grid-template-columns: auto minmax(0, 1fr) auto; }
  .daily-review-page .review-native-head > small { grid-column: 1 / -1; text-align: left; }
  .daily-review-page .review-native-chain { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .daily-review-page .review-native-step-card { min-height: 238px; }
  .daily-review-page .review-native-step-card:nth-child(2n) { border-right: 0; }
  .daily-review-page .review-native-step-card:nth-child(-n + 2) { border-bottom: 1px solid var(--line); }
  .daily-review-page .review-anomaly-evidence-v4 > div > article { grid-template-columns: 180px minmax(0, 1fr); }
  .daily-review-page .review-anomaly-evidence-v4 article small { grid-column: 1 / -1; text-align: left; }
}

@media (max-width: 720px) {
  .daily-review-page .review-structure-workbench { gap: 10px; padding: 10px; }
  .daily-review-page .review-structure-verdict > header { align-items: flex-start; padding: 11px 12px 10px 16px; }
  .daily-review-page .review-structure-verdict > header strong { font-size: 18px; }
  .daily-review-page .review-structure-verdict .review-overview-insight {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 10px 12px 10px 16px;
  }
  .daily-review-page .review-native-head {
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px 12px;
    align-items: start;
    padding: 11px 12px;
  }
  .daily-review-page .review-native-head div:first-child { min-width: 0; }
  .daily-review-page .review-native-route {
    grid-column: 1 / -1;
    grid-row: 2;
    overflow: visible;
    text-align: left;
    white-space: normal;
  }
  .daily-review-page .review-native-head > small {
    grid-column: 1 / -1;
    grid-row: 3;
    text-align: left;
    white-space: normal;
  }
  .daily-review-page .review-native-chain { grid-template-columns: 1fr; }
  .daily-review-page .review-native-step-card {
    min-height: 0;
    padding: 15px 12px 13px;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .daily-review-page .review-native-step-card:last-child { border-bottom: 0; }
  .daily-review-page .review-native-reading > strong { font-size: 22px; }
  .daily-review-page .review-native-step-card > p { margin-top: 12px; }
  .daily-review-page .review-native-notes { grid-template-columns: 1fr; }
  .daily-review-page .review-native-notes > div {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .daily-review-page .review-native-notes > div:last-child { border-bottom: 0; }
  .daily-review-page .review-anomaly-evidence-v4 > header { display: grid; gap: 3px; }
  .daily-review-page .review-anomaly-evidence-v4 > header small { margin-left: 0; }
  .daily-review-page .review-anomaly-evidence-v4 > div > article {
    grid-template-columns: 1fr;
    gap: 7px;
    padding: 11px 12px;
  }
  .daily-review-page .review-anomaly-evidence-v4 article small { text-align: left; }
  .daily-review-page .review-calibration-v4 > header { display: grid; gap: 3px; }
  .daily-review-page .review-calibration-conclusion { grid-template-columns: 1fr; gap: 5px; }
  .daily-review-page .review-calibration-v4 > div { grid-template-columns: 1fr; }
  .daily-review-page .review-calibration-v4 > div > span {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .daily-review-page .review-calibration-v4 > div > span:last-child { border-bottom: 0; }
}

/* Daily review v25: theme evidence drawer and bounded 5+2 news feed. */
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-drawer {
  width: min(640px, 96vw);
  background: #fffdf8;
}
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-head {
  padding: 18px 22px;
  border-bottom: 4px solid var(--accent-2);
  background: var(--ink);
  color: var(--panel);
}
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-head span { color: var(--accent-2); }
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-head strong { font-family: Georgia, "Songti SC", "STSong", serif; }
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-head button {
  border-color: rgba(255, 253, 248, .36);
  background: transparent;
  color: var(--panel);
}
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-head button:hover,
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-head button:focus-visible {
  border-color: var(--accent-2);
  background: var(--accent-2);
  color: var(--ink);
}
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-body { padding: 0 22px 26px; }

.review-theme-detail-hero {
  margin: 0 -22px;
  padding: 18px 22px 0;
  border-bottom: 1px solid var(--ink);
  background: rgba(236, 230, 216, .27);
}
.review-theme-detail-hero > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.review-theme-detail-hero > header b {
  color: var(--muted);
  font-size: 11px;
  letter-spacing: .04em;
}
.review-theme-detail-hero > p {
  margin: 13px 0 17px;
  font-family: Georgia, "Songti SC", "STSong", serif;
  font-size: 18px;
  font-weight: 750;
  line-height: 1.55;
}
.review-theme-detail-pulse {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-top: 1px solid var(--ink);
}
.review-theme-detail-pulse > div {
  min-width: 0;
  padding: 11px 12px 12px 0;
  border-right: 1px solid var(--line);
}
.review-theme-detail-pulse > div + div { padding-left: 12px; }
.review-theme-detail-pulse > div:last-child { border-right: 0; }
.review-theme-detail-pulse span,
.review-theme-detail-pulse strong { display: block; }
.review-theme-detail-pulse span { color: var(--muted); font-size: 11px; }
.review-theme-detail-pulse strong {
  margin-top: 5px;
  font-size: 18px;
  font-variant-numeric: tabular-nums;
}
.review-theme-detail-pulse strong.positive { color: var(--good); }
.review-theme-detail-pulse strong.negative { color: var(--bad); }
.review-theme-detail-pulse strong.warning { color: #805800; }

.review-theme-evidence-ledger { border-top: 1px solid var(--ink); }
.review-theme-evidence-ledger > div {
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr) minmax(130px, .7fr);
  gap: 12px;
  align-items: baseline;
  min-height: 47px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
}
.review-theme-evidence-ledger > div > span { color: var(--muted); font-size: 12px; font-weight: 800; }
.review-theme-evidence-ledger > div > strong { font-size: 14px; font-variant-numeric: tabular-nums; }
.review-theme-evidence-ledger > div > small { color: var(--muted); font-size: 11px; text-align: right; }

.review-theme-catalyst > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.review-theme-catalyst > header h3 { margin-bottom: 0; }
.review-theme-catalyst > header span {
  padding: 4px 7px;
  background: rgba(236, 230, 216, .6);
  color: var(--muted);
  font-size: 11px;
  font-weight: 850;
}
.review-theme-catalyst > header span.matched { background: rgba(8, 127, 91, .1); color: var(--good); }
.review-theme-catalyst > header span.no_direct_match,
.review-theme-catalyst > header span.news_unavailable { background: rgba(255, 176, 0, .14); color: #805800; }
.review-theme-catalyst > p { margin: 9px 0 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.review-theme-catalyst-list {
  display: grid;
  margin-top: 13px;
  border-top: 1px solid var(--ink);
}
.review-theme-catalyst-list a,
.review-theme-catalyst-list > div {
  display: grid;
  grid-template-columns: 90px minmax(0, 1fr) 20px;
  gap: 5px 10px;
  min-width: 0;
  padding: 11px 0;
  border-bottom: 1px solid var(--line);
  color: var(--ink);
  text-decoration: none;
}
.review-theme-catalyst-list a > span,
.review-theme-catalyst-list > div > span { color: #805800; font-size: 11px; font-weight: 850; }
.review-theme-catalyst-list a > strong,
.review-theme-catalyst-list > div > strong { min-width: 0; font-size: 13px; line-height: 1.45; }
.review-theme-catalyst-list a > small,
.review-theme-catalyst-list > div > small { grid-column: 2; color: var(--muted); font-size: 11px; }
.review-theme-catalyst-list a > b { grid-column: 3; grid-row: 1 / span 2; color: var(--muted); text-align: right; }
.review-theme-catalyst-list a:hover strong,
.review-theme-catalyst-list a:focus-visible strong { color: var(--accent); }
.review-theme-catalyst-empty {
  margin-top: 13px;
  padding: 10px 12px;
  border-left: 3px solid var(--accent-2);
  background: rgba(255, 176, 0, .07);
  color: #5f4a13;
  font-size: 12px;
}

.review-theme-conditions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
}
.review-theme-conditions > div { padding: 12px 14px 13px 0; }
.review-theme-conditions > div + div { padding-left: 14px; border-left: 1px solid var(--line); }
.review-theme-conditions span,
.review-theme-conditions strong { display: block; }
.review-theme-conditions span { color: var(--good); font-size: 11px; font-weight: 850; }
.review-theme-conditions strong { margin-top: 7px; font-size: 13px; line-height: 1.55; }
.review-theme-conditions .risk span { color: var(--bad); }
.review-theme-research .review-catalyst-status { color: #805800; }
.review-theme-research .review-catalyst-status + small { margin-top: 4px; }

/* Five primary clues preserve scanability; two more stay one click away. */
.daily-review-page .review-news-list a {
  grid-template-columns: 30px 46px 92px minmax(0, 1fr) 20px;
  min-height: 66px;
}
.daily-review-page .review-news-list > a > em {
  color: var(--muted);
  font-family: Georgia, serif;
  font-size: 12px;
  font-style: normal;
  font-weight: 900;
}
.daily-review-page .review-news-category {
  width: fit-content;
  padding: 3px 6px;
  background: rgba(236, 230, 216, .6);
  color: #5f584c;
  font-size: 11px;
}
.daily-review-page .review-news-list a[data-category="宏观与央行"] .review-news-category,
.daily-review-page .review-news-list a[data-category="政策与监管"] .review-news-category { background: rgba(255, 176, 0, .14); color: #805800; }
.daily-review-page .review-news-list a[data-category="市场结构"] .review-news-category { background: rgba(11, 95, 255, .08); color: var(--accent); }
.daily-review-page .review-news-list a[data-category="公司与财报"] .review-news-category { background: rgba(201, 42, 42, .08); color: var(--bad); }
.daily-review-page .review-news-list a[data-category="行业事件"] .review-news-category { background: rgba(8, 127, 91, .08); color: var(--good); }
.review-news-more {
  border-top: 1px solid var(--ink);
  background: rgba(236, 230, 216, .13);
}
.review-news-more > summary {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  gap: 10px;
  align-items: baseline;
  min-height: 46px;
  padding: 11px 16px;
  cursor: pointer;
  list-style: none;
}
.review-news-more > summary::-webkit-details-marker { display: none; }
.review-news-more > summary span { color: var(--muted); font-size: 11px; font-weight: 850; }
.review-news-more > summary strong { font-size: 13px; }
.review-news-more > summary small { color: var(--muted); font-size: 11px; text-align: right; }
.review-news-more[open] > summary { border-bottom: 1px solid var(--line); }
.review-news-more .review-news-list.secondary { background: var(--panel); }

@media (max-width: 720px) {
  .history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-body { padding: 0 16px 22px; }
  .review-theme-detail-hero { margin: 0 -16px; padding: 16px 16px 0; }
  .review-theme-detail-hero > p { font-size: 16px; }
  .review-theme-detail-pulse { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .review-theme-detail-pulse > div { border-bottom: 1px solid var(--line); }
  .review-theme-detail-pulse > div:nth-child(2n) { border-right: 0; }
  .review-theme-detail-pulse > div:nth-last-child(-n + 2) { border-bottom: 0; }
  .review-theme-evidence-ledger > div { grid-template-columns: 92px minmax(0, 1fr); gap: 5px 10px; }
  .review-theme-evidence-ledger > div > small { grid-column: 2; text-align: left; }
  .review-theme-catalyst-list a,
  .review-theme-catalyst-list > div { grid-template-columns: 72px minmax(0, 1fr) 18px; }
  .review-theme-conditions { grid-template-columns: 1fr; }
  .review-theme-conditions > div { padding: 11px 0; }
  .review-theme-conditions > div + div { padding-left: 0; border-top: 1px solid var(--line); border-left: 0; }
  .daily-review-page .review-news-list a {
    grid-template-columns: 24px minmax(0, 1fr) 24px;
    gap: 8px;
    align-items: start;
    padding: 11px 12px;
  }
  .daily-review-page .review-news-list time { display: none; }
  .daily-review-page .review-news-category { display: none; }
  .daily-review-page .review-news-list div strong {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    white-space: normal;
  }
  .daily-review-page .review-news-list div small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .daily-review-page .review-news-list > a > b {
    display: grid;
    width: 24px;
    height: 24px;
    place-items: center;
    border: 1px solid var(--line);
    text-align: center;
  }
  .review-news-more > summary { grid-template-columns: 1fr auto; padding: 10px 12px; }
  .review-news-more > summary small { grid-column: 1 / -1; text-align: left; }
}

/* Daily review v26: readable theme path labels and bounded validator identities. */
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-timeline .review-stage-badge {
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 28px;
  padding: 4px 8px;
  border-radius: 0;
  font-size: 13px;
  line-height: 1.2;
  text-align: center;
}

.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-stock-links button {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  height: auto;
  min-height: 48px;
}
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-stock-links button strong,
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-stock-links button span {
  display: block;
  min-width: 0;
  overflow: hidden;
  margin: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.history-modal.review-detail-shell[data-review-detail-type="theme"] .review-stock-links button span {
  max-width: 108px;
  text-align: right;
}

@media (max-width: 420px) {
  .history-modal.review-detail-shell[data-review-detail-type="theme"] .review-detail-timeline > div {
    grid-template-columns: 84px minmax(88px, 1fr) 64px;
    gap: 8px;
  }
  .history-modal.review-detail-shell[data-review-detail-type="theme"] .review-stock-links button span { max-width: 42vw; }
}

/* Daily review v27: compact mobile controls and unambiguous quality marker. */
@media (max-width: 720px) {
  .daily-review-page .review-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 92px;
    gap: 6px;
    width: 100%;
  }
  .daily-review-page .review-toolbar > label {
    width: auto;
    min-width: 0;
  }
  .daily-review-page .review-toolbar .date-control { width: 100%; }
  .daily-review-page .review-toolbar .review-refresh {
    width: 92px;
    min-width: 92px;
  }
  .daily-review-page .review-ledger-meta {
    gap: 10px;
    padding-right: 10px;
  }
  .daily-review-page .review-ledger-meta .review-trust-entry {
    flex: 0 0 auto;
    gap: 6px;
    padding: 0 8px;
  }
}

/* Shared page actions and status strips. */
.page-head #reviewReloadBtn,
.page-head #reloadBtn,
.page-head #stockUniverseReloadBtn,
.page-head #portfolioRunBtn,
.page-head #portfolioHistoryBtn,
.page-head #stockRunBtn,
.page-head #stockHistoryBtn,
.page-head #monitorRunBtn,
.page-head #monitorRefreshBtn,
.page-head #dataHealthBatchBtn,
.page-head #dataHealthRefreshBtn {
  min-height: 34px;
  border-color: var(--ink);
  border-radius: 0;
  background: var(--ink);
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}
.page-head #reviewReloadBtn:hover,
.page-head #reloadBtn:hover,
.page-head #stockUniverseReloadBtn:hover,
.page-head #portfolioRunBtn:hover,
.page-head #portfolioHistoryBtn:hover,
.page-head #stockRunBtn:hover,
.page-head #stockHistoryBtn:hover,
.page-head #monitorRunBtn:hover,
.page-head #monitorRefreshBtn:hover,
.page-head #dataHealthBatchBtn:hover,
.page-head #dataHealthRefreshBtn:hover {
  border-color: var(--accent);
  background: var(--accent);
}
.page-head button:disabled {
  border-color: #a29a8b !important;
  background: #a29a8b !important;
  color: #f7f5ef !important;
}
.monitor-status {
  min-height: 44px;
  align-items: center;
}
.monitor-status-main {
  min-height: 24px;
  flex: 1 1 auto;
  line-height: 1.35;
}
.monitor-status-steps { flex: 0 0 auto; }
.review-status-meta { min-width: 0; }
.daily-review-page .page-head h1 {
  font-family: inherit;
  font-size: 28px;
  letter-spacing: 0;
}

/* Keep the backtest/monitor runner controls at the same compact field width
   as the daily-review date input. Mobile keeps its full-width stacked layout. */
@media (min-width: 721px) {
  #portfolioPage .portfolio-runner,
  #stockPage .portfolio-runner,
  #portfolioMonitorPage .portfolio-runner {
    --runner-field-width: 142px;
  }
  #portfolioPage .portfolio-runner label,
  #stockPage .portfolio-runner label,
  #portfolioMonitorPage .portfolio-runner label,
  #portfolioPage .portfolio-runner input[type="date"],
  #portfolioPage .portfolio-runner input.monday-date-input,
  #stockPage .portfolio-runner input[type="text"],
  #stockPage .portfolio-runner input[type="date"],
  #stockPage .portfolio-runner input.monday-date-input,
  #portfolioMonitorPage .portfolio-runner input[type="date"],
  #portfolioMonitorPage .portfolio-runner input.monday-date-input,
  #portfolioMonitorPage .portfolio-runner select,
  #portfolioPage .portfolio-runner select {
    width: var(--runner-field-width);
    min-width: var(--runner-field-width);
    box-sizing: border-box;
  }
  /* 策略 ID 下拉框：占满剩余空间（上限 380px），空间不足时收缩自身而不是换行，
     保证一行放下所有控件且不与日期框重叠。
     注意：≤1100px 的媒体查询把 .portfolio-runner 改成了 3 列 grid（5 个控件会溢出成两行），
     这里对组合回测显式恢复 flex 单行布局，并让按钮保持自身宽度不拉伸。 */
  #portfolioPage .page-head {
    flex-wrap: wrap;
  }
  #portfolioPage .page-head > div:first-child {
    flex: 0 0 auto;
  }
  #portfolioPage .portfolio-runner {
    display: flex;
    flex: 1 1 auto;
    min-width: 0;
    flex-wrap: nowrap;
  }
  #portfolioPage .portfolio-runner > button {
    width: auto;
    flex: 0 0 auto;
  }
  #portfolioPage .portfolio-runner > label:first-child {
    flex: 1 1 220px;
    width: auto;
    min-width: 120px;
    max-width: 380px;
  }
  #portfolioPage #portfolioStrategy {
    width: 100%;
    min-width: 0;
    max-width: 100%;
  }
  #portfolioMonitorPage #monitorRunMode {
    width: var(--runner-field-width);
    min-width: var(--runner-field-width);
  }
}
#portfolioPage .portfolio-runner > label > span,
#portfolioMonitorPage .portfolio-runner > label > span {
  display: none;
}

@media (max-width: 720px) {
  .portfolio-status,
  .monitor-status {
    display: flex;
    grid-template-columns: none;
    align-items: center;
    gap: 8px;
  }
  .monitor-status-main {
    align-items: center;
    min-width: 0;
  }
  .monitor-status-steps {
    max-width: 48%;
    flex-wrap: nowrap;
    justify-content: flex-start;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
  }
  .monitor-status-steps::-webkit-scrollbar { display: none; }
  .monitor-status-step {
    flex: 0 0 auto;
    padding: 3px 6px;
    font-size: 10px;
    white-space: nowrap;
  }
  .review-status .monitor-status-main { flex-wrap: wrap; }
  .review-status-meta {
    flex: 1 0 calc(100% - 16px);
    margin-left: 16px;
    font-size: 10px;
  }
  #stockStatusText,
  #portfolioStatusText {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .daily-review-page .page-head h1 {
    font-family: inherit;
    font-size: 25px;
    letter-spacing: 0;
  }

  .data-health-batch-form {
    grid-template-columns: repeat(20, minmax(0, 1fr));
    column-gap: 4px;
    row-gap: 6px;
  }
  .data-health-batch-form > label:nth-child(1) { grid-column: 1 / span 6; }
  .data-health-batch-form > label:nth-child(2) { grid-column: 7 / span 6; }
  .data-health-batch-date-shortcuts {
    grid-column: 13 / -1;
    grid-template-columns: minmax(0, 1fr);
    align-items: end;
    gap: 3px;
  }
  .data-health-batch-date-shortcuts > div {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .data-health-batch-date-shortcuts button {
    min-width: 0;
    padding: 0 2px;
    font-size: 10px;
  }
  .data-health-batch-form > label:nth-child(4) { grid-column: 1 / span 3; }
  .data-health-batch-form > label:nth-child(5) { grid-column: 4 / span 4; }
  .data-health-batch-form > label:nth-child(6) { grid-column: 8 / span 4; }
  .data-health-batch-form > label:nth-child(7) { grid-column: 12 / span 4; }
  .data-health-batch-form > label:nth-child(8) { grid-column: 16 / span 5; }
  .data-health-batch-form label > span,
  .data-health-batch-date-shortcuts > span {
    overflow: hidden;
    font-size: 10px;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .data-health-batch-form .batch-label-full { display: none; }
  .data-health-batch-form .batch-label-mobile { display: block; }
  .data-health-batch-form .data-health-update-toggle {
    position: relative;
    justify-content: center;
    min-height: 34px;
    padding: 0 3px;
    border-color: rgba(23, 23, 23, .32);
    border-radius: 4px;
    background: rgba(255, 253, 248, .96);
    color: var(--ink);
  }
  .data-health-batch-form .data-health-update-toggle input {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
  }
  .data-health-batch-form .data-health-update-toggle:has(input:checked) {
    border-color: var(--ink);
    background: var(--ink);
    color: #fff;
  }
  .data-health-batch-form .data-health-update-toggle:has(input:focus-visible) {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
  }
  .data-health-batch-form .data-health-update-toggle span { color: inherit; }
}

@media (max-width: 720px) {
  /* ===== 形态机会 / 风险监控 · 移动端：头部一行 + 单行横滑，可展开为网格 =====
     头部：[标签] 标题(≤2行) / 说明(1行省略) [展开]；
     机会区：等宽两行小卡（code + 评分角标 / 形态名），默认横滑，展开后三列网格；
     风险区：每条均线一行，左侧固定标签列，右侧 code 横滑，展开后换行。 */
  .momentum-live-breakout-alert,
  .momentum-live-ma-alert {
    align-items: stretch;
    flex-direction: column;
    gap: 7px;
    margin: 0 10px 8px;
    /* 右侧不留内边距：横滑条贴到卡片边缘，露出半张卡提示可滑动 */
    padding: 8px 0 8px 9px;
    overflow: hidden;
  }
  .momentum-live-alert-summary {
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 1px 8px;
    min-width: 0;
    padding-right: 9px;
  }
  .momentum-live-alert-kicker {
    grid-column: 1;
    height: 24px;
    padding: 0 6px;
  }
  .momentum-live-alert-summary strong {
    grid-column: 2;
    grid-row: 1;
    display: -webkit-box;
    overflow: hidden;
    font-size: 13px;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
  }
  .momentum-live-alert-summary small {
    grid-column: 2;
    grid-row: 2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .momentum-live-alert-toggle {
    grid-column: 3;
    grid-row: 1 / span 2;
    align-items: center;
    gap: 5px;
    height: 30px;
    min-height: 30px;
    margin: 0;
    padding: 0 9px;
    border: 1px solid currentColor;
    border-radius: 0;
    background: rgba(255, 255, 255, .72);
    color: inherit;
    font: inherit;
    font-size: 11px;
    font-weight: 800;
    white-space: nowrap;
    cursor: pointer;
  }
  .momentum-live-alert-toggle::after {
    content: '';
    width: 5px;
    height: 5px;
    margin-top: -3px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg);
    transition: transform .18s ease, margin .18s ease;
  }
  .is-expanded .momentum-live-alert-toggle::after {
    margin-top: 3px;
    transform: rotate(-135deg);
  }
  .can-expand .momentum-live-alert-toggle { display: inline-flex; }

  /* 默认：单行横滑。上下/左侧留 3px 给"新突破"脉冲阴影，避免被滚动容器裁掉 */
  .momentum-live-alert-items {
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: 6px;
    width: 100%;
    box-sizing: border-box;
    margin-left: -3px;
    padding: 3px 9px 3px 3px;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x proximity;
    scroll-padding-left: 3px;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .momentum-live-alert-items::-webkit-scrollbar { display: none; }
  .can-expand:not(.is-expanded) .momentum-live-alert-items {
    -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
  }
  .momentum-live-alert-items button { flex: 0 0 auto; height: auto; scroll-snap-align: start; }

  /* 机会卡：等宽两行 */
  .momentum-live-breakout-alert .momentum-live-alert-items button {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 3px 6px;
    width: 128px;
    min-height: 44px;
    box-sizing: border-box;
    padding: 5px 7px 5px 8px;
    text-align: left;
    white-space: normal;
  }
  .momentum-live-breakout-alert .momentum-live-alert-items button b {
    grid-column: 1;
    grid-row: 1;
    overflow: hidden;
    font-size: 12px;
    line-height: 16px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .momentum-live-breakout-alert .momentum-live-alert-items button em {
    grid-column: 2;
    grid-row: 1;
    min-width: 22px;
    box-sizing: border-box;
    margin: 0;
    padding: 0 5px;
    border-radius: 8px;
    background: rgba(143, 37, 37, .1);
    font-weight: 800;
    line-height: 16px;
    text-align: center;
    opacity: 1;
  }
  .momentum-live-breakout-alert .momentum-live-alert-items button em::before { content: none; }
  .momentum-live-breakout-alert .momentum-live-alert-items button span {
    grid-column: 1 / -1;
    grid-row: 2;
    overflow: hidden;
    line-height: 14px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  /* 展开：自适应列网格（390 宽约三列），卡片等宽对齐 */
  .momentum-live-breakout-alert.is-expanded .momentum-live-alert-items {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
    overflow: visible;
  }
  .momentum-live-breakout-alert.is-expanded .momentum-live-alert-items button { width: auto; min-width: 0; }

  /* 风险区：每条均线一行，标签列固定宽度，code 横滑 */
  .momentum-ma-groups {
    align-items: stretch;
    gap: 2px;
    width: 100%;
  }
  .momentum-ma-row {
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 4px;
  }
  .momentum-ma-codes {
    width: 100%;
  }
  /* 全局 button 有 34px 固定高度，这里压回 26px，四行均线分组才够紧凑 */
  .momentum-ma-codes button { height: 26px; min-height: 26px; }
  .momentum-live-ma-alert.is-expanded .momentum-ma-codes {
    flex-wrap: wrap;
    overflow: visible;
  }
  .momentum-position-sizing-inline {
    margin: 6px 0 0;
    width: 100%;
    justify-content: space-between;
    box-sizing: border-box;
  }
  .draw-tools-shell .momentum-position-sizing-inline {
    width: max-content;
    max-width: 100%;
    margin: 0;
    justify-content: flex-start;
  }
  /* 仓位结果框：通用的 “.momentum-detail-chart-tools button { width: 100% }” 会把“配置”按钮撑满整框，
     并把“买入价/止损”挤成省略号。这里让按钮回到自身宽度，文案完整展示，整框与工具栏按钮等高 */
  .momentum-detail-chart-tools .momentum-position-sizing-inline {
    gap: 8px;
    height: 36px;
    padding: 0 0 0 9px;
  }
  .momentum-detail-chart-tools .momentum-position-sizing-quantity b { font-size: 15px; }
  .momentum-detail-chart-tools .momentum-position-sizing-values { flex: 0 0 auto; gap: 2px; }
  .momentum-detail-chart-tools .momentum-position-sizing-values small {
    overflow: visible;
    font-size: 10px;
    line-height: 1.15;
    text-overflow: clip;
  }
  .momentum-detail-chart-tools .momentum-position-sizing-config {
    flex: 0 0 auto;
    width: auto;
    min-width: 48px;
    height: 100%;
    min-height: 0;
    padding: 0 12px;
    border-top: 0;
    border-bottom: 0;
    font-size: 11px;
    overflow: visible;
  }
  /* ===== 动量选股 · 手机紧凑布局：控件统一 32-34px，列表为紧凑行 ===== */
  /* 动量页导航条不吸顶：滚动长列表时把整屏留给内容（页首仍可打开菜单） */
  body:has(#momentumPage.active) .sidebar { position: static; }
  .workspace:has(#momentumPage.active) { padding-top: 8px; }
  .momentum-page .page-head { gap: 6px; margin-bottom: 6px; }
  /* 手机端仍显示页面标题：与其他页面一致，单独一行，行高压到最小以节省竖向空间 */
  .momentum-page .page-head > div:first-child {
    min-width: 0;
  }
  .momentum-page .page-head h1 {
    font-size: 22px;
    line-height: 1.12;
    letter-spacing: -.01em;
  }
  .momentum-page .page-head .momentum-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto;
    grid-template-areas: "market market refresh" "date selection technology";
    align-items: stretch;
    gap: 6px;
    width: 100%;
  }
  .momentum-page .momentum-stage-controls .momentum-adhoc-code-input {
    width: 100%;
    min-width: 0;
    height: 32px;
    padding: 0 8px;
    font-size: 16px;
  }
  .momentum-page .momentum-navigation-scope { gap: 6px 12px; }
  .momentum-page .momentum-toolbar .momentum-market-tabs {
    grid-area: market;
    display: flex;
    margin: 0;
  }
  .momentum-page .momentum-toolbar .momentum-market-tabs button {
    flex: 1;
    min-width: 0;
    font-size: 13px;
  }
  .momentum-navigation-scope .momentum-summary { font-size: 11px; }
  .momentum-page .momentum-toolbar > label {
    width: auto;
    min-width: 0;
    max-width: none;
    overflow: visible;
    contain: none;
  }
  .momentum-page .momentum-date-control { grid-area: date; min-width: 0; }
  .momentum-page .momentum-date-step-control {
    grid-template-columns: 26px minmax(0, 1fr) 26px;
    gap: 0;
    height: 34px;
  }
  .momentum-page .momentum-date-step-control .date-step {
    width: 26px;
    min-width: 26px;
    height: 34px;
    min-height: 34px;
    padding: 0;
  }
  .momentum-page .momentum-date-control,
  .momentum-page .momentum-date-control input[type="date"],
  .momentum-page .momentum-date-control input.monday-date-input {
    width: 100%;
    min-width: 0;
  }
  .momentum-page .momentum-date-control input {
    height: 34px;
    padding: 0 2px;
    line-height: 34px;
    font-size: 12px;
  }
  .momentum-page .momentum-date-control input::-webkit-date-and-time-value { line-height: 34px; }
  .momentum-page .momentum-selection-mode { grid-area: selection; min-width: 0; }
  .momentum-page .momentum-selection-mode select {
    width: 100%;
    min-width: 0;
    height: 34px;
    padding: 0 24px 0 8px;
    font-size: 13px;
    background-position: calc(100% - 14px) 14px, calc(100% - 9px) 14px;
  }
  .momentum-page .momentum-tech-filter {
    grid-area: technology;
    height: 34px;
    min-width: 0;
    padding: 0 8px;
    gap: 5px;
    justify-content: center;
    white-space: nowrap;
  }
  .momentum-page .momentum-tech-filter input { width: 15px; height: 15px; margin: 0; }
  .momentum-page .momentum-toolbar > #momentumRefreshBtn {
    grid-area: refresh;
    margin-left: 0;
    width: 100%;
    min-width: 0;
    height: 34px;
    min-height: 34px;
    padding: 0 8px;
    font-size: 12px;
  }

  .momentum-page .monitor-status {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    min-height: 0;
    margin-bottom: 6px;
    padding: 5px 10px;
  }
  .momentum-page .monitor-status-main { flex: 1 1 auto; min-width: 0; min-height: 0; align-items: flex-start; }
  .momentum-page .monitor-status-main > span[id$="StatusText"] {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 1;
    overflow: hidden;
    white-space: normal;
    font-size: 11px;
    line-height: 1.4;
  }
  .momentum-page .monitor-status.error .monitor-status-main > span[id$="StatusText"] { -webkit-line-clamp: 3; }
  .momentum-page .monitor-status-dot { margin-top: 4px; }
  .momentum-page .monitor-status-steps { display: none; }
  .momentum-page .monitor-status.running .monitor-status-steps { display: flex; max-width: 42%; }

  .momentum-market-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 5px;
    margin-bottom: 6px;
  }
  .momentum-market-tabs button {
    width: 100%;
    min-width: 0;
    height: 32px;
    min-height: 32px;
    padding: 0;
    font-size: 13px;
  }

  .momentum-stage-tabs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    margin-bottom: 6px;
    padding-bottom: 6px;
  }
  .momentum-stage-tab { grid-column: auto; flex: 1 1 auto; min-width: 0; }
  .momentum-stage-tab-divider { margin-left: 0; padding-left: 6px; border-left: 1px solid var(--line); }
  .momentum-stage-tab::after { display: none; }
  .momentum-stage-tab > button[data-momentum-stage] {
    flex: 1 1 auto;
    justify-content: center;
    width: 100%;
    height: 32px;
    min-height: 32px;
    padding: 0 4px;
    gap: 3px;
    font-size: 12px;
  }
  .momentum-stage-count { min-width: 0; padding: 1px 4px; font-size: 9px; }
  .momentum-stage-tab:not(.active) .momentum-help-button { display: none; }
  .momentum-stage-tab .momentum-help-button {
    width: 16px;
    min-width: 16px;
    height: 16px;
    min-height: 16px;
    flex-basis: 16px;
    margin: 0;
    font-size: 9px;
    opacity: 1;
  }
  .momentum-mode-switch button { white-space: nowrap; }
  .momentum-stage-controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    flex: 0 0 100%;
    width: 100%;
    margin-left: 0;
    gap: 6px;
  }
  .momentum-stage-controls .momentum-market-status { grid-column: 1 / -1; grid-row: 2; min-width: 0; overflow: hidden; white-space: nowrap; }
  .momentum-stage-controls .momentum-mode-switch,
  .momentum-stage-controls .momentum-stage-update-button { flex: 0 0 auto; }
  .momentum-mode-switch button,
  .momentum-stage-update-button {
    height: 28px;
    min-height: 28px;
    padding: 0 12px;
    font-size: 12px;
  }

  .momentum-table-panel { margin-top: 0; }
  .momentum-table-panel .section-head { flex-wrap: nowrap; min-height: 0; padding: 6px 8px; }
  .momentum-table-panel .section-head > div:first-child { display: none; }
  .momentum-table-actions { display: flex; width: 100%; align-items: center; gap: 6px; }
  .momentum-pattern-filter { flex: 1 1 auto; min-width: 0; gap: 6px; font-size: 11px; }
  .momentum-pattern-filter select {
    flex: 1 1 auto;
    width: auto;
    min-width: 0;
    height: 32px;
    padding: 0 24px 0 8px;
    font-size: 12px;
    background-position: calc(100% - 14px) 13px, calc(100% - 9px) 13px;
  }
  .momentum-table-actions > .momentum-help-button {
    width: 26px;
    min-width: 26px;
    height: 26px;
    min-height: 26px;
    flex: 0 0 26px;
    margin: 0;
    font-size: 12px;
    opacity: 1;
  }
  .momentum-history-toggle { flex: 0 0 auto; height: 32px; min-height: 32px; padding: 0 10px; font-size: 12px; }

  /* 选股列表：一只一行不换行，全部字段同行展示，可向右横滑查看更多，首列（代码名称）固定 */
  .momentum-page .momentum-table-panel .table-wrap {
    position: relative;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
  }
  .momentum-table-panel .momentum-table { width: max-content; min-width: 100%; font-size: 12px; }
  .momentum-table-panel .momentum-table thead th,
  #momentumTableBody td {
    padding: 8px 9px;
    white-space: nowrap;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
  }
  .momentum-table-panel .momentum-table thead th {
    font-size: 10px;
    line-height: 1.15;
    letter-spacing: -.02em;
  }
  .momentum-table-panel .momentum-table thead th .momentum-sort-arrow { margin-left: 1px; font-size: 8px; }
  .momentum-table-panel .momentum-table thead th:first-child,
  #momentumTableBody td:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 108px;
    max-width: 132px;
    background-color: var(--panel);
    text-align: left;
  }
  .momentum-table-panel .momentum-table thead th:first-child { z-index: 2; }
  #momentumTableBody .momentum-symbol .momentum-symbol-industry,
  #momentumTableBody .momentum-gap small { display: none; }
  .momentum-timing-chips { gap: 6px; padding: 6px 8px; }
  .momentum-timing-chips button { height: 28px; min-height: 28px; padding: 0 8px; }
  #momentumTableBody .momentum-symbol {
    display: flex;
    align-items: baseline;
    gap: 6px;
    width: 100%;
    min-width: 0;
    height: auto;
    min-height: 0;
    padding: 0;
  }
  #momentumTableBody .momentum-symbol strong { flex: 0 0 auto; font-size: 13px; }
  #momentumTableBody .momentum-symbol span {
    flex: 1 1 auto;
    min-width: 0;
    margin-top: 0;
    overflow: hidden;
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  #momentumTableBody .momentum-score { font-size: 13px; }
  #momentumTableBody td.momentum-signal-column {
    min-width: 0;
    text-align: left;
    white-space: nowrap !important;
  }
  /* 信号列：主信号与形态标签同一行横向排开，不折行 */
  #momentumTableBody .momentum-signal-stack {
    display: flex;
    width: max-content;
    max-width: none;
    align-items: center;
    flex-wrap: nowrap;
    gap: 6px;
  }
  #momentumTableBody .momentum-signal-primary { flex: 0 0 auto; }
  #momentumTableBody .momentum-signal-secondary { flex: 0 0 auto; flex-wrap: nowrap; }
  #momentumTableBody .momentum-signal-primary > span { min-width: 0; padding: 1px 4px; font-size: 9px; }
  #momentumTableBody .momentum-signal-primary > strong { overflow: visible; font-size: 11px; }
  #momentumTableBody .momentum-signal-secondary i { flex: 0 0 auto; max-width: none; }
  #momentumTableBody .momentum-signal { max-width: none; padding: 1px 5px; }
  #momentumTableBody td.placeholder {
    position: static;
    min-width: 0;
    max-width: none;
    padding: 16px 0;
    text-align: center;
    white-space: normal;
    line-height: 1.6;
  }
  .momentum-pager { min-height: 0; padding: 6px 10px; }
  .momentum-pager button { min-height: 30px; height: 30px; }

  /* 看盘 / 持仓：保留横向滚动，首列固定 */
  .momentum-watchlist-panel .table-wrap { position: relative; overscroll-behavior-x: contain; }
  .momentum-watchlist-table th:first-child,
  .momentum-watchlist-table td:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 112px;
    max-width: 130px;
    background-color: var(--panel);
  }
  .momentum-watchlist-table th,
  .momentum-watchlist-table td { padding: 5px 8px; font-size: 12px; }
  .momentum-watchlist-table th { font-size: 11px; }
  .momentum-watchlist-table .momentum-symbol { max-width: 112px; min-height: 0; padding: 0; }
  .momentum-watchlist-table .momentum-symbol strong { font-size: 12px; }
  .momentum-watchlist-table .momentum-symbol span { margin-top: 1px; overflow: hidden; font-size: 10px; text-overflow: ellipsis; }
  .momentum-watchlist-panel .section-head { flex-wrap: nowrap; padding: 6px 8px; min-height: 0; }
  .momentum-watchlist-panel .section-head > div:first-child { min-width: 0; }
  .momentum-watchlist-panel .section-head > div:first-child span {
    max-width: 58vw;
    overflow: hidden;
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .momentum-watchlist-panel .momentum-table-actions { display: flex; width: auto; flex: 0 0 auto; }
  .momentum-watchlist-panel .momentum-table-actions button { height: 30px; min-height: 30px; padding: 0 10px; font-size: 12px; }

  /* K线详情：全屏，头部与工具栏压缩，把空间留给图表 */
  .history-modal.momentum-detail-modal { padding: 0; }
  .momentum-detail-dialog { width: 100%; height: 100dvh; max-height: 100dvh; border: 0; }
  .momentum-detail-head {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
    padding: max(8px, env(safe-area-inset-top)) 10px 8px;
  }
  .momentum-detail-head > div:first-child { padding-right: 40px; }
  .momentum-detail-head strong { font-size: 15px; line-height: 1.35; }
  .momentum-detail-head span { margin-top: 2px; font-size: 11px; line-height: 1.4; }
  .momentum-detail-head-actions { width: 100%; gap: 6px; }
  .momentum-detail-head-actions > button:not(.momentum-detail-close) {
    flex: 1 1 0;
    min-width: 0;
    height: 32px;
    min-height: 32px;
    padding: 0 6px;
    font-size: 12px;
  }
  .momentum-detail-head .momentum-detail-close {
    position: absolute;
    top: max(8px, env(safe-area-inset-top));
    right: 10px;
    width: 32px;
    min-width: 32px;
    height: 32px;
    min-height: 32px;
  }
  .momentum-detail-body { padding: 6px max(8px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); overflow-x: hidden; }
  /* 手机：时间分段 + 功能开关压成一行（原先 8 个按钮占 2 行）；
     打开画线时，画线托盘原位替换这一行且等高，K 线图不会被往下挤、不跳动。 */
  .momentum-detail-chart-tools .range-tools { align-items: center; min-height: 34px; }
  .momentum-detail-chart-tools .range-tools > button { flex: 0 0 auto; width: auto; height: 32px; min-height: 32px; padding: 0 7px; font-size: 12px; }
  .momentum-detail-chart-tools .range-tools > [data-momentum-range] { flex: 1 1 0; padding: 0 2px; }
  .momentum-detail-chart-tools .range-tools > [data-momentum-range] + [data-momentum-range] { margin-left: -1px; }
  .momentum-detail-chart-tools .range-tools > [data-momentum-range="all"] { margin-right: 6px; }
  .momentum-detail-chart-tools .range-tools > :not([data-momentum-range]) + button { margin-left: 4px; }
  .momentum-detail-chart-tools.is-drawing .range-tools { display: none; }
  .momentum-detail-chart-tools .draw-tools { align-items: center; gap: 3px; height: 34px; padding: 1px 2px 1px 3px; }
  .momentum-detail-chart-tools .draw-tools button { height: 30px; min-height: 30px; padding: 0 4px; font-size: 12px; }
  .momentum-detail-chart-tools .draw-tools [data-momentum-draw="clear"] { margin-left: 2px; padding: 0 6px; }
  .momentum-detail-chart-tools .draw-tools [data-momentum-draw="done"] { padding: 0 8px; }
  .momentum-detail-chart-tools .momentum-tools-legend { grid-column: 1 / -1; }
  .momentum-history-head { flex-direction: column; align-items: stretch; }
  .momentum-history-actions { flex-wrap: wrap; gap: 6px; }
  .momentum-history-actions .momentum-pattern-filter { flex: 1; }
  .momentum-history-mode button { height: 34px; min-height: 34px; }
  .momentum-history-trigger-filter select { width: 100%; }
  .momentum-pattern-help-head button,
  .momentum-history-head > button { min-width: 36px; height: 36px; }
}
/* 小屏（iPhone SE 1 代等 ≤360px）：去掉画线工具图标、收紧字号，保证单行放得下 */
@media (max-width: 360px) {
  .momentum-detail-chart-tools .range-tools > button { padding: 0 5px; font-size: 11px; }
  .momentum-detail-chart-tools .draw-tools button { font-size: 11px; }
  .momentum-detail-chart-tools .draw-tools button::before { display: none; }
}

/* ─── 动量打标：颜色菜单 / 行首标签 / 详情标记按钮 ───────────────── */
.momentum-mark-menu {
  position: fixed;
  z-index: 1200;
  display: grid;
  min-width: 150px;
  padding: 6px;
  border: 1px solid var(--ink);
  background: var(--panel);
  box-shadow: var(--shadow);
}
.momentum-mark-menu[hidden] { display: none; }
.momentum-mark-option {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 36px;
  padding: 0 12px;
  border: 0;
  background: transparent;
  color: var(--ink);
  font-size: 13px;
  font-weight: 700;
  text-align: left;
  cursor: pointer;
}
.momentum-mark-option:hover:not(:disabled) { background: rgba(11, 95, 255, .08); color: var(--ink); }
/* 覆盖全局 button.active 的白字（--paper）：浅蓝选中底上必须用黑色文字 */
.momentum-mark-option.active { background: rgba(11, 95, 255, .12); border-color: transparent; color: var(--ink); }
.momentum-mark-option.active::after { content: '✓'; margin-left: auto; color: var(--ink); }
.momentum-mark-option:disabled { color: var(--muted); opacity: .55; cursor: default; }
.momentum-mark-option-clear { margin-top: 4px; border-top: 1px dashed var(--line); color: var(--muted); font-weight: 600; }
.momentum-mark-dot {
  width: 13px;
  height: 13px;
  flex: 0 0 auto;
  border: 1px solid rgba(23, 23, 23, .22);
  border-radius: 4px;
  background: var(--dot-color, transparent);
}

/* 详情头部「标记」按钮：选中后变为对应颜色的标记态 */
.momentum-mark-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
}
.momentum-mark-button .momentum-mark-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 1.5px dashed currentColor;
  background: transparent;
}
.momentum-mark-button[data-mark="red"] { border-color: #c92a2a; background: #c92a2a; color: var(--paper); }
.momentum-mark-button[data-mark="blue"] { border-color: #1971c2; background: #1971c2; color: var(--paper); }
.momentum-mark-button[data-mark="green"] { border-color: #2f9e44; background: #2f9e44; color: var(--paper); }
.momentum-mark-button[data-mark="red"] .momentum-mark-dot,
.momentum-mark-button[data-mark="blue"] .momentum-mark-dot,
.momentum-mark-button[data-mark="green"] .momentum-mark-dot {
  border: 0;
  border-radius: 50%;
  background: var(--paper);
}
/* 标记后仅剩色点：居中并稍微放大，保持按钮可点击区域 */
.momentum-mark-button[data-mark="red"],
.momentum-mark-button[data-mark="blue"],
.momentum-mark-button[data-mark="green"] {
  padding: 0;
}
.momentum-mark-button[data-mark="red"] .momentum-mark-dot,
.momentum-mark-button[data-mark="blue"] .momentum-mark-dot,
.momentum-mark-button[data-mark="green"] .momentum-mark-dot {
  width: 14px;
  height: 14px;
}

/* 行首标签：色条 + 向右渐隐的同色浅底，hover 也不遮盖 */
.momentum-table tbody tr.momentum-mark-red td:first-child {
  box-shadow: inset 4px 0 0 #c92a2a;
  background: linear-gradient(90deg, rgba(201, 42, 42, .10), rgba(201, 42, 42, 0) 65%);
}
.momentum-table tbody tr.momentum-mark-blue td:first-child {
  box-shadow: inset 4px 0 0 #1971c2;
  background: linear-gradient(90deg, rgba(25, 113, 194, .11), rgba(25, 113, 194, 0) 65%);
}
.momentum-table tbody tr.momentum-mark-green td:first-child {
  box-shadow: inset 4px 0 0 #2f9e44;
  background: linear-gradient(90deg, rgba(47, 158, 68, .11), rgba(47, 158, 68, 0) 65%);
}

/* 移动端长按唤出标记菜单：抑制系统文本选择/呼出菜单 */
@media (hover: none) {
  .momentum-table tbody tr {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
  }
}

/* 移动端 runner 控件防重叠：
   桌面端给 .portfolio-runner 首个 label 设置了 min-width（220px / 180px），在 3 列 / 12 列
   网格里会把列撑破，导致「策略 ID / 搜索」控件越过自己的列、盖住右侧的日期框与下拉框。
   移动端一律改为 min-width:0，让控件在各自网格列内收缩（select 自带省略号）。 */
@media (max-width: 720px) {
  .portfolio-runner > label,
  .portfolio-runner > label:first-child,
  #portfolioPage .portfolio-runner > label:first-child,
  #portfolioMonitorPage .portfolio-runner > label:first-child,
  .data-health-runner > label.data-health-search-label {
    min-width: 0;
    max-width: 100%;
  }
  #portfolioPage .portfolio-runner select,
  #portfolioMonitorPage .portfolio-runner select,
  .data-health-runner select,
  .data-health-search-control,
  .data-health-search-control input {
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
  }
}
