:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:#dfe4ec;background:#14171e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;max-width:100%;height:100%;margin:0;overflow:hidden}#root{position:fixed;inset:0}.recharts-wrapper,.recharts-surface,.recharts-wrapper svg,svg *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;outline:none!important}:focus{outline:none}.recharts-responsive-container,.recharts-wrapper,.recharts-surface{touch-action:pan-y}:root{--bg:#14171e;--surface:#1c2028;--surface-2:#242936;--text:#dfe4ec;--text-secondary:#9aa3b2;--text-dim:#6b7382;--accent:#4f8ef7;--on-accent:#fff;--positive:#4ecb71;--negative:#e0564a;--expense:#e0704a;--warning:#e0a04a;--chart-line:var(--accent)}main{flex-direction:column;max-width:880px;height:100%;margin:0 auto;display:flex}.screen{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;min-height:0;padding:20px 16px 84px;position:relative;overflow-y:auto}.num{font-variant-numeric:tabular-nums}header h1{letter-spacing:-1px;margin:6px 0 4px;font-size:42px;font-weight:700}.deltas{flex-wrap:wrap;gap:14px;display:flex}.delta{color:var(--text-secondary);font-size:14px}.delta small,.txs small{color:var(--text-dim);font-weight:400}.delta.up{color:var(--positive)}.delta.down{color:var(--negative)}.delta.spend{color:var(--warning)}b.up,.up{color:var(--positive)}b.down,.down{color:var(--negative)}section{margin-top:26px}h2{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);margin-bottom:10px;font-size:13px;font-weight:500}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.two-col{grid-template-columns:1.4fr 1fr;gap:24px;display:grid}@media (width<=700px){.two-col{grid-template-columns:1fr}}.chips-row{flex-wrap:nowrap;gap:6px;display:flex}.chips-row.wrap{flex-wrap:wrap}.chips-row.scroll{scrollbar-width:none;padding-bottom:4px;overflow-x:auto}.chip{background:var(--surface-2);color:var(--text);white-space:nowrap;cursor:pointer;border:none;border-radius:8px;padding:5px 11px;font-family:inherit;font-size:13px}.chip.sel{background:var(--accent);color:var(--on-accent)}.pnl-sub{color:var(--text-dim);white-space:nowrap;font-size:11px}.chip-asset{background:color-mix(in srgb, #4ecb71 14%, var(--surface-2));border-left:3px solid #4ecb71}.chip-asset.sel{color:#fff;background:#2e9e52}.chip-object{background:color-mix(in srgb, #e0a04a 14%, var(--surface-2));border-left:3px solid #e0a04a}.chip-object.sel{color:#fff;background:#b97f2e}.chip-linked{background:color-mix(in srgb, #9a6ff7 14%, var(--surface-2));border-left:3px solid #9a6ff7}.chip-linked.sel{color:#fff;background:#7a4fe0}.cats{margin:0;padding:0;list-style:none}.cats li{border-bottom:1px solid var(--surface-2);cursor:pointer;justify-content:space-between;padding:8px 0;font-size:14px;display:flex}.txs{margin:0;padding:0;font-size:14px;list-style:none}.txs li{border-bottom:1px solid var(--surface-2);cursor:pointer;grid-template-columns:1fr auto;grid-template-areas:"title amount""cat amount";align-items:center;gap:2px 10px;padding:9px 0;display:grid}.txs .date{display:none}.txs .title{grid-area:title}.txs .cat{color:var(--text-dim);grid-area:cat;font-size:13px}.txs b{text-align:right;grid-area:amount;font-weight:600}.txs .orig{color:var(--text-dim);font-size:12px;font-weight:400}section .txs li:has(.date){grid-template-columns:78px 1fr auto;grid-template-areas:"date title amount""date cat amount"}.txs li:has(.date) .date{color:var(--text-dim);grid-area:date;font-size:13px;display:block}.day-group{margin-top:18px}.filters{background:var(--bg);z-index:5;flex-direction:column;gap:8px;padding:8px 0 6px;display:flex;position:sticky;top:0}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--text-dim);padding:4px 8px 8px 0;font-size:12px;font-weight:500}td{border-top:1px solid var(--surface-2);padding:8px 8px 8px 0}td.dim{color:var(--text-secondary)}th.numh,td.numcell{text-align:right}.donut-wrap{align-items:center;gap:8px;display:flex}.donut-legend{flex:1;margin:0;padding:0;font-size:14px;list-style:none}.donut-legend li{align-items:center;gap:8px;padding:5px 0;display:flex}.donut-legend b{margin-left:auto}.dot{border-radius:3px;flex:none;width:10px;height:10px}.sheet-backdrop{z-index:20;background:#0000008c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);overscroll-behavior:contain;touch-action:pan-y;border-radius:16px 16px 0 0;width:100%;max-width:880px;max-height:80vh;padding:10px 16px 24px;animation:.18s ease-out rise;overflow-y:auto}.sheet-backdrop{touch-action:none}@keyframes rise{0%{opacity:.6;transform:translateY(40px)}}.grabber{background:var(--surface-2);border-radius:2px;width:36px;height:4px;margin:4px auto 14px}.sheet-amount{font-size:32px;font-weight:700}.sheet-sub{color:var(--text-dim);margin-top:2px;font-size:13px}.sheet-title{border-bottom:1px solid var(--surface-2);margin:12px 0;padding-bottom:12px;font-size:16px}.sheet-label{text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);margin:10px 0 8px;font-size:13px}.btn-danger{width:100%;color:var(--negative);cursor:pointer;background:0 0;border:none;margin-top:14px;padding:14px 0 4px;font-family:inherit;font-size:15px;display:block}.tabbar{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--surface-2);padding:8px 0 max(10px, env(safe-area-inset-bottom));justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;min-width:76px;font-family:inherit;font-size:12px;display:flex}.tabbar button span{font-size:18px;line-height:1}.tabbar button.on{color:var(--accent)}.skeleton-page{padding-top:20px}.sk{background:var(--surface-2);border-radius:6px;height:16px;margin:12px 0;animation:1.2s infinite pulse}.sk.w60{width:60%}.sk.w75{width:75%}.sk.w90{width:90%}@keyframes pulse{50%{opacity:.45}}.loading,.empty,.error{text-align:center;color:var(--text-secondary);padding:40px 16px;font-size:14px}.error{color:var(--negative)}.input{background:var(--surface-2);width:100%;color:var(--text);border:none;border-radius:12px;margin:4px 0;padding:12px 14px;font-family:inherit;font-size:16px;display:block}.input.amount{font-size:28px;font-weight:700}.input:focus{outline:2px solid var(--accent)}.btn-primary{background:var(--accent);width:100%;height:48px;color:var(--on-accent);cursor:pointer;border:none;border-radius:12px;margin-top:16px;font-family:inherit;font-size:16px;font-weight:600;display:block}.btn-primary:disabled{opacity:.45}.form-err{color:var(--negative);margin-top:10px;font-size:14px}.form-ok{color:var(--positive);margin-top:10px;font-size:14px}.fab{z-index:15;background:var(--accent);width:54px;height:54px;color:var(--on-accent);cursor:pointer;border:none;border-radius:16px;font-size:28px;line-height:1;position:fixed;bottom:86px;right:18px}.recon-delta{margin:12px 0 4px;font-size:22px;font-weight:700}.recon-delta.down{color:var(--negative)}.recon-delta.up{color:var(--warning)}.cat-list{margin:0;padding:0;font-size:14px;list-style:none}.cat-list li{border-bottom:1px solid var(--surface-2);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.cat-list li.merging{opacity:.55}.cat-list .dim{color:var(--text-dim)}.cat-actions{gap:6px;display:flex}.gear{z-index:6;color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:4px;font-size:20px;line-height:1;position:absolute;top:18px;right:16px}.input.search{margin:0 0 2px;padding:10px 12px;font-size:15px}select.input{appearance:none}.recharts-tooltip-wrapper{max-height:62vh}.recharts-tooltip-wrapper>*{max-height:62vh;overflow-y:auto}.flow-totals{color:var(--text-secondary);flex-wrap:wrap;gap:14px;margin:4px 0 6px;font-size:14px;display:flex}.flow-totals .up{color:var(--positive)}.flow-totals .down{color:var(--negative)}:root[data-design=ledger]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f3f5f2;--surface:#fff;--surface-2:#eaeeea;--text:#161d18;--text-secondary:#5c675f;--text-dim:#69746c;--accent:#161d18;--on-accent:#f3f5f2;--positive:#187a50;--negative:#b8503c;--expense:#b8503c;--warning:#a97b2f;--chart-line:#187a50;--income-soft:#e3f0e9;--expense-soft:#f5e8e4;--shadow:0 12px 28px -18px #0a140e73;background:var(--bg);color:var(--text)}@media (prefers-color-scheme:dark){:root[data-design=ledger]{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0f1310;--surface:#181e1a;--surface-2:#212823;--text:#eaf0ea;--text-secondary:#a5b0a8;--text-dim:#8c978f;--accent:#eaf0ea;--on-accent:#0f1310;--positive:#52c08d;--negative:#e27b62;--expense:#e27b62;--warning:#c9a86a;--chart-line:#52c08d;--income-soft:#1b2b23;--expense-soft:#2f211d;--shadow:0 12px 28px -18px #0009}}[data-design=ledger] .num,[data-design=ledger] header h1,[data-design=ledger] .sheet-amount,[data-design=ledger] .recon-delta{font-family:ui-rounded,SF Pro Rounded,-apple-system,system-ui,sans-serif}[data-design=ledger] header h1{letter-spacing:-.5px}[data-design=ledger] .screen>section,[data-design=ledger] .two-col>section{background:var(--surface);border:1px solid var(--surface-2);border-radius:20px;margin-top:14px;padding:14px 16px}[data-design=ledger] h2{text-transform:none;letter-spacing:0;color:var(--text);font-size:15px;font-weight:650}[data-design=ledger] .txs li,[data-design=ledger] .cats li,[data-design=ledger] .cat-list li,[data-design=ledger] td{border-color:var(--surface-2)}[data-design=ledger] .chip{background:var(--surface);border:1px solid var(--surface-2);color:var(--text-dim);border-radius:999px;font-weight:550}[data-design=ledger] .chip.sel{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}[data-design=ledger] .chip-asset,[data-design=ledger] .chip-object,[data-design=ledger] .chip-linked{background:var(--surface);border:1px solid var(--surface-2);border-left-width:3px}[data-design=ledger] .chip-asset{border-left-color:var(--positive)}[data-design=ledger] .chip-object{border-left-color:var(--warning)}[data-design=ledger] .chip-linked{border-left-color:var(--text-dim)}[data-design=ledger] .chip-asset.sel,[data-design=ledger] .chip-object.sel,[data-design=ledger] .chip-linked.sel{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}[data-design=ledger] .delta{background:var(--surface-2);color:var(--text-dim);border-radius:999px;padding:3px 10px;font-size:12.5px;font-weight:600}[data-design=ledger] .delta.up{background:var(--income-soft);color:var(--positive)}[data-design=ledger] .delta.down{background:var(--expense-soft);color:var(--negative)}[data-design=ledger] .delta.spend{background:var(--surface-2);color:var(--text-secondary)}[data-design=ledger] .tabbar{left:16px;right:16px;bottom:max(12px, env(safe-area-inset-bottom));border:1px solid var(--surface-2);background:var(--surface);box-shadow:var(--shadow);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:999px;justify-content:stretch;gap:2px;padding:5px}[data-design=ledger] .tabbar button{border-radius:999px;flex:1;min-width:0;padding:9px 0;font-size:11.5px;font-weight:600}[data-design=ledger] .tabbar button span{display:none}[data-design=ledger] .tabbar button.on{background:var(--accent);color:var(--on-accent)}[data-design=ledger] .fab{box-shadow:var(--shadow);border-radius:50%;bottom:96px}[data-design=ledger] .sheet{border-top:1px solid var(--surface-2);border-radius:26px 26px 0 0}[data-design=ledger] .sheet-backdrop{background:#080c0970}[data-design=ledger] .btn-primary{border-radius:14px;font-weight:650}[data-design=ledger] .input{border:1px solid var(--surface-2);background:var(--surface-2);border-radius:14px}[data-design=ledger] .input:focus{outline:2px solid var(--text-dim)}[data-design=ledger] .sheet-label{letter-spacing:.09em;font-size:10.5px;font-weight:600}[data-design=ledger] .alloc{border-radius:7px;height:14px;margin-bottom:10px;display:flex;overflow:hidden}[data-design=ledger] .alloc i{display:block}[data-design=ledger] .day-head{justify-content:space-between;align-items:baseline;display:flex}[data-design=ledger] .day-head .day-sum{color:var(--text-dim);font-size:12.5px;font-weight:600}[data-design=ledger] .filters{background:var(--bg)}
