:root {
  --bg:#f4f6f7;
  --surface:#ffffff;
  --surface-soft:#eef3f1;
  --ink:#152324;
  --muted:#647073;
  --line:#d7dfdc;
  --accent:#285f57;
  --accent-strong:#153f3a;
  --blue:#355f91;
  --gold:#9d6b20;
  --danger:#9b342f;
  --shadow:0 8px 22px rgba(20,35,38,.08);
}
* { box-sizing:border-box; }
body {
  margin:0;
  font-family:Inter, system-ui, -apple-system, Segoe UI, sans-serif;
  background:var(--bg);
  color:var(--ink);
  line-height:1.35;
}
header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1rem;
  padding:1rem 1.25rem;
  background:#e8efec;
  border-bottom:1px solid var(--line);
}
h1, h2, h3 { margin:.1rem 0 .65rem; letter-spacing:0; }
h1 { font-size:1.45rem; }
h2 { font-size:1.2rem; }
h3 { font-size:1rem; }
p { color:var(--muted); margin:.2rem 0 1rem; }
main { padding:1rem; max-width:1680px; margin:0 auto; }
.card {
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:8px;
  padding:1rem;
  box-shadow:var(--shadow);
  margin-bottom:1rem;
}
.narrow { max-width:560px; margin-left:auto; margin-right:auto; }
.hidden { display:none !important; }
.tabs {
  display:flex;
  gap:.45rem;
  flex-wrap:wrap;
  margin:0 0 1rem 0;
  align-items:center;
}
.grouped-tabs {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:.7rem;
  align-items:start;
}
.nav-group {
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:8px;
  box-shadow:var(--shadow);
  padding:.35rem;
}
.nav-group summary {
  cursor:pointer;
  color:var(--accent-strong);
  font-weight:850;
  padding:.35rem .45rem;
  list-style-position:inside;
}
.nav-group-buttons {
  display:flex;
  gap:.4rem;
  flex-wrap:wrap;
  padding:.3rem .25rem .25rem;
}
.nav-group .tab {
  min-height:36px;
  padding:.48rem .62rem;
  font-size:.88rem;
}
.tab, button, .button-link {
  border:0;
  border-radius:8px;
  background:var(--accent);
  color:white;
  padding:.64rem .82rem;
  font-weight:700;
  cursor:pointer;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
}
.tab.active { background:var(--accent-strong); }
.tab.attention { box-shadow:0 0 0 3px rgba(157,107,32,.25); background:var(--gold); }
.secondary { background:#6d7777; }
button:hover, .button-link:hover { filter:brightness(.96); }
.tab-panel { display:none; }
.tab-panel.active { display:block; }
.kpi-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(178px,1fr));
  gap:.85rem;
  margin-bottom:1rem;
}
.kpi {
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:8px;
  padding:.85rem;
}
.kpi .label { color:var(--muted); font-size:.82rem; }
.kpi .value { font-size:1.32rem; font-weight:800; margin-top:.28rem; }
.compact-kpis {
  grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
  gap:.5rem;
  margin:.75rem 0;
}
.compact-kpis .kpi { padding:.55rem .65rem; }
.compact-kpis .kpi .value { font-size:1rem; }
.two-col { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:1rem; }
.tight-grid { align-items:start; margin:.75rem 0; }
.work-surface {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:1rem;
}
.wide-card { min-width:0; }
.calendar-layout {
  display:grid;
  grid-template-columns:minmax(720px,1fr) minmax(340px,420px);
  gap:1rem;
  align-items:start;
}
.calendar-main-card { min-width:0; }
label { display:flex; flex-direction:column; gap:.28rem; color:#405050; font-weight:650; }
label:has(input[type="checkbox"]) { flex-direction:row; align-items:center; color:var(--ink); }
input, select, textarea {
  border:1px solid var(--line);
  border-radius:8px;
  padding:.64rem;
  font:inherit;
  background:#fff;
  color:var(--ink);
  min-width:0;
}
textarea { min-height:88px; resize:vertical; }
.stack-form { display:grid; gap:.75rem; }
.filters, .print-options {
  display:flex;
  flex-wrap:wrap;
  gap:.65rem;
  margin-bottom:1rem;
  align-items:center;
}
.advanced-filters {
  border:1px solid var(--line);
  border-radius:8px;
  background:#fbfcfc;
  margin:0 0 .9rem;
  padding:.55rem .7rem;
}
.advanced-filters summary {
  cursor:pointer;
  font-weight:800;
  color:var(--accent-strong);
}
.advanced-filters .filters {
  margin:.75rem 0 0;
}
.bulk-action-bar {
  position:sticky;
  top:.4rem;
  z-index:2;
  display:flex;
  flex-wrap:wrap;
  gap:.45rem;
  align-items:center;
  background:#f7faf9;
  border:1px solid var(--line);
  border-left:4px solid var(--accent);
  border-radius:8px;
  padding:.62rem;
  margin:.25rem 0 .85rem;
  box-shadow:0 5px 15px rgba(20,35,38,.08);
}
.bulk-action-bar .selected-count {
  margin-right:auto;
  font-weight:850;
  color:var(--accent-strong);
}
.bulk-action-bar button {
  min-height:36px;
  padding:.42rem .58rem;
  font-size:.84rem;
}
.saved-search-bar {
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin:.1rem 0 .8rem;
}
.saved-search-bar button {
  min-height:34px;
  padding:.42rem .62rem;
  font-size:.86rem;
}
.filters input { min-width:220px; flex:1; }
.print-options {
  background:var(--surface-soft);
  border:1px solid var(--line);
  border-radius:8px;
  padding:.65rem;
}
table { width:100%; border-collapse:separate; border-spacing:0; font-size:.9rem; }
th, td {
  padding:.62rem .55rem;
  border-bottom:1px solid var(--line);
  vertical-align:top;
}
th {
  text-align:left;
  color:#253638;
  background:#edf2f0;
  position:sticky;
  top:0;
  z-index:1;
  font-size:.82rem;
}
td input { width:100%; margin:.08rem 0; padding:.48rem; }
.table-wrap { max-height:70vh; overflow:auto; border:1px solid var(--line); border-radius:8px; background:#fff; }
.tall-table { max-height:76vh; }
.review-workspace { max-height:calc(100vh - 290px); min-height:58vh; }
.table-wrap table { min-width:920px; }
#workbookTable { min-width:1280px; }
#txTable { min-width:1180px; }
#importInboxTable { min-width:980px; }
.drop-zone {
  display:grid;
  gap:.35rem;
  place-items:center;
  min-height:132px;
  padding:1rem;
  border:2px dashed #9eb3ad;
  border-radius:8px;
  background:#f9fbfa;
  color:#314447;
  margin:.75rem 0 1rem;
}
.drop-zone input { width:100%; max-width:620px; background:#fff; }
.drop-zone.dragover { border-color:var(--accent); background:#edf6f3; }
.muted-row { opacity:.72; background:#f5f7f7; }
.amount-pos { font-weight:800; color:#463510; }
.amount-neg { color:#25624d; font-weight:800; }
.notice {
  border-left:4px solid var(--blue);
  background:#eef4f8;
  padding:.78rem;
  margin-bottom:1rem;
  border-radius:8px;
  color:#233f5f;
}
.log-box {
  max-height:360px;
  overflow:auto;
  background:#101819;
  color:#e5f2ee;
  border:1px solid #263536;
  border-radius:8px;
  padding:.85rem;
  white-space:pre-wrap;
  font:12px/1.45 Consolas, "Courier New", monospace;
}
.audit-summary {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:.55rem;
  margin:.45rem 0 .75rem;
}
.audit-summary span {
  border:1px solid var(--line);
  border-radius:8px;
  background:#fff;
  padding:.55rem;
  font-weight:800;
}
.warning { color:var(--gold); }
.warning-banner {
  border-left-color:var(--danger);
  background:#fff1ef;
  color:#6b201b;
  font-weight:700;
}
.small { font-size:.82rem; color:var(--muted); }
.session-box { color:#405050; font-weight:650; white-space:nowrap; }
dialog { border:1px solid var(--line); border-radius:8px; max-width:700px; width:92vw; box-shadow:var(--shadow); }
menu { display:flex; justify-content:flex-end; gap:.5rem; padding:0; }
.chat-box {
  display:grid;
  gap:.6rem;
  max-height:48vh;
  overflow:auto;
  border:1px solid var(--line);
  border-radius:8px;
  padding:.75rem;
  background:#f9fbfa;
  margin-bottom:1rem;
}
.chat-msg { border:1px solid var(--line); border-radius:8px; padding:.65rem; background:white; }
.chat-msg .meta { color:var(--muted); font-size:.8rem; margin-bottom:.25rem; }
.chat-link-box {
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface-soft);
  padding:.75rem;
  margin-bottom:1rem;
}
.linked-tx {
  border-left:3px solid var(--accent);
  background:#f4f7f6;
  padding:.45rem .55rem;
  border-radius:6px;
  color:#314447;
  font-size:.82rem;
  margin:.35rem 0;
}
.action-stack { display:flex; flex-direction:column; gap:.35rem; min-width:96px; }
.action-stack button { width:100%; min-height:36px; padding:.42rem .55rem; }
.inline-check {
  display:flex;
  align-items:center;
  gap:.35rem;
  font-size:.82rem;
  font-weight:650;
  margin:.2rem 0;
}
.admin-note {
  margin-top:.45rem;
  border-left:3px solid var(--gold);
  background:#fff8ec;
  border-radius:6px;
  padding:.38rem .48rem;
  color:#51350f;
  font-size:.82rem;
}
.transaction-labels {
  display:flex;
  flex-wrap:wrap;
  gap:.3rem;
  margin-bottom:.4rem;
}
.transaction-label {
  display:inline-block;
  border:1px solid #acd7cf;
  background:#e8f6f3;
  color:#164f48;
  border-radius:999px;
  padding:.14rem .48rem;
  font-size:.76rem;
  font-weight:750;
}
.transaction-note {
  white-space:normal;
  line-height:1.35;
}
.review-card {
  display:grid;
  gap:.65rem;
  border:1px solid var(--line);
  background:#fbfcfc;
  border-radius:8px;
  padding:1rem;
}
.review-card h3 { font-size:1.25rem; margin:0; }
.review-amount { font-size:2rem; font-weight:900; color:var(--accent-strong); }
.small-table { max-height:48vh; }
.progress {
  height:9px;
  border-radius:999px;
  background:#e0e6e3;
  overflow:hidden;
  margin-top:.45rem;
}
.progress span { display:block; height:100%; background:linear-gradient(90deg,var(--accent),var(--blue)); }
.print-title { display:none; }
.print-meta { display:none; color:#333; margin:0 0 .18in; font-size:10pt; }
.workflow-header {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:1rem;
  margin:.25rem 0 1rem;
}
.workflow-header h2 { margin:0; }
.workflow-header p { margin:0; max-width:760px; }
.review-dashboard {
  display:grid;
  grid-template-columns:minmax(360px,.9fr) minmax(560px,1.1fr);
  gap:1rem;
  align-items:start;
}
.review-focus-card,
.review-list-card,
.transaction-workspace {
  min-height:calc(100vh - 240px);
}
.transaction-workspace {
  display:flex;
  flex-direction:column;
  gap:.75rem;
}
.transaction-workspace .review-workspace {
  flex:1 1 auto;
  max-height:none;
  min-height:calc(100vh - 390px);
}
.transaction-workspace table {
  min-width:1180px;
}
.transaction-workspace tbody tr,
#reviewTable tbody tr {
  vertical-align:top;
}
.transaction-workspace td,
#reviewTable td {
  line-height:1.35;
}
.review-list-card .small-table {
  max-height:none;
  min-height:calc(100vh - 390px);
}
.wide-card .tall-table,
#payStubLinesDialog .tall-table {
  max-height:70vh;
}
dialog#payStubLinesDialog {
  max-width:min(1420px,96vw);
  width:96vw;
}
dialog#payStubLinesDialog form {
  max-height:88vh;
  overflow:auto;
}
dialog#payStubLinesDialog table {
  min-width:1080px;
}
.muted-row { opacity:.72; background:#f7f8f8; }
.printing-report .print-meta,
.printing-calendar .print-meta { display:block; }
.calendar-controls input[type="month"] { min-width:150px; flex:0 0 auto; }
.money-calendar {
  border:1px solid var(--line);
  border-radius:8px;
  overflow:hidden;
  background:#fff;
}
.calendar-weekdays {
  display:grid;
  grid-template-columns:repeat(7, minmax(0,1fr));
  background:#dfe8e5;
  border-bottom:1px solid var(--line);
  font-weight:800;
  color:#243638;
}
.calendar-weekdays div { padding:.65rem; text-align:center; }
.calendar-days {
  display:grid;
  grid-template-columns:repeat(7, minmax(0,1fr));
}
.calendar-day {
  min-height:142px;
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:.45rem;
  background:#fff;
}
.calendar-day:nth-child(7n) { border-right:0; }
.calendar-day.empty { background:#f6f8f8; }
.calendar-date {
  width:100%;
  display:flex;
  justify-content:space-between;
  align-items:center;
  min-height:28px;
  padding:.1rem .2rem .35rem;
  color:var(--ink);
  background:transparent;
  border-radius:0;
  font-weight:800;
}
.calendar-date small { color:var(--muted); font-weight:700; }
.calendar-events { display:grid; gap:.28rem; }
.calendar-event {
  min-height:0;
  width:100%;
  justify-content:space-between;
  gap:.35rem;
  padding:.38rem .45rem;
  background:#eff5f3;
  color:#183534;
  border:1px solid #c9d8d4;
  font-size:.78rem;
  text-align:left;
}
.calendar-event strong { white-space:nowrap; color:#244d46; }
.calendar-event.credit-card, .calendar-event.loan { background:#fff3df; border-color:#e4c995; color:#493714; }
.calendar-event.pay-stub { background:#edf2ff; border-color:#c7d4f2; color:#213d68; }

.payroll-line {
  border-bottom: 1px solid var(--line);
  padding: 0.35rem 0;
  font-size: 0.9rem;
}

.payroll-line:last-child {
  border-bottom: 0;
}

.payroll-line span {
  color: var(--muted);
}
.calendar-event.financial-goal, .calendar-event.savings-goal { background:#edf8ef; border-color:#c5dfc8; color:#1e4427; }
.calendar-detail { min-height:96px; }
.calendar-print-details { display:none; }
.paystub-category-grid {
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:.65rem;
  margin-bottom:1rem;
}
.category-total {
  border:1px solid var(--line);
  border-radius:8px;
  background:#fbfcfc;
  padding:.75rem;
  display:grid;
  gap:.2rem;
}
.category-total span { color:var(--muted); font-size:.86rem; }
@media (max-width:980px) {
  .two-col { grid-template-columns:1fr; }
  .calendar-layout { grid-template-columns:1fr; }
  .review-dashboard { grid-template-columns:1fr; }
  .workflow-header { align-items:flex-start; flex-direction:column; }
  header { align-items:flex-start; }
}
@media (max-width:700px) {
  header { position:sticky; top:0; z-index:4; padding:.85rem; flex-direction:column; }
  main { padding:.75rem; }
  .tabs { position:sticky; top:110px; z-index:3; background:var(--bg); padding:.45rem 0; }
  .grouped-tabs { grid-template-columns:1fr; max-height:42vh; overflow:auto; align-content:start; }
  .tab, button, .button-link { min-height:44px; }
  .filters input { min-width:100%; }
  .calendar-day { min-height:116px; padding:.32rem; }
  .calendar-event { font-size:.72rem; padding:.3rem; }
  table { font-size:.82rem; }
  th, td { padding:.48rem .4rem; }
  .session-box { white-space:normal; }
}
@media print {
  @page { size: portrait; margin:.45in; }
  header, .tabs, .workflow-header, .filters, .print-options, .saved-search-bar, .screen-only, #sessionBox, .button-link, #coverageNote, .calendar-editor, .action-stack, menu { display:none !important; }
  body { background:white; color:#111; }
  main { max-width:none; padding:0; }
  .tab-panel { display:none !important; }
  #binder.active, #calendar.active, #dataHealth.active { display:block !important; }
  .card { border:0; box-shadow:none; padding:0; }
  .notice { border:0; background:white; color:#111; padding:0 0 .5rem; }
  .print-title { display:block; font-size:20pt; margin:0 0 .22in; }
  .print-meta { display:block; }
  .table-wrap { max-height:none; overflow:visible; border:0; }
  th { position:static; background:#f0f0f0; color:#111; }
  th, td { border-bottom:1px solid #bbb; padding:6pt; }
  table { font-size:9pt; page-break-inside:auto; }
  tr { page-break-inside:avoid; page-break-after:auto; }
  h2 { font-size:16pt; margin-bottom:.12in; }
  p.small { color:#333; margin-bottom:.15in; }
  .calendar-layout { display:block; }
  .money-calendar { border:1px solid #555; page-break-after:always; break-after:page; }
  .calendar-weekdays div { padding:5pt; }
  .calendar-day { min-height:92pt; padding:4pt; break-inside:avoid; }
  .calendar-date { color:#111; padding:0 0 3pt; }
  .calendar-event { color:#111; background:white !important; border:1px solid #aaa; font-size:7.5pt; padding:2pt 3pt; }
  .calendar-print-details { display:block; page-break-before:always; }
  .calendar-print-details table { font-size:8.5pt; }
}
