:root {
  --bg: #f4f6f3;
  --card: #ffffff;
  --ink: #1a2e1f;
  --muted: #5c6b60;
  --line: #dde5dc;
  --brand: #2d5a3d;
  --brand-soft: #e8f0ea;
  --accent: #c4a35a;
  --warn: #b45309;
  --warn-bg: #fff7ed;
  --ok: #166534;
  --ok-bg: #ecfdf5;
  --suggest: #1d4ed8;
  --suggest-bg: #eff6ff;
  --danger: #b91c1c;
  --radius: 12px;
  --shadow: 0 1px 2px rgba(26,46,31,.06), 0 8px 24px rgba(26,46,31,.05);
}
* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  background: var(--bg);
  color: var(--ink);
  line-height: 1.45;
}
.wrap { max-width: 1200px; margin: 0 auto; padding: 24px 20px 48px; }
header.app {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 18px;
}
.brand { display: flex; align-items: center; gap: 12px; }
.logo {
  width: 42px; height: 42px; border-radius: 10px;
  background: linear-gradient(145deg, var(--brand), #3f7a52);
  color: #fff; display: grid; place-items: center;
  font-weight: 700; font-size: 14px; letter-spacing: .5px;
}
h1 { margin: 0; font-size: 1.35rem; font-weight: 650; }
.sub { color: var(--muted); font-size: .9rem; margin-top: 2px; }
.header-actions {
  display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
}
.pill {
  font-size: .75rem; font-weight: 600; letter-spacing: .04em;
  text-transform: uppercase; background: var(--brand-soft); color: var(--brand);
  padding: 6px 10px; border-radius: 999px; border: 1px solid #c9dbc0;
}
.linkish {
  color: var(--brand); text-decoration: none; font-weight: 600; font-size: .85rem;
}
.linkish:hover { text-decoration: underline; }
/* Excel source line in footer (replaces former green banner) */
.meta-foot {
  font-size: .78rem; color: var(--muted); margin-bottom: 6px; opacity: .9;
}
.kpis { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; margin-bottom: 22px; }
@media (max-width: 800px) { .kpis { grid-template-columns: 1fr; } }
.kpi {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 16px 18px; box-shadow: var(--shadow);
}
.kpi .label { font-size: .8rem; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.kpi .value { font-size: 1.75rem; font-weight: 700; margin-top: 4px; }
.kpi .hint { font-size: .82rem; color: var(--muted); margin-top: 4px; }
.kpi.warn .value { color: var(--warn); }
.kpi-split { display: flex; gap: 18px; align-items: flex-start; }
.kpi-half { flex: 1; min-width: 0; }
.kpi-half .value { font-size: 1.35rem; }
select.row-select.src-select { min-width: 6.5rem; font-weight: 650; }
select.row-select.src-select.chase { background: #fef3c7; color: #92400e; }
select.row-select.src-select.unknown { background: #f3f4f6; color: #4b5563; }
section.block {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow); margin-bottom: 22px; overflow: hidden;
}
section.block-secondary {
  box-shadow: none;
  border-color: #e4ebe2;
}
.block-h {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 14px 18px; border-bottom: 1px solid var(--line); background: #fafcf9;
}
.block-h h2 { margin: 0; font-size: 1.05rem; }
.block-h span { color: var(--muted); font-size: .85rem; }
.filters {
  display: flex; flex-wrap: wrap; gap: 8px; padding: 10px 18px;
  border-bottom: 1px solid var(--line); background: #fbfdfb; align-items: end;
  opacity: .92;
}
.filters label {
  display: flex; flex-direction: column; gap: 3px;
  font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted);
}
.filters select, .filters input[type="search"], .filters input[type="text"] {
  min-width: 100px; padding: 5px 8px; border-radius: 8px;
  border: 1px solid #c9d4c8; background: #fff; color: var(--ink); font-size: .82rem;
}
.filters .search-label input { min-width: 180px; }
.filters .check {
  flex-direction: row; align-items: center; gap: 8px;
  text-transform: none; font-size: .82rem; font-weight: 600; color: var(--ink);
  padding-bottom: 6px;
}
.filters .check input { width: 15px; height: 15px; }
.btn {
  border: 1px solid #c9d4c8; background: #fff; color: var(--ink);
  border-radius: 8px; padding: 8px 12px; font-size: .85rem; font-weight: 600; cursor: pointer;
}
.btn:hover { background: var(--brand-soft); }
.btn.primary { background: var(--brand); color: #fff; border-color: var(--brand); }
.btn.primary:hover { background: #244a32; }
.btn.btn-quiet {
  padding: 5px 9px; font-size: .75rem; font-weight: 600;
  color: var(--muted); border-color: #d5ddd3;
}
.btn:disabled { opacity: .5; cursor: not-allowed; }
table { width: 100%; border-collapse: collapse; font-size: .9rem; }
th, td { padding: 11px 12px; text-align: left; border-bottom: 1px solid var(--line); vertical-align: middle; }
th {
  font-size: .72rem; text-transform: uppercase; letter-spacing: .05em;
  color: var(--muted); background: #f7faf6; position: sticky; top: 0; z-index: 1;
}
/* Sortable inbox column headers */
th .th-sort {
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  font: inherit;
  font-size: inherit;
  text-transform: inherit;
  letter-spacing: inherit;
  color: inherit;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}
th .th-sort:hover { color: var(--brand); }
th .th-sort.active { color: var(--brand); font-weight: 700; }
th .th-sort .sort-ind {
  font-size: .7em;
  opacity: 0;
  min-width: 0.9em;
}
th .th-sort.active .sort-ind { opacity: 1; }
th .th-sort.asc .sort-ind::after { content: '▲'; }
th .th-sort.desc .sort-ind::after { content: '▼'; }

tr:last-child td { border-bottom: none; }
tr:hover td { background: #f9fbf8; }
.table-scroll { overflow: auto; max-height: 560px; }
.amt { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--danger); white-space: nowrap; }
.amt.pos { color: var(--ok); }
select.row-select {
  width: 100%; max-width: 180px; padding: 6px 8px; border-radius: 8px;
  border: 1px solid #c9d4c8; background: #fff; color: var(--ink); font-size: .85rem;
}
select.row-select.dirty { border-color: var(--accent); background: #fffbeb; }
.desc { max-width: 280px; }
.desc .vendor { display: block; color: var(--muted); font-size: .8rem; margin-top: 2px; }
.src {
  font-size: .75rem; font-weight: 650; padding: 3px 8px; border-radius: 999px;
  background: #eef2ff; color: #3730a3; white-space: nowrap;
}
.src.chase { background: #fef3c7; color: #92400e; }
.src.unknown { background: #f3f4f6; color: #4b5563; }
.status {
  font-size: .72rem; font-weight: 700; padding: 4px 8px; border-radius: 999px; white-space: nowrap;
}
.status.needs { background: var(--warn-bg); color: var(--warn); }
.status.suggested { background: var(--suggest-bg); color: var(--suggest); }
.status.confirmed { background: var(--ok-bg); color: var(--ok); }
.pager {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 12px 18px; border-top: 1px solid var(--line); background: #fafcf9;
  font-size: .85rem; color: var(--muted);
}
.pager .controls { display: flex; gap: 8px; align-items: center; }
.cards {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px; padding: 16px 18px 18px;
  /* min-height set by JS from last render to reduce period-switch thrash */
  overflow-anchor: none;
}
.pcard {
  border: 1px solid var(--line); border-radius: 10px; padding: 14px 14px 12px;
  background: linear-gradient(180deg, #fff 0%, #f8fbf7 100%);
  cursor: pointer; transition: border-color .15s, box-shadow .15s;
  text-align: left; width: 100%; font: inherit; color: inherit;
}
.pcard:hover, .pcard.active {
  border-color: var(--brand); box-shadow: 0 0 0 2px rgba(45,90,61,.12);
}
.pcard h3 { margin: 0 0 2px; font-size: .98rem; }
.pcard .meta { color: var(--muted); font-size: .8rem; margin-bottom: 10px; }
.pcard .total { font-size: 1.35rem; font-weight: 700; color: var(--brand); }
.pcard .total span { font-size: .75rem; font-weight: 600; color: var(--muted); margin-left: 4px; }
.cats { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.catrow { display: flex; justify-content: space-between; font-size: .82rem; }
.catrow .name { color: var(--muted); }
.bar { height: 5px; border-radius: 999px; background: #e6ede4; margin-top: 4px; overflow: hidden; }
.bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--brand), var(--accent)); border-radius: 999px; }
.tabs {
  display: flex; gap: 6px; flex-wrap: wrap; padding: 10px 18px 0;
  border-bottom: 1px solid var(--line); background: #fafcf9;
}
.tab {
  border: 1px solid transparent; background: transparent; color: var(--muted);
  padding: 7px 12px; border-radius: 8px 8px 0 0; font-weight: 650; font-size: .82rem; cursor: pointer;
}
.tab.active {
  background: #fff; color: var(--brand); border-color: var(--line); border-bottom-color: #fff;
  margin-bottom: -1px;
}
.tab-panel { padding: 16px 18px 18px; display: none; }
.tab-panel.active { display: block; }
.matrix-scroll { overflow: auto; max-height: 480px; }
.matrix-scroll table { font-size: .8rem; }
.matrix-scroll th, .matrix-scroll td { padding: 6px 8px; white-space: nowrap; }
.matrix-scroll th.sticky-col, .matrix-scroll td.sticky-col {
  position: sticky; left: 0; background: #f7faf6; z-index: 2;
}
.matrix-scroll td.sticky-col { background: #fff; font-weight: 600; }
.detail-panel {
  border-top: 1px solid var(--line); padding: 16px 18px 18px; background: #fbfdfb;
}
.detail-panel.hidden { display: none; }
.detail-panel h3 { margin: 0 0 4px; }
.detail-meta { color: var(--muted); font-size: .85rem; margin-bottom: 14px; }
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 900px) { .detail-grid { grid-template-columns: 1fr; } }
.muted { color: var(--muted); }
footer.note {
  color: var(--muted); font-size: .8rem; text-align: center; padding: 8px;
}
.error-banner {
  background: #fef2f2; color: #991b1b; border: 1px solid #fecaca;
  border-radius: var(--radius); padding: 14px 16px; margin-bottom: 16px;
}
.yoy-delta.up { color: var(--danger); }
.yoy-delta.down { color: var(--ok); }

/* Expanded category bars in property detail (hero) */
.detail-cats-wrap { margin: 4px 0 4px; }
.detail-cats {
  display: flex; flex-direction: column; gap: 12px;
  padding: 14px 16px; border: 1px solid var(--line); border-radius: 10px;
  background: linear-gradient(180deg, #fff 0%, #f4f9f5 100%);
}
.detail-cats-h {
  margin: 0 0 2px; font-size: .95rem; font-weight: 700; color: var(--brand);
}
.detail-cats-period {
  font-size: .82rem; color: var(--muted); margin-bottom: 4px;
}
.detail-catrow {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 12px; font-size: .92rem;
}
.detail-catrow .name { color: var(--ink); font-weight: 600; }
.detail-catrow .vals {
  display: flex; gap: 10px; align-items: baseline; white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.detail-catrow .vals .dollars { font-weight: 700; color: var(--brand); }
.detail-catrow .vals .pct { font-size: .8rem; color: var(--muted); font-weight: 600; }
.bar.bar-lg {
  height: 14px; border-radius: 999px; background: #e6ede4;
  margin-top: 6px; overflow: hidden;
}
.bar.bar-lg i {
  display: block; height: 100%;
  background: linear-gradient(90deg, var(--brand), #3f7a52 55%, var(--accent));
  border-radius: 999px;
}
.detail-cats-total {
  margin-top: 6px; padding-top: 12px; border-top: 1px solid var(--line);
  font-size: 1.05rem; font-weight: 700; color: var(--brand);
  display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.detail-cats-total .label { color: var(--muted); font-weight: 650; font-size: .85rem; }
.detail-cats-empty { color: var(--muted); font-size: .9rem; padding: 8px 0; }

/* Property period controls (independent of inbox filters) */
.property-period {
  padding: 12px 18px 4px;
  border-bottom: 1px solid var(--line);
  background: #f7faf6;
}
.pp-presets {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px;
}
.pp-btn {
  border: 1px solid #c9d4c8; background: #fff; color: var(--ink);
  border-radius: 999px; padding: 6px 12px; font-size: .78rem; font-weight: 650;
  cursor: pointer;
}
.pp-btn:hover { background: var(--brand-soft); border-color: #b5c9b0; }
.pp-btn.active {
  background: var(--brand); color: #fff; border-color: var(--brand);
}
.property-period .pp-controls {
  padding: 0 0 8px; border-bottom: none; background: transparent; opacity: 1;
}
.pp-note {
  margin: 0 0 10px; font-size: .78rem;
}

/* Detail panel period controls (same state as cards) */
.property-period-detail {
  margin: 0 0 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  border-bottom: 1px solid var(--line);
  padding: 12px 14px 4px;
  background: #f0f5f1;
}
.property-period-detail .pp-note { margin-bottom: 8px; }

/* Category accordion under each bar */
.detail-catrow-wrap {
  cursor: pointer; border-radius: 8px; padding: 6px 8px; margin: 0 -8px;
  border: 1px solid transparent;
}
.detail-catrow-wrap:hover {
  background: rgba(45,90,61,.06);
}
.detail-catrow-wrap.open,
.detail-catrow-wrap.selected {
  background: var(--brand-soft);
  border-color: #c9dbc0;
  box-shadow: 0 0 0 1px rgba(45,90,61,.12);
}
.detail-catrow-wrap.open .detail-catrow .name,
.detail-catrow-wrap.selected .detail-catrow .name { color: var(--brand); }
.detail-cats-hint {
  font-size: .78rem; color: var(--muted); margin: -4px 0 6px;
}
.detail-cat-accordion {
  margin: 10px 0 4px;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  overflow: hidden;
  cursor: default;
}
.detail-cat-accordion .table-scroll {
  max-height: 280px;
}
.detail-cat-accordion table {
  font-size: .82rem;
}
.detail-cat-accordion th, .detail-cat-accordion td {
  padding: 7px 10px;
}
.detail-cat-accordion .empty {
  padding: 10px 12px; color: var(--muted); font-size: .85rem;
}

/* --- Jumpiness / layout stability --- */
html {
  overflow-anchor: none;
}
body {
  overflow-anchor: none;
}
.pp-btn:focus {
  outline: 2px solid rgba(45, 90, 61, 0.35);
  outline-offset: 1px;
}
/* Reserve stable height for period sub-controls so preset toggles don't collapse the bar */
.property-period .pp-controls,
.property-period-detail .pp-controls {
  min-height: 58px;
  align-items: end;
}
.property-period,
.property-period-detail {
  overflow-anchor: none;
  /* Keep chrome block from collapsing when only active fields change */
  min-height: 118px;
}
/* Inactive period fields stay in layout (muted/disabled) so the bar height stays stable */
.pp-controls label.pp-inactive {
  opacity: 0.38;
  pointer-events: none;
}
.pp-controls label.pp-inactive select,
.pp-controls label.pp-inactive input {
  background: #f0f3ef;
}

/* Accordion txn panel: scroll inside, don't shove the page */
.detail-cat-accordion .table-scroll {
  max-height: 280px;
  overflow: auto;
  overflow-anchor: none;
}
.detail-cat-accordion {
  max-height: 340px;
}

/* Clickable accordion txn → inbox deep-link */
.detail-cat-accordion tr.txn-link {
  cursor: pointer;
}
.detail-cat-accordion tr.txn-link:hover td {
  background: #eef6ef;
}
.detail-cat-accordion tr.txn-link td.desc::after {
  content: " → Transactions";
  display: inline-block;
  margin-left: 6px;
  font-size: .7rem;
  font-weight: 650;
  color: var(--brand);
  opacity: 0;
  transition: opacity .12s;
}
.detail-cat-accordion tr.txn-link:hover td.desc::after {
  opacity: .85;
}

/* Inbox row flash/highlight after deep-link (~3.5s, strong) */
@keyframes inbox-flash {
  0% { background-color: #fde68a; }
  25% { background-color: #fbbf24; }
  55% { background-color: #fef3c7; }
  100% { background-color: transparent; }
}
#inbox-body tr.inbox-flash td {
  animation: inbox-flash 3.5s ease-out;
  background-color: #fde68a;
}
#inbox-body tr.inbox-flash td:first-child {
  box-shadow: inset 4px 0 0 #b45309;
}

/* Portfolio By Expense / By Month / By Source — match property Category breakdown bars */
.expense-rollup, .source-rollup {
  display: flex; flex-direction: column; gap: 12px;
  max-width: 720px;
  padding: 4px 0;
}
.expense-row, .source-row {
  display: flex;
  flex-direction: column;
  gap: 0;
  font-size: .92rem;
}
.expense-row .detail-catrow,
.source-row .detail-catrow {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 12px;
}
.expense-total, .source-total {
  margin-top: 8px; padding-top: 12px; border-top: 1px solid var(--line);
  display: flex; justify-content: space-between; font-weight: 700;
  max-width: 720px;
}

/* Click-to-expand accordion wraps (By Expense / By Month) */
.expense-row-wrap {
  cursor: pointer;
  border-radius: 8px;
  padding: 6px 8px;
  margin: 0 -8px;
  border: 1px solid transparent;
}
.expense-row-wrap:hover {
  background: rgba(45,90,61,.06);
}
.expense-row-wrap.open,
.expense-row-wrap.selected {
  background: var(--brand-soft);
  border-color: #c9dbc0;
  box-shadow: 0 0 0 1px rgba(45,90,61,.12);
}
.expense-row-wrap.open .detail-catrow .name,
.expense-row-wrap.selected .detail-catrow .name { color: var(--brand); }
.expense-row-wrap .detail-cat-accordion,
.expense-row-wrap .expense-accordion {
  margin: 10px 0 4px;
  cursor: default;
}
.expense-rollup .detail-cat-accordion tr.txn-link,
.month-rollup .detail-cat-accordion tr.txn-link {
  cursor: pointer;
}
.expense-rollup .detail-cat-accordion tr.txn-link:hover td,
.month-rollup .detail-cat-accordion tr.txn-link:hover td {
  background: #eef6ef;
}
.expense-rollup .detail-cat-accordion tr.txn-link td.desc::after,
.month-rollup .detail-cat-accordion tr.txn-link td.desc::after {
  content: " → Transactions";
  display: inline-block;
  margin-left: 6px;
  font-size: .7rem;
  font-weight: 650;
  color: var(--brand);
  opacity: 0;
  transition: opacity .12s;
}
.expense-rollup .detail-cat-accordion tr.txn-link:hover td.desc::after,
.month-rollup .detail-cat-accordion tr.txn-link:hover td.desc::after {
  opacity: .85;
}

/* Property detail vertical spacing between major blocks */
.detail-block {
  margin-top: 28px;
}
.detail-cats-wrap.detail-block {
  margin-top: 8px;
  margin-bottom: 0;
}
.detail-txns-h {
  margin: 0 0 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}
.detail-txns-h h4 { margin: 0; }
.detail-subh { margin: 0 0 8px; }
.detail-txns-scroll {
  max-height: 340px;
}
.detail-txns-block {
  padding-top: 4px;
  border-top: 1px solid transparent;
}
.detail-comparison-block {
  margin-top: 32px;
  padding-top: 8px;
}
.comparison-note {
  margin: 0 0 12px;
  font-size: .82rem;
}
.period-comparison {
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-width: 720px;
}
.period-comparison .cmp-row {
  display: grid;
  grid-template-columns: minmax(140px, 200px) minmax(100px, 120px) 1fr;
  gap: 10px;
  align-items: center;
  font-size: .9rem;
}
.period-comparison .cmp-row.current .cmp-label {
  font-weight: 700;
  color: var(--brand);
}
.period-comparison .cmp-label {
  font-weight: 650;
}
.period-comparison .cmp-amt {
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: var(--brand);
  text-align: right;
}
.period-comparison .cmp-bar-col {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.period-comparison .cmp-bar {
  height: 12px;
  border-radius: 999px;
  background: #e6ede4;
  overflow: hidden;
}
.period-comparison .cmp-bar i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, var(--brand), var(--accent));
  border-radius: 999px;
  min-width: 0;
}
.period-comparison .cmp-row.current .cmp-bar i {
  background: linear-gradient(90deg, #244a32, var(--brand));
}
.period-comparison .cmp-delta {
  font-size: .75rem;
  color: var(--muted);
}
.period-comparison .cmp-delta.up { color: var(--danger); }
.period-comparison .cmp-delta.down { color: var(--ok); }
.period-comparison .cmp-empty {
  color: var(--muted);
  font-size: .88rem;
  padding: 4px 0;
}
/* Keep period control row from collapsing when switching presets */
.property-period .pp-presets {
  min-height: 36px;
}
.property-period .pp-note,
.property-period-detail .pp-note {
  min-height: 1.2em;
}

/* General (office) section */
.general-panel {
  padding: 16px 18px 18px;
  background: #fbfdfb;
}
.general-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  align-items: baseline;
  margin-bottom: 4px;
}
.general-summary .total {
  font-size: 1.45rem;
  font-weight: 700;
  color: var(--brand);
}
.general-summary .meta {
  color: var(--muted);
  font-size: .85rem;
}

/* Portfolio By Month — same visual language as By Expense */
.month-rollup {
  max-width: 640px;
}

/* Portfolio YoY visual chart */
.yoy-chart {
  display: flex;
  flex-direction: column;
  gap: 14px;
  max-width: 720px;
  padding: 4px 0 8px;
}
.yoy-row {
  display: flex;
  flex-direction: column;
  gap: 0;
  font-size: .92rem;
}
.yoy-row .detail-catrow .name {
  font-weight: 700;
  color: var(--ink);
}
.yoy-row .delta {
  font-size: .75rem;
  font-weight: 600;
  color: var(--muted);
  margin-top: 4px;
}
.yoy-row .delta.up { color: var(--danger); }
.yoy-row .delta.down { color: var(--ok); }
.yoy-total {
  margin-top: 6px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  font-weight: 700;
  max-width: 720px;
  font-size: .9rem;
}

/* Deep-link rows also in General accordion */
#general-category-bars .detail-cat-accordion tr.txn-link {
  cursor: pointer;
}
#general-category-bars .detail-cat-accordion tr.txn-link:hover td {
  background: #eef6ef;
}

/* General lower txn table deep-link */
#general-txns tr.txn-link { cursor: pointer; }
#general-txns tr.txn-link:hover td { background: #eef6ef; }


/* —— Inbox multi-select / isolate —— */
.inbox-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 8px 18px;
  border-bottom: 1px solid var(--line);
  background: #f0f6f1;
  font-size: .85rem;
}
.inbox-toolbar[hidden] { display: none !important; }
.inbox-toolbar-left { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.inbox-toolbar-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.col-check {
  width: 36px;
  text-align: center;
  padding-left: 10px;
  padding-right: 6px;
}
.col-check input { width: 15px; height: 15px; cursor: pointer; }
.col-actions { width: 108px; white-space: nowrap; }
.btn.btn-tiny {
  padding: 4px 8px;
  font-size: .72rem;
  font-weight: 650;
}
.btn.btn-tiny.split-btn { color: var(--brand); border-color: #b7ceb8; }
.btn.btn-tiny.unsplit-btn { color: var(--warn); border-color: #f0d3a8; }
.split-badge {
  display: inline-block;
  margin-left: 6px;
  font-size: .65rem;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 999px;
  background: var(--brand-soft);
  color: var(--brand);
  vertical-align: middle;
}
tr.isolated-row td { background: #f3faf4; }
#inbox-isolate-note:not([hidden]) {
  color: var(--brand);
  font-weight: 650;
}

/* —— Split modal —— */
.modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: rgba(26, 46, 31, 0.45);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 48px 16px 24px;
  overflow: auto;
}
.modal-backdrop[hidden] { display: none !important; }
.modal {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow), 0 24px 64px rgba(26, 46, 31, 0.18);
  width: min(860px, 100%);
  padding: 0;
}
.modal-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
  background: #fafcf9;
}
.modal-h h3 { margin: 0; font-size: 1.05rem; }
.modal-meta {
  padding: 10px 18px 0;
  font-size: .85rem;
  color: var(--muted);
}
.split-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 28px;
  padding: 12px 18px;
  font-size: .88rem;
  border-bottom: 1px solid var(--line);
}
.split-summary strong { font-variant-numeric: tabular-nums; }
.split-summary .ok { color: var(--ok); }
.split-summary .bad { color: var(--danger); }
.split-msg {
  margin: 0;
  padding: 8px 18px;
  font-size: .85rem;
  font-weight: 650;
  color: var(--danger);
  background: #fef2f2;
  border-bottom: 1px solid #fecaca;
}
.split-msg[hidden] { display: none !important; }
.split-lines-scroll { max-height: 360px; }
.split-lines-table { font-size: .85rem; }
.split-lines-table th { position: static; }
.split-lines-table select,
.split-lines-table input[type="number"] {
  width: 100%;
  min-width: 0;
  padding: 6px 8px;
  border-radius: 8px;
  border: 1px solid #c9d4c8;
  background: #fff;
  color: var(--ink);
  font-size: .82rem;
}
.split-lines-table input[type="number"] {
  font-variant-numeric: tabular-nums;
  max-width: 120px;
}
.modal-actions {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 14px 18px;
  border-top: 1px solid var(--line);
  background: #fafcf9;
}
.modal-actions-left,
.modal-actions-right { display: flex; gap: 8px; flex-wrap: wrap; }
