:root{--bg:#fff;--surface:#f7f7f8;--border:#e3e3e6;--text:#1a1a1a;--muted:#6b6b70;--accent:#2d5bd7;--accent-soft:#eaf0ff;--warn:#b45309;--danger:#b00020;--ok:#157347;--nav-w:13rem;--bar-h:3.5rem}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}button{font:inherit;cursor:pointer}.shell{min-height:100%;display:flex}.sidebar{width:var(--nav-w);flex:0 0 var(--nav-w);border-right:1px solid var(--border);background:var(--surface);flex-direction:column;gap:.125rem;height:100vh;padding:1rem .5rem;display:flex;position:sticky;top:0}.brand{letter-spacing:-.01em;padding:.25rem .75rem 1rem;font-size:1rem;font-weight:650}.nav-item{color:var(--text);text-align:left;background:0 0;border:0;border-radius:.375rem;align-items:center;gap:.625rem;width:100%;padding:.5rem .75rem;font-size:.9375rem;display:flex}.nav-item:hover{background:#ececef}.nav-item[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:550}.nav-item .glyph{text-align:center;flex:none;width:1.25rem}.nav-sep{background:var(--border);height:1px;margin:.5rem .75rem}.main{flex-direction:column;flex:auto;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--bg);z-index:5;align-items:center;gap:.75rem;padding:.625rem 1.25rem;display:flex;position:sticky;top:0}.topbar .spacer{flex:auto}.content{flex:auto;padding:1.25rem}.period{border:1px solid var(--border);border-radius:.375rem;align-items:center;display:inline-flex;overflow:hidden}.period button{color:var(--muted);background:0 0;border:0;padding:.3125rem .5rem}.period button:hover:not(:disabled){background:var(--surface);color:var(--text)}.period .label{font-variant-numeric:tabular-nums;text-align:center;border-left:1px solid var(--border);border-right:1px solid var(--border);min-width:6.5rem;padding:.3125rem .625rem;font-size:.875rem}.basis-toggle{border:1px solid var(--border);border-radius:.375rem;display:inline-flex;overflow:hidden}.basis-toggle button{color:var(--muted);background:0 0;border:0;padding:.3125rem .625rem;font-size:.8125rem}.basis-toggle button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:550}.sync{color:var(--muted);align-items:center;gap:.375rem;font-size:.8125rem;display:inline-flex}.sync .dot{background:var(--ok);border-radius:50%;flex:none;width:.5rem;height:.5rem}.sync[data-status=pending] .dot{background:var(--warn)}.sync[data-status=offline] .dot{background:var(--danger)}.narrow-only{display:none}.wide-only{display:inline}.bottombar{display:none}.centered{text-align:left;max-width:26rem;margin:4rem auto;padding:0 1.5rem}.muted{color:var(--muted)}.error{color:var(--danger);font-size:.875rem}.btn{border:1px solid var(--border);background:var(--bg);border-radius:.375rem;padding:.5rem 1rem}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-quiet{color:var(--muted);background:0 0;padding:.3125rem .625rem;font-size:.875rem}.chips{flex-wrap:wrap;gap:.375rem;margin:.75rem 0;padding:0;list-style:none;display:flex}.chip{background:var(--surface);border:1px solid var(--border);border-radius:.25rem;padding:.125rem .5rem;font-family:ui-monospace,monospace;font-size:.75rem}.placeholder{border:1px dashed var(--border);color:var(--muted);text-align:center;border-radius:.5rem;padding:2rem 1.25rem}@media (width<=1024px){:root{--nav-w:3.25rem}.sidebar{align-items:center;padding:1rem .375rem}.brand{padding:.25rem 0 1rem;font-size:.8125rem}.nav-item{justify-content:center;padding:.5rem}.nav-item .text{display:none}}@media (width<=767px){.sidebar{display:none}.shell{flex-direction:column}.content{padding:1rem 1rem calc(var(--bar-h) + 1.5rem)}.topbar{padding:.625rem 1rem}.bottombar{height:var(--bar-h);background:var(--bg);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:10;display:flex;position:fixed;bottom:0;left:0;right:0}.bottombar button{color:var(--muted);background:0 0;border:0;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:.125rem;font-size:.6875rem;display:flex}.bottombar button[aria-current=page]{color:var(--accent)}.bottombar .glyph{font-size:1.125rem;line-height:1}.narrow-only{display:inline}.wide-only,.sync .sync-text{display:none}.period .label{white-space:nowrap;min-width:4.75rem;font-size:.8125rem}.basis-toggle button{padding:.3125rem .5rem}.topbar{gap:.5rem}}.panel{border:1px solid var(--border);border-radius:.5rem;max-width:44rem;margin:0 0 1.25rem;padding:1rem 1.25rem 1.25rem}.panel h2{letter-spacing:.01em;margin:0 0 .75rem;font-size:.9375rem}.field{margin:0 0 1rem;display:block}.field>span{margin-bottom:.25rem;font-size:.875rem;display:block}.field select,.field input[type=text],.field input:not([type]),.field textarea{border:1px solid var(--border);width:100%;max-width:26rem;font:inherit;background:var(--bg);color:var(--text);border-radius:.375rem;padding:.4375rem .5rem}.field input[type=range]{width:100%;max-width:26rem}.field small{margin-top:.25rem;display:block}.small{font-size:.8125rem}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.placeholder.small{padding:.75rem;font-size:.8125rem}.notes{color:var(--muted);margin:.75rem 0;padding-left:1.125rem;font-size:.8125rem}.pdf-sample{border:1px solid var(--border);background-color:#fff;background-image:linear-gradient(45deg,#eee 25%,#0000 25% 75%,#eee 75%),linear-gradient(45deg,#eee 25%,#0000 25% 75%,#eee 75%);background-position:0 0,8px 8px;background-size:16px 16px;border-radius:.375rem;align-items:center;gap:1rem;margin-bottom:.75rem;padding:1rem;display:flex}.pdf-logo{flex:none;justify-content:center;align-items:center;min-width:4rem;height:4rem;display:flex}.pdf-logo img{object-fit:contain;max-width:12rem;max-height:4rem;display:block}.pdf-logo.personal img{object-fit:cover;border-radius:50%;width:4rem;height:4rem}.pdf-head{line-height:1.35}.install-prompt{background:var(--text);color:#fff;z-index:20;border-radius:.5rem;align-items:center;gap:.75rem;max-width:30rem;margin:0 auto;padding:.75rem 1rem;font-size:.875rem;display:flex;position:fixed;bottom:1rem;left:1rem;right:1rem;box-shadow:0 6px 24px #0000002e}.install-prompt .btn{border-color:#0000}.install-prompt .btn-quiet{color:#bbb}@media (width<=767px){.install-prompt{bottom:calc(var(--bar-h) + .75rem)}.panel{padding:.875rem 1rem 1rem}}.head-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.table{border-collapse:collapse;width:100%}.table td{border-top:1px solid var(--border);vertical-align:top;padding:.5rem .25rem}.table tr:first-child td{border-top:0}.table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table td.actions{text-align:right;white-space:nowrap;width:1%}.table tr.archived td{opacity:.55}.tiny{font-size:.75rem}.badge{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:.25rem;margin-left:.375rem;padding:0 .3125rem;font-size:.6875rem}.btn-link{color:var(--accent);text-underline-offset:2px;background:0 0;border:0;padding:.125rem .375rem;font-size:.8125rem;text-decoration:underline}.btn-link:disabled{color:var(--muted);text-decoration:none}.btn-link.danger{color:var(--danger)}@media (width<=767px){.table td.actions{white-space:normal}.head-row{flex-direction:column;align-items:stretch;gap:.5rem}}.meter{background:var(--surface);border:1px solid var(--border);border-radius:.25rem;height:.5rem;margin:.5rem 0 .75rem;overflow:hidden}.meter-fill{background:var(--ok);height:100%;transition:width .2s}.meter-fill[data-level=mid]{background:var(--warn)}.meter-fill[data-level=high]{background:var(--danger)}.table.compact td{padding:.3125rem .25rem;font-size:.875rem}.subpanel{border:1px solid var(--border);background:var(--surface);border-radius:.375rem;margin:.75rem 0;padding:.875rem 1rem 1rem}.row input,.row select{border:1px solid var(--border);font:inherit;background:var(--bg);color:var(--text);border-radius:.375rem;min-width:10rem;padding:.4375rem .5rem}.txn-layout{align-items:flex-start;gap:1.5rem;display:flex}.txn-main{flex:auto;min-width:0}.txn-side{border:1px solid var(--border);border-radius:.5rem;flex:0 0 21rem;padding:1rem 1.25rem 1.25rem;position:sticky;top:4.25rem}.txn-side h2{margin:0 0 .75rem;font-size:.9375rem}.txn-table tr{cursor:pointer}.txn-table tr:hover td{background:var(--surface)}.txn-table tr.selected td{background:var(--accent-soft)}.txn-table td.date{white-space:nowrap;width:1%;color:var(--muted);font-size:.8125rem}.txn-table td.num.income{color:var(--ok)}.txn-table td.num.transfer{color:var(--muted)}.totals-row{border-top:1px solid var(--border);padding-top:.625rem}.amount-field{margin-bottom:.5rem}.amount-input{align-items:center;gap:.375rem;display:flex}.amount-symbol{color:var(--muted);font-size:1.125rem}.amount-input input{font:inherit;font-variant-numeric:tabular-nums;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:.375rem;flex:auto;min-width:0;padding:.4375rem .5rem}.amount-input input[aria-invalid=true]{border-color:var(--danger)}.amount-preview{min-height:1.25rem;padding-left:1.25rem;font-size:.8125rem}.amount-field.large .amount-input input{padding:.5rem .625rem;font-size:2rem}.amount-field.large .amount-symbol{font-size:1.75rem}.amount-field.large .amount-preview{padding-left:2rem;font-size:1rem}.txn-form .field{margin-bottom:.75rem}.txn-form .field select,.txn-form .field input,.txn-form .field textarea{max-width:none}.txn-form .divider{border:0;border-top:1px solid var(--border);margin:.875rem 0}.txn-form .more-fields{margin-top:.75rem}.txn-form .form-actions{margin-top:1rem}.type-toggle{border:1px solid var(--border);border-radius:.375rem;margin-bottom:.875rem;display:flex;overflow:hidden}.type-toggle button{color:var(--muted);border:0;border-right:1px solid var(--border);background:0 0;flex:1 1 0;padding:.4375rem .5rem;font-size:.8125rem}.type-toggle button:last-child{border-right:0}.type-toggle button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:550}.checkbox{flex-wrap:wrap;align-items:flex-start;gap:.5rem;margin-bottom:.625rem;font-size:.875rem;display:flex}.checkbox input{margin-top:.1875rem}.checkbox small{flex-basis:100%;margin-left:1.5rem}.chip.selected{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.chip.removable{cursor:pointer}.filter-bar{border:1px solid var(--border);background:var(--surface);border-radius:.375rem;margin-bottom:1rem;padding:.625rem .75rem}.filter-bar .row{gap:.375rem}.filter-bar select,.filter-bar input{min-width:8rem;padding:.3125rem .4375rem;font-size:.8125rem}.filter-bar input[type=search]{flex:12rem}.chip-row{margin-top:.5rem}@media (width<=1024px){.txn-side{flex-basis:18rem}}@media (width<=767px){.txn-layout{display:block}.filter-bar select,.filter-bar input{flex:8rem;min-width:0}}.figures{flex-wrap:wrap;align-items:stretch;gap:.5rem;margin:1rem 0 .75rem;display:flex}.figures-op{color:var(--muted);align-self:center;font-size:1.25rem}.figure{border:1px solid var(--border);border-radius:.5rem;flex:10rem;min-width:0;padding:.875rem 1rem}.figure.emphasis{border-color:var(--accent);background:var(--accent-soft)}.figure-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.75rem}.figure-value{font-variant-numeric:tabular-nums;margin-top:.25rem;font-size:1.5rem}.figure.emphasis .figure-value{color:var(--accent)}.panel-grid{grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:1rem;display:grid}.panel-grid .panel{max-width:none;margin:0}@media (width<=767px){.figures{flex-direction:column}.figures-op{display:none}.figure-value{font-size:1.25rem}}.ok{color:var(--ok);font-size:.875rem}.warn{color:var(--warn);font-size:.8125rem}.inline{white-space:nowrap;align-items:center;gap:.375rem;font-size:.8125rem;display:inline-flex}.table-scroll{max-width:100%;overflow-x:auto}.table-scroll .table{min-width:34rem}.reclassify-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border);padding:.375rem .25rem;font-size:.75rem;font-weight:550}.reclassify-table th.num{text-align:right}.reclassify-table th.pick,.reclassify-table td.pick{width:1%;padding-right:.5rem}.reclassify-table tbody tr{cursor:pointer}.reclassify-table tbody tr.selected td{background:var(--accent-soft)}.reclassify-table td{white-space:nowrap}.reclassify-actions{border:1px solid var(--border);background:var(--surface);border-radius:.375rem;margin-top:.75rem;padding:.625rem .75rem;position:sticky;bottom:0;box-shadow:0 -4px 16px #0000000f}.reclassify-actions .row{flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.reclassify-actions .spacer{flex:auto}.reclassify-actions select{padding:.3125rem .4375rem;font-size:.8125rem}.reclassify-actions p{margin:.5rem 0 0}.skip-reasons{margin:.375rem 0 0;padding-left:1.125rem}@media (width<=767px){.reclassify-actions{position:static}.reclassify-actions .spacer{display:none}}.period{position:relative}.period .label{font:inherit;cursor:pointer;background:0 0;border:0;border-radius:.25rem;padding:.25rem .5rem;font-weight:550}.period .label:hover{background:var(--surface)}.period-menu{z-index:30;border:1px solid var(--border);background:var(--bg);border-radius:.5rem;min-width:15rem;padding:.5rem;position:absolute;top:calc(100% + .375rem);left:0;box-shadow:0 8px 28px #00000024}.period-menu .menu-item{text-align:left;width:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:.25rem;padding:.4375rem .5rem;display:block}.period-menu .menu-item:hover{background:var(--surface)}.period-menu .menu-item[aria-current=true]{color:var(--accent);font-weight:550}.period-menu .menu-sep{background:var(--border);height:1px;margin:.5rem 0}.period-menu .menu-field{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.375rem;font-size:.8125rem;display:flex}.period-menu .menu-field input{flex:auto;min-width:0}.period-menu .menu-apply{width:100%;margin-top:.25rem}.period-menu p{margin:.375rem 0 0}.report-picker{flex-wrap:wrap;gap:.25rem;margin-bottom:.5rem;display:flex}.report-tab{border:1px solid var(--border);background:var(--bg);cursor:pointer;border-radius:.375rem;padding:.375rem .75rem;font-size:.8125rem}.report-tab[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:550}.report-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:.375rem .5rem;font-size:.75rem;font-weight:550}.report-table th.num{text-align:right}.report-table td{white-space:nowrap;padding:.375rem .5rem}.report-table tfoot td{border-top:2px solid var(--border)}.export-bar{border:1px solid var(--border);background:var(--surface);border-radius:.375rem;margin-top:.75rem;padding:.625rem .75rem;position:sticky;bottom:0;box-shadow:0 -4px 16px #0000000f}.export-bar .row{flex-wrap:wrap;align-items:center;gap:.375rem;display:flex}.export-bar .spacer{flex:auto}.export-bar p{margin:.5rem 0 0}@media (width<=767px){.export-bar{position:static}.export-bar .spacer{display:none}.period-menu{left:auto;right:0}}.table.compact.quote td{padding:.375rem .25rem}.table .total-row td{border-top:2px solid var(--border);padding-top:.5rem}.panel .row{flex-wrap:wrap;align-items:center;gap:.375rem;margin-top:.625rem;display:flex}.panel .row input[type=text]{flex:8rem;min-width:0}label.btn{cursor:pointer}.amount-cell{text-align:right;font-variant-numeric:tabular-nums;width:7rem}.badge.warn-badge{color:var(--warn);border-color:var(--warn)}.table td.negative,.num.negative{color:var(--danger)}.reclassify-table td.actions{white-space:nowrap;text-align:right}.reclassify-table td.actions input[type=date]{margin-right:.375rem}.change-list{margin:0;padding-left:1.125rem}.change-list li{margin:.125rem 0}.figure-value.warn,td.warn{color:var(--warn)}h3.tiny{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.75rem 0 .25rem}
