@import "https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&display=swap";:root{--bg:#fafaf7;--surface:#fff;--surface-2:#f4f4ef;--border:#e7e6df;--ink:#1a1d29;--muted:#6b7280;--accent:#2f6f6a;--accent-weak:#e4eeec;--pos:#2e7d5b;--neg:#c0492f;--shadow:0 1px 2px #1018280f, 0 1px 3px #1018280a;--r-card:14px;--r-ctrl:9px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Hanken Grotesk,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h2{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;font-size:.82rem;font-weight:600}input,select{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-ctrl);color:var(--ink);font:inherit;padding:9px 11px;font-size:.92rem}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak);outline:none}button{background:var(--accent);color:#fff;border-radius:var(--r-ctrl);font:inherit;cursor:pointer;border:none;padding:9px 14px;font-size:.9rem;font-weight:600;transition:filter .14s}button:hover{filter:brightness(1.06)}button:disabled{opacity:.55;cursor:default}button.ghost{background:var(--surface);border:1px solid var(--border);color:var(--ink);font-weight:500}button.ghost:hover{background:var(--surface-2);filter:none}.muted{color:var(--muted);font-size:.85rem}.error{color:var(--neg);white-space:pre-line;margin:0;font-size:.85rem}.center{place-items:center;min-height:100vh;padding:24px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);width:100%;max-width:380px;box-shadow:var(--shadow);flex-direction:column;gap:14px;padding:30px;display:flex}.card h1{margin:0 0 4px;font-size:1.4rem;font-weight:700}label{color:var(--muted);flex-direction:column;gap:6px;font-size:.8rem;display:flex}.page{max-width:960px;margin:0 auto;padding:0 20px 56px}.topbar{border-bottom:1px solid var(--border);align-items:center;gap:14px;margin-bottom:24px;padding:16px 0;display:flex}.topbar strong{letter-spacing:-.01em;font-size:1.05rem;font-weight:700}.topbar .brand:hover{text-decoration:none}.spacer{flex:1}main.fetching{opacity:.6;transition:opacity .14s}.topnav{gap:14px;display:flex}.topnav a{color:var(--muted);font-size:.88rem;font-weight:500}.topnav a:hover{color:var(--ink);text-decoration:none}.topnav a.active{color:var(--accent);font-weight:600}@media (width<=560px){.hide-sm{display:none}}.note{margin:0;font-size:.85rem}.note.ok{color:var(--pos)}.stack{flex-direction:column;gap:14px;max-width:420px;display:flex}.stack label{font-size:.8rem}.stack input{font-size:.92rem}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.subhead{color:var(--ink);text-transform:none;letter-spacing:0;margin:22px 0 8px;font-size:.92rem;font-weight:600}.inboxes{margin:0 0 8px;padding:0;list-style:none}.inbox{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:14px 0;display:flex}.inbox:last-child{border-bottom:none}.inbox-head{flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:.92rem;display:flex}.onboarding .checklist{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.onboarding .checklist li{align-items:baseline;gap:10px;font-size:.95rem;display:flex}.onboarding .checklist li.done{color:var(--muted)}.onboarding .check{color:var(--accent);flex:none;font-weight:700}.onboarding .checklist li.done .check{color:var(--pos)}main>section:not(.kpis),.two-col>section{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow);margin-bottom:20px;padding:20px 22px}.two-col>section{margin-bottom:0}.kpis{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow);padding:16px 18px}.kpi-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.9rem;font-weight:600}.kpi-label{color:var(--muted);margin-top:4px;font-size:.78rem}.kpi-sub{margin-top:2px;font-size:.72rem}.delta{vertical-align:middle;margin-left:6px;font-size:.72rem;font-weight:600}.delta.good{color:var(--pos)}.delta.bad{color:var(--neg)}.totals{margin:0;padding:0;list-style:none}.totals li{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:9px 0;font-size:.9rem;display:flex}.totals li:last-child{border-bottom:none}.totals .muted{font-variant-numeric:tabular-nums}table.txns{border-collapse:collapse;width:100%;font-size:.9rem}table.txns th,table.txns td{text-align:left;border-bottom:1px solid var(--border);padding:10px}table.txns th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;background:var(--surface-2);font-size:.78rem;font-weight:600}table.txns tbody tr:hover td{background:var(--surface-2)}table.txns tr:last-child td{border-bottom:none}.num{text-align:right;font-variant-numeric:tabular-nums}.month-switcher{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;align-items:center;gap:4px;padding:2px;display:inline-flex}.month-switcher select{background:0 0;border:none;border-radius:999px;padding:5px 10px;font-size:.85rem}.month-switcher select:focus{box-shadow:none}.month-switcher .arrow{color:var(--ink);background:0 0;border:none;border-radius:999px;padding:4px 9px;font-size:.95rem;line-height:1}.month-switcher .arrow:hover{background:var(--surface);filter:none}.two-col{grid-template-columns:1fr 1fr;align-items:start;gap:20px;margin-bottom:20px;display:grid}.cat-bars{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.cat-bar-head{justify-content:space-between;margin-bottom:5px;font-size:.85rem;display:flex}.cat-bar-track{background:var(--accent-weak);border-radius:999px;height:8px;overflow:hidden}.cat-bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .2s}.cat-bar-fill.over{background:var(--neg)}.trend{width:100%;height:auto}.trend-bar{fill:#d9dcd4}.trend-bar.sel{fill:var(--accent)}.trend-line{stroke:var(--accent);stroke-width:2px;opacity:.4}.trend-x{fill:var(--muted);font-size:11px}.review{background:#fcf8ee!important;border-color:#ecdcb6!important}.review h2{margin-top:0}.badge{background:var(--accent);color:#fff;vertical-align:middle;border-radius:999px;margin-left:6px;padding:1px 8px;font-size:.72rem;font-weight:700;display:inline-block}.pie{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.pie-legend{flex:1;min-width:160px;margin:0;padding:0;list-style:none}.pie-legend li{border-radius:7px;align-items:center;gap:8px;padding:5px 6px;font-size:.9rem;display:flex}.pie-legend li:hover{background:var(--surface-2)}.pie-legend li .muted{font-variant-numeric:tabular-nums;margin-left:auto}.pie-legend .dot{border-radius:50%;flex:none;width:10px;height:10px}button.link,button.breadcrumb{color:var(--accent);cursor:pointer;background:0 0;border:none;width:auto;padding:0;font-size:.85rem;font-weight:600}button.link:hover,button.breadcrumb:hover{filter:none;text-decoration:underline}button.breadcrumb{margin-left:10px}.cat-select{max-width:190px}.status-select.s-needs_review{color:#b7791f}.status-select.s-confirmed{color:var(--pos)}.tag{text-transform:uppercase;letter-spacing:.03em;background:var(--surface-2);color:var(--muted);vertical-align:middle;border-radius:5px;margin-left:6px;padding:2px 6px;font-size:.62rem;font-weight:700;display:inline-block}.tag.ask{color:#92600c;background:#fbeccb}.tag.err{background:var(--neg);color:#fff}.pie-legend .tag,.totals .tag{background:var(--accent-weak);color:var(--accent)}tr.collapsed td{opacity:.5}.budgets{margin:0;padding:0;list-style:none}.budgets li{border-bottom:1px solid var(--border);padding:9px 0}.budgets li:last-child{border-bottom:none}.budget-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;font-size:.9rem;display:flex}.budget-head .muted{font-variant-numeric:tabular-nums}.budget-input{text-align:right;width:72px;padding:3px 7px;font-size:.85rem}.cat-add{flex-wrap:wrap;align-items:center;gap:5px;display:inline-flex}.cat-add input{width:130px}.cat-add button.link{font-size:1rem}.cat-cascade{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.cat-cascade .cat-select{max-width:150px}button.link.merchant-mode{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-left:8px;font-size:.66rem;font-weight:700}button.link.merchant-mode:hover{color:var(--accent)}button.link.merchant-mode.on{color:#92600c}.add-txn-bar{margin:0 0 14px}.add-txn{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-ctrl);flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;padding:14px;display:flex}.add-txn input,.add-txn select{font-size:.85rem}.add-txn .error{flex-basis:100%}.syncbar{align-items:center;gap:12px;margin-bottom:18px;display:flex}.syncbar button.ghost{padding:7px 14px}.overbudget{background:#fdf3f0!important;border-color:#f0c8bd!important}.overbudget>strong{color:var(--neg);margin-bottom:8px;font-size:.9rem;display:block}.overbudget .num{color:var(--neg)}.breakdown{margin:0;padding:0;list-style:none}.breakdown .bd-children{margin:0;padding:0 0 0 18px;list-style:none}.breakdown .bd-row{width:100%;color:var(--ink);font:inherit;border:none;border-bottom:1px solid var(--border);cursor:pointer;background:0 0;justify-content:space-between;align-items:center;padding:8px 0;font-size:.9rem;display:flex}.breakdown .bd-row:hover{color:var(--accent);filter:none}.breakdown .bd-row .num{font-variant-numeric:tabular-nums;color:var(--muted)}.breakdown .bd-leaf{color:var(--muted);border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:7px 0;font-size:.85rem;display:flex}.breakdown .bd-leaf:last-child{border-bottom:none}.filters{flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px;display:flex}.filters label{color:var(--muted);align-items:center;gap:4px;font-size:.78rem;display:inline-flex}.filters input{padding:7px 9px;font-size:.85rem}.filter-search{min-width:190px}.filter-amount{width:84px}.filters button.ghost{margin-left:auto}@media (width<=760px){.two-col{grid-template-columns:1fr}}@media (width<=560px){.kpis{grid-template-columns:repeat(2,1fr)}.filters button.ghost{margin-left:0}}
