:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f5f7;--surface:#fff;--surface-2:#f8f9fb;--surface-3:#eff1f5;--hover:#0f11150b;--track:#eef0f3;--border:#e5e7eb;--border-strong:#d0d5dd;--text:#0f1115;--text-2:#475467;--text-3:#667085;--brand:#4f46e5;--brand-hover:#4338ca;--brand-soft:#eef0ff;--brand-text:#4338ca;--on-brand:#fff;--ring:#4f46e547;--income:#1baf7a;--expense:#eb6834;--investment:#2a78d6;--income-text:#0a7a4e;--expense-text:#c2410c;--investment-text:#1f62b8;--cat-0:#2a78d6;--cat-1:#eb6834;--cat-2:#1baf7a;--cat-3:#eda100;--cat-4:#e87ba4;--cat-5:#008300;--cat-6:#6250d6;--cat-7:#e34948;--cat-other:#98a2b3;--grid:#eceef2;--axis:#c9ced6;--good-text:#067a06;--bad-text:#b42318;--danger:#d92d20;--danger-hover:#b42318;--danger-soft:#fef3f2;--info-soft:#eef0ff;--toast-bg:#111827;--toast-text:#f9fafb;--toast-good:#3ccb5a;--toast-bad:#f97066;--toast-info:#a5b4fc;--shadow-sm:0 1px 2px #1018280d;--shadow-md:0 6px 16px -4px #1018281a, 0 2px 4px -2px #1018280d;--shadow-lg:0 24px 48px -12px #1018283d, 0 8px 16px -8px #1018281a;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--radius-sm:8px;--radius:10px;--radius-lg:16px;--control-height:40px;--sidebar-width:248px;--topbar-height:56px;--bottom-nav-height:64px}@media (prefers-color-scheme:dark){:root:where(:not([data-theme=light])){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0e13;--surface:#151820;--surface-2:#1a1e27;--surface-3:#222734;--hover:#ffffff0e;--track:#232836;--border:#262b36;--border-strong:#363c4a;--text:#eef0f4;--text-2:#b4bac6;--text-3:#8b93a3;--brand:#5a5ce8;--brand-hover:#6b6df0;--brand-soft:#6366f129;--brand-text:#a5b4fc;--ring:#818cf859;--income:#199e70;--expense:#d95926;--investment:#3987e5;--income-text:#3ecf95;--expense-text:#f08a5d;--investment-text:#74a9ee;--cat-0:#3987e5;--cat-1:#d95926;--cat-2:#199e70;--cat-3:#c98500;--cat-4:#d55181;--cat-5:#008300;--cat-6:#9085e9;--cat-7:#e66767;--cat-other:#5d6676;--grid:#222733;--axis:#3a404d;--good-text:#3ccb5a;--bad-text:#f97066;--danger-hover:#c4281c;--danger-soft:#d92d2029;--info-soft:#5a5ce829;--toast-bg:#f4f5f7;--toast-text:#0f1115;--toast-good:#067a06;--toast-bad:#b42318;--toast-info:#4338ca;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 20px -6px #0000008c;--shadow-lg:0 28px 56px -12px #000000bf}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0c0e13;--surface:#151820;--surface-2:#1a1e27;--surface-3:#222734;--hover:#ffffff0e;--track:#232836;--border:#262b36;--border-strong:#363c4a;--text:#eef0f4;--text-2:#b4bac6;--text-3:#8b93a3;--brand:#5a5ce8;--brand-hover:#6b6df0;--brand-soft:#6366f129;--brand-text:#a5b4fc;--ring:#818cf859;--income:#199e70;--expense:#d95926;--investment:#3987e5;--income-text:#3ecf95;--expense-text:#f08a5d;--investment-text:#74a9ee;--cat-0:#3987e5;--cat-1:#d95926;--cat-2:#199e70;--cat-3:#c98500;--cat-4:#d55181;--cat-5:#008300;--cat-6:#9085e9;--cat-7:#e66767;--cat-other:#5d6676;--grid:#222733;--axis:#3a404d;--good-text:#3ccb5a;--bad-text:#f97066;--danger-hover:#c4281c;--danger-soft:#d92d2029;--info-soft:#5a5ce829;--toast-bg:#f4f5f7;--toast-text:#0f1115;--toast-good:#067a06;--toast-bad:#b42318;--toast-info:#4338ca;--shadow-sm:0 1px 2px #0006;--shadow-md:0 8px 20px -6px #0000008c;--shadow-lg:0 28px 56px -12px #000000bf}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);font:14px/1.5 var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;margin:0}h1,h2,h3,h4,p,ul,ol,dl,dd{margin:0}ul,ol{padding:0;list-style:none}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:not-allowed}a{color:var(--brand-text)}svg{flex-shrink:0}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}::selection{background:color-mix(in srgb, var(--brand) 22%, transparent)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:200;background:var(--brand);color:var(--on-brand);border-radius:var(--radius-sm);padding:8px 14px;font-weight:600;text-decoration:none;position:absolute;top:-60px;left:12px}.skip-link:focus{top:12px}.muted{color:var(--text-3)}.num{text-align:right;font-variant-numeric:tabular-nums}.is-refreshing{opacity:.55;transition:opacity .2s}.stack{gap:16px;display:grid}.app-shell{grid-template-columns:var(--sidebar-width) minmax(0, 1fr);min-height:100dvh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:28px;height:100dvh;padding:22px 16px 16px;display:flex;position:sticky;top:0}.sidebar-brand{padding:2px 8px}.nav-list{gap:4px;display:grid}.nav-link{border-radius:var(--radius);height:40px;color:var(--text-2);align-items:center;gap:12px;padding:0 12px;font-weight:550;text-decoration:none;transition:background-color .15s,color .15s;display:flex}.nav-link:hover{background:var(--hover);color:var(--text)}.nav-link.active{background:var(--brand-soft);color:var(--brand-text);font-weight:650}.sidebar-footer{gap:12px;margin-top:auto;display:grid}.theme-switch{background:var(--surface-3);border-radius:var(--radius);grid-template-columns:repeat(3,1fr);padding:3px;display:grid}.theme-switch button{height:30px;color:var(--text-3);border-radius:8px;place-items:center;display:grid}.theme-switch button:hover{color:var(--text)}.theme-switch button[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.sidebar-user{border-top:1px solid var(--border);align-items:center;gap:10px;padding:14px 4px 2px;display:flex}.user-avatar{background:var(--brand-soft);width:34px;height:34px;color:var(--brand-text);border-radius:50%;flex-shrink:0;place-items:center;font-weight:700;display:grid}.sidebar-user-text{flex:1;min-width:0;line-height:1.35;display:grid}.sidebar-user-text strong,.sidebar-user-text span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sidebar-user-text strong{font-size:13px}.sidebar-user-text span{color:var(--text-3);font-size:12px}.topbar,.bottom-nav{display:none}.main{outline:none;width:100%;max-width:1280px;margin:0 auto;padding:32px 40px 56px}.logo{color:var(--text);letter-spacing:-.02em;align-items:center;gap:10px;font-size:17px;font-weight:750;display:inline-flex}.logo-mark{width:30px;height:30px}.splash{place-content:center;justify-items:center;gap:24px;min-height:100dvh;display:grid}.page{gap:24px;min-width:0;display:grid}.page>.segmented{justify-self:start}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px 16px;display:flex}.page-title{letter-spacing:-.025em;font-size:26px;font-weight:750;line-height:1.2}.page-subtitle{color:var(--text-3);margin-top:4px}.page-actions{gap:8px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);min-width:0;box-shadow:var(--shadow-sm);padding:20px}.card-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.card-title{letter-spacing:-.01em;align-items:center;gap:8px;font-size:15px;font-weight:650;display:flex}.card-header-meta{color:var(--text-3);font-size:13px}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.section-title{letter-spacing:-.015em;font-size:18px;font-weight:700}.section-subtitle{color:var(--text-3);margin-top:2px;font-size:13px}.loading-block{place-items:center;min-height:160px;display:grid}.empty-state{text-align:center;color:var(--text-3);justify-items:center;gap:8px;padding:40px 16px;display:grid}.empty-state-icon{background:var(--surface-3);width:48px;height:48px;color:var(--text-2);border-radius:14px;place-items:center;margin-bottom:4px;display:grid}.empty-state-title{color:var(--text);font-weight:650}.empty-state-body{justify-items:center;gap:12px;display:grid}.spinner{border:2.5px solid var(--border-strong);border-top-color:var(--brand);border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin;display:inline-block}.field{grid-template-columns:minmax(0,1fr);align-content:start;gap:6px;min-width:0;display:grid}.field>label{color:var(--text-2);font-size:13px;font-weight:550}.field-row{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid}.field-hint{color:var(--text-3);font-size:12.5px}.field-error{color:var(--bad-text);font-size:12.5px}.form-error,.alert{border-radius:var(--radius);padding:10px 12px;font-size:13.5px}.form-error,.alert-error{background:var(--danger-soft);color:var(--bad-text)}.alert-info{background:var(--info-soft);color:var(--brand-text)}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.input,.select-trigger,.amount-input{width:100%;height:var(--control-height);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);padding:0 12px;transition:border-color .15s,box-shadow .15s}.input::placeholder,.amount-input input::placeholder{color:var(--text-3);opacity:.85}.input:hover,.select-trigger:hover:not(:disabled),.amount-input:hover{border-color:color-mix(in srgb, var(--border-strong) 55%, var(--text-3))}.input:focus,.select-trigger:focus-visible,.select-trigger[aria-expanded=true],.amount-input:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--ring);outline:none}.input:disabled,.input[readonly]{background:var(--surface-2);color:var(--text-3)}.input.is-invalid,.input[aria-invalid=true],.select-trigger.is-invalid,.amount-input.is-invalid{border-color:var(--danger)}.input.is-invalid:focus,.input[aria-invalid=true]:focus,.select-trigger.is-invalid:focus-visible,.amount-input.is-invalid:focus-within{box-shadow:0 0 0 3px color-mix(in srgb, var(--danger) 25%, transparent)}select.input{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b93a3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:16px;padding-right:36px}input[type=date].input{min-width:0;line-height:normal}input[type=date]::-webkit-date-and-time-value{text-align:left}input[type=search]::-webkit-search-cancel-button{cursor:pointer}.input-sm{height:32px;padding:0 10px;font-size:13px}select.input-sm{background-position:right 8px center;padding-right:30px}.input-group{position:relative}.input-group .input{padding-right:46px}.input-addon{border-radius:var(--radius-sm);width:36px;height:34px;color:var(--text-3);place-items:center;display:grid;position:absolute;top:50%;right:4px;transform:translateY(-50%)}.input-addon:hover{background:var(--hover);color:var(--text)}.button{height:var(--control-height);border-radius:var(--radius);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform 60ms;display:inline-flex}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{opacity:.55}.button-primary{background:var(--brand);color:var(--on-brand);box-shadow:0 1px 2px #10182824,inset 0 1px #ffffff1f}.button-primary:hover:not(:disabled){background:var(--brand-hover)}.button-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.button-secondary:hover:not(:disabled){background:var(--surface-2)}.button-ghost{color:var(--text-2)}.button-ghost:hover:not(:disabled){background:var(--hover);color:var(--text)}.button-danger{background:var(--danger);color:#fff}.button-danger:hover:not(:disabled){background:var(--danger-hover)}.button-ghost.button-danger-text,.button-danger-text{color:var(--bad-text)}.button-ghost.button-danger-text:hover:not(:disabled){background:var(--danger-soft);color:var(--bad-text)}.button-sm{border-radius:var(--radius-sm);gap:6px;height:32px;padding:0 10px;font-size:13px}.button-lg{height:46px;font-size:15px}.button-block{width:100%}.badge{background:var(--brand);min-width:20px;height:20px;color:var(--on-brand);border-radius:999px;place-items:center;padding:0 6px;font-size:12px;font-weight:700;display:inline-grid}.icon-button{border-radius:var(--radius);width:36px;height:36px;color:var(--text-3);place-items:center;transition:background-color .15s,color .15s;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--hover);color:var(--text)}.icon-button:disabled{opacity:.4}.icon-button-danger:hover:not(:disabled){background:var(--danger-soft);color:var(--bad-text)}.icon-button-bordered{border:1px solid var(--border-strong);background:var(--surface)}.segmented{background:var(--surface-3);scrollbar-width:none;border-radius:12px;gap:2px;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.segmented-option{height:34px;color:var(--text-2);white-space:nowrap;border-radius:9px;align-items:center;gap:6px;padding:0 14px;font-weight:550;display:inline-flex}.segmented-option:hover{color:var(--text)}.segmented-option[aria-checked=true]{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm), 0 0 0 1px var(--border)}.segmented-sm .segmented-option{border-radius:8px;height:28px;padding:0 10px;font-size:13px}.dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.type-chip{letter-spacing:.04em;text-transform:uppercase;border-radius:6px;flex-shrink:0;margin-left:auto;padding:2px 7px;font-size:11px;font-weight:650}.type-chip-expense{background:color-mix(in srgb, var(--expense) 14%, transparent);color:var(--expense-text)}.type-chip-income{background:color-mix(in srgb, var(--income) 14%, transparent);color:var(--income-text)}.type-chip-investment{background:color-mix(in srgb, var(--investment) 14%, transparent);color:var(--investment-text)}.avatar{background:color-mix(in srgb, var(--avatar-color) 16%, var(--surface));color:color-mix(in srgb, var(--avatar-color) 72%, var(--text));border-radius:50%;flex-shrink:0;place-items:center;display:inline-grid}.avatar-md{width:40px;height:40px}.avatar-sm{width:28px;height:28px}.count-badge{background:var(--surface-3);color:var(--text-3);font-variant-numeric:tabular-nums;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:600}.picker{min-width:0;position:relative}.select-trigger{text-align:left;align-items:center;gap:8px;display:flex}.select-chevron{color:var(--text-3);margin-left:auto;transition:transform .15s}.select-trigger[aria-expanded=true] .select-chevron{transform:rotate(180deg)}.select-value{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.select-text,.select-placeholder{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.select-placeholder,.select-parent{color:var(--text-3)}.popover-backdrop{display:none}.popover{z-index:60;background:var(--surface);border:1px solid var(--border);width:max-content;min-width:100%;max-width:min(360px,100vw - 32px);box-shadow:var(--shadow-lg);border-radius:14px;padding:6px;animation:.14s ease-out pop-in;position:absolute}.popover-below{top:calc(100% + 6px)}.popover-above{bottom:calc(100% + 6px)}.popover-start{left:0}.popover-end{right:0}.picker-panel{flex-direction:column;width:max(100%,320px);padding:0;display:flex;overflow:hidden}.picker-search{border-bottom:1px solid var(--border);color:var(--text-3);align-items:center;gap:8px;padding:0 12px;display:flex}.picker-search input{min-width:0;height:44px;color:var(--text);background:0 0;border:0;outline:none;flex:1}.picker-list{overscroll-behavior:contain;max-height:320px;padding:6px;overflow-y:auto}.picker-group{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;padding:10px 10px 4px;font-size:11.5px;font-weight:650;display:flex}.picker-option{border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;min-height:36px;padding:6px 10px;display:flex}.picker-option.is-active{background:var(--hover)}.picker-option[aria-selected=true]{font-weight:650}.picker-type,.picker-all{font-weight:600}.picker-subcategory{color:var(--text-2);padding-left:28px}.picker-branch{border-left:1.5px solid var(--border-strong);border-bottom:1.5px solid var(--border-strong);border-bottom-left-radius:3px;flex-shrink:0;width:8px;height:8px;margin-top:-6px}.picker-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.picker-check{color:var(--brand-text);margin-left:auto}.picker-empty{color:var(--text-3);text-align:center;padding:16px 12px}.range-trigger{width:auto;max-width:100%}.range-icon,.range-dates{color:var(--text-3)}.range-dates{white-space:nowrap;font-size:13px}.range-panel{width:300px}.range-presets{gap:1px;display:grid}.range-preset{border-radius:var(--radius-sm);text-align:left;justify-content:space-between;align-items:center;gap:8px;width:100%;height:36px;padding:0 10px;display:flex}.range-preset:hover{background:var(--hover)}.range-preset[aria-pressed=true]{font-weight:650}.range-preset svg{color:var(--brand-text)}.range-custom{border-top:1px solid var(--border);gap:10px;margin-top:6px;padding:12px 8px 6px;display:grid}.range-custom-title{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;font-size:11.5px;font-weight:650}.range-custom-fields{grid-template-columns:1fr 1fr;gap:8px;display:grid}.range-custom-fields .input{padding:0 8px}.dialog{max-width:calc(100vw - 32px);max-height:calc(100dvh - 48px);color:var(--text);background:0 0;border:0;padding:0;overflow:visible}.dialog-md{width:560px}.dialog-sm{width:440px}.dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#080a1080}.dialog[open]{animation:.18s ease-out dialog-in}.dialog-panel{background:var(--surface);border:1px solid var(--border);max-height:calc(100dvh - 48px);box-shadow:var(--shadow-lg);border-radius:18px;flex-direction:column;display:flex}.dialog-header{justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 20px 0;display:flex}.dialog-header .icon-button{margin:-6px -8px 0 0}.dialog-title{letter-spacing:-.01em;font-size:17px;font-weight:700}.dialog-description{color:var(--text-2);margin-top:6px}.dialog-content{gap:16px;padding:20px;display:grid}.dialog-footer{justify-content:flex-end;gap:8px;padding:0 20px 20px;display:flex}.dialog-header+.dialog-footer{padding-top:24px}.toasts{z-index:100;pointer-events:none;gap:8px;width:min(380px,100vw - 32px);display:grid;position:fixed;top:16px;right:16px}.toast{background:var(--toast-bg);color:var(--toast-text);box-shadow:var(--shadow-lg);pointer-events:auto;border-radius:12px;align-items:center;gap:10px;padding:12px 10px 12px 14px;font-weight:550;animation:.2s ease-out toast-in;display:flex}.toast>span{flex:1}.toast-success>svg:first-child{color:var(--toast-good)}.toast-error>svg:first-child{color:var(--toast-bad)}.toast-info>svg:first-child{color:var(--toast-info)}.toast-close{border-radius:var(--radius-sm);opacity:.7;place-items:center;width:28px;height:28px;display:grid}.toast-close:hover{opacity:1}.quick-add{container-type:inline-size}.quick-add .card-title{margin-bottom:14px}.tx-form{gap:16px;display:grid}.tx-form-quick{grid-template-columns:minmax(0,1.7fr) minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr) auto;align-items:start}.tx-form-quick .tx-form-actions{padding-top:25px}.tx-form .form-error{grid-column:1/-1}@container (width<=1040px){.tx-form-quick{grid-template-columns:repeat(6,minmax(0,1fr))}.tx-form-quick .tx-field-description,.tx-form-quick .tx-field-category{grid-column:span 3}.tx-form-quick .tx-field-date,.tx-form-quick .tx-field-amount,.tx-form-quick .tx-form-actions{grid-column:span 2}.tx-form-quick .tx-form-actions .button{width:100%}}@container (width<=560px){.tx-form-quick{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 12px}.tx-form-quick .tx-field-description,.tx-form-quick .tx-field-category,.tx-form-quick .tx-form-actions{grid-column:1/-1}.tx-form-quick .tx-field-date,.tx-form-quick .tx-field-amount{grid-column:span 1}.tx-form-quick .tx-form-actions{padding-top:2px}}.tx-form-dialog{grid-template-columns:repeat(2,minmax(0,1fr))}.tx-form-dialog .tx-field-description,.tx-form-dialog .tx-field-category,.tx-form-dialog .tx-form-actions{grid-column:1/-1}.tx-form-actions{align-items:center;gap:8px;display:flex}.tx-form-dialog .tx-form-actions{border-top:1px solid var(--border);justify-content:flex-end;margin-top:4px;padding-top:16px}.tx-form-delete{margin-right:auto}.amount-input{cursor:text;align-items:center;gap:4px;display:flex}.amount-input input{font-variant-numeric:tabular-nums;background:0 0;border:0;outline:none;flex:1;width:100%;min-width:0;height:100%;font-weight:600}.amount-prefix{color:var(--text-3);white-space:nowrap;font-weight:600}.amount-input-income .amount-prefix,.amount-input-income input{color:var(--income-text)}.amount-input-expense .amount-prefix{color:var(--expense-text)}.amount-input-investment .amount-prefix,.amount-input-investment input{color:var(--investment-text)}.filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.filters-main{flex:240px;gap:8px;min-width:0;display:flex}.search-input{flex:1;min-width:0;position:relative}.search-input>svg{color:var(--text-3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.search-input .input{padding-left:36px}.filters-extra{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.filter-category{width:230px}.amount-range{color:var(--text-3);align-items:center;gap:6px;display:flex}.amount-range .input{width:104px}.totals-strip{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;gap:6px 28px;margin-bottom:12px;padding:10px 14px;display:flex}.totals-item{align-items:baseline;gap:8px;display:flex}.totals-item dt{color:var(--text-3);align-self:center;align-items:center;gap:6px;font-size:13px;display:inline-flex}.totals-item dd{font-variant-numeric:tabular-nums;font-weight:650}.totals-income dt svg{color:var(--income-text)}.totals-expense dt svg{color:var(--expense-text)}.totals-investment dt svg{color:var(--investment-text)}.table-wrap{overflow-x:auto}.table{border-collapse:separate;border-spacing:0;width:100%}.table th,.table td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--border);padding:12px}.table thead th{background:var(--surface-2);color:var(--text-3);letter-spacing:.05em;text-transform:uppercase;padding-top:9px;padding-bottom:9px;font-size:12px;font-weight:600}.table thead th:first-child{border-top-left-radius:var(--radius)}.table thead th:last-child{border-top-right-radius:var(--radius)}.table tbody tr:last-child>*{border-bottom:0}.table th.num,.table td.num{text-align:right}.table tbody th{font-weight:550}.table tfoot th,.table tfoot td{border-top:1px solid var(--border-strong);border-bottom:0;font-weight:700}.table-compact th,.table-compact td{font-variant-numeric:tabular-nums;padding:8px 12px}.th-sort{font:inherit;letter-spacing:inherit;text-transform:inherit;align-items:center;gap:6px;display:inline-flex}.th-sort svg{opacity:.45}.th-sort:hover,.th-sort.is-active{color:var(--text)}.th-sort.is-active svg{opacity:1}.row-clickable{cursor:pointer}.row-clickable>td{transition:background-color .1s}.row-clickable:hover>td{background:var(--hover)}.cell-date{width:1%;color:var(--text-2);font-variant-numeric:tabular-nums}.cell-description{min-width:220px;white-space:normal!important}.cell-description-inner{align-items:center;gap:10px;font-weight:550;display:flex}.category-tag{align-items:center;gap:8px;max-width:280px;display:inline-flex}.category-tag-text{text-overflow:ellipsis;overflow:hidden}.category-tag-parent{color:var(--text-3)}.amount{font-variant-numeric:tabular-nums;font-weight:650}.amount-income{color:var(--income-text)}.amount-expense{color:var(--text)}.amount-investment{color:var(--investment-text)}.col-actions{width:1%;padding-left:0!important}.row-actions{opacity:0;justify-content:flex-end;gap:2px;transition:opacity .12s;display:flex}tr:hover .row-actions,tr:focus-within .row-actions{opacity:1}@media (hover:none){.row-actions{opacity:1}}.tx-list{margin:0 -8px;display:grid}.tx-list-day{color:var(--text-3);letter-spacing:.05em;text-transform:uppercase;padding:14px 8px 4px;font-size:12px;font-weight:650}.tx-list-day:first-child{padding-top:2px}.tx-item{text-align:left;border-radius:12px;align-items:center;gap:12px;width:100%;padding:10px 8px;display:flex}.tx-item:hover,.tx-item:active{background:var(--hover)}.tx-item-main{flex:1;min-width:0;display:grid}.tx-item-title,.tx-item-meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tx-item-title{font-weight:600}.tx-item-meta{color:var(--text-3);font-size:12.5px}.tx-item-amount{white-space:nowrap}.pagination{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;display:flex}.pagination-status{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:13px}.pagination-controls{align-items:center;gap:8px;display:flex}.page-size{color:var(--text-3);align-items:center;gap:8px;font-size:13px;display:flex}.page-size select{width:72px}.dash-section{gap:16px;min-width:0;display:grid}.page:has(.dash-section){gap:36px}.year-stepper{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:12px;align-items:center;gap:2px;padding:3px;display:inline-flex}.year-stepper .icon-button{border-radius:9px;width:32px;height:32px}.year-stepper-value{text-align:center;font-variant-numeric:tabular-nums;min-width:56px;font-weight:700}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.kpi{align-content:start;gap:6px;padding:18px;display:grid}.kpi-head{align-items:center;gap:10px;display:flex}.kpi-icon{border-radius:var(--radius);flex-shrink:0;place-items:center;width:34px;height:34px;display:grid}.kpi-icon-income{background:color-mix(in srgb, var(--income) 15%, transparent);color:var(--income-text)}.kpi-icon-expense{background:color-mix(in srgb, var(--expense) 15%, transparent);color:var(--expense-text)}.kpi-icon-investment{background:color-mix(in srgb, var(--investment) 15%, transparent);color:var(--investment-text)}.kpi-icon-net{background:var(--brand-soft);color:var(--brand-text)}.kpi-label{color:var(--text-2);font-size:13.5px;font-weight:550}.kpi-value{letter-spacing:-.025em;overflow-wrap:anywhere;margin-top:6px;font-size:clamp(20px,1.6vw + 6px,27px);font-weight:700;line-height:1.2}.kpi-delta{flex-wrap:wrap;align-items:center;gap:5px;font-size:12.5px;font-weight:600;display:flex}.kpi-delta.is-good{color:var(--good-text)}.kpi-delta.is-bad{color:var(--bad-text)}.kpi-delta.is-neutral,.kpi-delta-period{color:var(--text-3);font-weight:500}.overview-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:start;gap:16px;display:grid}.chart-legend{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}.legend-item{border:1px solid var(--border);border-radius:var(--radius-sm);height:30px;color:var(--text-2);align-items:center;gap:8px;padding:0 10px;font-size:13px;font-weight:550;display:inline-flex}.legend-item:hover{background:var(--hover)}.legend-item[aria-pressed=false]{color:var(--text-3);text-decoration:line-through}.legend-item[aria-pressed=false] .legend-swatch{background:var(--border-strong)!important}.legend-swatch{border-radius:3px;flex-shrink:0;width:10px;height:10px}.chart-box{width:100%;min-width:0}.chart-box .recharts-surface:focus,.chart-box .recharts-wrapper:focus{outline:none}.chart-tooltip{background:var(--surface);border:1px solid var(--border);min-width:200px;box-shadow:var(--shadow-lg);border-radius:12px;gap:6px;padding:10px 12px;font-size:13px;display:grid}.chart-tooltip-title{margin-bottom:2px;font-weight:650}.chart-tooltip-row{align-items:center;gap:8px;display:flex}.chart-tooltip-row strong{font-variant-numeric:tabular-nums;min-width:96px}.chart-tooltip-row span:last-child{color:var(--text-3)}.chart-tooltip-total{border-top:1px solid var(--border);padding-top:6px}.line-key{background:var(--border-strong);border-radius:2px;flex-shrink:0;width:12px;height:3px}.insights{margin-top:8px;display:grid}.insight{border-bottom:1px solid var(--border);gap:12px;padding:11px 0;display:flex}.insight:last-child{border-bottom:0;padding-bottom:0}.insight-icon{border-radius:var(--radius);background:var(--surface-3);width:32px;height:32px;color:var(--text-2);flex-shrink:0;place-items:center;display:grid}.insight-text{min-width:0;display:grid}.insight-label{color:var(--text-3);font-size:12.5px}.insight-value{font-size:15px;font-weight:650}.insight-hint{color:var(--text-2);font-size:12.5px}.breakdown-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.breakdown-card-wide{grid-column:1/-1}.breakdown-card{gap:16px;display:grid;container-type:inline-size}.breakdown-header{align-items:center;gap:12px;display:flex}.breakdown-header .card-title{color:var(--text-2);font-size:13.5px;font-weight:550}.breakdown-total{letter-spacing:-.02em;font-size:22px;font-weight:700;line-height:1.25}.breakdown-body{justify-items:center;gap:20px;display:grid}@container (width>=620px){.breakdown-body{grid-template-columns:220px minmax(0,1fr);place-items:start stretch}.breakdown-body .donut{justify-self:center}}.donut{flex-shrink:0;position:relative}.donut svg{display:block;overflow:visible}.donut-slice{cursor:pointer;transition:opacity .15s,stroke-width .15s}.donut-center{text-align:center;pointer-events:none;place-content:center;justify-items:center;padding:36px;display:grid;position:absolute;inset:0}.donut-label{max-width:112px;color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.donut-value{letter-spacing:-.015em;font-size:17px;font-weight:700}.donut-sub{color:var(--text-2);font-size:12px}.breakdown-list{gap:2px;width:100%;display:grid}.breakdown-row{border-radius:var(--radius);transition:opacity .15s,background-color .15s}.breakdown-row.is-dimmed{opacity:.5}.breakdown-row.is-open{background:var(--surface-2);opacity:1}.breakdown-button{border-radius:var(--radius);text-align:left;grid-template-columns:12px minmax(0,1fr) minmax(6.5em,max-content) 52px 16px;align-items:center;gap:10px;width:100%;padding:9px 10px;display:grid}.breakdown-button:hover{background:var(--hover)}.breakdown-name{text-overflow:ellipsis;white-space:nowrap;font-weight:550;overflow:hidden}.breakdown-name.is-direct{color:var(--text-2);font-style:italic;font-weight:500}.breakdown-amount{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.breakdown-share{color:var(--text-3);font-variant-numeric:tabular-nums;text-align:right;font-size:12.5px}.breakdown-chevron{width:16px;color:var(--text-3);transition:transform .15s}.breakdown-bar{display:none}@container (width>=620px){.breakdown-button{grid-template-columns:12px minmax(0,1fr) minmax(80px,1.3fr) minmax(6.5em,max-content) 52px 16px}.breakdown-bar{display:block}}.breakdown-row.is-open .breakdown-chevron{transform:rotate(180deg)}.breakdown-children{gap:10px;padding:2px 36px 12px 32px;display:grid}.breakdown-child{gap:5px;display:grid}.breakdown-child-line{grid-template-columns:minmax(0,1fr) minmax(6.5em,max-content) 52px;align-items:baseline;gap:10px;font-size:13px;display:grid}.breakdown-child-line .breakdown-amount{font-weight:550}.meter{background:color-mix(in srgb, var(--meter-color) 18%, var(--surface));border-radius:3px;height:6px;overflow:hidden}.meter>span{background:var(--meter-color);border-radius:3px;height:100%;display:block}.name-form{gap:6px;display:grid}.name-form-compact{flex:1;min-width:0}.name-form-row{align-items:center;gap:8px;display:flex}.name-form-row .input{flex:1;min-width:0}.name-form-compact .input,.name-form-compact .button{height:34px}.category-list{border-top:1px solid var(--border);margin-top:16px;display:grid}.category-item{border-bottom:1px solid var(--border);padding:6px 0}.category-item:last-child{border-bottom:0;padding-bottom:0}.category-row{align-items:center;gap:12px;min-height:48px;padding:4px;display:flex}.category-row-child{min-height:42px;padding-left:12px}.category-branch{color:var(--border-strong)}.category-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.category-row-child .category-name{color:var(--text-2);font-weight:500}.category-actions{align-items:center;gap:2px;display:flex}.swatch-button{border-radius:7px;width:22px;height:22px;transition:transform .12s;display:block;box-shadow:inset 0 0 0 1px #00000014}.swatch-button:hover{transform:scale(1.1)}.swatch-panel{width:auto;min-width:0;padding:10px}.swatches{grid-template-columns:repeat(4,32px);gap:8px;display:grid}.swatch{color:#fff;border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.swatch[aria-checked=true]{box-shadow:0 0 0 2px var(--surface), 0 0 0 4px var(--text)}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px;display:grid}.settings-card{gap:14px;display:grid}.settings-card .segmented{justify-self:start}.login{background:var(--surface);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100dvh;display:grid}.login-art{color:#fff;background:radial-gradient(120% 90% at 0 0,#7064ff 0%,#4f46e5 40%,#27258f 100%);align-items:end;padding:48px;display:grid;position:relative;overflow:hidden}.login-art:before,.login-art:after{content:"";border:1px solid #ffffff24;border-radius:50%;position:absolute}.login-art:before{width:520px;height:520px;top:-180px;right:-160px}.login-art:after{width:340px;height:340px;top:-90px;right:-70px}.login-art-inner{gap:14px;max-width:480px;display:grid;position:relative}.login-art .logo{color:#fff}.login-art .logo-mark rect:first-child{fill:#ffffff2e}.login-art-title{letter-spacing:-.035em;margin-top:28px;font-size:40px;font-weight:750;line-height:1.08}.login-art-text{opacity:.86;font-size:16px}.login-art-chart{align-items:flex-end;gap:10px;height:150px;margin-top:32px;display:flex}.login-art-chart span{background:linear-gradient(#ffffff8c,#ffffff24);border-radius:6px 6px 2px 2px;flex:1}.login-main{place-items:center;padding:32px 24px;display:grid}.login-card{gap:16px;width:100%;max-width:380px;display:grid}.login-card-logo{display:none}.login-title{letter-spacing:-.025em;font-size:28px;font-weight:750}.login-subtitle{color:var(--text-3);margin-top:-10px}.login-footnote{color:var(--text-3);text-align:center;justify-content:center;align-items:center;gap:6px;font-size:12.5px;display:flex}@media (max-width:1180px){.overview-grid{grid-template-columns:minmax(0,1fr)}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1000px){.settings-grid,.breakdown-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:960px){.app-shell{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.topbar{z-index:30;height:calc(var(--topbar-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) 12px 0 16px;background:color-mix(in srgb, var(--bg) 84%, transparent);border-bottom:1px solid var(--border);-webkit-backdrop-filter:saturate(180%)blur(14px);backdrop-filter:saturate(180%)blur(14px);justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.main{padding:20px 16px calc(var(--bottom-nav-height) + 28px + env(safe-area-inset-bottom))}.bottom-nav{z-index:30;height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb, var(--surface) 88%, transparent);border-top:1px solid var(--border);-webkit-backdrop-filter:saturate(180%)blur(14px);backdrop-filter:saturate(180%)blur(14px);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;inset:auto 0 0}.bottom-nav-link{color:var(--text-3);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:550;text-decoration:none;display:flex}.bottom-nav-link.active{color:var(--brand-text)}.bottom-nav-link.active svg{stroke-width:2.4px}.toasts{top:calc(env(safe-area-inset-top) + var(--topbar-height) + 8px);width:auto;left:16px;right:16px}.login{background:var(--bg);grid-template-columns:minmax(0,1fr)}.login-art{display:none}.login-card-logo{margin-bottom:8px;display:block}.login-card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:20px;padding:28px 22px}}@media (max-width:720px){:root{--control-height:44px}.input,.select-trigger,.amount-input,.picker-search input{font-size:16px}.input-sm{font-size:14px}.page{gap:20px}.page-title{font-size:23px}.card{padding:16px}.kpi{padding:14px}.kpi-grid{gap:10px}.filters-extra{grid-template-columns:minmax(0,1fr);width:100%;display:grid}.filter-category{width:auto}.range-trigger{width:100%}.range-dates{display:none}.amount-range{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);display:grid}.amount-range .input{width:100%}.totals-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:2px 8px;padding:10px 12px;display:grid}.totals-item{flex-direction:column;gap:0}.totals-item dd{font-size:13px}.breakdown-children{padding-right:10px}.breakdown-child-line,.breakdown-button{column-gap:8px}.hide-sm{display:none!important}.category-row-child{padding-left:4px}.popover-backdrop{z-index:59;background:#080a1073;animation:.15s ease-out fade-in;display:block;position:fixed;inset:0}.popover,.picker-panel,.range-panel,.swatch-panel{width:auto;min-width:0;max-width:none;max-height:min(80dvh,640px);padding:8px 8px calc(12px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;animation:.22s ease-out sheet-in;position:fixed;inset:auto 0 0;overflow-y:auto}.popover:before{content:"";background:var(--border-strong);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:2px auto 8px;display:block}.picker-panel{overflow:hidden}.picker-search{border:1px solid var(--border);border-radius:var(--radius);margin:0 4px 4px}.picker-list{flex:1;min-height:0;max-height:none}.picker-option,.range-preset{min-height:46px}.swatches{grid-template-columns:repeat(4,48px);justify-content:center;padding:4px 0 8px}.swatch{width:48px;height:48px}.dialog{width:100%;max-width:100%;max-height:94dvh;margin:auto 0 0}.dialog-panel{max-height:94dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:20px 20px 0 0}.dialog-content{overflow-y:auto}.dialog[open]{animation:.24s ease-out sheet-in}.dialog-footer .button{flex:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px)scale(.985)}}@keyframes sheet-in{0%{transform:translateY(100%)}}@keyframes fade-in{0%{opacity:0}}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
