:root{color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--surface-2: #211f1c;--ink: #ffffff;--ink-2: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--baseline: #383835;--ring: rgba(255, 255, 255, .1);--accent: #c3b98f;--good: #0ca30c;--bad: #e66767;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--s4: #c98500;--s5: #d55181;--s6: #008300;--s7: #9085e9;--s8: #e66767;--serif: "Iowan Old Style", "Palatino", Georgia, serif;--sans: system-ui, -apple-system, "Segoe UI", sans-serif}@media (prefers-color-scheme: light){:root:not([data-theme=dark]){color-scheme:light;--page: #f9f9f7;--surface: #fcfcfb;--surface-2: #f3f2ee;--ink: #0b0b0b;--ink-2: #52514e;--muted: #898781;--grid: #e1e0d9;--baseline: #c3c2b7;--ring: rgba(11, 11, 11, .1);--accent: #8a7a45;--good: #006300;--bad: #d03b3b;--s1: #2a78d6;--s2: #eb6834;--s3: #1baf7a;--s4: #eda100;--s5: #e87ba4;--s6: #008300;--s7: #4a3aa7;--s8: #e34948}}*{box-sizing:border-box;margin:0}html,body,#root{min-height:100%}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:var(--page);color:var(--ink);font-family:var(--sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input,select{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.appgrid{display:grid;grid-template-columns:208px minmax(0,1fr);min-height:100vh}.side{border-right:1px solid var(--grid);padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:22px}.side-head{display:flex;align-items:baseline;gap:10px;padding:0 8px}.side nav{display:flex;flex-direction:column;gap:2px}.side nav button{display:flex;align-items:center;gap:10px;background:none;border:none;text-align:left;padding:8px 10px;border-radius:6px;color:var(--ink-2);font-size:14px}.side nav button:hover{background:var(--surface-2);color:var(--ink)}.side nav button.on{background:var(--surface-2);color:var(--ink);box-shadow:inset 2px 0 0 var(--accent)}.side nav .glyph{width:16px;color:var(--muted);font-size:13px}.shell{max-width:980px;margin:0 auto;padding:24px 20px 64px;width:100%}.wordmark{font-family:var(--serif);font-size:22px;font-weight:600;letter-spacing:.01em}.wordmark em{font-style:italic;color:var(--accent)}.envbadge{font-size:11px;font-weight:600;letter-spacing:.08em;padding:2px 8px;border-radius:3px;border:1px solid var(--ring);color:var(--ink-2)}.envbadge.live{color:var(--good);border-color:var(--good)}@media (max-width: 820px){.appgrid{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:column;gap:10px;border-right:none;border-bottom:1px solid var(--grid);padding:14px 16px 10px}.side nav{flex-direction:row;overflow-x:auto;gap:4px}.side nav button{padding:6px 10px;white-space:nowrap}.side nav button.on{box-shadow:inset 0 -2px 0 var(--accent);background:none}.side nav .glyph{display:none}.shell{padding-top:16px}}.panel{background:var(--surface);border:1px solid var(--ring);border-radius:8px;padding:18px 20px;margin-bottom:18px}.eyebrow{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}@media (max-width: 760px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}.tile{min-width:0}.tile .value{overflow-wrap:anywhere}.tile .label{font-size:12px;color:var(--muted);margin-bottom:2px}.tile .value{font-size:26px;font-weight:600;letter-spacing:-.01em}.tile .sub{font-size:12px;color:var(--ink-2)}.delta-up{color:var(--good)}.delta-down{color:var(--bad)}.ribbon-row{display:flex;align-items:center;gap:10px;margin:10px 0 4px}.ribbon-tag{width:52px;flex:none;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:right}.ribbon{display:flex;flex:1;height:20px;gap:2px}.ribbon .seg{border-radius:4px;min-width:3px;position:relative}.ribbon .seg:hover{filter:brightness(1.15)}.ribbon-labels{display:flex;gap:14px;flex-wrap:wrap;margin:10px 0 0 62px}.ribbon-labels .lab{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}.chip{width:9px;height:9px;border-radius:2px;flex:none}.tablewrap{overflow-x:auto}table.ledger{width:100%;border-collapse:collapse}table.ledger th{text-align:left;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:6px 10px;border-bottom:1px solid var(--baseline)}table.ledger td{padding:8px 10px;border-bottom:1px solid var(--grid);font-variant-numeric:tabular-nums}table.ledger tr:last-child td{border-bottom:none}table.ledger .num,table.ledger th.num{text-align:right}.symcell{display:flex;align-items:center;gap:8px;font-weight:600}.chartwrap{position:relative}.chartwrap svg{display:block;width:100%;height:auto}.tooltip{position:absolute;pointer-events:none;background:var(--surface-2);border:1px solid var(--ring);border-radius:6px;padding:6px 10px;font-size:12px;color:var(--ink);white-space:nowrap;transform:translate(-50%,-110%);box-shadow:0 4px 14px #00000040}.tooltip .t-date{color:var(--muted)}.empty{color:var(--muted);font-size:13px;padding:18px 0}.btn{background:var(--ink);color:var(--page);border:none;border-radius:6px;padding:8px 16px;font-weight:600}.btn:hover{opacity:.88}.btn.ghost{background:none;color:var(--ink);border:1px solid var(--baseline)}.btn.ghost:hover{background:var(--surface-2)}.btn:disabled{opacity:.45;cursor:default}.formrow{display:flex;align-items:center;gap:10px;margin-bottom:10px}.formrow label{width:130px;flex:none;color:var(--ink-2);font-size:13px}.formrow input,.formrow select{background:var(--surface-2);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:6px 10px;width:110px}.formrow input:focus,.formrow select:focus{border-color:var(--accent);outline:none}.wrow{display:flex;gap:8px;align-items:center;margin-bottom:8px}.wrow input[type=text]{width:90px;text-transform:uppercase}.wrow input[type=number]{width:80px}.wrow .x{background:none;border:none;color:var(--muted);font-size:16px;padding:2px 6px}.wrow .x:hover{color:var(--bad)}.sumline{font-size:13px;margin:6px 0 14px;color:var(--ink-2)}.sumline.bad{color:var(--bad)}.note{font-size:12px;color:var(--muted);margin-top:10px}.errmsg{color:var(--bad);font-size:13px;margin-top:8px}.okmsg{color:var(--good);font-size:13px;margin-top:8px}.plan{background:var(--surface-2);border-radius:6px;padding:12px 14px;margin-top:12px}.plan .prow{display:flex;justify-content:space-between;padding:3px 0;font-variant-numeric:tabular-nums}.plan .prow.total{border-top:1px solid var(--baseline);margin-top:6px;padding-top:8px;font-weight:600}.planbtns{display:flex;gap:10px;margin-top:12px}.act-detail{color:var(--ink-2);font-size:13px}.hero{font-size:34px;font-weight:650;letter-spacing:-.02em}.nw-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px;flex-wrap:wrap}.nw-head .label{font-size:12px;color:var(--muted)}.pills{display:flex;gap:4px}.pills button{background:none;border:1px solid transparent;border-radius:999px;padding:4px 12px;color:var(--ink-2);font-size:12px}.pills button:hover{background:var(--surface-2)}.pills button.on{border-color:var(--baseline);color:var(--ink)}.acct-group{margin-bottom:18px}.acct-group-head{display:flex;justify-content:space-between;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:6px 0;border-bottom:1px solid var(--baseline);font-variant-numeric:tabular-nums}.acct-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--grid)}.acct-group .acct-row:last-child{border-bottom:none}.acct-name{font-weight:600}.acct-inst{font-size:12px;color:var(--muted)}.acct-bal{font-variant-numeric:tabular-nums}.syncwarn{color:var(--bad)}.linkbtns{display:flex;gap:10px;flex-wrap:wrap}.txn-filters{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.searchbox{flex:1;min-width:180px;background:var(--surface-2);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:7px 12px}.searchbox:focus{border-color:var(--accent);outline:none}.txn-filters select{background:var(--surface-2);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:7px 10px}.txn-day{margin-bottom:6px}.txn-date{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);padding:10px 0 4px;border-bottom:1px solid var(--baseline)}.txn-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--grid)}.txn-row.pending{opacity:.6}.txn-main{flex:1;min-width:0}.txn-merchant{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.txn-pend{font-size:12px;color:var(--muted);font-weight:400}.txn-acct{font-size:12px;color:var(--muted)}.txn-amt{font-variant-numeric:tabular-nums;font-weight:550;white-space:nowrap}.txn-cat{position:relative}.catchip{display:flex;align-items:center;gap:6px;background:none;border:1px solid transparent;border-radius:999px;padding:3px 10px;color:var(--ink-2);font-size:12px;max-width:160px;overflow:hidden;white-space:nowrap}.catchip:hover{border-color:var(--baseline)}.catpicker{position:absolute;right:0;top:30px;z-index:20;width:230px;background:var(--surface-2);border:1px solid var(--ring);border-radius:8px;padding:8px;box-shadow:0 8px 24px #0000004d}.catpicker input{width:100%;background:var(--surface);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:6px 10px;margin-bottom:6px}.catlist{max-height:240px;overflow-y:auto;display:flex;flex-direction:column}.catlist button{display:flex;align-items:center;gap:8px;background:none;border:none;text-align:left;padding:6px 8px;border-radius:5px;color:var(--ink-2);font-size:13px}.catlist button:hover{background:var(--surface);color:var(--ink)}.catlist button.on{color:var(--ink);font-weight:600}@media (max-width: 560px){.txn-cat{display:none}}.sts-math{display:flex;gap:14px;margin-top:6px;font-size:13px;color:var(--muted);flex-wrap:wrap;font-variant-numeric:tabular-nums}.cards2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.card-click{cursor:pointer}.card-click:hover{border-color:var(--baseline)}.bill-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--grid)}.panel .bill-row:last-of-type{border-bottom:none}.pricechange{font-size:12px;color:var(--s4);font-weight:500}.mbars{display:flex;gap:6px;align-items:stretch;height:150px;margin-top:10px}.mbar{flex:1;display:flex;flex-direction:column;background:none;border:none;padding:0;gap:6px;min-width:0}.mbar-col{flex:1;display:flex;align-items:flex-end}.mbar-fill{width:100%;background:var(--s1);opacity:.45;border-radius:4px 4px 0 0;min-height:2px}.mbar:hover .mbar-fill{opacity:.75}.mbar.on .mbar-fill{opacity:1}.mbar-label{font-size:10px;color:var(--muted);text-align:center}.mbar.on .mbar-label{color:var(--ink);font-weight:600}.cat-row{display:grid;grid-template-columns:150px minmax(0,1fr) 70px;gap:12px;align-items:center;padding:7px 0}.cat-track{height:10px;border-radius:4px;background:var(--surface-2);overflow:hidden}.cat-fill{height:100%;border-radius:4px;min-width:2px}.cat-amt{text-align:right;font-variant-numeric:tabular-nums;font-size:13px}@media (max-width: 560px){.cat-row{grid-template-columns:110px 1fr 60px}}.budget-row{margin-bottom:14px}.budget-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;font-size:13px}.budget-nums{font-variant-numeric:tabular-nums;display:flex;gap:8px;align-items:center}.budget-nums .of{color:var(--muted)}.overtag{color:var(--bad);font-size:12px;font-weight:600}.budget-track{position:relative;height:12px;border-radius:4px;background:var(--surface-2)}.budget-fill{height:100%;border-radius:4px;min-width:2px;max-width:100%}.pace-tick{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink-2);border-radius:1px}.addbudget{display:flex;gap:10px;align-items:center;margin-top:8px;flex-wrap:wrap}.addbudget select{background:var(--surface-2);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:6px 10px}.subnav{display:flex;gap:4px;margin-bottom:14px;align-items:center}.subnav button{background:none;border:1px solid transparent;border-radius:999px;padding:5px 14px;color:var(--ink-2);font-size:13px}.subnav button:hover{background:var(--surface-2)}.subnav button.on{border-color:var(--baseline);color:var(--ink)}.subnav .badge{background:var(--accent);color:var(--page);border-radius:999px;font-size:11px;font-weight:700;padding:1px 7px;margin-left:6px}.subnav-right{margin-left:auto}.btn.confirm{padding:4px 10px;border-radius:999px;font-size:13px}.ruleprompt{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--ring);border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:13px}.rulebuilder{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--ink-2)}.rulebuilder input,.rulebuilder select{background:var(--surface-2);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:6px 10px}.bulkbar{position:fixed;bottom:18px;left:50%;transform:translate(-50%);display:flex;gap:12px;align-items:center;z-index:50;background:var(--surface-2);border:1px solid var(--ring);border-radius:10px;padding:10px 16px;box-shadow:0 8px 30px #0006}.bulkbar select{background:var(--surface);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:6px 10px}.txn-row input[type=checkbox]{accent-color:var(--accent)}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login form{background:var(--surface);border:1px solid var(--ring);border-radius:10px;padding:36px 34px;width:320px;text-align:center}.login .wordmark{font-size:30px;margin-bottom:4px;display:block}.login p{color:var(--muted);font-size:13px;margin-bottom:20px}.login input{width:100%;background:var(--surface-2);color:var(--ink);border:1px solid var(--baseline);border-radius:6px;padding:9px 12px;margin-bottom:12px}.login .btn{width:100%}
