:root{--surface: #f7f9fb;--surface-dim: #d8dadc;--surface-bright: #f7f9fb;--surface-container-lowest: #ffffff;--surface-container-low: #f2f4f6;--surface-container: #eceef0;--surface-container-high: #e6e8ea;--surface-container-highest: #e0e3e5;--surface-variant: #e0e3e5;--background: #f7f9fb;--on-surface: #191c1e;--on-surface-variant: #434655;--on-background: #191c1e;--inverse-surface: #2d3133;--inverse-on-surface: #eff1f3;--outline: #737686;--outline-variant: #c3c6d7;--border-color: color-mix(in srgb, var(--on-surface) 12%, transparent);--divider-color: color-mix(in srgb, var(--on-surface) 8%, transparent);--surface-tint: #0053db;--primary: #004ac6;--on-primary: #ffffff;--primary-container: #2563eb;--on-primary-container: #eeefff;--inverse-primary: #b4c5ff;--primary-fixed: #dbe1ff;--primary-fixed-dim: #b4c5ff;--on-primary-fixed: #00174b;--on-primary-fixed-variant: #003ea8;--secondary: #006a61;--on-secondary: #ffffff;--secondary-container: #86f2e4;--on-secondary-container: #006f66;--secondary-fixed: #89f5e7;--secondary-fixed-dim: #6bd8cb;--on-secondary-fixed: #00201d;--on-secondary-fixed-variant: #005049;--tertiary: #46566c;--on-tertiary: #ffffff;--tertiary-container: #5e6e85;--on-tertiary-container: #e9f0ff;--tertiary-fixed: #d3e4fe;--tertiary-fixed-dim: #b7c8e1;--on-tertiary-fixed: #0b1c30;--on-tertiary-fixed-variant: #38485d;--error: #ba1a1a;--on-error: #ffffff;--error-container: #ffdad6;--on-error-container: #93000a;--warning: #c77700;--font-display: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "Geist", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace;--radius-sm: .125rem;--radius: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-full: 9999px;--space-unit: 4px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--stack-sm: 8px;--stack-md: 16px;--stack-lg: 32px;--gutter: 24px;--margin-desktop: 48px;--margin-tablet: 32px;--margin-mobile: 16px;--container-max: 1200px;--shadow-overlay: 0 16px 48px -12px color-mix(in srgb, var(--on-surface) 8%, transparent), 0 4px 12px -4px color-mix(in srgb, var(--on-surface) 6%, transparent);--shadow-dropdown: 0 8px 28px -8px color-mix(in srgb, var(--on-surface) 8%, transparent), 0 2px 6px -2px color-mix(in srgb, var(--on-surface) 5%, transparent);--scrim: color-mix(in srgb, #000000 40%, transparent);--sidebar-width: 240px;--sidebar-collapsed-width: 56px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--surface: #111418;--surface-dim: #0c0f12;--surface-bright: #2c2f34;--surface-container-lowest: #0c0f12;--surface-container-low: #191c20;--surface-container: #1d2024;--surface-container-high: #272a2f;--surface-container-highest: #32353a;--surface-variant: #43474e;--background: #111418;--on-surface: #e2e2e6;--on-surface-variant: #c3c6cf;--on-background: #e2e2e6;--inverse-surface: #e2e2e6;--inverse-on-surface: #2d3133;--outline: #8d9199;--outline-variant: #43474e;--border-color: color-mix(in srgb, var(--on-surface) 16%, transparent);--divider-color: color-mix(in srgb, var(--on-surface) 10%, transparent);--primary: #b4c5ff;--on-primary: #002c71;--primary-container: #2563eb;--on-primary-container: #dbe1ff;--inverse-primary: #004ac6;--secondary: #6bd8cb;--on-secondary: #00382f;--secondary-container: #005049;--on-secondary-container: #89f5e7;--tertiary: #b7c8e1;--on-tertiary: #21364b;--tertiary-container: #38485d;--on-tertiary-container: #d3e4fe;--error: #ffb4ab;--on-error: #690005;--error-container: #93000a;--on-error-container: #ffdad6;--warning: #f5bf66;--shadow-overlay: 0 16px 48px -12px color-mix(in srgb, #000000 55%, transparent), 0 4px 12px -4px color-mix(in srgb, #000000 40%, transparent);--shadow-dropdown: 0 8px 28px -8px color-mix(in srgb, #000000 55%, transparent), 0 2px 6px -2px color-mix(in srgb, #000000 40%, transparent);--scrim: color-mix(in srgb, #000000 60%, transparent)}}:root[data-theme=dark]{--surface: #111418;--surface-dim: #0c0f12;--surface-bright: #2c2f34;--surface-container-lowest: #0c0f12;--surface-container-low: #191c20;--surface-container: #1d2024;--surface-container-high: #272a2f;--surface-container-highest: #32353a;--surface-variant: #43474e;--background: #111418;--on-surface: #e2e2e6;--on-surface-variant: #c3c6cf;--on-background: #e2e2e6;--inverse-surface: #e2e2e6;--inverse-on-surface: #2d3133;--outline: #8d9199;--outline-variant: #43474e;--border-color: color-mix(in srgb, var(--on-surface) 16%, transparent);--divider-color: color-mix(in srgb, var(--on-surface) 10%, transparent);--primary: #b4c5ff;--on-primary: #002c71;--primary-container: #2563eb;--on-primary-container: #dbe1ff;--inverse-primary: #004ac6;--secondary: #6bd8cb;--on-secondary: #00382f;--secondary-container: #005049;--on-secondary-container: #89f5e7;--tertiary: #b7c8e1;--on-tertiary: #21364b;--tertiary-container: #38485d;--on-tertiary-container: #d3e4fe;--error: #ffb4ab;--on-error: #690005;--error-container: #93000a;--on-error-container: #ffdad6;--shadow-overlay: 0 16px 48px -12px color-mix(in srgb, #000000 55%, transparent), 0 4px 12px -4px color-mix(in srgb, #000000 40%, transparent);--shadow-dropdown: 0 8px 28px -8px color-mix(in srgb, #000000 55%, transparent), 0 2px 6px -2px color-mix(in srgb, #000000 40%, transparent);--scrim: color-mix(in srgb, #000000 60%, transparent)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--background);color:var(--on-surface);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-variant-numeric:tabular-nums;overflow-x:hidden}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{font-family:var(--font-display);color:var(--on-surface);font-weight:600;letter-spacing:-.02em;line-height:1.2}h1{font-size:32px}h2{font-size:24px}h3{font-size:20px}h4{font-size:16px}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.text-display{font-family:var(--font-display);font-size:40px;font-weight:600;line-height:48px;letter-spacing:-.02em}.text-headline-lg{font-family:var(--font-display);font-size:32px;font-weight:600;line-height:40px;letter-spacing:-.02em}.text-headline-md{font-family:var(--font-display);font-size:24px;font-weight:500;line-height:32px}.text-body-lg{font-family:var(--font-body);font-size:18px;font-weight:400;line-height:28px}.text-body-md{font-family:var(--font-body);font-size:16px;font-weight:400;line-height:24px}.text-body-sm{font-family:var(--font-body);font-size:14px;font-weight:400;line-height:20px}.text-label-md{font-family:var(--font-display);font-size:14px;font-weight:500;line-height:20px;letter-spacing:.01em}.text-label-sm{font-family:var(--font-display);font-size:12px;font-weight:500;line-height:16px;letter-spacing:.02em}.data-mono{font-family:var(--font-mono);font-size:16px;font-weight:500;line-height:24px;letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.text-muted{color:var(--on-surface-variant)}@media(max-width:640px){h1,.text-headline-lg{font-size:24px;line-height:32px}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--outline-variant);border-radius:var(--radius-full);border:2px solid var(--background)}::-webkit-scrollbar-thumb:hover{background:var(--outline)}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:0 var(--space-4);min-height:40px;border:1px solid transparent;border-radius:var(--radius);font-family:var(--font-display);font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1;white-space:nowrap;cursor:pointer;background:transparent;color:var(--on-surface);transition:background-color .12s ease,opacity .12s ease,border-color .12s ease}.btn:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.btn-sm{min-height:32px;padding:0 var(--space-3);font-size:12px}.btn-lg{min-height:48px;padding:0 var(--space-6);font-size:16px}.btn-primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.btn-primary:hover:not(:disabled){opacity:.9}.btn-primary:active:not(:disabled){opacity:.82}.btn-secondary{background:transparent;color:var(--primary);border-color:var(--outline-variant)}.btn-secondary:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 8%,transparent);border-color:var(--primary)}.btn-ghost{background:transparent;color:var(--on-surface-variant);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--surface-container-high);color:var(--on-surface)}.btn-danger{background:var(--error);color:var(--on-error);border-color:var(--error)}.btn-danger:hover:not(:disabled){opacity:.9}.btn-icon{padding:0;width:40px;min-height:40px}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field-label,.field>label{font-family:var(--font-display);font-size:12px;font-weight:500;letter-spacing:.02em;line-height:16px;color:var(--on-surface-variant)}.input,.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea{width:100%;padding:9px var(--space-3);background:var(--surface-container-lowest);color:var(--on-surface);border:1px solid var(--outline-variant);border-radius:var(--radius);font-family:var(--font-body);font-size:16px;line-height:24px;transition:border-color .12s ease,box-shadow .12s ease}.input::placeholder,.field input::placeholder,.field textarea::placeholder{color:color-mix(in srgb,var(--on-surface-variant) 70%,transparent)}.input:focus,.input:focus-visible,.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 28%,transparent)}.input:disabled,.field input:disabled,.field select:disabled,.field textarea:disabled{background:var(--surface-container);color:var(--on-surface-variant);cursor:not-allowed}.input.is-invalid,.field input.is-invalid{border-color:var(--error)}.field-error{font-size:12px;color:var(--error)}.card{background:var(--surface-container-lowest);border:1px solid var(--border-color);border-radius:var(--radius-lg)}.card-lg{border-radius:var(--radius-xl)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--gutter);border-bottom:1px solid var(--divider-color)}.card-title{font-family:var(--font-display);font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--on-surface)}.card-body{padding:var(--gutter)}.card-footer{padding:var(--space-4) var(--gutter);border-top:1px solid var(--divider-color)}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--divider-color)}.list-row:last-child{border-bottom:none}.list-row__main{min-width:0;display:flex;flex-direction:column;gap:2px}.list-row__desc{font-family:var(--font-body);font-size:16px;line-height:24px;color:var(--on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row__meta{font-size:14px;color:var(--on-surface-variant)}.list-row__amount{font-family:var(--font-mono);font-size:16px;font-weight:500;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--on-surface);flex-shrink:0}.list-row__amount.is-income{color:var(--secondary)}.list-row__amount.is-expense{color:var(--error)}.chip{--chip-color: var(--tertiary);display:inline-flex;align-items:center;gap:var(--space-1);padding:3px var(--space-2);border-radius:var(--radius);background:color-mix(in srgb,var(--chip-color) 14%,var(--surface-container-lowest));color:color-mix(in srgb,var(--chip-color) 78%,var(--on-surface));font-family:var(--font-display);font-size:12px;font-weight:500;letter-spacing:.02em;line-height:16px;white-space:nowrap}.chip__dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--chip-color);flex-shrink:0}.chip-neutral{background:var(--surface-container-high);color:var(--on-surface-variant)}.modal-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:var(--scrim);animation:ef-fade-in .15s ease}.modal{width:100%;max-width:480px;max-height:calc(100vh - 2 * var(--space-8));display:flex;flex-direction:column;background:var(--surface-container-lowest);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);animation:ef-modal-in .18s ease;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--divider-color)}.modal-title{font-family:var(--font-display);font-size:20px;font-weight:600;letter-spacing:-.01em;color:var(--on-surface)}.modal-body{padding:var(--space-6);overflow-y:auto}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--divider-color)}.menu{background:var(--surface-container-lowest);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-dropdown);padding:var(--space-1);overflow:hidden}.menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--on-surface);font-size:14px;text-align:left;cursor:pointer}.menu-item:hover{background:var(--surface-container-high)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius);font-family:var(--font-display);font-size:12px;font-weight:500;letter-spacing:.02em}.badge-success{background:color-mix(in srgb,var(--secondary) 14%,var(--surface-container-lowest));color:var(--secondary)}.badge-error{background:var(--error-container);color:var(--on-error-container)}.badge-neutral{background:var(--surface-container-high);color:var(--on-surface-variant)}@keyframes ef-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ef-modal-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.modal-backdrop,.modal{animation:none}}
