@media (max-width: 767px), (max-width: 932px) and (orientation: landscape) and (max-height: 500px) {
  :root {
    --review-canvas: #f3f6f9;
    --review-paper: #fff;
    --review-ink: #132238;
    --review-muted: #657287;
    --review-faint: #8e99aa;
    --review-brand: #354860;
    --review-brand-soft: #e7edf4;
    --review-red: #d6372e;
    --review-green: #0b7a55;
    --review-amber: #9b6500;
    --review-amber-soft: #fff7df;
    --review-line: #dfe5ec;
    --review-safe-top: env(safe-area-inset-top, 0px);
    --review-safe-bottom: env(safe-area-inset-bottom, 0px);
    --review-nav-height: 64px;
    --review-tabs-height: 44px;
    --review-filter-height: 42px;
  }

  html {
    width: 100%;
    height: 100%;
    overflow: hidden;
    overscroll-behavior: none;
    background: var(--review-canvas);
  }

  body.mobile-trade-review-active {
    position: fixed;
    inset: 0;
    width: 100%;
    min-width: 0;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
    overscroll-behavior: none;
    background: var(--review-canvas);
    color: var(--review-ink);
    font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;
  }

  .mobile-trade-review,
  .mobile-trade-review * { box-sizing: border-box; }
  .mobile-trade-review { width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden; }
  .mobile-trade-review [hidden] { display: none !important; }
  .mobile-trade-review button,
  .mobile-trade-review a { touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
  .mobile-trade-review button { color: inherit; font: inherit; }
  .mobile-trade-review svg { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
  body.mobile-trade-review-active.mobile-keyboard-input .mobile-trade-review :focus,
  body.mobile-trade-review-active.mobile-keyboard-input .mobile-bottom-nav :focus { outline: none; background-color: var(--review-brand-soft); box-shadow: inset 3px 0 0 var(--review-brand); }
  body.mobile-trade-review-active.mobile-keyboard-input :is(.mobile-journey-table,.mobile-name-table) tbody tr:focus > th,
  body.mobile-trade-review-active.mobile-keyboard-input :is(.mobile-journey-table,.mobile-name-table) tbody tr:focus > td { background-color: var(--review-brand-soft); }
  body.mobile-trade-review-active:not(.mobile-keyboard-input) .mobile-trade-review :focus,
  body.mobile-trade-review-active:not(.mobile-keyboard-input) .mobile-bottom-nav :focus { outline: none; }
  .mobile-review-sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }

  .mobile-review-skip { position: fixed; z-index: 100; top: -64px; left: 12px; padding: 10px 14px; background: var(--review-ink); color: #fff; text-decoration: none; }
  .mobile-review-skip:focus { top: calc(8px + var(--review-safe-top)); }

  .mobile-review-header {
    position: relative;
    flex: 0 0 auto;
    z-index: 30;
    top: 0;
    width: min(100%, 430px);
    min-height: calc(56px + var(--review-safe-top));
    margin: 0 auto;
    padding: calc(4px + var(--review-safe-top)) 12px 4px;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    align-items: center;
    background: var(--review-brand);
    color: #fff;
  }
  .mobile-review-header > div { min-width: 0; text-align: center; }
  .mobile-review-header h1 { margin: 0; overflow: hidden; font-size: 16px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
  .mobile-review-header p { margin: 2px 0 0; overflow: hidden; color: rgba(255,255,255,.8); font-size: 12px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
  .mobile-icon-button { width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 0; background: transparent; }
  .mobile-icon-button svg { width: 22px; height: 22px; }

  #mobileReviewMain {
    min-height: 0;
    flex: 1 1 auto;
    width: min(100%, 430px);
    margin: 0 auto;
    padding: 0 0 calc(20px + var(--review-nav-height) + var(--review-safe-bottom));
    overflow-x: clip;
    overflow-y: auto;
    overflow-anchor: none;
    overscroll-behavior-y: none;
    -webkit-overflow-scrolling: touch;
    scroll-padding: 48px 0 calc(var(--review-nav-height) + var(--review-safe-bottom) + 16px);
    background: var(--review-paper);
  }
  /* The page has one vertical scrollport. Only data cells translate on X;
     chrome and stock names never enter a horizontal scrolling layer. */
  #mobileReviewMain { overflow-x: hidden; overscroll-behavior-x: none; }

  .mobile-review-context { min-height: 52px; display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); border-bottom: 1px solid var(--review-line); }
  .mobile-account-switch,
  .mobile-month-switch { min-width: 0; min-height: 52px; padding: 6px 12px; border: 0; background: var(--review-paper); text-align: left; }
  .mobile-account-switch { display: flex; align-items: center; gap: 8px; }
  .mobile-account-mark { flex: 0 0 auto; width: 32px; height: 32px; display: grid; place-items: center; background: var(--review-brand); color: #fff; font-size: 13px; font-weight: 800; }
  .mobile-account-switch small,
  .mobile-account-switch strong,
  .mobile-month-switch small,
  .mobile-month-switch strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .mobile-review-context small { margin-bottom: 2px; color: var(--review-faint); font-size: 10px; }
  .mobile-review-context strong { color: var(--review-ink); font-size: 13px; }
  .mobile-month-switch { display: grid; grid-template-columns: minmax(0,1fr) 20px; align-items: center; gap: 6px; border-left: 1px solid var(--review-line); }
  .mobile-month-switch svg { width: 20px; color: var(--review-muted); }
  .mobile-review-context button:disabled { opacity: .65; }
  /* Account/month changes keep the committed context visible until the next
     payload is ready. Disabled still blocks duplicate requests, without a
     gray flash that makes the header look frozen. */
  .mobile-review-context.is-switching button:disabled { opacity: 1; }

  .mobile-review-state:empty { display: none; }
  .mobile-review-notice { display: flex; align-items: flex-start; gap: 8px; padding: 10px 16px; border-bottom: 1px solid #ebcf7a; background: var(--review-amber-soft); color: #674400; font-size: 12px; line-height: 1.5; }
  .mobile-review-notice svg { flex: 0 0 auto; width: 18px; margin-top: 1px; }

  .mobile-statement { border-bottom: 1px solid var(--review-line); background: var(--review-paper); }
  .mobile-statement-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 12px 16px 4px; }
  .mobile-statement-head strong { font-size: 24px; font-variant-numeric: tabular-nums; }
  .mobile-statement-head span { color: var(--review-muted); font-size: 11px; }
  .mobile-net-pnl { padding: 5px 16px 10px; }
  .mobile-net-pnl small,
  .mobile-net-pnl strong { display: block; }
  .mobile-net-pnl small { color: var(--review-muted); font-size: 10px; }
  .mobile-net-pnl strong { margin-top: 2px; font-size: clamp(34px, 10vw, 44px); font-variant-numeric: tabular-nums; letter-spacing: -.04em; }
  .mobile-win-loss { height: 5px; display: flex; margin: 0 16px; overflow: hidden; background: var(--review-line); }
  .mobile-win-loss .wins { background: var(--review-red); }
  .mobile-win-loss .losses { background: var(--review-green); }
  .mobile-win-loss-labels { display: flex; justify-content: space-between; gap: 8px; padding: 5px 16px 10px; color: var(--review-muted); font-size: 10px; }
  .mobile-metrics { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-top: 1px solid var(--review-line); }
  .mobile-metric { min-width: 0; min-height: 58px; padding: 9px 8px 8px 16px; border-right: 1px solid var(--review-line); }
  .mobile-metric:nth-child(3n) { border-right: 0; }
  .mobile-metric:nth-child(n+4) { border-top: 1px solid var(--review-line); }
  .mobile-metric strong,
  .mobile-metric span { display: block; overflow-wrap: anywhere; }
  .mobile-metric strong { font-size: 15px; font-variant-numeric: tabular-nums; }
  .mobile-metric span { margin-top: 3px; color: var(--review-muted); font-size: 10px; line-height: 1.25; }

  .mobile-review-tabs { position: sticky; z-index: 20; top: 0; height: var(--review-tabs-height); display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); padding: 0 6px; border-bottom: 1px solid var(--review-line); background: rgba(246,246,246,.96); backdrop-filter: blur(12px); }
  .mobile-review-tabs button { position: relative; min-width: 0; min-height: 44px; padding: 4px 2px; border: 0; background: transparent; color: var(--review-muted); font-size: 11px; white-space: nowrap; }
  .mobile-review-tabs button[aria-selected="true"] { color: var(--review-brand); font-weight: 750; }
  .mobile-review-tabs button[aria-selected="true"]::after { content: ""; position: absolute; bottom: 0; left: 50%; width: 18px; height: 2px; background: var(--review-brand); transform: translateX(-50%); }

  .mobile-review-section { padding: 18px 16px 0; }
  .mobile-review-section.compare,
  .mobile-review-section.trades { padding-inline: 0; padding-top: 0; }
  .mobile-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; margin: 0 0 10px; }
  .mobile-section-head h2 { margin: 0; font-size: 16px; }
  .mobile-section-head p { margin: 3px 0 0; color: var(--review-muted); font-size: 11px; }

  .mobile-trend-summary { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--review-line); }
  .mobile-trend-summary > div { display: flex; min-width: 0; align-items: baseline; justify-content: space-between; gap: 5px; padding: 9px 8px; }
  .mobile-trend-summary > div + div { border-left: 1px solid var(--review-line); }
  .mobile-trend-summary span { color: var(--review-muted); font-size: 10px; }
  .mobile-trend-summary strong { flex: 0 0 auto; font-size: 14px; font-variant-numeric: tabular-nums; }
  .mobile-ledger { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); border-left: 1px solid var(--review-line); }
  .mobile-ledger-day { min-width: 0; min-height: 62px; padding: 6px 2px; border-right: 1px solid var(--review-line); border-bottom: 1px solid var(--review-line); text-align: center; }
  .mobile-ledger-day time,
  .mobile-ledger-day span { display: block; color: var(--review-muted); font-size: 9px; line-height: 1.45; white-space: nowrap; }
  .mobile-ledger-day strong { color: var(--review-ink); font-size: 11px; }
  .mobile-ledger-day .has-added strong { color: var(--review-red); }
  .mobile-ledger-note,
  .mobile-table-note { margin: 8px 0 18px; color: var(--review-muted); font-size: 10px; line-height: 1.55; }

  .mobile-concepts { border-top: 1px solid var(--review-line); background: #fff; }
  .mobile-concept,
  .mobile-theme-tag { --theme-source:#646a73; --theme-tone-color:#fff; --theme-tone-weight:0%; --theme-bg-strength:13%; --concept-accent:var(--theme-source); --concept-accent:color-mix(in srgb,var(--theme-source),var(--theme-tone-color) var(--theme-tone-weight)); --concept-bg:#f2f4f6; --concept-bg:color-mix(in srgb,var(--concept-accent) var(--theme-bg-strength),#fff); }
  .mobile-concept { min-height: 48px; display: grid; grid-template-columns: minmax(72px,.85fr) minmax(84px,1.55fr) auto; align-items: center; gap: 10px; padding: 6px 8px; border-bottom: 1px solid var(--review-line); background: #fff; }
  .mobile-concept-name { min-width: 0; max-width: 100%; height: 24px; display: inline-flex; align-items: center; justify-self: start; overflow: hidden; padding: 0 8px; border-radius: 4px; background: var(--concept-bg); color: var(--concept-accent); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
  .mobile-concept-track { height: 6px; overflow: hidden; border-radius: 999px; background: var(--review-brand-soft); }
  .mobile-concept-track i { display: block; height: 100%; border-radius: inherit; background: var(--review-brand); }
  .mobile-concept-value { color: var(--review-red); font-size: 13px; font-weight: 750; font-variant-numeric: tabular-nums; white-space: nowrap; }
  .theme-blue { --theme-source:#1456f0; }
  .theme-wathet { --theme-source:#076a94; }
  .theme-green { --theme-source:#2ea121; }
  .theme-red { --theme-source:#d83931; }
  .theme-lime { --theme-source:#5c6d08; }
  .theme-carmine { --theme-source:#b82879; }
  .theme-purple { --theme-source:#6425d0; }
  .theme-orange { --theme-source:#a44904; }
  .theme-gray { --theme-source:#646a73; }
  .theme-turquoise { --theme-source:#067062; }
  .theme-yellow { --theme-source:#865b03; }
  .tone-lighter { --theme-tone-color:#fff; --theme-tone-weight:20%; --theme-bg-strength:9%; }
  .tone-light { --theme-tone-color:#fff; --theme-tone-weight:10%; --theme-bg-strength:11%; }
  .tone-standard { --theme-tone-color:#fff; --theme-tone-weight:0%; --theme-bg-strength:13%; }
  .tone-dark { --theme-tone-color:#000; --theme-tone-weight:8%; --theme-bg-strength:15%; }
  .tone-darker { --theme-tone-color:#000; --theme-tone-weight:16%; --theme-bg-strength:17%; }

  .mobile-matrix-filter { position: sticky; z-index: 19; top: var(--review-tabs-height); left: 0; width: min(100vw,430px); height: var(--review-filter-height); display: flex; align-items: stretch; border-bottom: 1px solid var(--review-line); background: #fff; }
  .mobile-journey-switch { flex: 1 1 auto; min-width: 0; min-height: 38px; display: flex; align-items: center; justify-content: space-between; gap: 5px; padding: 0 10px; border: 0; background: #fff; color: var(--review-brand); font-size: 12px; font-weight: 750; text-align: left; }
  .mobile-journey-switch svg { flex: 0 0 auto; width: 16px; }
  .mobile-path-modes { flex: 0 0 174px; display: grid; grid-template-columns: repeat(3,1fr); border-left: 1px solid var(--review-line); }
  .mobile-path-modes button { position: relative; min-width: 0; min-height: 38px; padding: 0 2px; border: 0; background: #fff; color: var(--review-muted); font-size: 11px; }
  .mobile-path-modes button[aria-pressed="true"] { color: var(--review-brand); font-weight: 800; }
  .mobile-path-modes button[aria-pressed="true"]::after { content:""; position:absolute; right:14px; bottom:0; left:14px; height:2px; background:var(--review-brand); }
  .mobile-fixed-mode { flex: 0 0 92px; display: grid; place-items: center; border-left: 1px solid var(--review-line); color: var(--review-brand); font-size: 12px; font-weight: 700; }

  .mobile-review-section.compare,
  .mobile-review-section.trades { width: 100%; min-width: 0; }
  .journey-table-scroller {
    --review-name-width: 86px;
    position: relative;
    width: 100%;
    min-width: 0;
    display: grid;
    grid-template-columns: var(--review-name-width) minmax(0,1fr);
    grid-template-rows: 34px auto;
    overflow: visible;
    touch-action: auto;
    overflow-anchor: none;
    timeline-scope: --review-native-x;
    background: #fff;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
  }
  .mobile-native-data-x {
    min-width: 0;
    grid-column: 1 / 3;
    grid-row: 2;
    margin-top: -34px;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: none;
    touch-action: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    scroll-timeline-name: --review-native-x;
    scroll-timeline-axis: inline;
  }
  .mobile-native-data-x::-webkit-scrollbar,
  .mobile-native-header::-webkit-scrollbar { display: none; }
  .mobile-journey-table,
  .mobile-name-table,
  .mobile-native-header-table { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; color: #172033; font-size: 13px; font-variant-numeric: tabular-nums; }
  :is(.mobile-journey-table,.mobile-name-table,.mobile-native-header-table) th,
  :is(.mobile-journey-table,.mobile-name-table,.mobile-native-header-table) td { width: 82px; min-width: 82px; height: 44px; padding: 0 6px; border-bottom: 1px solid #e4e7ec; background: #fff; text-align: left; white-space: nowrap; }
  .mobile-journey-table thead th,
  .mobile-native-header-table th { height: 34px; color: var(--review-muted); font-size: 12px; font-weight: 500; }
  :is(.mobile-journey-table,.mobile-native-header-table) thead th button,
  .mobile-native-header-table th button { width: 100%; min-height: 34px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; text-align: left; white-space: nowrap; }
  .mobile-native-header-table th[aria-sort="ascending"] button::after { content: " ↑"; }
  .mobile-native-header-table th[aria-sort="descending"] button::after { content: " ↓"; }
  .mobile-journey-table th:first-child,
  .mobile-name-table th:first-child { width: var(--review-name-width); min-width: var(--review-name-width); max-width: var(--review-name-width); padding-left: 10px; background: #fff; }
  .mobile-journey-table { min-width: 0; table-layout: fixed; transform: none !important; }
  .mobile-native-corner,
  .mobile-native-header { position: sticky; z-index: 22; top: var(--review-tabs-height); grid-row: 1; height: 34px; overflow: hidden; background: #fff; }
  .compare :is(.mobile-native-corner,.mobile-native-header) { top: calc(var(--review-tabs-height) + var(--review-filter-height)); }
  .mobile-native-corner { grid-column: 1; padding-left: 10px; border-bottom: 1px solid #e4e7ec; color: var(--review-muted); font-size: 12px; line-height: 34px; }
  .mobile-native-corner button { min-height: 32px; max-width: 100%; margin: 1px 0; padding: 0; display: flex; align-items: center; border: 0; background: transparent; color: var(--review-muted); font: inherit; font-size: 12px; white-space: nowrap; }
  .mobile-native-corner button > span { display: inline-flex; height: 22px; line-height: 22px; align-items: center; border-radius: 6px; }
  .mobile-native-corner button[aria-label^="取消排序"] { color: var(--review-brand); }
  .mobile-native-corner button[aria-label^="取消排序"] > span { padding: 0 6px; background: var(--review-brand-soft); }
  .mobile-native-header { grid-column: 2; scrollbar-width: none; }
  .mobile-native-header-table { min-width: 0; table-layout: fixed; }
  .mobile-native-header-actions { position: absolute; inset: 0 auto auto 0; width: max-content; min-width: 100%; height: 34px; display: flex; pointer-events: none; }
  .mobile-native-header-actions > span { flex: 0 0 auto; height: 34px; }
  .mobile-native-header-actions button { width: 100%; min-height: 34px; padding: 0 6px; border: 0; background: transparent; color: var(--review-muted); font: inherit; font-size: 12px; text-align: left; white-space: nowrap; pointer-events: auto; }
  .mobile-native-header-actions [data-sort-direction="ascending"] button::after { content: " ↑"; }
  .mobile-native-header-actions [data-sort-direction="descending"] button::after { content: " ↓"; }
  .has-native-scroll-timeline :is(.mobile-native-header-table,.mobile-native-header-actions) {
    animation: mobile-review-header-follow linear both;
    animation-timeline: --review-native-x;
    animation-range: 0% 100%;
  }
  @keyframes mobile-review-header-follow {
    from { transform: translate3d(0,0,0); }
    to { transform: translate3d(var(--review-header-shift,0px),0,0); }
  }
  .mobile-name-table { position: relative; z-index: 18; grid-column: 1; grid-row: 2; min-width: 0; table-layout: fixed; pointer-events: none; background: #fff; }
  .mobile-table-note { left: 0; width: min(100vw,430px); }
  :is(.mobile-journey-table,.mobile-name-table) tbody tr { cursor: pointer; }
  :is(.mobile-journey-table,.mobile-name-table) tbody th strong,
  :is(.mobile-journey-table,.mobile-name-table) tbody th span { display: block; overflow: hidden; text-overflow: ellipsis; }
  :is(.mobile-journey-table,.mobile-name-table) tbody th strong { font-size: 13px; font-weight: 650; }
  :is(.mobile-journey-table,.mobile-name-table) .journey-date { margin-top: 2px; color: var(--review-muted); font-size: 10px; font-weight: 500; }
  :is(.mobile-journey-table,.mobile-name-table) td { font-size: 13px; font-weight: 600; }
  :is(.mobile-journey-table,.mobile-name-table) .pending { color: var(--review-amber); }
  :is(.mobile-journey-table,.mobile-name-table) .missing { color: var(--review-muted); }
  .mobile-trade-table th:nth-child(4), .mobile-trade-table td:nth-child(4) { width: 116px; min-width: 116px; }
  .mobile-trade-table th:nth-child(6), .mobile-trade-table td:nth-child(6) { width: 94px; min-width: 94px; }
  .mobile-trade-table th:nth-child(8), .mobile-trade-table td:nth-child(8) { width: 156px; min-width: 156px; }
  .mobile-do-t-table th:nth-child(2), .mobile-do-t-table td:nth-child(2) { width: 94px; min-width: 94px; }
  .mobile-do-t-table th:nth-child(3), .mobile-do-t-table td:nth-child(3),
  .mobile-do-t-table th:nth-child(4), .mobile-do-t-table td:nth-child(4) { width: 118px; min-width: 118px; }
  .mobile-do-t-table th:nth-child(5), .mobile-do-t-table td:nth-child(5) { width: 116px; min-width: 116px; }
  .mobile-do-t-table th:nth-child(6), .mobile-do-t-table td:nth-child(6),
  .mobile-do-t-table th:nth-child(7), .mobile-do-t-table td:nth-child(7),
  .mobile-do-t-table th:nth-child(8), .mobile-do-t-table td:nth-child(8) { width: 94px; min-width: 94px; }
  .mobile-do-t-kind { display:inline-flex; min-height:24px; align-items:center; padding:2px 7px; border-radius:4px; font-size:11px; font-weight:700; line-height:1; white-space:nowrap; }
  .mobile-do-t-kind-buy-first { background:#e8f0fb; color:#29547d; }
  .mobile-do-t-kind-sell-first { background:#fff0df; color:#925414; }
  .mobile-theme-tag { display: inline-flex; max-width: 100%; min-height: 24px; align-items: center; padding: 3px 8px; overflow: hidden; background: var(--concept-bg); color: var(--concept-accent); font-size: 11px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
  .positive { color: var(--review-red) !important; }
  .negative { color: var(--review-green) !important; }

  .mobile-review-full-state { min-height: 360px; display: grid; align-content: center; justify-items: center; padding: 32px 24px; text-align: center; }
  .mobile-review-full-state svg { width: 42px; height: 42px; padding: 9px; background: var(--review-brand-soft); color: var(--review-brand); }
  .mobile-review-full-state h2 { margin: 14px 0 6px; font-size: 18px; }
  .mobile-review-full-state p { max-width: 300px; margin: 0 0 16px; color: var(--review-muted); font-size: 12px; line-height: 1.65; }
  .mobile-primary-button { width: 100%; min-height: 48px; padding: 0 16px; border: 0; display: grid; place-items: center; background: var(--review-brand); color: #fff; font-weight: 750; text-decoration: none; }
  .mobile-review-loading { height: 238px; position: relative; overflow: hidden; background: #e7ebf0; }
  .mobile-review-loading::after { content:""; position:absolute; inset:0; transform:translateX(-100%); background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent); animation:mobile-review-shimmer 1.2s infinite; }
  @keyframes mobile-review-shimmer { to { transform:translateX(100%); } }

  .mobile-bottom-nav { position: fixed; z-index: 40; right: 0; bottom: 0; left: 0; width: min(100%,430px); min-height: calc(var(--review-nav-height) + var(--review-safe-bottom)); margin: 0 auto; padding: 4px 8px var(--review-safe-bottom); display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); border-top: 1px solid #dddfe3; background: rgba(241,241,241,.98); }
  .mobile-bottom-nav a[aria-current="page"] { color: var(--review-brand); font-weight: 700; }
  .mobile-bottom-nav a[aria-current="page"] svg { fill: currentColor; stroke: currentColor; }
  .mobile-bottom-nav .mobile-review-nav-icon,
  .mobile-bottom-nav a[aria-current="page"] .mobile-review-nav-icon,
  .mobile-bottom-nav .mobile-market-nav-icon,
  .mobile-bottom-nav a[aria-current="page"] .mobile-market-nav-icon { fill: none; }
  .mobile-bottom-nav a[aria-current="page"] .mobile-review-nav-icon { stroke-width: 2.2; }
  .mobile-bottom-nav a { min-width: 44px; min-height: 56px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: #4b5565; font-size: 12px; font-weight: 600; line-height: 1.2; text-decoration: none; }
  .mobile-bottom-nav svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; }
  .mobile-bottom-nav .mobile-stock-nav-icon { stroke-width: 1.5; }

  .mobile-review-dialog { width: 100%; max-width: 430px; max-height: min(76dvh,580px); margin: auto auto 0; padding: 12px 16px calc(18px + var(--review-safe-bottom)); overflow-y: auto; border: 0; background: #fff; color: var(--review-ink); }
  .mobile-review-dialog::backdrop { background: rgba(10,20,34,.45); backdrop-filter: blur(2px); }
  .mobile-review-dialog > header { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
  .mobile-review-dialog h2 { margin: 0; font-size: 18px; }
  .mobile-review-dialog header p { margin: 0 0 2px; color: var(--review-muted); font-size: 10px; }
  .mobile-review-dialog > p { color: var(--review-muted); font-size: 12px; line-height: 1.7; }
  .mobile-month-head { min-height: 48px; display: grid; grid-template-columns: 48px 1fr 48px; align-items: center; border: 1px solid var(--review-line); }
  .mobile-month-head strong { text-align: center; }
  .mobile-month-head button { width: 48px; height: 48px; border: 0; background: transparent; color: var(--review-brand); font-size: 26px; }
  .mobile-month-head button:disabled { color: #b8c0ca; }
  .mobile-month-grid { display: grid; grid-template-columns: repeat(3,1fr); border-left: 1px solid var(--review-line); }
  .mobile-month-grid button { min-height: 46px; border: 0; border-right: 1px solid var(--review-line); border-bottom: 1px solid var(--review-line); background: #fff; }
  .mobile-month-grid button[aria-selected="true"] { background: var(--review-brand); color: #fff; font-weight: 750; }
  .mobile-month-grid button:disabled { background: #f7f8fa; color: #b1bac6; }
  .mobile-month-dialog > p { margin: 8px 2px 0; color: var(--review-muted); font-size: 10px; }
  .mobile-detail-grid { display: grid; grid-template-columns: repeat(2,1fr); border-top: 1px solid var(--review-line); }
  .mobile-detail-grid > div { min-width: 0; padding: 10px 4px; border-bottom: 1px solid var(--review-line); }
  .mobile-detail-grid > div:nth-child(odd) { border-right: 1px solid var(--review-line); }
  .mobile-detail-grid span,
  .mobile-detail-grid strong { display: block; overflow-wrap: anywhere; }
  .mobile-detail-grid span { color: var(--review-muted); font-size: 10px; }
  .mobile-detail-grid strong { margin-top: 4px; font-size: 12px; }
  .mobile-day-grid { display: grid; grid-template-columns: repeat(4,1fr); border-top: 1px solid var(--review-line); border-left: 1px solid var(--review-line); }
  .mobile-day { min-height: 64px; display: grid; align-content: center; justify-items: center; gap: 4px; padding: 6px 3px; border-right: 1px solid var(--review-line); border-bottom: 1px solid var(--review-line); }
  .mobile-day span { color: var(--review-muted); font-size: 10px; }
  .mobile-day strong { font-size: 12px; font-variant-numeric: tabular-nums; }
  .mobile-day.pending { background: var(--review-amber-soft); color: var(--review-amber); }

  body.mobile-trade-review-active .trade-chart-dialog { width:100vw; max-width:430px; height:clamp(320px,48dvh,360px); max-height:calc(100dvh - 12px); margin:auto auto 0; padding:0; overflow:hidden; border:0; border-radius:16px 16px 0 0; background:#fff; box-shadow:0 -10px 32px rgba(10,20,34,.16); }
  body.mobile-trade-review-active .trade-chart-dialog[open] { animation:mobile-chart-sheet-in .18s cubic-bezier(.2,.8,.2,1) both; }
  body.mobile-trade-review-active .trade-chart-dialog[open]::backdrop { background:rgba(10,20,34,.38); animation:mobile-chart-backdrop-in .14s ease-out both; }
  body.mobile-trade-review-active .trade-chart-dialog.is-closing { animation:mobile-chart-sheet-out .12s cubic-bezier(.4,0,1,1) both; }
  body.mobile-trade-review-active .trade-chart-dialog.is-closing::backdrop { animation:mobile-chart-backdrop-out .1s ease-in both; }
  @keyframes mobile-chart-sheet-in { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }
  @keyframes mobile-chart-sheet-out { to { opacity:0; transform:translateY(12px); } }
  @keyframes mobile-chart-backdrop-in { from { background:rgba(10,20,34,0); } to { background:rgba(10,20,34,.38); } }
  @keyframes mobile-chart-backdrop-out { to { background:rgba(10,20,34,0); } }
  body.mobile-trade-review-active .trade-chart-panel { height:100%; max-height:none; grid-template-rows:12px 44px minmax(0,1fr) calc(36px + var(--review-safe-bottom)); }
  body.mobile-trade-review-active .trade-chart-drag-zone { grid-row:1; min-height:12px; background:transparent; touch-action:pan-x; }
  body.mobile-trade-review-active .trade-chart-head { grid-row:2; min-height:44px; padding:0 4px 0 12px; display:grid; grid-template-columns:minmax(0,1fr) 96px 44px; grid-template-rows:44px; align-items:center; gap:0; border:0; background:#fff; }
  body.mobile-trade-review-active .trade-chart-identity { min-width:0; grid-column:1; grid-row:1; display:flex; align-items:center; gap:7px; overflow:hidden; }
  body.mobile-trade-review-active .trade-chart-head h2 { min-width:0; overflow:hidden; font-size:17px; text-overflow:ellipsis; white-space:nowrap; }
  body.mobile-trade-review-active .trade-chart-head p { display:none; }
  body.mobile-trade-review-active .trade-chart-profit-label { flex:0 0 auto; margin:0; color:var(--review-muted); font-size:0; white-space:nowrap; }
  body.mobile-trade-review-active .trade-chart-profit { margin:0; font-size:14px; font-variant-numeric:tabular-nums; }
  body.mobile-trade-review-active .trade-chart-head > .trade-chart-tabs { min-width:96px; width:96px; min-height:44px; grid-column:2; grid-row:1; display:flex!important; align-items:stretch; justify-content:center; gap:0; padding:0; border:0; }
  body.mobile-trade-review-active .trade-chart-head > .trade-chart-tabs button { min-width:48px; width:48px; height:44px; min-height:44px; padding:0; border:0; border-bottom:2px solid transparent; border-radius:0; background:transparent; color:var(--review-muted); font-size:12px; font-weight:650; touch-action:manipulation; }
  body.mobile-trade-review-active .trade-chart-head > .trade-chart-tabs button[aria-selected="true"] { border-bottom-color:var(--review-brand); color:var(--review-brand); }
  body.mobile-trade-review-active .trade-chart-head > .trade-chart-tabs button:focus-visible { outline:2px solid var(--review-brand); outline-offset:-3px; }
  body.mobile-trade-review-active .trade-chart-actions { min-width:0; grid-column:3; grid-row:1; display:grid; place-items:center; }
  body.mobile-trade-review-active .trade-chart-head button { min-width:44px; width:44px; height:44px; min-height:44px; padding:0; border:0; }
  body.mobile-trade-review-active #tradeChartClose { width:44px; border:0; border-radius:0; background:transparent; box-shadow:none; font-size:20px; text-decoration:none; }
  body.mobile-trade-review-active :is(.trade-chart-close,.trade-chart-nav-button):active:not(:disabled) { background:transparent; opacity:.62; }
  body.mobile-trade-review-active :is(.trade-chart-close,.trade-chart-nav-button):focus-visible { outline:none; background:transparent; color:var(--review-ink); box-shadow:none; filter:none; font-weight:750; text-decoration:none; }
  body.mobile-trade-review-active:not(.mobile-keyboard-input) .trade-chart-head button:focus { outline:none; box-shadow:none; }
  body.mobile-trade-review-active .trade-chart-scroll { grid-row:3; min-height:0; max-height:none; display:grid; place-items:center; overflow:hidden; border:0; outline:0; background:#fff; touch-action:none; overscroll-behavior:none; }
  body.mobile-trade-review-active .trade-chart-scroll.is-switching::after { display:none; content:none; animation:none; }
  body.mobile-trade-review-active .trade-chart-scroll:focus-visible { outline:0; box-shadow:inset 0 0 0 1px rgba(53,72,96,.18); }
  body.mobile-trade-review-active .trade-chart-scroll img { width:100%; min-width:0; max-width:100%; height:100%; max-height:100%; min-height:0; aspect-ratio:430 / 320; object-fit:contain; }
  body.mobile-trade-review-active .trade-minute-view { position:relative; width:100%; height:100%; min-height:0; overflow:hidden; }
  body.mobile-trade-review-active .trade-chart-scroll #tradeMinuteImage { display:block; width:100%; height:100%; min-height:0; max-height:100%; aspect-ratio:auto; object-fit:fill; }
  body.mobile-trade-review-active .trade-minute-loading,
  body.mobile-trade-review-active .trade-minute-error { width:100%; height:100%; min-height:0; padding:12px; display:grid; place-items:center; align-content:center; gap:8px; color:var(--review-muted); font-size:12px; text-align:center; }
  body.mobile-trade-review-active .trade-minute-error b { font-size:13px; }
  body.mobile-trade-review-active .trade-minute-error button { min-height:44px; margin:0; padding:0 18px; border:0; background:transparent; color:var(--review-brand); font-size:12px; font-weight:700; }
  body.mobile-trade-review-active .trade-minute-error.is-overlay { position:absolute; z-index:3; right:8px; bottom:8px; width:min(300px,calc(100% - 16px)); height:auto; min-height:0; padding:8px; border:1px solid var(--review-line); border-radius:8px; background:rgba(255,255,255,.97); box-shadow:0 3px 14px rgba(22,32,44,.12); }
  body.mobile-trade-review-active .trade-chart-loading,
  body.mobile-trade-review-active .trade-chart-error { width:100%; min-height:100%; }
  body.mobile-trade-review-active .trade-chart-loading { color:transparent; font-size:12px; }
  body.mobile-trade-review-active .trade-chart-loading::after { content:"正在生成周期图"; color:var(--review-muted); opacity:0; animation:mobile-chart-loading-copy 0s linear 1s forwards; }
  @keyframes mobile-chart-loading-copy { to { opacity:1; } }
  body.mobile-trade-review-active .trade-chart-fallback { width:100%; max-width:390px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.mobile-trade-review-active .trade-chart-fallback div { border-right:1px solid var(--review-line); border-bottom:1px solid var(--review-line); }
  body.mobile-trade-review-active .trade-chart-retry { min-height:44px; padding:0 12px; border:0; background:transparent; color:var(--review-brand); font-size:12px; font-weight:700; }
  body.mobile-trade-review-active .trade-chart-foot { grid-row:4; min-height:calc(36px + var(--review-safe-bottom)); padding:0 0 var(--review-safe-bottom); overflow:visible; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:end; border:0; background:#fff; color:var(--review-muted); white-space:nowrap; }
  body.mobile-trade-review-active .trade-chart-foot .trade-chart-nav-button { width:100%; min-width:0; min-height:44px; margin-top:-8px; padding:0 6px; display:inline-flex; align-items:center; justify-content:center; gap:4px; border:0; border-radius:0; appearance:none; -webkit-appearance:none; background:transparent; box-shadow:none; color:var(--review-muted); font-size:12px; font-weight:600; text-decoration:none; touch-action:manipulation; -webkit-tap-highlight-color:transparent; -webkit-touch-callout:none; }
  body.mobile-trade-review-active .trade-chart-foot .trade-chart-nav-button i { font:normal 16px/1 system-ui,sans-serif; }
  body.mobile-trade-review-active .trade-chart-foot .trade-chart-nav-button span { position:static; width:auto; height:auto; margin:0; overflow:visible; clip:auto; font-size:12px; white-space:nowrap; }
  body.mobile-trade-review-active .trade-chart-foot .trade-chart-nav-button:disabled { opacity:.32; }
  body.mobile-trade-review-active .trade-chart-position { align-self:center; color:var(--review-muted); font-size:11px; text-align:center; font-variant-numeric:tabular-nums; }
  body.mobile-trade-review-active .trade-chart-position.is-error { color:var(--review-amber); }
  @media (hover:hover) { body.mobile-trade-review-active :is(.trade-chart-close,.trade-chart-nav-button):hover:not(:disabled) { border:0; background:transparent; color:var(--review-ink); box-shadow:none; } }

  @media (max-width: 374px) {
    .journey-table-scroller { --review-name-width: 82px; }
    :is(.mobile-journey-table,.mobile-name-table,.mobile-native-header-table) th,
    :is(.mobile-journey-table,.mobile-name-table,.mobile-native-header-table) td { width: 80px; min-width: 80px; padding-inline: 5px; }
    .mobile-path-modes { flex-basis: 158px; }
    .mobile-path-modes button { font-size: 10px; }
    .mobile-metric { padding-left: 10px; }
    body.mobile-trade-review-active .trade-chart-dialog { height:310px; }
    body.mobile-trade-review-active .trade-chart-head h2 { max-width:120px; }
  }

  @media (orientation: landscape) and (max-height: 500px) {
    .mobile-review-header,
    #mobileReviewMain,
    .mobile-bottom-nav { width: min(100%,840px); }
    .mobile-statement { display: grid; grid-template-columns: .9fr 1.1fr; }
    .mobile-statement-head,
    .mobile-net-pnl,
    .mobile-win-loss,
    .mobile-win-loss-labels { grid-column: 1; }
    .mobile-metrics { grid-column: 2; grid-row: 1 / span 4; border-top: 0; border-left: 1px solid var(--review-line); }
    .mobile-review-tabs { top: 0; }
    body.mobile-trade-review-active .trade-chart-dialog { max-width:840px; height:min(72dvh,300px); max-height:calc(100dvh - 8px); border-radius:14px 14px 0 0; }
    body.mobile-trade-review-active .trade-chart-panel { grid-template-rows:8px 40px minmax(0,1fr) calc(28px + var(--review-safe-bottom)); }
    body.mobile-trade-review-active .trade-chart-drag-zone { min-height:8px; }
    body.mobile-trade-review-active .trade-chart-head { min-height:40px; grid-template-rows:40px; }
    body.mobile-trade-review-active .trade-chart-head button { height:40px; }
    body.mobile-trade-review-active .trade-chart-head > .trade-chart-tabs button { height:44px; margin-top:-2px; }
    body.mobile-trade-review-active .trade-chart-foot { min-height:calc(28px + var(--review-safe-bottom)); }
    body.mobile-trade-review-active .trade-chart-foot .trade-chart-nav-button { min-height:44px; margin-top:-16px; }
  }

  @media (orientation: landscape) and (max-height: 320px) {
    body.mobile-trade-review-active .trade-chart-dialog { height:min(86dvh,280px); }
  }

  @media (prefers-reduced-motion: reduce) {
    .mobile-trade-review *, .mobile-trade-review *::before, .mobile-trade-review *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
    body.mobile-trade-review-active .trade-chart-dialog[open],
    body.mobile-trade-review-active .trade-chart-dialog[open]::backdrop { animation-duration:.08s !important; transform:none !important; }
  }
}

@media (max-width:767px), (max-width:932px) and (orientation:landscape) and (max-height:500px) {
  .mobile-do-t-summary { display:grid; grid-template-columns:1fr 1fr; overflow:hidden; margin:12px 12px 14px; border:1px solid var(--review-line); border-radius:12px; background:var(--review-paper); box-shadow:0 6px 18px rgba(19,34,56,.06); }
  .mobile-do-t-summary > div { min-width:0; padding:10px 8px; border-top:1px solid var(--review-line); text-align:center; }
  .mobile-do-t-summary > div:nth-child(2),.mobile-do-t-summary > div:nth-child(4) { border-right:1px solid var(--review-line); }
  .mobile-do-t-summary > div:first-child { grid-column:1 / -1; min-height:78px; padding:14px 16px; display:grid; align-content:center; border-top:0; background:#f8fafc; text-align:left; }
  .mobile-do-t-summary span { display:block; color:var(--review-muted); font-size:10px; }
  .mobile-do-t-summary strong { display:block; overflow:hidden; margin-top:3px; font-size:15px; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
  .mobile-do-t-summary > div:first-child strong { margin-top:4px; font-size:27px; letter-spacing:-.025em; }
}
