.review-enabled{overflow:auto!important}.review-enabled .shell{max-width:1580px;padding-bottom:30px}.review-enabled .topbar{flex-wrap:wrap;height:auto;min-height:88px;gap:12px;padding:12px 0}.review-enabled .topbar-center{flex-wrap:wrap}.review-enabled .nav-tab{white-space:nowrap;font-size:14px}.review-enabled #reviewCount{background:#db4b47;color:white;font-size:12px}.review-demo{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 20px;border-radius:14px;background:rgb(251 251 249 / 88%);backdrop-filter:blur(10px);margin-bottom:16px;font-size:14px}.review-demo{background:#edf5ef;border:1px solid #b8cdbc}.review-demo span{color:#4b6054}.review-demo label{display:flex;align-items:center;font-size:14px}.review-demo input{width:auto}.review-enabled button{cursor:pointer}.review-demo button,.review-heading button,.review-list-footer button,.review-scan button,.review-actions button,#reviewCompleted button{border:1px solid #cbd2cd;background:#fff9;border-radius:9px;padding:10px 14px;font:600 14px inherit;color:#34483e}.review-enabled button:disabled{opacity:.55;cursor:wait}.review-enabled button:focus-visible{outline:3px solid #287e61;outline-offset:3px}.review-enabled #ledger.page.active{display:block;height:auto}.review-enabled #ledger .overview-combined{width:100%;height:auto}.review-enabled #ledger .trade-list{max-height:65vh}.review-layout{display:grid;grid-template-columns:minmax(360px,.95fr) minmax(400px,1.05fr);gap:20px;align-items:start}.review-list-panel,.review-editor{background:rgb(251 251 249 / 87%);backdrop-filter:blur(14px);border-radius:20px;padding:26px;min-width:0}.review-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:20px}.review-heading h2{font-size:22px;margin:0}.review-heading span{font-size:14px;color:#536359}.review-filters{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:16px;border-bottom:1px solid #d5dcd6}.review-filters button{background:transparent;border:0;border-bottom:3px solid transparent;padding:10px 9px;font-size:14px;color:#536359}.review-filters button.active{border-bottom-color:#db4b47;color:#171f1a;font-weight:700}.review-search{display:grid;grid-template-columns:1fr 155px;gap:10px}.review-enabled input,.review-enabled select{min-width:0;font-size:15px}.review-scan{margin:14px 0;font-size:14px;color:#536359}.review-scan summary{cursor:pointer}.review-scan>div{display:flex;align-items:end;gap:10px;margin:12px 0}.review-scan label{flex:1}.review-message-list{max-height:580px;overflow:auto;min-height:260px}.review-message{display:flex;border:1px solid #e2e4de;border-left:3px solid transparent;border-radius:10px;margin-bottom:8px;background:#ffffff45;align-items:center}.review-message.selected{border-left-color:#db4b47;background:#fff3f0}.review-message>input{width:16px;margin:12px;flex-shrink:0}.review-message-button{width:100%;text-align:left;border:0;background:none;padding:16px;min-width:0;color:#18251e}.review-message-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#536359}.review-message-button p{font-size:16px;line-height:1.65;margin:9px 0;overflow-wrap:anywhere}.review-message-button small{font-size:13px;color:#59645e;line-height:1.6}.review-badge{padding:4px 9px;border-radius:16px;font-size:13px;white-space:nowrap;background:#ededeb;color:#62665f}.review-badge.review{background:#ffe5e2;color:#b93834}.review-badge.check,.review-badge.syncing{background:#fff0d5;color:#965d04}.review-badge.recorded{background:#e2f2e9;color:#207251}.review-list-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px;font-size:13px;color:#536359}.review-original{background:#fff9;border:1px solid #e0e5df;border-radius:12px;padding:18px;margin-bottom:12px}.review-original small{color:#57675d;font-size:13px}.review-original p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;font-size:16px;margin:12px 0 0}.review-original a{display:inline-block;color:#257b58;margin-top:12px}.review-reason{font-size:14px;line-height:1.6;color:#536359}.review-editor #tradeCard{padding:0;border:0;background:none;backdrop-filter:none;border-radius:0}.review-editor .quick-entry{margin-top:20px}.review-editor .quick-entry-row{grid-template-columns:minmax(0,1fr) auto}.review-editor .card-heading{display:none}.review-editor form{gap:18px}.review-editor label{font-size:14px}.review-editor .form-message{height:auto;min-height:22px;font-size:14px;margin:0;line-height:1.6}.review-editor .segmented{margin:20px 0}.review-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-top:18px}.review-actions .review-primary{background:#db4b47;color:#fff;border-color:#db4b47;margin-left:auto;padding:12px 24px}.review-empty{color:#536359;text-align:center;padding:60px 15px}.review-enabled [hidden]{display:none!important}.review-enabled .whop-confirm-stack{display:none!important}.review-enabled .source-lot-field small{font-size:13px}.review-enabled .allocation-note{font-size:13px}.review-enabled #reviewRetry{color:#af352f;border-color:#d99a94}.review-enabled .topbar-right{flex-wrap:wrap}.review-enabled .trade-meta{font-size:13px}
@media(max-width:960px){.review-layout{grid-template-columns:1fr}.review-message-list{max-height:360px}.review-enabled .shell{padding:0 16px 30px}.review-enabled .topbar{justify-content:flex-start}.review-enabled .topbar-center{order:3;width:100%}.review-list-panel,.review-editor{padding:20px}.review-editor{scroll-margin-top:20px}}
@media(max-width:480px){.review-search{grid-template-columns:1fr}.review-scan>div{flex-wrap:wrap}.review-enabled .field-row{grid-template-columns:1fr}.review-heading{flex-wrap:wrap}.review-actions button{flex:1}.review-message-head{flex-wrap:wrap}.review-demo{align-items:start}.review-enabled .nav-tab{padding:9px 8px}}

/* Keep the same viewport and content edges when switching between short/long pages. */
.review-save-feedback {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 16px;
  font-size: 14px;
  line-height: 1.6;
  color: #536359;
  overflow-wrap: anywhere;
}
.review-save-feedback:has(#reviewRetry:not([hidden])) {
  color: #af352f;
}
.review-save-feedback #reviewRetry {
  flex-shrink: 0;
  border: 1px solid #d99a94;
  border-radius: 8px;
  background: #fff4f1;
  padding: 8px 12px;
  font: inherit;
}
.review-enabled #whopStatus {
  max-width: 180px;
  white-space: normal;
  overflow-wrap: anywhere;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
}
html.review-root {
  overflow-y: scroll;
}
@supports (scrollbar-gutter: stable) {
  html.review-root {
    overflow-y: auto;
    scrollbar-gutter: stable;
  }
}
body.review-enabled {
  overflow: visible !important;
}
.review-enabled #appShell {
  width: 100%;
  max-width: 1580px;
  min-width: 0;
  margin-inline: auto;
}
.review-enabled #appShell > .page {
  width: 100%;
  max-width: none;
  min-width: 0;
  margin-inline: 0;
  box-sizing: border-box;
}
.review-enabled .overview-combined,
.review-enabled .positions-panel,
.review-enabled .review-layout {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

/* Desktop workbench: the window stays fixed; only card contents scroll. */
@media (min-width: 961px) {
  html.review-root {
    height: 100%;
    overflow: hidden;
    scrollbar-gutter: auto;
  }
  body.review-enabled {
    height: 100dvh;
    overflow: hidden !important;
  }
  .review-enabled #appShell {
    display: flex;
    flex-direction: column;
    height: 100dvh;
    max-width: 1440px;
    padding: 0 24px 18px;
    overflow: hidden;
  }
  .review-enabled .topbar {
    flex: 0 0 auto;
    min-height: 72px;
    padding-block: 10px;
    gap: 12px;
  }
  .review-demo {
    flex: 0 0 auto;
    gap: 10px;
    padding: 8px 14px;
    margin-bottom: 12px;
    font-size: 12px;
  }
  .review-demo button { padding: 6px 10px; }
  .review-enabled #appShell > .page.active {
    flex: 1 1 0;
    height: auto;
    min-height: 0;
    overflow: hidden;
  }
  .review-enabled #ledger .overview-combined {
    height: 100%;
    min-height: 0;
  }
  .review-enabled #ledger .summary { flex: 0 0 auto; padding: 20px 26px; }
  .review-enabled #ledger .history-card { min-height: 0; padding: 20px 26px; }
  .review-enabled #ledger .trade-list {
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .review-enabled #positions .positions-panel {
    height: 100%;
    overflow: auto;
    overscroll-behavior: contain;
  }
  .review-layout {
    height: 100%;
    min-height: 0;
    grid-template-columns: minmax(0, 0.44fr) minmax(0, 0.56fr);
    gap: 16px;
    align-items: stretch;
  }
  .review-list-panel,
  .review-editor {
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: 18px 20px;
    border-radius: 16px;
    overflow: hidden;
  }
  .review-heading { flex-shrink: 0; margin-bottom: 12px; }
  .review-heading h2 { font-size: 20px; }
  .review-heading button { padding: 8px 12px; }
  .review-filters { flex-shrink: 0; margin-bottom: 10px; gap: 2px; }
  .review-filters button { padding: 8px 7px; }
  .review-search { flex-shrink: 0; grid-template-columns: minmax(0, 1fr) 145px; }
  .review-scan { flex-shrink: 0; margin: 10px 0; max-height: 30%; overflow: auto; }
  .review-message-list {
    flex: 1 1 0;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .review-message-button { padding: 12px; }
  .review-message-button p { font-size: 15px; margin: 6px 0; line-height: 1.55; }
  .review-list-footer { flex-shrink: 0; margin-top: 10px; }
  .review-list-footer button { padding: 8px 10px; }
  .review-editor-body {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: 4px;
  }
  .review-original { padding: 12px 14px; margin-bottom: 8px; }
  .review-original p { margin-top: 8px; font-size: 15px; line-height: 1.55; }
  .review-reason { margin: 8px 0; }
  .review-editor .quick-entry { margin: 12px 0; }
  .review-editor .segmented { margin: 12px 0; }
  .review-editor form { gap: 12px; }
  .review-enabled input,
  .review-enabled select { padding: 9px 11px; font-size: 14px; }
  .review-save-feedback { flex-shrink: 0; margin-top: 10px; font-size: 13px; }
  .review-actions {
    flex-shrink: 0;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #dfe4dc;
    gap: 8px;
  }
  .review-actions button { padding: 9px 12px; }
  .review-actions .review-primary { padding: 10px 18px; }
}

/* Compact entry panels only; the positions page keeps its existing sizing. */
.review-filters button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
}
.review-batch-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.review-editor-tools { justify-content: flex-end; }
.review-attachments { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
.review-attachments a { color: #257b58; font-size: 13px; }
.review-record-line { display: grid; grid-template-columns: minmax(0, 1fr) 238px; align-items: center; gap: 12px; margin-top: 6px; }
#reviewMessageList:focus,
#reviewMessageList:focus-visible { outline: none; }
.review-chart-panel { display: flex; flex-direction: column; min-width: 0; min-height: 360px; padding: 24px; border-radius: 16px; background: rgb(251 251 249 / 87%); backdrop-filter: blur(14px); }
.review-chart-heading { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 8px; }
.review-chart-heading h2 { font-size: 20px; margin: 0; }
.review-chart-update { display: inline-block; margin-left: 6px; color: #67786d; font-size: 12px; font-weight: 400; white-space: nowrap; }
.review-chart-heading > span,.review-chart-panel > small { color: #67786d; font-size: 12px; }
.review-chart-legend { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 20px; font-size: 14px; }
.review-chart-legend > span { display: flex; align-items: center; gap: 6px; }
.review-chart-legend i { width: 18px; height: 3px; border-radius: 3px; }
.review-chart-legend .position-line { background: #397ec2; }
.review-chart-legend .pnl-line { background: #258360; }
.review-chart-plot { position: relative; flex: 1 1 0; min-height: 200px; margin: 12px 0; }
.review-chart-plot canvas { position: absolute; display: block; width: 100%; height: 100%; }
.review-chart-detail { min-height: 42px; margin: 0 0 8px; color: #536359; font-size: 13px; line-height: 1.6; }
@media (min-width: 961px) {
  .review-enabled #appShell > #ledger.page.active { display: grid; grid-template-columns: minmax(0, 0.4fr) minmax(0, 0.6fr); gap: 16px; align-items: stretch; }
  .review-chart-panel { height: 100%; min-height: 0; padding: 20px; }
  .review-chart-plot { min-height: 0; }
}
@media (max-width: 960px) { .review-chart-panel { margin-top: 16px; } }
.review-chart-ranges { display: flex; gap: 4px; padding: 3px; border-radius: 9px; background: #e8ede8; }
.review-chart-ranges button { padding: 6px 12px; border: 0; border-radius: 6px; background: transparent; color: #617266; font: 500 13px sans-serif; }
.review-chart-ranges button.active { background: #fff; color: #1c563c; box-shadow: 0 1px 4px #00000012; }
.review-record-summaries { display: grid; gap: 6px; min-width: 0; }
.review-record-summary { display: grid; grid-template-columns: 84px 80px 60px; align-items: center; gap: 7px; margin: 0; }
#review .review-message-button .review-record-line > p { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.review-record-summary > span { text-align: center; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
@media (max-width: 480px) {
  .review-record-line { grid-template-columns: minmax(0, 1fr) 180px; gap: 8px; }
  .review-record-summary { grid-template-columns: 64px 60px 46px; gap: 5px; }
  .review-record-summary > span { padding-inline: 4px; font-size: 12px; }
}
.review-record-tag { display: inline-block; padding: 4px 8px; border-radius: 6px; font-size: 13px; line-height: 1.4; font-weight: 500; color: #fff; }
.review-record-tag.buy { background: #fff0ee; color: #b93f3b; }
.review-record-tag.sell { background: #e9f5ed; color: #257b58; }
.review-record-allocation { display: inline-block; padding: 4px 8px; border-radius: 6px; font-size: 13px; line-height: 1.4; font-weight: 500; color: #2665a8; background: #eaf3ff; font-variant-numeric: tabular-nums; }
.review-filter-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 19px;
  padding: 1px 5px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 1.4;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: white;
}
.review-filter-count.review { background: #db4b47; }
.review-filter-count.check { background: #c26b09; }
.review-filter-count.recorded,
.review-filter-count.ignored,
.review-filter-count.all { background: transparent; color: inherit; padding-inline: 0; min-width: auto; }
@media (min-width: 961px) {
  #review .review-list-panel,
  #review .review-editor { padding: 14px 16px; }
  #review .review-heading { margin-bottom: 8px; }
  #review .review-heading h2 { font-size: 18px; }
  #review .review-heading button { padding: 6px 10px; }
  #review .review-filters { margin-bottom: 8px; }
  #review .review-filters button { padding: 6px; font-size: 13px; }
  #review .review-scan { margin: 8px 0; font-size: 13px; }
  #review .review-message { margin-bottom: 6px; border-radius: 8px; }
  #review .review-message > input { margin: 8px; width: 14px; }
  #review .review-message-button { padding: 7px 9px; }
  #review .review-message-head { font-size: 12px; line-height: 1.3; }
  #review .review-badge { font-size: 12px; padding: 3px 7px; }
  #review .review-message-button p { font-size: 14px; line-height: 1.4; margin: 4px 0; }
  #review .review-message-button small { font-size: 12px; line-height: 1.3; }
  #review .review-list-footer { margin-top: 8px; }
  #review .review-list-footer button { padding: 6px 9px; }
  #review .review-editor-body { overflow: hidden; padding: 0; }
  #review .review-editor-content { display: flow-root; }
  #review .review-original { padding: 8px 10px; margin-bottom: 6px; }
  #review .review-original small { font-size: 12px; }
  #review .review-original p { font-size: 14px; line-height: 1.4; margin-top: 5px; }
  #review .review-reason { font-size: 13px; line-height: 1.4; margin: 6px 0; }
  #review .quick-entry { margin: 8px 0 calc(8px + var(--review-fill-gap, 0px)); }
  #review #tradeCard { display: flex; flex-direction: column; }
  #review .segmented { margin: calc(8px + var(--review-fill-gap, 0px)) 0; }
  #review .trade-type { padding: 6px; }
  #review .review-layout { grid-template-columns: minmax(0, 0.55fr) minmax(0, 0.45fr); }
  #review #tradeForm { grid-template-columns: minmax(0, 1fr); gap: calc(12px + var(--review-fill-gap, 0px)); }
  #review #tradeForm > .field-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
  #review .review-editor label { font-size: 13px; gap: 4px; }
  #review input,
  #review select { padding: 7px 9px; font-size: 14px; }
  #review .source-lot-field small,
  #review .allocation-note { font-size: 12px; line-height: 1.3; }
  #review #formMessage { min-height: 0; font-size: 12px; line-height: 1.4; }
  #review #formMessage:empty { display: none; }
  #review .review-save-feedback { margin-top: 7px; font-size: 12px; }
  #review .review-actions { padding-top: 8px; margin-top: 7px; gap: 6px; }
  #review .review-actions button,
  #review .review-actions .review-primary { padding: 8px 10px; font-size: 13px; }
}

#review .quick-entry-row { grid-template-columns: minmax(0, 1fr) auto auto; }
#review .quick-entry-row:has(#reviewIgnore:not([hidden])) { grid-template-columns: minmax(0, 1fr) auto auto auto; }
#review #reviewIgnore,
#review .review-restore {
  border: 1px solid #cbd2cd;
  border-radius: 8px;
  background: #ffffffa0;
  color: #435049;
  padding: 8px 10px;
  font: 500 13px "Noto Sans SC", sans-serif;
  white-space: nowrap;
}
#review .review-message-button { flex: 1 1 0; width: auto; min-width: 0; }
#review .review-message-actions {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  align-items: flex-end;
  gap: 9px;
  align-self: stretch;
  justify-content: space-between;
  padding: 9px 12px 9px 4px;
}
#review .review-restore { flex-shrink: 0; margin: 0; }
#review #reviewSubmit {
  border: 0;
  border-radius: 8px;
  background: var(--accent, #db4b47);
  color: white;
  padding: 9px 12px;
  font: 600 13px "Noto Sans SC", sans-serif;
  white-space: nowrap;
}
#review .review-actions { justify-content: flex-start; }
#review .review-actions:has(#reviewIgnore[hidden]) { display: none; }
@media (max-width: 480px) {
  #review .quick-entry-row,
  #review .quick-entry-row:has(#reviewIgnore:not([hidden])) { grid-template-columns: minmax(0, 1fr) auto; }
  #review #reviewSubmit { grid-column: 1 / -1; }
  #review .quick-entry-row:has(#reviewIgnore:not([hidden])) #reviewSubmit { grid-column: 1; }
}
.review-enabled .summary-head { justify-content: flex-start; gap: 14px; }
.review-enabled .summary-head #clearRecords { color: #bac5be; font-size: 12px; padding: 0; }
.daily-summary-placeholder { min-height: 280px; padding: 30px; border-radius: 20px; background: rgb(251 251 249 / 87%); backdrop-filter: blur(14px); }
.daily-summary-placeholder h2 { margin: 0 0 12px; font-size: 22px; }
.daily-summary-placeholder p { margin: 0; color: #67786d; }
.review-quick-heading { display: flex; align-items: center; gap: 12px; }
.review-enabled .review-quick-heading #reviewClearForm { padding: 0; min-height: 0; border: 0; background: none; color: #67786d; font-size: 12px; font-weight: 400; }

/* Sale summary: source buy price, sell symbol, sell price, allocation. */
.review-record-line { grid-template-columns: minmax(0, 1fr) auto; }
.review-record-summary { justify-content: end; }
.review-record-summary.is-sale { grid-template-columns: 80px 84px 80px 60px; }
@media (max-width: 600px) {
  .review-record-line { grid-template-columns: minmax(0, 1fr); }
  .review-record-summary.is-sale { grid-template-columns: minmax(0, 60px) minmax(0, 64px) minmax(0, 60px) minmax(0, 46px); gap: 5px; }
}

.review-undo { align-self: center; flex-shrink: 0; padding: 5px 9px; border: 0; border-radius: 6px; background: #fff0ee; color: #b93f3b; cursor: pointer; }
.review-undo:disabled { opacity: .5; cursor: default; }
