:root{--color-bg: #0f1115;--color-surface: #171a21;--color-surface-2: #1e222c;--color-border: #2a2f3a;--color-text: #e6e8ee;--color-text-muted: #8b93a5;--color-accent: #4f8cff;--color-accent-text: #ffffff;--color-income: #2eb886;--color-expense: #e5534b;--color-transfer: #4f8cff;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--radius: 8px}@media(prefers-color-scheme:light){:root{--color-bg: #f6f7f9;--color-surface: #ffffff;--color-surface-2: #eef0f4;--color-border: #d8dce3;--color-text: #1c1f26;--color-text-muted: #5c6470}}:root{--chart-income: #1f9d76;--chart-expense: #e5534b;--chart-neutral: #4f8cff;--chart-grid: var(--color-border)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg)}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.field-label{font-size:var(--text-sm);color:var(--color-text-muted)}input,select,button{font:inherit;color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}button{cursor:pointer;background:var(--color-accent);color:var(--color-accent-text);border-color:transparent}button:disabled{opacity:.5;cursor:default}.error{color:var(--color-expense)}.list{list-style:none;margin:var(--space-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.list li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.list li button{background:transparent;color:var(--color-text-muted);border-color:var(--color-border);font-size:var(--text-sm)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3);margin:var(--space-4) 0}.tile{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.tile-label{font-size:var(--text-sm);color:var(--color-text-muted)}.tile-value{font-size:var(--text-xl);font-variant-numeric:tabular-nums}.tile-value--income{color:var(--chart-income)}.tile-value--expense{color:var(--chart-expense)}.tile-delta{font-size:var(--text-xs);color:var(--color-text-muted)}.panel{margin:var(--space-4) 0;padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius)}.panel-title{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-3)}.panel-empty{color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.legend{display:flex;gap:var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-2)}.legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.legend-swatch{width:10px;height:10px;border-radius:2px}.chart-wrap{position:relative}.chart{width:100%;height:auto;display:block}.chart-tick{fill:var(--color-text-muted);font-size:11px}.tooltip{position:absolute;top:0;right:0;display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius);font-size:var(--text-sm);pointer-events:none}.bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.bar-row{display:grid;grid-template-columns:minmax(80px,1fr) 3fr auto;align-items:center;gap:var(--space-3);font-size:var(--text-sm)}.bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{height:10px;background:var(--color-surface-2);border-radius:4px;overflow:hidden}.bar-fill{display:block;height:100%;background:var(--chart-neutral);border-radius:4px}.bar-value{font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.heatmap{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(14px,1fr));gap:3px}.heatmap-cell{aspect-ratio:1;border-radius:3px;background:var(--chart-expense)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.extra-form{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-3) 0}.extra-form .field{margin-bottom:0}.schedule{width:100%;border-collapse:collapse;font-size:var(--text-sm);font-variant-numeric:tabular-nums;margin-top:var(--space-4)}.schedule th,.schedule td{text-align:right;padding:var(--space-2);border-bottom:1px solid var(--color-border);white-space:nowrap}.schedule th:first-child,.schedule td:first-child,.schedule th:nth-child(2),.schedule td:nth-child(2){text-align:left}.schedule th{color:var(--color-text-muted);font-weight:400}.table-scroll{overflow-x:auto}.row-actions{display:flex;gap:var(--space-2);flex-shrink:0}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:var(--space-4) 0 var(--space-3)}.month-nav button{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.month-weekday{text-align:center;font-size:var(--text-xs);color:var(--color-text-muted);padding-bottom:var(--space-1)}.month-day{display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:2px;aspect-ratio:1;padding:var(--space-1);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);font-size:var(--text-sm)}.month-day--outside{color:var(--color-text-muted);opacity:.5}.month-day--today{border-color:var(--color-accent)}.month-day--selected{background:var(--color-surface-2);outline:2px solid var(--color-accent)}.month-day-marks{display:flex;gap:2px;min-height:6px}.dot{width:6px;height:6px;border-radius:50%;background:var(--chart-neutral)}.dot--recurring,.dot--loan{background:var(--chart-expense)}.month-grid code,.list code{font-size:var(--text-xs);word-break:break-all}.budget-row{display:grid;grid-template-columns:minmax(80px,1fr) 2fr auto auto;align-items:center;gap:var(--space-3);font-size:var(--text-sm)}.budget-row button{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border);font-size:var(--text-xs)}.bar-fill--over{background:var(--chart-expense)}
