*,*:before,*:after{box-sizing:border-box}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#712b13;background-color:#faece7;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--color-bg: #faece7;--color-surface: #ffffff;--color-border: #ead3c9;--color-border-strong: #d9a98f;--color-text: #712b13;--color-muted: #8b4a32;--color-accent: #712b13;--color-accent-hover: #9c4020;--color-accent-soft: #f0997b;--color-success: #2e7d32;--color-warning: #ef9f27;--color-warning-dark: #ba7517;--color-danger: #a3181f;--color-danger-hover: #8c1519;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--radius: 8px;--radius-sm: 4px}a{font-weight:500;color:var(--color-accent)}a:hover{color:var(--color-accent-hover)}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}@media(max-width:480px){h1{font-size:2.2em}}button,.btn{appearance:none;-webkit-appearance:none;border-radius:var(--radius);border:1px solid var(--color-border-strong);padding:.6em 1.2em;font-size:.95em;font-weight:500;font-family:inherit;background-color:var(--color-surface);color:var(--color-text);cursor:pointer;transition:border-color .2s,background-color .2s,color .2s}button:hover,.btn:hover{border-color:var(--color-accent-hover)}button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background-color:var(--color-accent);border-color:var(--color-accent);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-secondary{background-color:transparent;border-color:var(--color-border-strong);color:var(--color-text)}.btn-secondary:hover:not(:disabled){border-color:var(--color-muted)}.btn-danger{background-color:transparent;border-color:var(--color-danger);color:var(--color-danger-hover)}.btn-danger:hover:not(:disabled){background-color:var(--color-danger);color:#fff}.btn-sm{padding:.35em .8em;font-size:.85em}input,select,textarea{font-family:inherit;font-size:.95em;color:var(--color-text);background-color:var(--color-bg);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:.5em .7em;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px #712b1359}input::placeholder,textarea::placeholder{color:var(--color-muted)}input[type=checkbox]{width:auto;padding:0;border:none;background-color:transparent;accent-color:var(--color-accent)}select{cursor:pointer}.card{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-lg);margin-bottom:var(--space-lg);text-align:left}.card>h2:first-child,.card>h3:first-child{margin-top:0}.form-entry{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-xs);margin-bottom:var(--space-md);text-align:left}.form-entry label{font-size:.85em;color:var(--color-muted);font-weight:500}.form-entry input:not([type=checkbox]),.form-entry select,.form-entry textarea{width:100%}.form-entry.form-entry-checkbox{flex-direction:row;align-items:center}.form-entry.form-entry-checkbox label{color:var(--color-text);font-size:1em;font-weight:400}.controls-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-md);margin-bottom:var(--space-lg)}.controls-row label{color:var(--color-muted);font-size:.9em}table.responsive-table{width:100%;border-collapse:collapse;text-align:left}table.responsive-table th,table.responsive-table td{padding:.6em .75em;border-bottom:1px solid var(--color-border);vertical-align:top}table.responsive-table th{color:var(--color-muted);font-size:.8em;text-transform:uppercase;letter-spacing:.03em;font-weight:600}table.responsive-table tbody tr:hover{background-color:#f0997b1f}.sortable-header{appearance:none;-webkit-appearance:none;background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:.35em}.sortable-header:hover{color:var(--color-text)}.sort-indicator{font-size:.85em;color:var(--color-accent)}@media(max-width:700px){table.responsive-table thead{display:none}table.responsive-table,table.responsive-table tbody,table.responsive-table tr,table.responsive-table td{display:block;width:100%}table.responsive-table tr{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:var(--space-md);margin-bottom:var(--space-md)}table.responsive-table tbody tr:hover{background-color:var(--color-surface)}table.responsive-table td{border-bottom:none;padding:.4em 0}table.responsive-table td[data-label]:before{content:attr(data-label);display:block;font-size:.72em;text-transform:uppercase;letter-spacing:.03em;color:var(--color-muted);margin-bottom:.2em}table.responsive-table td:empty{display:none}table.responsive-table td.row-actions{display:flex}}.inline-expense-form{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.inline-expense-form input[type=number]{width:6em}.inline-expense-form input[type=text]{width:9em}.inline-recurring-label{display:inline-flex;align-items:center;gap:.3em;font-size:.85em;color:var(--color-muted);white-space:nowrap}.row-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.budget-total-row td{font-weight:600;border-bottom:none}.muted{color:var(--color-muted);font-weight:400}.narrow-page{max-width:420px;margin:0 auto}[role=alert]{color:var(--color-danger-hover);font-size:.9em}[role=status]{color:var(--color-success);font-size:.9em}nav{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-lg);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-xl);width:100%}nav a{font-weight:500;text-decoration:none}nav a:hover{text-decoration:underline}.budget-progress{display:flex;align-items:center;gap:.6em;min-width:220px}.budget-progress-track{flex:1;height:.6em;background-color:var(--color-border);border-radius:999px;overflow:hidden}.budget-progress-fill{height:100%;transition:width .25s}.budget-progress-under{background-color:var(--color-success)}.budget-progress-near{background-color:var(--color-warning)}.budget-progress-over{background-color:var(--color-danger)}.budget-progress-label{font-size:.85em;white-space:nowrap}.chart-row{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;align-items:flex-start}.chart-row>div{max-width:100%}.chart-svg{display:block;width:100%;height:auto;max-width:320px}.chart-legend{display:flex;gap:1em;justify-content:center;flex-wrap:wrap;margin:.75em 0}.chart-legend-item{display:inline-flex;align-items:center;gap:.4em;font-size:.9em;color:var(--color-text)}.chart-legend-swatch{display:inline-block;width:12px;height:12px;border-radius:3px}.chart-gridline{stroke:var(--color-border);stroke-width:1}.chart-baseline{stroke:var(--color-border-strong);stroke-width:1}.chart-axis-label{fill:var(--color-muted);font-size:11px;font-family:inherit}.chart-slice-label{font-size:12px;font-weight:600;font-family:inherit;pointer-events:none}.chart-tooltip{position:fixed;z-index:10;background:var(--color-text);color:#fff;border:1px solid rgba(255,255,255,.12);border-radius:6px;padding:.5em .75em;font-size:.85em;pointer-events:none;text-align:left;white-space:nowrap}.chart-tooltip-key{display:inline-block;width:10px;height:3px;border-radius:2px;margin-right:.4em;vertical-align:middle}#root{width:100%;max-width:1280px;margin:0 auto;padding:2rem;text-align:center}@media(max-width:480px){#root{padding:1rem}}
