:root{--bg-primary: #ffffff;--bg-secondary: #f8f8f7;--bg-sidebar: #f8f8f7;--bg-hover: #f3f3f2;--bg-active: #ededec;--bg-input: #ffffff;--bg-kbd: #f3f3f2;--border: #e8e8e6;--border-subtle: #f0f0ee;--text-primary: #1a1a19;--text-secondary: #6b6b6a;--text-tertiary: #9b9b99;--text-inverse: #ffffff;--accent: #5b5bd6;--accent-hover: #4e4ec2;--accent-subtle: #eeeef9;--positive: #5b7a5f;--negative: #8b6b6b;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--sidebar-width: 220px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg-primary: #191919;--bg-secondary: #1e1e1e;--bg-sidebar: #1a1a1a;--bg-hover: #252525;--bg-active: #2c2c2c;--bg-input: #222222;--bg-kbd: #2a2a2a;--border: #2e2e2e;--border-subtle: #262626;--text-primary: #ececec;--text-secondary: #8e8e8c;--text-tertiary: #5e5e5c;--accent: #7b7bea;--accent-hover: #8e8ef0;--accent-subtle: #252538;--positive: #7a9b7e;--negative: #a68a8a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 2px 8px rgba(0, 0, 0, .3)}}*,*:before,*:after{box-sizing:border-box;margin:0}html{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:14px;line-height:1.55;color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh}#root{min-height:100vh;display:flex}h1,h2,h3{font-weight:600;letter-spacing:-.01em}h1{font-size:1.125rem}h2{font-size:.8125rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:0}h3{font-size:.9375rem}p{color:var(--text-secondary)}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;height:100vh;position:sticky;top:0;overflow-y:auto}.sidebar-header{padding:16px 16px 12px;display:flex;align-items:center;justify-content:space-between}.sidebar-brand{font-weight:600;font-size:.9375rem;color:var(--text-primary);letter-spacing:-.01em}.sidebar-section{padding:8px 8px 0}.sidebar-section-label{padding:4px 8px 6px;font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}.sidebar-link{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);color:var(--text-secondary);text-decoration:none;font-size:.8125rem;font-weight:450;transition:background .1s,color .1s;cursor:pointer}.sidebar-link:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar-link[data-status=active]{background:var(--bg-active);color:var(--text-primary);font-weight:500}.sidebar-link .shortcut{margin-left:auto;font-size:.6875rem;color:var(--text-tertiary);font-family:inherit}.sidebar-footer{margin-top:auto;padding:12px 8px;border-top:1px solid var(--border)}.sidebar-user{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-radius:var(--radius-sm);font-size:.8125rem;color:var(--text-secondary)}.main-content{flex:1;min-width:0;display:flex;flex-direction:column;height:100vh;overflow-y:auto}.page-header{padding:20px 32px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.page-body{padding:0 32px 32px;flex:1}button,.btn{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-primary);font:inherit;font-size:.8125rem;font-weight:450;cursor:pointer;transition:background .1s,border-color .1s;white-space:nowrap}button:hover,.btn:hover{background:var(--bg-hover);border-color:var(--border)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--bg-hover)}.btn-danger{border-color:transparent;background:transparent;color:var(--negative)}.btn-danger:hover{background:var(--bg-hover)}input,select,textarea{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-input);color:var(--text-primary);font:inherit;font-size:.8125rem;transition:border-color .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-subtle)}input::placeholder{color:var(--text-tertiary)}.journal{width:100%}.journal-row{display:grid;grid-template-columns:96px 1fr 140px 120px 120px;align-items:center;padding:0 8px;border-bottom:1px solid var(--border-subtle);min-height:40px;font-size:.8125rem;transition:background .08s;cursor:default}.journal-row:hover{background:var(--bg-hover)}.journal-row[data-selected=true]{background:var(--accent-subtle)}.journal-row.journal-header{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);min-height:32px;border-bottom:1px solid var(--border);cursor:default;position:sticky;top:0;background:var(--bg-primary);z-index:1}.journal-row.journal-header:hover{background:var(--bg-primary)}.journal-cell{padding:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.journal-cell.description{font-weight:450;color:var(--text-primary)}.journal-cell.date{color:var(--text-tertiary);font-variant-numeric:tabular-nums}.journal-cell.category,.journal-cell.account{color:var(--text-secondary)}.journal-cell.amount{text-align:right;font-variant-numeric:tabular-nums;font-weight:500;font-feature-settings:"tnum"}.journal-cell.amount.income{color:var(--positive)}.journal-cell.amount.expense{color:var(--text-primary)}.journal-actions{opacity:0;transition:opacity .1s}.journal-row:hover .journal-actions{opacity:1}.inline-form{display:flex;align-items:center;gap:8px;padding:10px 0;flex-wrap:wrap}.inline-form input,.inline-form select{height:30px}.stats-row{display:flex;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;margin:20px 0}.stat-card{flex:1;padding:16px 20px;background:var(--bg-primary)}.stat-label{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);margin-bottom:4px}.stat-value{font-size:1.375rem;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat-value.positive{color:var(--positive)}.stat-value.negative{color:var(--text-primary)}.account-list{list-style:none;padding:0}.account-item{display:flex;align-items:center;justify-content:space-between;padding:10px 8px;border-bottom:1px solid var(--border-subtle);font-size:.8125rem;border-radius:var(--radius-sm);transition:background .08s}.account-item:last-child{border-bottom:none}.account-item:hover{background:var(--bg-hover)}.account-name{font-weight:450;color:var(--text-primary)}.account-type{color:var(--text-tertiary);font-size:.75rem;margin-left:8px}.account-balance{font-variant-numeric:tabular-nums;font-weight:500;color:var(--text-primary)}.account-actions{display:flex;gap:4px;opacity:0;transition:opacity .1s}.account-item:hover .account-actions{opacity:1}.category-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:20px}.category-item{display:flex;align-items:center;justify-content:space-between;padding:8px;border-bottom:1px solid var(--border-subtle);font-size:.8125rem;border-radius:var(--radius-sm);transition:background .08s}.category-item:hover{background:var(--bg-hover)}.category-item:last-child{border-bottom:none}.category-actions{opacity:0;transition:opacity .1s}.category-item:hover .category-actions{opacity:1}.edit-form{display:flex;flex-direction:column;gap:16px;max-width:400px}.field-label{display:block;font-size:.75rem;font-weight:500;color:var(--text-secondary);margin-bottom:4px}.field-input{display:block;width:100%;height:32px}.form-actions{display:flex;gap:8px;padding-top:4px}kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;background:var(--bg-kbd);border:1px solid var(--border);border-radius:3px;font-size:.6875rem;font-family:inherit;color:var(--text-tertiary);line-height:1}.empty-state{padding:48px 0;text-align:center;color:var(--text-tertiary);font-size:.8125rem}.empty-state a{font-weight:500}.section{margin-top:28px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.error-text{color:var(--negative);font-size:.8125rem;padding:8px 0}.loading{display:flex;align-items:center;justify-content:center;padding:48px 0;color:var(--text-tertiary);font-size:.8125rem}.signin-page{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:12px}.signin-page h1{font-size:1.25rem;font-weight:600}.signin-page p{font-size:.875rem;color:var(--text-tertiary)}.signin-btn{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:8px 20px;background:var(--text-primary);color:var(--bg-primary);border:none;border-radius:var(--radius-md);font:inherit;font-size:.875rem;font-weight:500;text-decoration:none;cursor:pointer;transition:opacity .15s}.signin-btn:hover{opacity:.85;color:var(--bg-primary)}.import-dropzone{display:flex;align-items:center;justify-content:center;border:2px dashed var(--border);border-radius:var(--radius-lg);padding:64px 32px;cursor:pointer;transition:border-color .15s,background .15s;max-width:560px}.import-dropzone:hover{border-color:var(--text-tertiary);background:var(--bg-secondary)}.import-dropzone[data-dragging]{border-color:var(--accent);background:var(--accent-subtle)}.import-dropzone-content{text-align:center;font-size:.8125rem}.import-mapping-grid{max-width:480px}.import-mapping-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-subtle);font-size:.8125rem}.import-mapping-row:first-child{font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);border-bottom:1px solid var(--border)}.import-mapping-row select{width:100%;height:30px}.import-result-card{padding:24px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-secondary)}.import-result-stats{display:flex;gap:32px}.import-result-stat-value{font-size:1.75rem;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--positive)}.import-result-stat-label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);margin-top:2px}.import-errors{max-height:160px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-primary)}.import-error-row{padding:6px 10px;font-size:.75rem;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle)}.import-error-row:last-child{border-bottom:none}.category-picker{position:relative;width:100%}.category-picker-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;height:32px;padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-input);color:var(--text-primary);font:inherit;font-size:.8125rem;cursor:pointer;text-align:left}.category-picker-trigger:hover{border-color:var(--text-tertiary)}.category-picker-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.category-picker-chevron{color:var(--text-tertiary);font-size:.625rem;margin-left:6px;flex-shrink:0}.category-picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:20;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-primary);box-shadow:var(--shadow-md);overflow:hidden}.category-picker-search{padding:6px;border-bottom:1px solid var(--border-subtle)}.category-picker-search input{width:100%;height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 8px;font-size:.8125rem}.category-picker-list{max-height:220px;overflow-y:auto;padding:4px 0}.category-picker-item{padding:5px 8px;font-size:.8125rem;cursor:pointer;border-radius:0;transition:background .06s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.category-picker-item:hover,.category-picker-item.highlighted{background:var(--bg-hover)}.category-picker-item.selected{color:var(--accent);font-weight:500}.category-picker-item-path{color:var(--text-primary)}.category-picker-empty{padding:12px 8px;font-size:.8125rem;color:var(--text-tertiary);text-align:center}.detail-panel{width:340px;min-width:340px;border-left:1px solid var(--border);background:var(--bg-secondary);display:flex;flex-direction:column;overflow-y:auto}.detail-panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.detail-panel-header h3{font-size:.8125rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:0}.detail-panel-body{flex:1;padding:16px 20px;display:flex;flex-direction:column;gap:14px}.detail-field{display:flex;flex-direction:column}.detail-field-row{display:flex;gap:10px}.detail-panel-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px;flex-shrink:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.budget-list{display:flex;flex-direction:column;gap:2px}.budget-item{padding:12px 8px;border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-sm);transition:background .08s}.budget-item:hover{background:var(--bg-hover)}.budget-item:last-child{border-bottom:none}.budget-info{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.budget-category{font-weight:450;font-size:.8125rem;color:var(--text-primary)}.budget-amounts{font-size:.8125rem;font-variant-numeric:tabular-nums;color:var(--text-secondary)}.budget-rollover{font-size:.75rem;color:var(--text-tertiary)}.budget-bar-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.budget-bar{flex:1;height:6px;background:var(--bg-hover);border-radius:3px;overflow:hidden}.budget-bar.compact{height:4px}.budget-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.budget-pct{font-size:.6875rem;font-variant-numeric:tabular-nums;color:var(--text-tertiary);min-width:32px;text-align:right}.budget-actions{display:flex;gap:4px;opacity:0;transition:opacity .1s}.budget-item:hover .budget-actions{opacity:1}.dashboard-budgets{display:flex;flex-direction:column;gap:8px}.dashboard-budget-item{font-size:.8125rem}.dashboard-budget-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;color:var(--text-secondary)}.recurring-list{display:flex;flex-direction:column}.recurring-item{display:flex;align-items:center;justify-content:space-between;padding:10px 8px;border-bottom:1px solid var(--border-subtle);font-size:.8125rem;border-radius:var(--radius-sm);transition:background .08s}.recurring-item:hover{background:var(--bg-hover)}.recurring-item:last-child{border-bottom:none}.recurring-description{font-weight:450;color:var(--text-primary);display:flex;align-items:center;gap:8px}.recurring-badge{display:inline-flex;align-items:center;padding:1px 6px;border-radius:3px;font-size:.625rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;background:var(--bg-hover);color:var(--text-tertiary);border:1px solid var(--border-subtle)}.recurring-meta{display:flex;gap:12px;margin-top:2px;font-size:.75rem;color:var(--text-tertiary)}.recurring-amount{font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}.recurring-amount.income{color:var(--positive)}.recurring-amount.expense{color:var(--text-primary)}.recurring-actions{display:flex;gap:4px;opacity:0;transition:opacity .1s}.recurring-item:hover .recurring-actions{opacity:1}.forecast-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.period-buttons{display:flex;gap:2px}.period-btn{padding:2px 10px;font-size:.6875rem;font-weight:500;border:1px solid var(--border);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;transition:background .1s,color .1s}.period-btn:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.period-btn:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.period-btn:not(:first-child){border-left:none}.period-btn.active{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.period-btn:hover:not(.active){background:var(--bg-hover)}.planned-expense-form{display:flex;align-items:center;gap:8px;padding:8px 0;flex-wrap:wrap}.planned-expense-form input{height:30px}.planned-expense-list{display:flex;flex-direction:column;gap:2px;padding:4px 0}.planned-expense-item{display:flex;align-items:center;gap:12px;padding:4px 8px;font-size:.8125rem;border-radius:var(--radius-sm);transition:background .08s}.planned-expense-item:hover{background:var(--bg-hover)}.planned-expense-desc{flex:1;font-weight:450;color:var(--text-primary)}.planned-expense-amount{font-variant-numeric:tabular-nums;font-weight:500;color:var(--negative)}.planned-expense-date{color:var(--text-tertiary);font-variant-numeric:tabular-nums;min-width:80px}.chart-container{padding:8px 0}.upcoming-list{display:flex;flex-direction:column}.upcoming-item{display:flex;align-items:center;justify-content:space-between;padding:8px;border-bottom:1px solid var(--border-subtle);font-size:.8125rem}.upcoming-item:last-child{border-bottom:none}.upcoming-info{display:flex;align-items:center;gap:12px}.upcoming-date{color:var(--text-tertiary);font-variant-numeric:tabular-nums;min-width:80px}.upcoming-description{font-weight:450;color:var(--text-primary)}.upcoming-meta{color:var(--text-tertiary);font-size:.75rem}.upcoming-amount{font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}.upcoming-amount.income{color:var(--positive)}.upcoming-amount.expense{color:var(--text-primary)}
