:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#17291f;background:#f5f7f2;--paper:#fff;--ink:#17291f;--muted:#526459;--line:#dfe7df;--pine:#174b3a;--lime:#dff0a0;--bad:#a03338;--radius:22px;font-synthesis:none;-webkit-text-size-adjust:100%;color-scheme:light}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.45}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #47886d;outline-offset:3px}svg{width:20px;height:20px;display:block;flex:none}h1,h2,h3,p{margin:0}h1{font-size:clamp(2rem,4vw,3.2rem);letter-spacing:-.065em;line-height:1.05}h2{font-size:1.15rem;letter-spacing:-.027em}small{font-size:.78rem}.muted{color:var(--muted)}.bad{color:var(--bad)}.positive{color:#226147}.number{font-variant-numeric:tabular-nums}.shell{max-width:1536px;margin:auto;display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100dvh}.rail{border-right:1px solid var(--line);position:sticky;top:0;height:100dvh;padding:32px 18px;display:flex;flex-direction:column;gap:48px}.brand{display:flex;align-items:center;gap:11px;font-size:1.17rem;letter-spacing:-.045em;white-space:nowrap}.brand b{font-weight:780}.brand small{display:block;font-size:.59rem;font-weight:750;letter-spacing:.15em;color:var(--muted);margin-top:3px}.logo{display:grid;place-items:center;width:39px;height:39px;background:var(--pine);color:var(--lime);border-radius:13px}.logo svg{width:25px;height:25px}.rail-note{margin-top:auto;display:flex;gap:10px;align-items:center;color:var(--muted);padding:12px;font-size:.82rem}.rail-note small{display:block;font-size:.69rem;margin-top:3px}.rail-note svg{width:17px}nav{display:grid;gap:5px}.nav-link{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:13px;font-size:.91rem;font-weight:650;color:#455c4f;min-height:46px}.nav-link:hover,.nav-link[aria-current=page]{color:var(--pine);background:#e4eee2}.nav-link[aria-current=page]{font-weight:790}.nav-link svg{width:19px}
main{width:100%;max-width:1200px;margin:0 auto;padding:0 clamp(20px,4vw,64px)}.topbar{height:82px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.desktop-label,.eyebrow{font-size:.69rem;font-weight:780;letter-spacing:.14em;color:var(--muted)}.mobile-brand{display:none}.icon-button{background:var(--paper);border:1px solid var(--line);display:grid;place-items:center;border-radius:12px;width:43px;height:43px}.icon-button:hover,.subtle:hover{background:#e8efe5}.page-head{margin:30px 0 22px;display:flex;justify-content:space-between;align-items:flex-end;gap:15px;flex-wrap:wrap}.page-head p{color:var(--muted);margin-top:7px;font-size:.92rem}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 15px;border:1px solid transparent;border-radius:12px;min-height:44px;font-weight:720;font-size:.87rem}.button svg{width:17px;height:17px}.primary{color:white;background:var(--pine)}.primary:hover{background:#21634c}.subtle{background:var(--paper);border-color:var(--line);color:var(--pine)}.danger{color:var(--bad);background:#fff4f3;border-color:#f2d5d3}.text-button{display:inline-flex;align-items:center;gap:5px;background:none;border:0;padding:9px 0;color:#245a44;font-weight:720;font-size:.82rem;white-space:nowrap;min-height:44px}.text-button svg{width:15px}.monthbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.month-picker{display:flex;align-items:center;gap:6px;background:white;border:1px solid var(--line);border-radius:13px;overflow:hidden}.month-picker button{border:0;background:transparent;display:grid;place-items:center;width:44px;height:44px}.month-picker button:hover{background:#edf3ea}.month-picker strong{font-size:.88rem;min-width:123px;text-align:center}.demo{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 13px 6px 15px;background:#eaf1db;border:1px solid #dce7c7;border-radius:13px;margin-bottom:14px;font-size:.83rem}.demo p{line-height:1.4}
.hero{background:#123e30;color:white;border-radius:var(--radius);padding:26px 27px;position:relative;isolation:isolate;overflow:hidden;min-height:250px}.hero::after{content:"";position:absolute;z-index:-1;width:350px;height:350px;top:-182px;right:-48px;border:1px solid #5f8673;border-radius:50%;box-shadow:0 0 0 27px #285242,0 0 0 28px #537d69,0 0 0 57px #214d3d,0 0 0 58px #456e5b;opacity:.6}.hero .eyebrow{color:#c7e4d2}.hero-value{font-size:clamp(2.6rem,6vw,4.25rem);line-height:1.08;font-weight:760;letter-spacing:-.065em;margin:10px 0 5px;overflow-wrap:anywhere}.hero-value.negative{color:#ffc0b7}.hero-desc{font-size:.84rem;color:#d2e7db;max-width:520px;line-height:1.45}.hero-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-top:23px;padding-top:17px;border-top:1px solid #507667}.hero-grid small{display:block;color:#cce1d4;margin-bottom:4px}.hero-grid strong{font-size:clamp(.9rem,2vw,1.22rem);overflow-wrap:anywhere}.hero-grid strong.income{color:var(--lime)}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-top:15px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:17px 19px;min-width:0}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;min-height:32px}.card-head .text-button{min-height:38px}.empty{color:var(--muted);font-size:.88rem;line-height:1.55;padding:13px 0}.row{display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;padding:10px 0;min-height:60px;border-top:1px solid #edf0eb}.row:first-child{border-top:0}.row-icon{border-radius:12px;width:37px;height:37px;display:grid;place-items:center;background:#ebf2e7;color:#326249}.row-icon svg{width:17px}.row-label{min-width:0}.row-label strong,.row-label small{display:block;overflow-wrap:anywhere}.row-label strong{font-size:.9rem}.row-label small{color:var(--muted);margin-top:3px;line-height:1.35}.row-end{display:flex;align-items:center;gap:8px;text-align:right}.row-end strong{white-space:nowrap;font-size:.89rem}.edit{height:44px;width:40px}.edit svg{width:15px}.pill{display:inline-block;border-radius:999px;padding:4px 8px;color:#2f5b44;background:#e8f2e5;font-size:.7rem;font-weight:700}.pill.alert{color:var(--bad);background:#fae9e5}.meter{margin:13px 0 15px}.meter:last-child{margin-bottom:4px}.meter-head,.meter-foot{display:flex;justify-content:space-between;align-items:center;gap:6px}.meter-head strong{font-size:.89rem}.meter-foot{margin-top:6px;color:var(--muted);font-size:.76rem}.track{height:8px;background:#e9efe6;border-radius:999px;overflow:hidden;margin-top:8px}.fill{height:100%;border-radius:inherit;background:#438768;max-width:100%}.fill.over{background:#ba5154}.summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;margin-bottom:15px}.summary .card strong{display:block;font-size:clamp(1.25rem,4vw,2rem);margin-top:6px;letter-spacing:-.045em}.full{margin-top:15px}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.filters input{flex:1;min-width:150px}.filters input,.filters select,form input,form select{border:1px solid #ccd9cd;border-radius:10px;background:#fff;color:var(--ink);min-height:44px;padding:8px 10px;max-width:100%;font-size:16px}.category-block{display:grid;gap:11px;padding:8px 0}.category-line{display:grid;grid-template-columns:1fr auto;gap:5px;font-size:.85rem}.category-line .track{margin:1px 0 0;grid-column:1/-1;height:6px}footer{margin:28px 0 20px;color:var(--muted);font-size:.62rem;letter-spacing:.12em;font-weight:700;display:flex;align-items:center;gap:8px}footer span{width:4px;height:4px;border-radius:50%;background:#719d84}
dialog{width:min(500px,calc(100% - 24px));max-height:calc(100dvh - 32px);border:1px solid var(--line);border-radius:20px;padding:0;color:var(--ink);background:#fff;box-shadow:0 18px 70px #0c281e42}dialog::backdrop{background:#0b261d82}.dialog-body{padding:20px}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}.dialog-head h2{font-size:1.35rem}.dialog-head .icon-button{flex:none}form{display:grid;gap:12px}form label{display:grid;gap:5px;font-size:.83rem;font-weight:680;min-width:0}form .two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.form-actions{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:5px}.hint,.form-error{font-size:.81rem;line-height:1.45}.hint{color:var(--muted)}.form-error{color:var(--bad)}.dialog-buttons{display:grid;gap:8px;margin:13px 0 8px}.dialog-buttons .button{justify-content:flex-start}.toast{position:fixed;z-index:5;bottom:20px;left:50%;transform:translateX(-50%);padding:11px 15px;background:#163e31;color:#fff;border-radius:12px;font-size:.88rem;max-width:calc(100vw - 24px);width:max-content;box-shadow:0 6px 20px #1836283b}
@media(max-width:850px){.shell{grid-template-columns:170px minmax(0,1fr)}.rail{padding:25px 12px}.grid{gap:11px}.card{padding:13px}.row{gap:8px}}
@media(max-width:680px){.shell{display:block}.rail{position:static;height:auto;padding:0;border:0}.rail .brand,.rail-note,.desktop-label{display:none}.mobile-brand{display:flex}.rail nav{position:fixed;z-index:4;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;padding:5px 6px calc(5px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#f8faf6}.nav-link{flex-direction:column;justify-content:center;gap:4px;padding:6px 2px;font-size:.69rem;border-radius:10px}.nav-link svg{width:18px;height:18px}main{padding:0 15px calc(66px + env(safe-area-inset-bottom))}.topbar{height:62px}.page-head{margin:19px 0 15px;align-items:flex-start}.page-head p{font-size:.84rem}.hero{padding:19px 17px;min-height:0}.hero::after{right:-185px;top:-199px}.hero-grid{gap:7px;margin-top:16px;padding-top:13px}.hero-grid small{font-size:.7rem}.grid{grid-template-columns:1fr;margin-top:11px}.card{padding:13px 15px;border-radius:17px}.toast{bottom:calc(67px + env(safe-area-inset-bottom))}.summary{gap:8px}.demo{padding-left:10px}.demo .text-button{font-size:.75rem}.row-end{gap:4px}.row-end strong{font-size:.82rem}}
@media(prefers-reduced-motion:no-preference){.fill{transition:width .2s ease}}

[hidden]{display:none!important}
.heading-actions{display:flex;gap:8px;flex-wrap:wrap}
.daily{margin-top:12px;color:#d6e8bf;font-size:.86rem;line-height:1.4}
.daily strong{color:var(--lime)}
.dialog-body .statement-source{overflow-wrap:anywhere}
dialog.wide{width:min(820px,calc(100% - 24px))}
.preview-tools{display:flex;flex-wrap:wrap;gap:6px}
.preview-list{max-height:min(52dvh,480px);overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:12px}
.preview-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:10px;padding:11px;border-bottom:1px solid var(--line)}
.preview-row:last-child{border:0}
.preview-duplicate{background:#fff8e9}
form .preview-check{display:flex;align-items:center;gap:9px;min-height:44px}
.preview-check input{width:19px;min-height:19px;flex:none;accent-color:var(--pine)}
.preview-check span{overflow-wrap:anywhere}
.preview-check small{display:block;font-size:.72rem;color:var(--muted);margin-top:3px}
.preview-row>strong{white-space:nowrap;align-self:center}
.preview-options{display:flex;grid-column:1/-1;gap:7px;flex-wrap:wrap}
.preview-options label{flex:1 1 145px}
.preview-options select{width:100%}
@media(max-width:420px){.heading-actions .button{padding-inline:9px;font-size:.79rem}.card-head>.button{padding-inline:8px;font-size:.76rem}.preview-row{gap:6px}.preview-options label{flex-basis:110px}}
.top-actions{display:flex;align-items:center;gap:8px}
.offline-badge{font-size:.68rem;font-weight:720;color:var(--muted);padding:5px 8px;border-radius:999px;background:#e9eee6;max-width:118px;text-align:center;line-height:1.15}
.offline-badge[data-state=ready]{background:#e5f1df;color:#23543e}
.status-panel,.profile-panel{padding:10px 12px;border-radius:12px;background:#eff5eb;color:#345747;font-size:.85rem}
.status-panel{margin:11px 0}
.inline-check{display:flex;align-items:center;gap:9px;min-height:44px}
.inline-check input{width:19px;min-height:19px;flex:none;accent-color:var(--pine)}
.mapping-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.mapping-grid select{width:100%}
.ocr-fields label:first-child{flex-basis:100%}
.batch-row .button{font-size:.75rem;padding:6px 8px}
@media(max-width:420px){.top-actions{gap:5px}.mobile-brand{gap:6px;font-size:1rem}.mobile-brand .logo{width:35px;height:35px}.offline-badge{font-size:.62rem;padding:4px 5px;max-width:92px}}

.meter progress {
  display: block;
  width: 100%;
  height: 8px;
  margin: 8px 0;
  accent-color: var(--pine);
}
.rule-panel {
  min-width: 0;
  grid-column: 1 / -1;
}
.preview-check small.bad {
  color: var(--bad);
}
.paypal-group {
  border-top: 1px solid var(--line);
  padding-top: 10px;
  margin-top: 8px;
  overflow-wrap: anywhere;
}
.linked-paypal {
  margin-top: 12px;
}
.linked-paypal summary {
  cursor: pointer;
  padding: 8px 0;
  font-weight: 600;
}

.sync-alert {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff8e9;
  font-size: .85rem;
}
.sync-setup {
  display: grid;
  gap: 8px;
}
.sync-setup details {
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.sync-setup summary {
  cursor: pointer;
  font-weight: 600;
}
.sync-setup form {
  margin-top: 8px;
}
