:root{color-scheme:light dark;--color-bg: #f3f4f6;--color-surface: #ffffff;--color-surface-alt: #fafbfc;--color-border: #e4e7eb;--color-border-strong: #d1d5db;--color-text: #1f2937;--color-text-secondary: #4b5563;--color-text-muted: #6b7280;--color-text-inverse: #f9fafb;--color-sidebar-bg: #1c2333;--color-sidebar-fg: #d6dbe6;--color-sidebar-muted: #8b94a6;--color-sidebar-hover: #2a3245;--color-sidebar-active: #353d52;--color-sidebar-title: #7d8699;--color-accent: #2d7ff9;--color-accent-hover: #1f63cc;--color-accent-fg: #ffffff;--pill-green-bg: #c4ecbb;--pill-green-fg: #1d4913;--pill-yellow-bg: #f9e1a9;--pill-yellow-fg: #70460b;--pill-red-bg: #f7c1b5;--pill-red-fg: #651c0b;--pill-neutral-bg: #e5e7eb;--pill-neutral-fg: #6b7280;--color-positive: #15803d;--color-negative: #b91c1c;--cleared-fg: #9aa1ad;--cleared-on-bg: #c4ecbb;--cleared-on-fg: #1d4913;--color-error-bg: #fee2e2;--color-error-fg: #991b1b;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05);--shadow-md: 0 4px 14px rgba(15, 23, 42, .08);--shadow-lg: 0 10px 30px rgba(15, 23, 42, .15);--sidebar-width: 232px;--inspector-width: 320px;--topbar-height: 48px;--page-header-height: 64px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;font-family:var(--font-sans);font-feature-settings:"tnum" 1,"cv11" 1}@media (prefers-color-scheme: dark){:root{--color-bg: #0f1419;--color-surface: #161c24;--color-surface-alt: #1c2330;--color-border: #2a313e;--color-border-strong: #3a4252;--color-text: #e6e8eb;--color-text-secondary: #a8aebb;--color-text-muted: #7d8699;--color-text-inverse: #0b0d12;--color-sidebar-bg: #0b1018;--color-sidebar-hover: #161c26;--color-sidebar-active: #1f2632;--pill-green-bg: #1d4913;--pill-green-fg: #c4ecbb;--pill-yellow-bg: #4a3308;--pill-yellow-fg: #f9e1a9;--pill-red-bg: #4d160a;--pill-red-fg: #f7c1b5;--pill-neutral-bg: #2a313e;--pill-neutral-fg: #a8aebb;--color-positive: #4ade80;--color-negative: #f87171;--color-error-bg: #4d160a;--color-error-fg: #f7c1b5;--cleared-fg: #565d6b;--cleared-on-bg: #1d4913;--cleared-on-fg: #c4ecbb}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--color-bg);color:var(--color-text);font-variant-numeric:tabular-nums}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}button:not(.icon-btn):not(.ghost-btn):not(.budget-switcher):not(.dropdown-item):not(.cleared-toggle):not(.month-label):not(.reflect-tab):not(.pill-btn):not(.payee-option):not(.ctx-item):not(.ctx-flag):not(.toast-close):not(.activity-link){background:var(--color-accent);color:var(--color-accent-fg);border:1px solid var(--color-accent);padding:.55rem 1rem;border-radius:6px;font-weight:500;transition:background .12s ease}button:not(.icon-btn):not(.ghost-btn):not(.budget-switcher):not(.dropdown-item):not(.cleared-toggle):not(.month-label):not(.reflect-tab):not(.pill-btn):not(.payee-option):not(.ctx-item):not(.ctx-flag):not(.toast-close):not(.activity-link):hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}button:disabled{opacity:.55;cursor:not-allowed}.ghost-btn{background:transparent;border:1px solid var(--color-border-strong);color:var(--color-text-secondary);padding:.45rem .85rem;border-radius:6px;transition:background .12s ease}.ghost-btn:hover:not(:disabled){background:var(--color-surface-alt);color:var(--color-text)}.ghost-btn.block{display:block;width:100%}.icon-btn{background:transparent;border:1px solid transparent;color:var(--color-text-secondary);width:32px;height:32px;border-radius:6px;font-size:1.2rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}.icon-btn:hover{background:var(--color-surface-alt)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{width:100%;padding:.55rem .7rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);color:var(--color-text);transition:border-color .12s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #2d7ff92e}label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--color-text-secondary)}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) 1fr;height:100vh}.app-shell.has-inspector{grid-template-columns:var(--sidebar-width) 1fr var(--inspector-width)}.app-main{display:grid;grid-template-rows:var(--topbar-height) auto 1fr;min-width:0}.app-content{overflow:auto;padding:1rem 1.25rem 3rem}.page-header{display:flex;align-items:center;gap:1rem;padding:.5rem 1.25rem;border-bottom:1px solid var(--color-border);background:var(--color-surface);min-height:var(--page-header-height)}.header-actions{margin-left:auto;display:flex;gap:.5rem}.sidebar{background:var(--color-sidebar-bg);color:var(--color-sidebar-fg);display:flex;flex-direction:column;overflow-y:auto;border-right:1px solid #000}.sidebar-budget{padding:.5rem .5rem .4rem;border-bottom:1px solid rgba(255,255,255,.05);position:relative}.budget-switcher{width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:1px solid transparent;color:var(--color-sidebar-fg);padding:.4rem .55rem;border-radius:6px;font-weight:600;font-size:.92rem}.budget-switcher:hover{background:var(--color-sidebar-hover)}.budget-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.caret{font-size:.8rem;margin-left:.5rem;color:var(--color-sidebar-muted)}.dropdown{position:absolute;top:100%;left:1rem;right:1rem;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:8px;box-shadow:var(--shadow-lg);z-index:50;overflow:hidden}.dropdown-item{display:block;width:100%;text-align:left;background:transparent;border:none;padding:.6rem .9rem;color:var(--color-text);font-size:.9rem}.dropdown-item:hover{background:var(--color-surface-alt)}.dropdown-item.active{background:var(--color-surface-alt);font-weight:600}.dropdown-item.danger{color:var(--color-negative)}.dropdown-item.danger:hover{background:var(--color-error-bg)}.danger-btn{background:var(--color-negative);color:#fff;border:1px solid var(--color-negative);padding:.55rem 1rem;border-radius:6px;font-weight:500}.danger-btn:hover:not(:disabled){filter:brightness(1.1)}.danger-btn:disabled{opacity:.5;cursor:not-allowed}.dropdown-divider{height:1px;background:var(--color-border)}.sidebar-section{padding:.25rem .4rem}.sidebar-section-title{display:flex;align-items:center;justify-content:space-between;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-sidebar-title);padding:.6rem .55rem .3rem}.sidebar-section-amount{color:var(--color-sidebar-fg);font-variant-numeric:tabular-nums}.sidebar-section-amount.negative{color:#f7c1b5}.sidebar-link{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.32rem .55rem;border-radius:5px;color:var(--color-sidebar-fg);font-size:.86rem;margin:1px 0}.sidebar-link:hover{background:var(--color-sidebar-hover);text-decoration:none}.sidebar-link.active{background:var(--color-sidebar-active);font-weight:600}.sidebar-link-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.sidebar-link-amount{font-variant-numeric:tabular-nums;font-size:.8rem;color:var(--color-sidebar-muted)}.sidebar-link-amount.negative{color:#f7c1b5}.sidebar-footer{margin-top:auto;padding:.75rem 1rem 1rem;border-top:1px solid rgba(255,255,255,.05)}.sidebar-footer .ghost-btn{background:transparent;border:1px dashed rgba(214,219,230,.25);color:var(--color-sidebar-fg)}.sidebar-footer .ghost-btn:hover{background:var(--color-sidebar-hover);border-color:#d6dbe680}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 1.25rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.topbar-title{margin:0;font-size:.95rem;font-weight:600;letter-spacing:-.005em}.topbar-right{display:flex;align-items:center;gap:1rem}.month-picker{display:inline-flex;align-items:center;gap:.15rem}.month-label{background:transparent;border:1px solid transparent;padding:.35rem .75rem;font-weight:700;color:var(--color-text);border-radius:6px;font-size:1.05rem;letter-spacing:-.005em}.month-label:hover{background:var(--color-surface-alt)}.month-label .caret{font-size:.7rem;color:var(--color-text-muted);margin-left:.2rem}.rta-pill{display:inline-flex;align-items:center;gap:.75rem;padding:.4rem 1rem;border-radius:8px;border:1px solid transparent;min-width:180px}.rta-pill.positive{background:var(--pill-green-bg);border-color:var(--pill-green-bg)}.rta-pill.negative{background:var(--pill-red-bg);border-color:var(--pill-red-bg)}.rta-pill.zero{background:var(--color-surface-alt);border-color:var(--color-border)}.rta-pill-amount{font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1}.rta-pill.positive .rta-pill-amount{color:var(--pill-green-fg)}.rta-pill.negative .rta-pill-amount{color:var(--pill-red-fg)}.rta-pill.zero .rta-pill-amount{color:var(--color-text)}.rta-pill-label{font-size:.78rem;font-weight:600;letter-spacing:.01em;line-height:1.15;max-width:13rem}.rta-pill.positive .rta-pill-label{color:var(--pill-green-fg);opacity:.85}.rta-pill.negative .rta-pill-label{color:var(--pill-red-fg);opacity:.85}.rta-pill.zero .rta-pill-label{color:var(--color-text-secondary)}.budget-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;overflow:hidden;font-size:.92rem}.budget-table thead th{text-align:right;font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);padding:.55rem .85rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-alt)}.budget-table thead th.col-name{text-align:left}.budget-table .group-row{background:var(--color-surface-alt);font-weight:600;cursor:pointer}.budget-table .group-row:hover{background:var(--color-bg)}.budget-table .group-row td{padding:calc(var(--row-pad-y, 3px) + 2px) .85rem;border-top:1px solid var(--color-border);line-height:1.2}.budget-table .group-row .caret{display:inline-block;width:1.1rem;color:var(--color-text-secondary)}.budget-table .cat-row td{padding:var(--row-pad-y, 3px) .85rem;border-top:1px solid var(--color-border);font-size:.85rem;line-height:1.2}.budget-table .pill{padding-top:0;padding-bottom:0}.activity-link{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;font-variant-numeric:tabular-nums;text-decoration:underline dotted transparent;text-underline-offset:2px}.activity-link:hover{text-decoration-color:var(--color-accent, #2d7ff9);color:var(--color-accent, #2d7ff9)}.activity-table .activity-memo{color:var(--color-text-muted, #6b7280);max-width:16rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-split{color:var(--color-text-muted, #6b7280);font-size:.8em}.activity-table tfoot td{border-top:2px solid var(--color-border, #e4e7eb);font-weight:600}.activity-total-label{color:var(--color-text-muted, #6b7280);font-weight:400}.row-density{display:inline-flex;align-items:center;gap:.4rem;font-size:.8rem;color:var(--color-text-muted)}.row-density-icon{font-size:.95rem}.row-density input[type=range]{width:90px;accent-color:var(--color-accent)}.row-density input[type=number]{width:3.2rem;padding:.2rem .35rem;text-align:right;border:1px solid var(--color-border-strong);border-radius:6px;background:var(--color-surface);color:var(--color-text);font-variant-numeric:tabular-nums}.budget-table .cat-row.is-selected{background:#2d7ff914}.budget-bulk-bar{margin-bottom:.75rem}.budget-table .cat-row:hover{background:var(--color-surface-alt)}.budget-table .cat-row .drag-handle{display:inline-block;margin-left:-1rem;margin-right:.4rem;width:.9rem;color:var(--color-text-muted, #8a93a6);cursor:grab;opacity:0;-webkit-user-select:none;user-select:none;transition:opacity .1s}.budget-table .cat-row:hover .drag-handle{opacity:.7}.budget-table .cat-row .drag-handle:hover{opacity:1}.budget-table .cat-row .drag-handle:active{cursor:grabbing}.budget-table .cat-row.dragging{opacity:.4}.budget-table .cat-row.drag-over td{box-shadow:inset 0 2px 0 0 var(--color-primary, #5b5be6)}.budget-table .group-row.drag-over td{box-shadow:inset 0 -2px 0 0 var(--color-primary, #5b5be6)}.budget-table .col-name{text-align:left;width:40%}.budget-table .cat-row .col-name{padding-left:2.4rem}.budget-table .col-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.budget-table .editable{cursor:text}.budget-table .editable:hover{background:#2d7ff90f}.budget-table .editable input{width:9rem;text-align:right;padding:var(--row-pad-y, 3px) .5rem;font-variant-numeric:tabular-nums}.pill{display:inline-block;padding:.12rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600;font-variant-numeric:tabular-nums;min-width:5rem;text-align:center}.pill-green{background:var(--pill-green-bg);color:var(--pill-green-fg)}.pill-yellow{background:var(--pill-yellow-bg);color:var(--pill-yellow-fg)}.pill-red{background:var(--pill-red-bg);color:var(--pill-red-fg)}.pill-neutral{background:var(--pill-neutral-bg);color:var(--pill-neutral-fg)}.col-name .cat-name{display:block}.goal-line{display:flex;align-items:center;gap:.5rem;margin-top:.2rem}.goal-bar{flex:0 0 84px;height:5px;border-radius:999px;background:var(--pill-neutral-bg);overflow:hidden}.goal-bar-fill{display:block;height:100%;background:var(--pill-yellow-fg);border-radius:999px;transition:width .2s ease}.goal-bar-fill.funded{background:var(--pill-green-fg)}.goal-text{font-size:.72rem;color:var(--color-text-muted, #6b7280);font-variant-numeric:tabular-nums}.cat-name{display:inline-flex;align-items:center;gap:.4rem}.goal-edit-btn{border:none;background:none;cursor:pointer;font-size:.78rem;opacity:0;padding:0 .15rem;transition:opacity .12s ease}.cat-row:hover .goal-edit-btn{opacity:.55}.goal-edit-btn:hover{opacity:1}.goal-modal-footer{display:flex;align-items:center;gap:.5rem;width:100%}.auto-assign-wrap,.report-range,.ms-filter{position:relative}.report-controls{display:flex;gap:.5rem;flex-wrap:wrap}.ms-menu{min-width:240px;padding:.4rem}.ms-actions{display:flex;gap:.4rem;padding-bottom:.35rem;border-bottom:1px solid var(--color-border, #2a3344);margin-bottom:.35rem}.ms-actions .ghost-btn{font-size:.76rem;padding:.15rem .4rem}.ms-list{max-height:280px;overflow-y:auto;display:flex;flex-direction:column}.ms-row{display:flex;flex-direction:row;align-items:center;gap:.5rem;padding:.28rem .4rem;border-radius:5px;cursor:pointer;font-size:.86rem}.ms-row input{flex:0 0 auto;margin:0}.ms-row:hover{background:var(--color-surface-alt, #f3f4f6)}.ms-footer{display:flex;justify-content:flex-end;gap:.4rem;padding-top:.4rem;border-top:1px solid var(--color-border, #2a3344);margin-top:.35rem}.dropdown-menu button.active{background:var(--color-surface-alt, #f3f4f6)!important;color:var(--accent, #5b5be6)!important;font-weight:700}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.dropdown-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:50;min-width:220px;background:var(--color-surface, #fff);border:1px solid var(--color-border, #d1d5db);border-radius:8px;box-shadow:0 8px 24px #0000002e;padding:.3rem;display:flex;flex-direction:column}.dropdown-menu button{text-align:left;background:none!important;border:none!important;padding:.5rem .7rem;border-radius:6px;cursor:pointer;font-size:.88rem;color:var(--color-text)!important;font-weight:500}.dropdown-menu button:hover{background:var(--color-surface-alt, #f3f4f6)}.group-name-cell{display:flex;align-items:center;gap:.6rem}.group-name-toggle{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer}.add-cat-inline{font-size:.76rem;padding:.1rem .4rem;opacity:0;white-space:nowrap;transition:opacity .12s ease}.group-row:hover .add-cat-inline{opacity:.7}.add-cat-inline:hover{opacity:1}.add-cat-input{max-width:14rem}.pill-btn{border:1px solid transparent;cursor:pointer;font:inherit;font-weight:600;font-variant-numeric:tabular-nums}.pill-btn:hover{filter:brightness(.96);border-color:#00000026}.ledger-search{margin-left:.75rem;min-width:18rem;max-width:24rem}.running-balance{font-variant-numeric:tabular-nums;color:var(--color-text-muted, #6b7280)}.reconcile-btn{margin-left:auto;align-self:center}.cleared-toggle.reconciled{background:var(--pill-green-fg, #1d4913);color:#fff;border-color:var(--pill-green-fg, #1d4913)}.reconcile-diff{border-top:1px solid var(--color-border, #e5e7eb);padding-top:.6rem;display:flex;flex-direction:column;gap:.3rem}.reconcile-diff>div{display:flex;justify-content:space-between;font-variant-numeric:tabular-nums}.upcoming{margin:0 0 1rem;border:1px solid var(--color-border, #e5e7eb);border-radius:10px;background:var(--color-surface-alt, #f9fafb);padding:.5rem .75rem .75rem}.ctx-menu{position:fixed;z-index:1000;min-width:180px;background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:8px;box-shadow:0 8px 24px #0000002e;padding:.25rem;display:flex;flex-direction:column}.ctx-header{padding:.35rem .6rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted, #6b7280)}.ctx-item{text-align:left;background:none;border:none;border-radius:5px;padding:.4rem .6rem;font-size:.85rem;color:var(--color-text, #111);cursor:pointer}.ctx-item:hover:not(:disabled){background:var(--color-surface-alt, #f3f4f6)}.ctx-item:disabled{opacity:.4;cursor:default}.ctx-item.danger{color:#e0526a}.ctx-sep{height:1px;background:var(--color-border, #e5e7eb);margin:.25rem .3rem}.ctx-subhead{display:block;padding:.3rem .6rem .1rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted, #9aa3b2)}.ctx-item.ctx-sub{padding-left:1.1rem;font-size:.82rem}.ctx-flags{display:flex;gap:.3rem;padding:.35rem .6rem;align-items:center}.ctx-flag{width:18px;height:18px;border-radius:50%;border:1px solid rgba(0,0,0,.2);cursor:pointer;padding:0}.ctx-flag.clear{background:var(--color-surface-alt, #f3f4f6);color:var(--color-text-muted, #6b7280);font-size:12px;line-height:1}.budget-table .hidden-group-row strong{color:var(--color-text-muted, #9aa3b2)}.hidden-count{margin-left:.45rem;padding:0 .4rem;border-radius:8px;font-size:.72rem;font-weight:600;color:var(--color-text-muted, #9aa3b2);background:var(--color-surface-alt, #f3f4f6)}.budget-table .hidden-cat-row .cat-name{color:var(--color-text-muted, #9aa3b2)}.budget-table .hidden-cat-row .unhide-inline{margin-left:.6rem;padding:.05rem .45rem;font-size:.75rem;opacity:0}.budget-table .hidden-cat-row:hover .unhide-inline{opacity:1}.closed-accounts{margin-top:1.5rem}.closed-accounts h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted, #6b7280)}.closed-list{list-style:none;margin:.5rem 0 0;padding:0}.closed-list li{display:flex;justify-content:space-between;align-items:center;padding:.35rem .5rem;border-top:1px solid var(--color-border, #e5e7eb)}.closed-name{color:var(--color-text-muted, #6b7280)}.flag-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:.4rem;vertical-align:middle}.upcoming-title{display:flex;align-items:center;gap:.4rem;width:100%;margin:.25rem 0 .5rem;padding:.15rem 0;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted, #6b7280);background:none;border:none;cursor:pointer;text-align:left}.upcoming-title .caret{font-size:.7rem}.enter-all-due{margin-left:auto;font-size:.72rem;text-transform:none;letter-spacing:0;color:var(--accent, #5b5be6);cursor:pointer}.enter-all-due:hover{text-decoration:underline}.upcoming-count{font-size:.7rem;background:var(--color-border, #e5e7eb);color:var(--color-text-muted, #6b7280);border-radius:999px;padding:.05rem .45rem;letter-spacing:0}.upcoming-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.upcoming-row{display:grid;grid-template-columns:6.5rem 1fr 10rem 7rem auto;align-items:center;gap:.75rem;padding:.3rem .25rem;border-radius:6px}.upcoming-row:hover{background:var(--color-surface, #fff)}.upcoming-date{font-variant-numeric:tabular-nums;font-size:.85rem}.upcoming-amt{text-align:right;font-variant-numeric:tabular-nums;font-weight:600}.upcoming-actions{display:flex;gap:.4rem}.upcoming-actions button{padding:.2rem .6rem;font-size:.8rem}.report-periods{display:flex;gap:.4rem}.report-periods .ghost-btn.active{background:var(--accent, #2d7ff9);color:#fff;border-color:var(--accent, #2d7ff9)}.report-card{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e5e7eb);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1.25rem;box-shadow:var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, .05))}.report-card h3{margin:0 0 .75rem;font-size:.95rem}.spending-bars{display:flex;flex-direction:column;gap:.35rem}.spending-row{display:grid;grid-template-columns:12rem 1fr 7rem;align-items:center;gap:.75rem}.spending-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.88rem}.spending-track{background:var(--color-surface-alt, #f3f4f6);border-radius:999px;height:14px;overflow:hidden}.spending-fill{display:block;height:100%;background:var(--accent, #2d7ff9);border-radius:999px}.spending-amt{text-align:right;font-variant-numeric:tabular-nums;font-size:.88rem}.ie-chart{display:flex;align-items:flex-end;gap:.5rem;height:200px;padding-top:.5rem}.ie-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.ie-bars{flex:1;display:flex;align-items:flex-end;gap:2px;width:100%;justify-content:center}.ie-bar{width:42%;border-radius:3px 3px 0 0;min-height:1px}.ie-bar.income{background:var(--pill-green-fg, #1d8a3a)}.ie-bar.expense{background:var(--pill-red-fg, #b91c1c)}.ie-label{margin-top:.3rem;color:var(--color-text-muted, #6b7280);font-size:.68rem}.networth-current{font-size:1.5rem;font-weight:700;font-variant-numeric:tabular-nums;margin:0 0 .5rem}.networth-current small{font-size:.78rem;font-weight:400}.networth-svg{width:100%;height:180px}.reflect-header{display:flex;flex-direction:column;gap:.6rem;width:100%}.reflect-tabs{display:flex;gap:1.25rem}.reflect-tab{background:none;border:none;border-bottom:2px solid transparent;padding:.35rem .1rem;color:var(--color-text-muted, #9aa3b2);font-size:.92rem;font-weight:600;cursor:pointer}.reflect-tab.active{color:var(--color-text, #fff);border-bottom-color:var(--accent, #5b5be6)}.report-kpi-label{color:var(--color-text-muted, #9aa3b2);font-size:.82rem;margin:0}.report-kpi{font-size:2rem;font-weight:700;font-variant-numeric:tabular-nums;margin:.1rem 0 .2rem}.breakdown{display:flex;gap:2rem;align-items:center;flex-wrap:wrap;min-height:60vh}.breakdown-chart{flex:1 1 480px;display:flex;justify-content:center;align-items:center}.breakdown-toggle{display:inline-flex;border:1px solid var(--color-border, #2a3344);border-radius:8px;overflow:hidden;margin-bottom:.75rem}.breakdown-toggle button{background:none!important;border:none!important;color:var(--color-text-muted, #9aa3b2)!important;padding:.35rem .9rem!important;font-size:.84rem;cursor:pointer}.breakdown-toggle button.active{background:var(--accent, #5b5be6)!important;color:#fff!important}.breakdown-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem 2rem}.stat{display:flex;flex-direction:column;gap:.15rem}.stat-label{font-size:.78rem;color:var(--color-text-muted, #9aa3b2)}.stat-value{font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums}.donut{width:100%;max-width:600px;height:auto}.donut-label{fill:var(--color-text-muted, #9aa3b2);font-size:9px;text-anchor:middle}.donut-total{fill:var(--color-text, #fff);font-size:18px;font-weight:700;text-anchor:middle}.donut-sub{fill:var(--color-text-muted, #9aa3b2);font-size:9px;text-anchor:middle}.inflow-card{margin-top:.75rem}.inflow-head{display:flex;justify-content:space-between;font-weight:700;margin-bottom:.5rem}.inflow-note{margin-top:.5rem;font-size:.75rem}.legend-amt.positive,.inflow-head .positive{color:#8ad04a}.breakdown-legend{flex:0 0 340px;min-width:280px;display:flex;flex-direction:column;gap:.4rem}.legend-row{display:grid;grid-template-columns:14px 1fr 3rem 7rem;align-items:center;gap:.6rem;font-size:.88rem}.legend-dot{width:12px;height:12px;border-radius:3px}.legend-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-pct{color:var(--color-text-muted, #9aa3b2);text-align:right}.legend-amt{text-align:right;font-variant-numeric:tabular-nums}.bar-chart{display:flex;align-items:flex-end;gap:.5rem;height:220px;margin:1rem 0}.bar-col{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.bar-track{flex:1;display:flex;align-items:flex-end;width:70%}.bar-fill{width:100%;border-radius:4px 4px 0 0;min-height:1px}.bar-fill.blue{background:var(--accent, #5b5be6)}.bar-label{margin-top:.3rem;color:var(--color-text-muted, #9aa3b2);font-size:.68rem}.trend-svg{width:100%;height:auto;margin-top:.5rem}.trend-avg{stroke:#cdd3e0;stroke-width:1.5;stroke-dasharray:5 4;opacity:.8}.trend-bar{fill:var(--accent, #5b5be6);opacity:.85;rx:3}.trend-line{stroke:#cdd3e0;stroke-width:2}.trend-dot{fill:#fff;stroke:#cdd3e0;stroke-width:2}.trend-axis{display:flex;justify-content:space-between;color:var(--color-text-muted, #9aa3b2);font-size:.7rem;padding:0 1.5rem}.nw-combo{width:100%;height:auto;margin:.75rem 0}.nw-bar.asset{fill:var(--accent, #5b5be6)}.nw-bar.debt{fill:#e0526a}.cf-income{fill:#3fb27f}.cf-spending{fill:#e0a24a}.cf-debt{fill:#e0526a}.cf-legend{display:flex;gap:1.25rem;margin:.25rem 0 .5rem;font-size:.82rem;color:var(--color-text-secondary, #4b5563)}.cf-legend span{display:inline-flex;align-items:center;gap:.4rem}.cf-sw{display:inline-block;width:11px;height:11px;border-radius:2px}.cf-legend .cf-income{background:#3fb27f}.cf-legend .cf-spending{background:#e0a24a}.cf-legend .cf-debt{background:#e0526a}.nw-line{stroke:#cdd3e0;stroke-width:2.5}.nw-grid{stroke:var(--color-border, #2a3142);stroke-width:1;opacity:.5}.nw-zero{stroke:var(--color-text-muted, #9aa3b2);stroke-width:1.5}.nw-ylabel,.nw-xlabel{fill:var(--color-text-muted, #9aa3b2);font-size:12px;font-variant-numeric:tabular-nums}.nw-hovercol{fill:var(--color-text, #1f2937);opacity:.07}.nw-tip-bg{fill:#1c2333;stroke:#3a4252;stroke-width:1;opacity:.98}.nw-tip-head{fill:#f5f7fa;font-size:12px;font-weight:600}.nw-tip-label{fill:#9aa3b2;font-size:12.5px}.nw-tip-val{fill:#f5f7fa;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}.aom-svg{width:100%;height:auto;margin-top:.5rem}.aom-area{fill:#8ad04a38}.aom-line{stroke:#8ad04a;stroke-width:2.5}.aom-dot{fill:#fff;stroke:#8ad04a;stroke-width:2}.aom-axis{display:flex;justify-content:space-between;color:var(--color-text-muted, #9aa3b2);font-size:.68rem;padding:0 1.5rem}.aom-explain{margin-top:1rem}.aom-explain p{margin:.4rem 0 0}.auto-assign-list{display:flex;flex-direction:column;gap:.3rem}.auto-assign-list .block{text-align:left;width:100%}.report-table{width:100%;border-collapse:collapse;margin-top:.5rem;font-size:.88rem}.report-table th{text-align:left;color:var(--color-text-muted, #9aa3b2);font-weight:600;font-size:.78rem;padding:.5rem;border-bottom:1px solid var(--color-border, #2a3344)}.report-table td{padding:.55rem .5rem;border-bottom:1px solid var(--color-border, #1f2733);font-variant-numeric:tabular-nums}.report-table .num{text-align:right}.report-table tfoot td{border-top:2px solid var(--color-border, #2a3344);border-bottom:none;font-weight:600}.ie-pivot-wrap{overflow-x:auto}.ie-pivot{min-width:100%;white-space:nowrap}.ie-pivot th:first-child,.ie-pivot td:first-child{position:sticky;left:0;background:var(--color-surface, #161c24);text-align:left}.ie-section td{text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;color:var(--color-text-muted, #9aa3b2);padding-top:.9rem;border-bottom:none}.ie-rowlabel{max-width:16rem;overflow:hidden;text-overflow:ellipsis}.ie-subtotal td{font-weight:600;border-top:1px solid var(--color-border, #2a3344)}.ie-group td{font-weight:600;padding-top:.7rem;color:var(--color-text, #e6e9ef);border-bottom:none}.ie-grouptotal td{font-style:italic;color:var(--color-text-muted, #9aa3b2);border-bottom:1px solid var(--color-border, #2a3344)}.ledger-toolbar{display:flex;justify-content:flex-start;margin-bottom:.75rem}.ledger-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;overflow:hidden;font-size:.9rem}.ledger-table thead th{text-align:left;font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);padding:.85rem 1rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-alt)}.ledger-table thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.ledger-table thead th.sortable:hover{color:var(--color-text)}.ledger-table thead th.col-num{text-align:right}.ledger-table thead th.col-cleared{text-align:center;width:60px}.ledger-table thead th.col-check,.ledger-row td.col-check,.budget-table thead th.col-check,.budget-table td.col-check{width:36px;text-align:center;padding-left:.5rem;padding-right:.5rem}.col-check input[type=checkbox]{width:auto;cursor:pointer;accent-color:var(--color-accent)}.ledger-row{cursor:pointer}.ledger-row.is-selected{background:#2d7ff914}.ledger-row.editing{background:#2d7ff90f;cursor:default}.bulk-bar{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:8px;flex-wrap:wrap}.bulk-count{font-weight:600;color:var(--color-text-secondary);margin-right:.5rem}.bulk-categorize{display:flex;align-items:center;gap:.25rem}.bulk-categorize select{min-width:200px;padding:.4rem .5rem;font-size:.85rem}.split-badge{display:inline-flex;align-items:center;gap:.4rem}.split-this-btn{margin-left:.25rem;padding:.25rem .5rem;font-size:.78rem}.ledger-splits-edit td{padding:0!important;background:#2d7ff90a}.splits-editor{padding:.75rem 1rem 1rem}.splits-editor-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;font-size:.9rem}.splits-balance{margin-right:auto;font-variant-numeric:tabular-nums;font-size:.85rem}.splits-balance.ok{color:var(--pill-green-fg)}.splits-balance.off{color:var(--pill-red-fg)}.splits-table{width:100%;border-collapse:collapse;font-size:.88rem}.splits-table thead th{text-align:left;font-size:.65rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);padding:.3rem .5rem;border-bottom:1px solid var(--color-border)}.splits-table thead th.col-num{text-align:right}.splits-table td{padding:.3rem .5rem;border-bottom:1px solid var(--color-border)}.splits-table td.col-num{text-align:right}.splits-table input,.splits-table select{padding:.3rem .45rem;font-size:.85rem}.ledger-table td{padding:.55rem 1rem;border-top:1px solid var(--color-border);vertical-align:middle}.ledger-row:hover{background:var(--color-surface-alt)}.ledger-row.adding{background:#2d7ff90f}.ledger-row td.col-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.ledger-row td.col-num input{text-align:right}.ledger-row td.col-date{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--color-text-secondary);width:110px}.ledger-row td.col-payee,.ledger-row td.col-cat{width:22%}.ledger-row td.col-cleared{text-align:center;width:60px}.ledger-empty{text-align:center;padding:2rem 1rem!important}.ledger-row.adding input,.ledger-row.adding select{padding:.35rem .5rem;font-size:.9rem}.row-actions{display:flex;gap:.25rem;justify-content:flex-end}.cleared-toggle{width:28px;height:22px;border:1px solid var(--cleared-fg);background:transparent;color:var(--cleared-fg);border-radius:4px;font-size:.72rem;font-weight:700;line-height:1}.cleared-toggle.on{background:var(--cleared-on-bg);color:var(--cleared-on-fg);border-color:var(--cleared-on-bg)}.ledger-row.is-split td.col-cat{white-space:nowrap}.ledger-row.is-split summary{cursor:pointer;color:var(--color-accent);font-weight:500;list-style:none;display:inline-flex;align-items:center;gap:.3rem}.ledger-row.is-split summary:before{content:"▸";font-size:.7rem;transition:transform .12s ease}.ledger-row.is-split details[open] summary:before{transform:rotate(90deg)}.split-list{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.2rem;font-size:.85rem;color:var(--color-text-secondary)}.split-list li{display:flex;gap:.5rem;align-items:baseline}.split-list li>span:first-child{flex:1}.split-out{color:var(--color-negative);font-variant-numeric:tabular-nums}.split-in{color:var(--color-positive);font-variant-numeric:tabular-nums}.account-balances{display:flex;gap:1.5rem;align-items:center}.balance{display:inline-flex;flex-direction:column;align-items:flex-end;gap:.1rem;line-height:1.15}.balance small{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.balance strong{font-size:1rem;font-variant-numeric:tabular-nums}.balance strong.negative{color:var(--color-negative)}.auth-wrap{display:grid;place-items:center;min-height:100vh;padding:2rem;background:var(--color-bg)}.card{width:100%;max-width:380px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:1.75rem;display:flex;flex-direction:column;gap:1rem;box-shadow:var(--shadow-md)}.card h1{margin:0;font-size:1.45rem;letter-spacing:-.005em}.welcome-wrap{display:grid;place-items:center;min-height:100vh;padding:2rem;background:var(--color-bg)}.welcome-card{width:100%;max-width:480px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:2rem;display:flex;flex-direction:column;gap:1.25rem;box-shadow:var(--shadow-md)}.welcome-card h1{margin:0;font-size:1.6rem;letter-spacing:-.005em}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:grid;place-items:center;z-index:100}.modal{width:100%;max-width:460px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:calc(100vh - 4rem)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-border)}.modal-header h2{margin:0;font-size:1.05rem;font-weight:600}.modal-body{padding:1.25rem;overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem;padding:.85rem 1.25rem;border-top:1px solid var(--color-border);background:var(--color-surface-alt)}.form-grid{display:grid;gap:1rem}.swap-row{display:flex;justify-content:center;margin:-.55rem 0}.swap-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--color-border-strong, #d1d5db);border-radius:50%;background:var(--color-surface, #fff);color:var(--color-text-secondary, #4b5563);font-size:1rem;line-height:1}.swap-btn:hover{border-color:var(--color-accent, #2d7ff9);color:var(--color-accent, #2d7ff9)}.remote-budget-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.remote-budget-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;border:1px solid var(--color-border);border-radius:8px;padding:.75rem 1rem;background:var(--color-surface-alt)}.section-label{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.section-divider{text-align:center;font-size:.85rem;color:var(--color-text-muted);padding:.25rem 0}.import-counts{list-style:none;margin:0;padding:.5rem 0;display:grid;grid-template-columns:1fr 1fr;gap:.35rem 1rem;font-size:.9rem;color:var(--color-text-secondary)}.inspector{border-left:1px solid var(--color-border);background:var(--color-surface);overflow-y:auto}.inspector-body{padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1rem}.inspector-header h2{margin:0;font-size:.95rem;font-weight:700;letter-spacing:-.005em}.inspector-section{display:flex;flex-direction:column;gap:.5rem}.inspector-section h3{margin:0 0 .25rem;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.inspector-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem 0;font-size:.88rem;border-bottom:1px solid var(--color-border)}.inspector-row:last-child{border-bottom:none}.inspector-row strong{font-variant-numeric:tabular-nums;font-weight:600}.inspector-row strong.positive{color:var(--color-positive)}.inspector-row strong.negative{color:var(--color-negative)}.budget-table .add-cat-row td,.budget-table .add-group-row td{padding:.45rem 1rem;border-top:1px dashed var(--color-border);background:transparent}.budget-table .add-cat-row .add-link,.budget-table .add-group-row .add-link{border-style:dashed;color:var(--color-text-muted);font-size:.85rem;padding:.35rem .7rem}.budget-table .add-cat-row input,.budget-table .add-group-row input{max-width:18rem;padding:.35rem .6rem;font-size:.9rem}.payee-input{position:relative}.payee-dropdown{position:absolute;top:100%;left:0;right:0;margin-top:2px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;box-shadow:var(--shadow-lg);z-index:30;max-height:240px;overflow-y:auto}.payee-option{display:block;width:100%;text-align:left;background:transparent;border:none;padding:.45rem .7rem;color:var(--color-text);font-size:.9rem}.payee-option:hover,.payee-option.highlight{background:#2d7ff91f}.payee-group-head{position:sticky;top:0;padding:.35rem .7rem .2rem;font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);background:var(--color-surface)}.payee-xfer-icon{display:inline-block;width:1.1em;margin-right:.35rem;color:var(--color-accent);font-weight:600}.muted{color:var(--color-text-muted);font-size:.9rem}.negative{color:var(--color-negative)}.error{background:var(--color-error-bg);color:var(--color-error-fg);padding:.6rem .85rem;border-radius:6px;margin:0;font-size:.9rem}.loading{display:grid;place-items:center;color:var(--color-text-muted)}.placeholder-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:2rem;max-width:540px;margin:1rem auto;text-align:center}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:6px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}.toast{position:fixed;bottom:1.5rem;right:1.5rem;z-index:1200;display:flex;align-items:center;gap:.75rem;max-width:min(90vw,26rem);padding:.75rem .75rem .75rem 1rem;background:var(--color-sidebar-bg);color:var(--color-text-inverse);border-radius:8px;box-shadow:0 8px 24px #00000038;font-size:.9rem;line-height:1.35;animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}.toast-close{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;border-radius:4px;background:transparent;color:var(--color-sidebar-muted);font-size:1.1rem;line-height:1;cursor:pointer}.toast-close:hover{background:var(--color-sidebar-hover);color:var(--color-text-inverse)}
