@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f2f4f7;--surface-3:#e8ebf0;--text:#101828;--text-2:#344054;--muted:#667085;--line:#e4e7ec;--line-strong:#d0d5dd;--grid:#eef0f3;--accent:#2563eb;--accent-hover:#1d4ed8;--accent-text:#fff;--accent-soft:#eef4ff;--series:#3b82f6;--up:#067647;--up-soft:#ecfdf3;--down:#d92d20;--down-soft:#fef3f2;--warn:#93370d;--warn-bg:#fffaeb;--bad:#d92d20;--shadow-sm:0 1px 2px #1018280d;--shadow:0 1px 3px #1018280f, 0 1px 2px #1018280a;--shadow-lg:0 12px 24px -6px #10182824, 0 4px 8px -4px #1018280f;--radius:14px;--radius-sm:10px;--ring:0 0 0 3px #2563eb40;--sidebar:232px;--font:"Inter Variable", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b0d12;--surface:#13161d;--surface-2:#1a1e27;--surface-3:#232834;--text:#eef1f6;--text-2:#cdd3de;--muted:#8d97a8;--line:#262b36;--line-strong:#333a48;--grid:#1f242e;--accent:#60a5fa;--accent-hover:#93c5fd;--accent-text:#0b1220;--accent-soft:#60a5fa1f;--series:#4f94f0;--up:#47cd89;--up-soft:#47cd891f;--down:#f97066;--down-soft:#f970661f;--warn:#fdb022;--warn-bg:#fdb0221a;--bad:#f97066;--shadow-sm:none;--shadow:0 1px 2px #0006;--shadow-lg:0 16px 32px -8px #0009;--ring:0 0 0 3px #60a5fa4d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font:15px/1.45 var(--font);font-feature-settings:"cv11", "ss01";-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;margin:0}button,input,select{font:inherit;color:inherit}a{color:var(--accent)}h1,h2,h3{letter-spacing:-.01em}h2{margin:0;font-size:1rem;font-weight:600}h3{margin:0 0 8px;font-weight:600}:focus-visible{box-shadow:var(--ring);border-radius:6px;outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.shell{min-height:100vh}.sidebar{display:none}.content{min-width:0}.page-header,main{max-width:1120px;margin:0 auto;padding-left:16px;padding-right:16px}.page-header{padding-top:max(18px, env(safe-area-inset-top));padding-bottom:4px}.page-header h1{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:650}.page-header p{color:var(--muted);margin:2px 0 0;font-size:.9rem}main{padding-top:12px;padding-bottom:calc(96px + env(safe-area-inset-bottom))}main.wide{max-width:1400px}.bottombar{z-index:20;padding:6px 4px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(14px);border-top:1px solid var(--line);grid-template-columns:repeat(7,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-link{color:var(--muted);border-radius:10px;flex-direction:column;align-items:center;gap:2px;padding:6px 0 4px;font-size:.64rem;font-weight:500;text-decoration:none;transition:color .15s;display:flex;position:relative}.bottom-link[aria-current=page]{color:var(--accent)}.bottom-link .badge{position:absolute;top:0;left:52%}.brand{color:var(--text);letter-spacing:-.02em;align-items:center;gap:10px;font-size:1.05rem;font-weight:700;text-decoration:none;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent), #7c3aed);color:#fff;border-radius:8px;place-items:center;width:28px;height:28px;font-size:.95rem;font-weight:700;display:grid}.badge{background:var(--accent);min-width:18px;height:18px;color:var(--accent-text);font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;padding:0 5px;font-size:.68rem;font-weight:650;display:inline-flex}@media (width>=1024px){.shell{grid-template-columns:var(--sidebar) 1fr;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:20px;height:100vh;padding:20px 12px;display:flex;position:sticky;top:0}.sidebar .brand{padding:0 10px}.sidebar nav{flex-direction:column;gap:2px;display:flex}.side-link{border-radius:var(--radius-sm);color:var(--text-2);align-items:center;gap:10px;padding:8px 10px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.side-link svg{color:var(--muted);transition:color .15s}.side-link:hover{background:var(--surface-2)}.side-link[aria-current=page]{background:var(--accent-soft);color:var(--accent);font-weight:600}.side-link[aria-current=page] svg{color:var(--accent)}.side-link .badge{margin-left:auto}.bottombar{display:none}.page-header,main{padding-left:32px;padding-right:32px}.page-header{padding-top:28px}.page-header h1{font-size:1.75rem}main{padding-bottom:48px}}.stack{flex-direction:column;gap:16px;display:flex}.reloading{opacity:.55;transition:opacity .2s}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row.end{justify-content:flex-end}.row.between{flex-wrap:nowrap;justify-content:space-between}.wrap-row{flex-wrap:wrap;align-items:center;gap:10px}.grow{flex:1;min-width:180px}.grid-2{grid-template-columns:1fr;gap:16px;display:grid}@media (width>=760px){.grid-2{grid-template-columns:1fr 1fr}}.nowrap{white-space:nowrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:18px 20px}.card>h2{margin-bottom:14px}.card>.chart-note{margin:-8px 0 12px}.card-head,.group-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.card-head{margin-bottom:12px}.group-head{color:var(--muted);margin-bottom:8px}.group-head h2{color:var(--text)}.section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:8px 2px 0;font-size:.8rem;font-weight:600}.label{color:var(--muted);font-size:.8rem;font-weight:500}.muted{color:var(--muted)}.small{font-size:.8rem}.error{color:var(--bad)}.up{color:var(--up)}.down{color:var(--down)}.warn{color:var(--warn)}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}p{margin:0}.hero{flex-direction:column;gap:6px;padding:4px 2px 0;display:flex}.hero-value{letter-spacing:-.035em;font-variant-numeric:tabular-nums;font-size:2.75rem;font-weight:650;line-height:1.05}.hero-value .unit{color:var(--muted);letter-spacing:0;font-size:1.1rem;font-weight:500}.delta{border-radius:999px;align-self:flex-start;align-items:center;gap:4px;padding:2px 10px;font-size:.85rem;font-weight:500;display:inline-flex}.delta.up{background:var(--up-soft)}.delta.down{background:var(--down-soft)}.tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:12px;display:grid}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:14px 16px}.tile .label{margin-bottom:4px}.tile-value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.3rem;font-weight:650}.notice{border-radius:var(--radius);border:1px solid #0000;padding:12px 16px;font-size:.9rem}.notice.warn{background:var(--warn-bg);color:var(--warn);border-color:color-mix(in srgb, var(--warn) 20%, transparent)}.btn{background:var(--accent);color:var(--accent-text);border-radius:var(--radius-sm);cursor:pointer;box-shadow:var(--shadow-sm);border:1px solid #0000;justify-content:center;align-self:flex-start;align-items:center;gap:6px;padding:9px 16px;font-weight:600;transition:background .15s,border-color .15s,transform 50ms;display:inline-flex}.btn:hover:not(:disabled){background:var(--accent-hover)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.small{padding:6px 12px;font-size:.85rem}.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--line-strong)}.btn.ghost:hover:not(:disabled){background:var(--surface-2)}.btn.danger{background:var(--surface);color:var(--bad);border-color:var(--line-strong)}.btn.danger:hover:not(:disabled){background:var(--down-soft)}.btn:disabled{opacity:.5;cursor:default}.link{color:var(--accent);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 2px;font-weight:500;text-decoration:none}.link:hover{text-underline-offset:3px;text-decoration:underline}input:not([type=checkbox]):not([type=radio]),select{border-radius:var(--radius-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm);padding:8px 12px;transition:border-color .15s,box-shadow .15s}input:not([type=checkbox]):not([type=radio]):hover,select:hover{border-color:var(--muted)}input:not([type=checkbox]):not([type=radio]):focus,select:focus{border-color:var(--accent);box-shadow:var(--ring);outline:none}input[type=search]{background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 12px center;padding-left:36px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}@media (width<=760px){input:not([type=checkbox]):not([type=radio]),select{font-size:16px}}.form{flex-direction:column;gap:12px;display:flex}.form label{color:var(--text-2);flex-direction:column;gap:6px;font-size:.8rem;font-weight:500;display:flex}.form label.check{color:var(--text);flex-direction:row;align-items:center;gap:8px;font-weight:400}.form select,td .form select{max-width:100%}label.check{cursor:pointer;align-items:center;gap:8px;display:flex}.refresh-row{flex-direction:column;gap:6px;display:flex}.split-row select{flex:160px}.split-row input{width:90px}.segmented{background:var(--surface-3);border-radius:var(--radius-sm);align-self:flex-start;gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:8px;padding:5px 12px;font-size:.85rem;font-weight:500;transition:background .15s,color .15s,box-shadow .15s}.segmented button:hover{color:var(--text)}.segmented button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow);font-weight:600}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:.83rem;font-weight:500;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.chip:hover{border-color:var(--line-strong);background:var(--surface-2)}.chip .muted{font-weight:400}.chip.selected{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.chip.selected .muted{color:var(--accent);opacity:.8}@media (width<=760px){.chips{scrollbar-width:none;flex-wrap:nowrap;margin:0 -16px;padding-bottom:4px;padding-left:16px;padding-right:16px;overflow-x:auto}.chips::-webkit-scrollbar{display:none}}.chart{width:100%;position:relative;overflow:hidden}.chart svg{outline:none;display:block}.chart svg:focus-visible{box-shadow:var(--ring);border-radius:8px}.chart .grid{stroke:var(--grid);stroke-width:1px}.chart .axis{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.series-line{fill:none;stroke:var(--series);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.series-area{fill:var(--series);opacity:.12}.series-dot{fill:var(--series);stroke:var(--surface);stroke-width:2px}.crosshair{stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.tooltip{pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);box-shadow:var(--shadow-lg);white-space:nowrap;flex-direction:column;align-items:center;padding:8px 12px;font-size:.8rem;display:flex;position:absolute;transform:translate(-50%)}.tooltip strong{color:var(--text);font-size:.95rem}.chart-empty{color:var(--muted);text-align:center;padding:32px 0}.table-view summary{cursor:pointer;color:var(--muted);margin-top:10px;font-size:.83rem;font-weight:500}.table-view table{margin-top:8px}.bar-col{fill:var(--series);transition:filter .15s}.bar-col.partial{opacity:.45}.bar-col.hover,.bar-col.selected{filter:brightness(1.15)}.bar-col.selected{stroke:var(--text);stroke-width:1px}.bars{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.bars li{grid-template-columns:minmax(90px,30%) 1fr auto;align-items:center;gap:10px;font-size:.9rem;display:grid}.bar-track{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.bar-fill{background:var(--series);border-radius:999px;min-width:2px;height:100%;transition:width .3s;display:block}.bars li:hover .bar-fill,.bars li:focus .bar-fill{filter:brightness(1.15)}.bar-value{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table{border-collapse:collapse;width:100%;font-size:.9rem}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);white-space:nowrap;padding:8px;font-size:.72rem;font-weight:600}td{border-bottom:1px solid var(--line);vertical-align:top;padding:10px 8px}th:first-child,td:first-child{padding-left:2px}th:last-child,td:last-child{padding-right:2px}tbody tr{transition:background .12s}tbody tr:hover td{background:color-mix(in srgb, var(--surface-2) 60%, transparent)}tr:last-child td{border-bottom:none}tr.inactive td{opacity:.5}tr.selected td,.cat-table tr.selected td{background:var(--accent-soft)}.holdings td:first-child{word-break:break-word}.cat-table td:first-child{width:45%}.cat-name{text-align:left;color:var(--text);padding:0;font-weight:500}.cat-name:hover{color:var(--accent)}.cat-bar{height:6px;margin-top:6px;display:block}.bills-table td:first-child{width:40%}.tx-table-wrap{overflow-x:auto}.tx-scroll{max-height:440px;overflow-y:auto}.tx-table th{z-index:1;background:var(--surface);padding:0;position:sticky;top:0}.sort-head{width:100%;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;text-align:inherit;background:0 0;border:none;align-items:center;gap:4px;padding:8px;display:inline-flex}.tx-table th.num .sort-head{justify-content:flex-end}.sort-head:hover,.tx-table th[aria-sort=ascending] .sort-head,.tx-table th[aria-sort=descending] .sort-head{color:var(--text)}.sort-arrow{min-width:.7em;font-size:.6rem}.tx-table .col-select{vertical-align:middle;width:32px;padding-left:4px}.tx-table td.col-payee{overflow-wrap:anywhere;min-width:160px}.tx-table td{vertical-align:middle}@media (width<=600px){.tx-table,.tx-table thead,.tx-table tbody{display:block}.tx-table thead tr{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding-bottom:10px;display:flex}.tx-table th{background:0 0;border:none;position:static}.tx-table th .sort-head{background:var(--surface-2);border-radius:999px;padding:4px 10px}.tx-table th.col-select{width:auto;padding:0 6px 0 0}.tx-table .col-account,.tx-table .col-source{display:none}.tx-table tbody tr{border-bottom:1px solid var(--line);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"sel payee amount""sel cat date";row-gap:2px;padding:12px 0;display:grid}.tx-table tbody tr:not(:has(.col-select)){grid-template-columns:0 minmax(0,1fr) auto}.tx-table tbody tr:last-child{border-bottom:none}.tx-table tbody tr.selected{background:var(--accent-soft)}.tx-table td{border:none;padding:0;display:block}.tx-table tbody tr:hover td{background:0 0}.tx-table td.col-select{grid-area:sel;align-self:center;width:auto;padding:0 12px 0 0}.tx-table td.col-payee{grid-area:payee;min-width:0;font-weight:500}.tx-table td.col-amount{grid-area:amount;padding-left:12px;font-weight:600}.tx-table td.col-category{min-width:0;color:var(--text-2);grid-area:cat;font-size:.83rem}.tx-table td.col-date{text-align:right;color:var(--muted);grid-area:date;padding-left:12px;font-size:.8rem}.tx-table .cat-select{width:100%}.tx-table .rename-form{min-width:0}.tx-scroll{max-height:none}}@media (width<=760px){.card{border-radius:12px;padding:14px}}.cat-pick{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;margin:-3px -8px;padding:3px 8px;transition:background .12s,border-color .12s;display:inline-block}.cat-pick:hover,.cat-pick:focus-visible{border-color:var(--line-strong);background:var(--surface)}.cat-select{min-width:240px;max-width:100%;padding:6px 10px;font-size:.85rem}@media (width<=760px){.cat-select{width:150px;min-width:0}}.rename-form{flex-direction:column;gap:6px;min-width:220px;display:flex}.rename-form input:not([type=checkbox]){width:100%}.bulk-bar{border-radius:var(--radius-sm);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent);z-index:3;box-shadow:var(--shadow-lg);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;display:flex;position:sticky;top:8px}.bulk-bar select{min-width:240px}.account{padding:0;overflow:hidden}.account>.stack{padding:0 20px 18px}.account-head{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:16px 20px;transition:background .12s;display:flex}.account-head:hover{background:var(--surface-2)}.review-card select{flex:200px}.review-note{margin:2px 0;font-size:.95rem}.group-toggle{align-self:flex-start;padding-left:0}.group-list{border-top:1px solid var(--line);max-height:180px;margin:0;padding:0;list-style:none;overflow-y:auto}.group-list li{border-bottom:1px solid var(--line);padding:6px 0}.review-card .chips{margin:10px 0}.plain-list{margin:8px 0 0;padding:0;list-style:none}.plain-list li{padding:3px 0}.payees{border:1px solid var(--line);border-radius:var(--radius-sm);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.payees legend{color:var(--text-2);padding:0 4px;font-size:.8rem;font-weight:600}.payee-row{flex-wrap:nowrap;gap:6px}.payee-key{overflow-wrap:anywhere;flex:1;min-width:0}.payee-row input{width:80px}@media (width<=600px){.bills-table .col-last{display:none}}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface-3) 45%, var(--surface-2) 65%);background-size:300% 100%;animation:1.4s ease-in-out infinite shimmer}.skeleton-hero{max-width:360px;height:88px}.skeleton-card{height:180px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.toaster{left:50%;bottom:calc(84px + env(safe-area-inset-bottom));z-index:50;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;transform:translate(-50%)}@media (width>=1024px){.toaster{bottom:28px;left:calc(50% + var(--sidebar) / 2)}}.toast{background:var(--text);color:var(--bg);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:10px 16px;font-size:.88rem;font-weight:500;animation:.2s ease-out toast-in}.toast.error{background:var(--bad);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width>=761px){.tx-table th.col-category{min-width:260px}.tx-table td.col-account{min-width:150px}}.segmented{scrollbar-width:none;max-width:100%;overflow-x:auto}.segmented button{flex:none}
