.sidebar-child[data-v-bdaf552d]{position:relative;display:flex;align-items:center;padding:4px 12px 4px 16px;font-size:var(--text-sm);color:var(--color-text-sidebar);cursor:pointer;border-radius:0 var(--radius-sm) var(--radius-sm) 0;transition:all var(--duration-base) ease;text-decoration:none;-webkit-user-select:none;user-select:none}.sidebar-child[data-v-bdaf552d]:before{content:"";position:absolute;left:0;top:50%;width:8px;height:1px;background:#ffffff26}.sidebar-child[data-v-bdaf552d]:hover{color:var(--color-text-sidebar-active);background:#ffffff0a}.sidebar-child.active-child[data-v-bdaf552d]{color:var(--color-text-sidebar-active)}.sidebar-child.active-child[data-v-bdaf552d]:before{background:var(--color-brand)}.child-label[data-v-bdaf552d]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-category[data-v-73c6a50b]{border-radius:var(--radius-md);transition:background var(--duration-base) ease}.sidebar-category[data-v-73c6a50b]:has(.sidebar-children){background:#ffffff08;padding-bottom:4px}.sidebar-item[data-v-73c6a50b]{display:flex;align-items:center;gap:var(--space-3);padding:7px 12px;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:400;color:var(--color-text-sidebar);cursor:pointer;transition:all var(--duration-base) ease;-webkit-user-select:none;user-select:none}.sidebar-item[data-v-73c6a50b]:hover{background:var(--color-bg-sidebar-hover);color:var(--color-text-sidebar-active)}.sidebar-item.active[data-v-73c6a50b]{background:var(--color-bg-sidebar-active);color:var(--color-text-sidebar-active);font-weight:500;position:relative}.sidebar-item.active[data-v-73c6a50b]:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--color-brand)}.sidebar-item.has-active-line[data-v-73c6a50b]{color:var(--color-text-sidebar-active)}.sidebar-item.drop-target[data-v-73c6a50b]{background:#6c63ff33;color:var(--color-text-sidebar-active);outline:2px solid var(--color-accent);outline-offset:-2px}.category-name[data-v-73c6a50b]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chevron[data-v-73c6a50b]{opacity:.4;flex-shrink:0;transition:transform var(--duration-base) ease;padding:2px;border-radius:var(--radius-sm)}.chevron[data-v-73c6a50b]:hover{opacity:.9;background:#ffffff14}.sidebar-item.expanded .chevron[data-v-73c6a50b]{transform:rotate(180deg)}.sidebar-item:hover .chevron[data-v-73c6a50b]{opacity:.7}.sidebar-children[data-v-73c6a50b]{position:relative;overflow:hidden;margin-left:23px;border-left:1px solid rgba(255,255,255,.1)}.expand-enter-active[data-v-73c6a50b],.expand-leave-active[data-v-73c6a50b]{transition:all var(--duration-slow) var(--ease-default);max-height:500px;opacity:1}.expand-enter-from[data-v-73c6a50b],.expand-leave-to[data-v-73c6a50b]{max-height:0;opacity:0}.sidebar-add[data-v-73c6a50b]{position:relative;display:flex;align-items:center;gap:var(--space-2);padding:4px 12px 4px 16px;font-size:var(--text-sm);color:#ffffff40;cursor:pointer;border-radius:0 var(--radius-sm) var(--radius-sm) 0;transition:all var(--duration-base) ease;-webkit-user-select:none;user-select:none}.sidebar-add[data-v-73c6a50b]:before{content:"";position:absolute;left:0;top:50%;width:8px;height:1px;background:#ffffff14}.sidebar-add[data-v-73c6a50b]:hover{color:var(--color-brand);background:#3ecf8e0f}.sidebar-item[data-v-8fb0432d]{display:flex;align-items:center;gap:var(--space-3);padding:9px 12px;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:400;color:var(--color-text-sidebar);cursor:pointer;transition:all var(--duration-base) ease;-webkit-user-select:none;user-select:none}.sidebar-item[data-v-8fb0432d]:hover{background:var(--color-bg-sidebar-hover);color:var(--color-text-sidebar-active)}.sidebar-item.active[data-v-8fb0432d]{background:var(--color-bg-sidebar-active);color:var(--color-text-sidebar-active);font-weight:500}.sidebar-item.has-active-line[data-v-8fb0432d]{color:var(--color-text-sidebar-active)}.category-name[data-v-8fb0432d]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chevron[data-v-8fb0432d]{opacity:.4;flex-shrink:0;transition:transform var(--duration-base) ease;padding:2px;border-radius:var(--radius-sm)}.chevron[data-v-8fb0432d]:hover{opacity:.9;background:#ffffff14}.sidebar-item.expanded .chevron[data-v-8fb0432d]{transform:rotate(180deg)}.sidebar-item:hover .chevron[data-v-8fb0432d]{opacity:.7}.sidebar-children[data-v-8fb0432d]{overflow:hidden}.expand-enter-active[data-v-8fb0432d],.expand-leave-active[data-v-8fb0432d]{transition:all var(--duration-slow) var(--ease-default);max-height:500px;opacity:1}.expand-enter-from[data-v-8fb0432d],.expand-leave-to[data-v-8fb0432d]{max-height:0;opacity:0}.sidebar-child[data-v-8fb0432d]{display:flex;align-items:center;gap:var(--space-2);padding:6px 12px 6px 44px;font-size:var(--text-sm);color:var(--color-text-sidebar);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-base) ease;text-decoration:none;-webkit-user-select:none;user-select:none}.sidebar-child[data-v-8fb0432d]:hover{color:var(--color-text-sidebar-active);background:#ffffff0a}.sidebar-child.active-child[data-v-8fb0432d]{color:var(--color-text-sidebar-active)}.child-dot[data-v-8fb0432d]{width:4px;height:4px;border-radius:var(--radius-full);background:currentColor;opacity:.4;flex-shrink:0}.active-child .child-dot[data-v-8fb0432d]{opacity:1;background:var(--color-brand)}.child-label[data-v-8fb0432d]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-section[data-v-404701b7]{margin-top:var(--space-2)}.shared-section-header[data-v-404701b7]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) 12px;cursor:pointer;-webkit-user-select:none;user-select:none}.sidebar-section-label[data-v-404701b7]{font-size:var(--text-xs);font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:#ffffff40}.section-chevron[data-v-404701b7]{color:#fff3;transition:transform var(--duration-base) ease;flex-shrink:0}.section-chevron-open[data-v-404701b7]{transform:rotate(180deg)}.shared-section-body[data-v-404701b7]{display:flex;flex-direction:column;gap:var(--space-1)}.shared-budget-group[data-v-404701b7]{display:flex;flex-direction:column;gap:1px}.shared-owner-label[data-v-404701b7]{padding:4px 12px}.shared-owner-name[data-v-404701b7]{font-size:11px;font-weight:500;color:#ffffff59;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-loading[data-v-404701b7]{padding:6px 12px 6px 24px;font-size:var(--text-xs);color:#fff3}.modal-overlay[data-v-bac3edaf]{position:fixed;inset:0;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.modal[data-v-bac3edaf]{background:var(--color-bg-surface);border-radius:var(--radius-xl);padding:var(--space-8);width:100%;max-width:480px;box-shadow:var(--shadow-xl),0 0 0 1px #0000000d;animation:modalIn-bac3edaf .25s cubic-bezier(.34,1.56,.64,1)}@keyframes modalIn-bac3edaf{0%{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-title[data-v-da8a6c28]{font-size:var(--text-xl);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-6)}.input-group[data-v-da8a6c28]{margin-bottom:var(--space-5)}.input-label[data-v-da8a6c28]{display:block;font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.input[data-v-da8a6c28]{width:100%;padding:10px 14px;font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-surface);color:var(--color-text-primary);transition:border-color var(--duration-base) ease}.input[data-v-da8a6c28]:focus{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 3px #6c63ff1f}.input[data-v-da8a6c28]::placeholder{color:var(--color-text-tertiary)}.icon-grid[data-v-da8a6c28]{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:var(--space-2)}.icon-btn[data-v-da8a6c28]{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:none;color:var(--color-text-secondary);cursor:pointer;transition:all var(--duration-base) ease}.icon-btn[data-v-da8a6c28]:hover{background:var(--color-bg-muted);border-color:var(--color-border-strong);color:var(--color-text-primary)}.icon-btn.selected[data-v-da8a6c28]{background:var(--color-accent-muted);border-color:var(--color-accent);color:var(--color-accent)}.toggle-row[data-v-da8a6c28]{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-input[data-v-da8a6c28]{display:none}.toggle-switch[data-v-da8a6c28]{width:36px;height:20px;border-radius:var(--radius-full);background:var(--color-border-strong);position:relative;transition:background var(--duration-base) ease;flex-shrink:0}.toggle-switch[data-v-da8a6c28]:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:var(--radius-full);background:var(--color-bg-surface);transition:transform var(--duration-base) ease}.toggle-input:checked+.toggle-switch[data-v-da8a6c28]{background:var(--color-brand)}.toggle-input:checked+.toggle-switch[data-v-da8a6c28]:after{transform:translate(16px)}.toggle-label[data-v-da8a6c28]{font-size:var(--text-base);font-weight:500;color:var(--color-text-primary)}.input-hint[data-v-da8a6c28]{font-size:var(--text-xs);color:var(--color-text-tertiary);margin-top:var(--space-1)}.form-error[data-v-da8a6c28]{font-size:var(--text-sm);color:var(--color-negative);margin-bottom:var(--space-4)}.modal-actions[data-v-da8a6c28]{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-8)}.btn[data-v-da8a6c28]{padding:9px 18px;font-size:var(--text-base);font-weight:500;border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-base) ease;border:none}.btn[data-v-da8a6c28]:disabled{opacity:.6;cursor:not-allowed}.btn-primary[data-v-da8a6c28]{background:var(--color-brand);color:#fff}.btn-primary[data-v-da8a6c28]:hover:not(:disabled){background:var(--color-brand-hover)}.btn-secondary[data-v-da8a6c28]{background:none;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-secondary[data-v-da8a6c28]:hover{background:var(--color-bg-muted);border-color:var(--color-border-strong)}.modal-title[data-v-3cbb798d]{font-size:var(--text-xl);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-6)}.input-group[data-v-3cbb798d]{margin-bottom:var(--space-5)}.input-label[data-v-3cbb798d]{display:block;font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.optional[data-v-3cbb798d]{font-weight:400;color:var(--color-text-tertiary)}.input[data-v-3cbb798d]{width:100%;padding:10px 14px;font-size:var(--text-base);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-surface);color:var(--color-text-primary);transition:border-color var(--duration-base) ease}.input[data-v-3cbb798d]:focus{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 3px #6c63ff1f}.input[data-v-3cbb798d]::placeholder{color:var(--color-text-tertiary)}.select[data-v-3cbb798d]{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%239CA3AF' stroke-width='1.5' stroke-linecap='round'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}.input-with-suffix[data-v-3cbb798d]{position:relative}.input-with-suffix .input[data-v-3cbb798d]{padding-right:42px}.input-suffix[data-v-3cbb798d]{position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:var(--text-sm);color:var(--color-text-tertiary);pointer-events:none}.form-row[data-v-3cbb798d]{display:flex;gap:var(--space-4)}.flex-1[data-v-3cbb798d]{flex:1}.preview-section[data-v-3cbb798d]{background:var(--color-bg-muted);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-5)}.preview-label[data-v-3cbb798d]{font-size:var(--text-xs);font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:var(--space-3)}.preview-grid[data-v-3cbb798d]{display:grid;grid-template-columns:repeat(12,1fr);gap:2px}.preview-cell[data-v-3cbb798d]{text-align:center}.preview-month[data-v-3cbb798d]{font-size:10px;font-weight:500;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:2px}.preview-value[data-v-3cbb798d]{font-size:10px;font-family:var(--font-sans);font-variant-numeric:tabular-nums;color:var(--color-text-tertiary)}.preview-cell.has-value .preview-value[data-v-3cbb798d]{color:var(--color-brand);font-weight:600}.form-error[data-v-3cbb798d]{font-size:var(--text-sm);color:var(--color-negative);margin-bottom:var(--space-4)}.modal-actions[data-v-3cbb798d]{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-8)}.btn[data-v-3cbb798d]{padding:9px 18px;font-size:var(--text-base);font-weight:500;border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-base) ease;border:none}.btn[data-v-3cbb798d]:disabled{opacity:.6;cursor:not-allowed}.btn-primary[data-v-3cbb798d]{background:var(--color-brand);color:#fff}.btn-primary[data-v-3cbb798d]:hover:not(:disabled){background:var(--color-brand-hover)}.btn-secondary[data-v-3cbb798d]{background:none;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-secondary[data-v-3cbb798d]:hover{background:var(--color-bg-muted);border-color:var(--color-border-strong)}.sidebar[data-v-780df9ec]{width:240px;min-width:240px;height:100vh;position:fixed;top:0;left:0;background:var(--color-bg-sidebar);display:flex;flex-direction:column;padding:20px 12px;overflow-y:auto;z-index:var(--z-sidebar)}.sidebar[data-v-780df9ec]::-webkit-scrollbar{width:4px}.sidebar[data-v-780df9ec]::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.sidebar-logo[data-v-780df9ec]{display:flex;align-items:center;gap:var(--space-3);padding:0 12px;margin-bottom:var(--space-8)}.logo-mark[data-v-780df9ec]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:var(--color-brand);color:#fff;font-family:var(--font-serif);font-weight:700;font-size:17px;border-radius:var(--radius-md);flex-shrink:0;box-shadow:0 2px 8px #3ecf8e66}.logo-text[data-v-780df9ec]{font-family:var(--font-serif);font-size:20px;font-weight:700;color:var(--color-text-inverse);letter-spacing:-.02em}.logo-pro-badge[data-v-780df9ec]{font-size:10px;font-weight:700;font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.06em;color:var(--color-brand);background:var(--color-brand-muted);padding:2px 6px;border-radius:var(--radius-full);line-height:1;align-self:center;box-shadow:0 0 8px #3ecf8e4d;position:relative;overflow:hidden}.logo-pro-badge[data-v-780df9ec]:after{content:"";position:absolute;top:-50%;left:-75%;width:50%;height:200%;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.4) 50%,transparent 60%);animation:pro-shine-780df9ec 7s ease-in-out infinite}@keyframes pro-shine-780df9ec{0%,85%,to{left:-75%}90%{left:125%}}.sidebar-item[data-v-780df9ec]{display:flex;align-items:center;gap:var(--space-3);padding:9px 12px;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:400;color:var(--color-text-sidebar);cursor:pointer;transition:all var(--duration-base) ease;text-decoration:none;-webkit-user-select:none;user-select:none;position:relative}.sidebar-item[data-v-780df9ec]:hover{background:var(--color-bg-sidebar-hover);color:var(--color-text-sidebar-active)}.sidebar-item.active[data-v-780df9ec]{background:var(--color-bg-sidebar-active);color:var(--color-text-sidebar-active);font-weight:500}.sidebar-item.active[data-v-780df9ec]:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--color-brand)}.sidebar-item .icon[data-v-780df9ec]{flex-shrink:0;opacity:.6;transition:opacity var(--duration-base) ease}.sidebar-item:hover .icon[data-v-780df9ec]{opacity:.85}.sidebar-item.active .icon[data-v-780df9ec]{opacity:1;color:var(--color-brand)}.sidebar-categories[data-v-780df9ec]{display:flex;flex-direction:column;gap:1px}.sidebar-divider[data-v-780df9ec]{height:1px;background:#ffffff14;margin:var(--space-3) 12px}.sidebar-add-category[data-v-780df9ec]{display:flex;align-items:center;gap:var(--space-3);padding:9px 12px;border-radius:var(--radius-md);font-size:var(--text-md);color:#ffffff4d;cursor:pointer;transition:all var(--duration-base) ease;-webkit-user-select:none;user-select:none}.sidebar-add-category[data-v-780df9ec]:hover{color:var(--color-brand);background:#3ecf8e0f}.sidebar-add-category .icon[data-v-780df9ec]{flex-shrink:0;opacity:.6}.sidebar-debug-state[data-v-780df9ec]{padding:var(--space-2) var(--space-4);font-size:11px;color:var(--color-text-tertiary);font-family:monospace}.sidebar-bottom[data-v-780df9ec]{margin-top:auto;padding-top:var(--space-4)}.sidebar-user[data-v-780df9ec]{display:flex;align-items:center;gap:var(--space-3);padding:10px 12px;border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-base) ease}.sidebar-user[data-v-780df9ec]:hover{background:var(--color-bg-sidebar-hover)}.sidebar-avatar[data-v-780df9ec]{width:32px;height:32px;border-radius:var(--radius-full);background:var(--color-brand);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:600;color:#fff;flex-shrink:0;box-shadow:0 2px 6px #3ecf8e4d}.sidebar-user-info[data-v-780df9ec]{flex:1;min-width:0}.sidebar-user-name[data-v-780df9ec]{font-size:var(--text-sm);font-weight:500;color:var(--color-text-inverse);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-email[data-v-780df9ec]{font-size:var(--text-xs);color:var(--color-text-sidebar);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-shell{display:flex;width:100%;min-height:100vh}.main-content{flex:1;min-height:100vh;padding:var(--space-8);background:var(--color-bg-base);display:flex;flex-direction:column}.main-content>:first-child{flex:1}.main-content.with-sidebar{margin-left:240px}.app-footer{margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--color-border-subtle)}.footer-bottom{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-xs);color:var(--color-text-tertiary)}.footer-legal{display:flex;gap:var(--space-6)}.footer-legal a{color:var(--color-text-tertiary);text-decoration:none;transition:color var(--duration-fast) ease}.footer-legal a:hover{color:var(--color-text-secondary)}@media(max-width:640px){.footer-bottom{flex-direction:column;gap:var(--space-3);text-align:center}}.app-shell:after{content:"";position:fixed;inset:0;opacity:.02;background-image:url(/noise.png);pointer-events:none;z-index:9999}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-size-adjust:100%}body{min-height:100vh}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}table{border-collapse:collapse}:root{--color-bg-base: #F4F3EF;--color-bg-surface: #FCFCFA;--color-bg-sidebar: #1E2028;--color-bg-sidebar-hover: #2A2D38;--color-bg-sidebar-active: #33363F;--color-bg-muted: #EBE9E1;--color-bg-elevated: #FFFFFF;--color-brand: #3ECF8E;--color-brand-hover: #30B87A;--color-brand-muted: rgba(62, 207, 142, .12);--color-brand-subtle: rgba(62, 207, 142, .06);--color-accent: #6C63FF;--color-accent-hover: #5A52E0;--color-accent-muted: rgba(108, 99, 255, .1);--color-positive: #3ECF8E;--color-positive-bg: rgba(62, 207, 142, .1);--color-negative: #F25C5C;--color-negative-bg: rgba(242, 92, 92, .1);--color-warning: #F5A623;--color-warning-bg: rgba(245, 166, 35, .1);--color-info: #3B82F6;--color-info-bg: rgba(59, 130, 246, .1);--color-text-primary: #111827;--color-text-secondary: #6B7280;--color-text-tertiary: #9CA3AF;--color-text-inverse: #F9FAFB;--color-text-sidebar: #8B8FA3;--color-text-sidebar-active: #FFFFFF;--color-text-link: #6C63FF;--color-border: #E5E7EB;--color-border-subtle: #F3F4F6;--color-border-strong: #D1D5DB;--color-border-focus: #6C63FF;--font-serif: "Fraunces", Georgia, serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--text-xs: 11px;--text-sm: 13px;--text-base: 14px;--text-md: 15px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 28px;--text-3xl: 36px;--text-stat: 32px;--text-h1: 36px;--text-h3: 18px;--text-label: 13px;--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;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 100px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08), 0 2px 4px rgba(0, 0, 0, .04);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .1), 0 4px 8px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 60px rgba(0, 0, 0, .18), 0 8px 16px rgba(0, 0, 0, .06);--shadow-card: 0 1px 3px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .02);--shadow-card-hover: 0 8px 24px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .04);--z-sidebar: 50;--z-dropdown: 60;--z-modal: 100;--z-toast: 110;--z-tooltip: 120;--chart-bar: #14B8A6;--chart-bar-current: #14B8A6;--chart-budget: #94A3B8;--chart-actual: #6366F1;--chart-income: #10B981;--chart-expense: #F59E0B;--chart-inactive: rgba(209, 213, 219, .4);--chart-grid: #F3F4F6;--chart-zero-line: #E5E7EB;--chart-tooltip-bg: #111827;--chart-tooltip-text: #F9FAFB;--chart-tooltip-shadow: 0 4px 12px rgba(0, 0, 0, .15);--duration-fast: .1s;--duration-base: .15s;--duration-slow: .25s;--duration-chart: .5s;--ease-default: cubic-bezier(.4, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1)}html{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-bg-base);line-height:1.5}body{display:flex;min-height:100vh}#app{display:flex;width:100%;min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-strong)}h1,h2,h3,.page-title,.card-title,.section-title{font-family:var(--font-serif)}:focus-visible{outline:3px solid var(--color-border-focus);outline-offset:2px}.card{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-card);transition:box-shadow var(--duration-slow) ease,transform var(--duration-slow) ease}.card:hover{box-shadow:var(--shadow-card-hover)}.card--accent-green{border-top:3px solid var(--color-positive)}.card--accent-amber{border-top:3px solid var(--color-warning)}.card--accent-red{border-top:3px solid var(--color-negative)}.card--accent-blue{border-top:3px solid var(--color-info)}.card--accent-brand{border-top:3px solid var(--color-brand)}.card--accent-purple{border-top:3px solid var(--color-accent)}.card--elevated{border-color:transparent;box-shadow:var(--shadow-md)}.card--elevated:hover{box-shadow:var(--shadow-lg);transform:translateY(-1px)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:9px 18px;font-size:var(--text-base);font-weight:500;border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-base) ease;border:none;text-decoration:none}.btn-primary{background:var(--color-brand);color:#fff;box-shadow:0 1px 3px #3ecf8e4d}.btn-primary:hover{background:var(--color-brand-hover);box-shadow:0 4px 12px #3ecf8e59;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0);box-shadow:0 1px 2px #3ecf8e33}.btn-secondary{background:var(--color-bg-surface);color:var(--color-text-primary);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.btn-secondary:hover{background:var(--color-bg-muted);border-color:var(--color-border-strong);box-shadow:var(--shadow-md)}.btn-danger{background:var(--color-negative);color:#fff;box-shadow:0 1px 3px #f25c5c4d}.btn-danger:hover{background:#e04848;box-shadow:0 4px 12px #f25c5c59;transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:default;transform:none!important;box-shadow:none!important}.table-header-row th{background:var(--color-bg-muted)}.table-striped tbody tr:nth-child(2n) td{background:#ebe9e14d}.summary-card--positive .summary-card-inner{background:#3ecf8e1a;border:1px solid rgba(62,207,142,.2)}.summary-card--negative .summary-card-inner{background:#f25c5c14;border:1px solid rgba(242,92,92,.18)}.summary-card--info .summary-card-inner{background:#3b82f614;border:1px solid rgba(59,130,246,.18)}.summary-card--warning .summary-card-inner{background:#f5a62314;border:1px solid rgba(245,166,35,.18)}.summary-card--neutral .summary-card-inner{background:var(--color-bg-muted);border:1px solid var(--color-border)}@keyframes cardFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card-enter{animation:cardFadeIn .35s var(--ease-out) both}.card-enter:nth-child(1){animation-delay:0ms}.card-enter:nth-child(2){animation-delay:60ms}.card-enter:nth-child(3){animation-delay:.12s}.card-enter:nth-child(4){animation-delay:.18s}.card-enter:nth-child(5){animation-delay:.24s}.card-enter:nth-child(6){animation-delay:.3s}.btn-icon{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);border:1px solid var(--color-border);color:var(--color-text-secondary);background:var(--color-bg-surface);cursor:pointer;transition:all var(--duration-base) ease;flex-shrink:0}.btn-icon:hover{background:var(--color-bg-muted);color:var(--color-text-primary);border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.btn-icon-sm{width:30px;height:30px}.input{padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-base);font-family:inherit;font-size:var(--text-base);color:var(--color-text-primary);transition:all var(--duration-base) ease}.input::placeholder{color:var(--color-text-tertiary)}.input:focus{border-color:var(--color-border-focus);box-shadow:0 0 0 3px #6c63ff1f;outline:none;background:var(--color-bg-surface)}.text-positive{color:var(--color-positive)}.text-negative{color:var(--color-negative)}.text-warning{color:var(--color-warning)}.text-muted{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-right{text-align:right}.text-center{text-align:center}.text-left{text-align:left}.mono{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-5{margin-top:var(--space-5)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-5{margin-bottom:var(--space-5)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.flex-1{flex:1}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-5{gap:var(--space-5)}.gap-6{gap:var(--space-6)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
