:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/150% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}}body{margin:0}#root{min-height:100vh}h1,h2,h3{font-family:var(--heading);color:var(--text-h);font-weight:500}h2{letter-spacing:-.24px;font-size:24px;line-height:118%}h3{font-size:18px}p{margin:0}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 12px}.data-table th{color:var(--text);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.data-table td{color:var(--text-h)}.data-table .num{text-align:right;font-family:var(--mono);font-size:13px}.data-table tbody tr:hover{background:var(--accent-bg)}.layout{min-height:100vh;display:flex}.sidebar{background:var(--code-bg);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;padding:24px 0;display:flex}.sidebar-header{border-bottom:1px solid var(--border);padding:0 20px 20px}.sidebar-header h1{letter-spacing:-.5px;margin:0;font-size:24px}.nav-links{margin:16px 0 0;padding:0;list-style:none}.nav-links li a{color:var(--text);padding:10px 20px;font-size:15px;text-decoration:none;transition:background .15s,color .15s;display:block}.nav-divider{background:var(--border);height:1px;margin:8px 16px}.nav-links li a:hover{background:var(--accent-bg);color:var(--text-h)}.nav-links li a.active{background:var(--accent-bg);color:var(--accent);border-right:3px solid var(--accent);font-weight:500}.content{text-align:left;flex:1;padding:32px 40px;overflow-y:auto}@media (width<=768px){.layout{flex-direction:column}.sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;padding:12px 0}.sidebar-header{padding:0 16px 12px}.nav-links{gap:0;margin:8px 0 0;display:flex}.nav-links li a{padding:8px 16px}.nav-links li a.active{border-right:none;border-bottom:3px solid var(--accent)}.content{padding:24px 16px}}.date-range-picker{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:24px;display:flex}.date-range-picker label{color:var(--text);flex-direction:column;gap:4px;font-size:13px;font-weight:500;display:flex}.date-range-picker input[type=date]{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:6px;padding:6px 10px}.date-range-picker button{border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);cursor:pointer;border-radius:6px;padding:6px 16px;font-size:14px;font-weight:500;transition:background .15s}.date-range-picker button:hover{background:var(--accent);color:#fff}.pace-bar{margin-bottom:16px}.pace-header{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.pace-name{color:var(--text-h);font-size:14px;font-weight:600}.pace-amounts{font-family:var(--mono);color:var(--text);font-size:13px}.pace-track{background:var(--border);border-radius:4px;height:8px;position:relative;overflow:visible}.pace-fill{border-radius:4px;height:100%;transition:width .3s}.pace-fill.pace-on-track{background:#22c55e}.pace-fill.pace-warning{background:#f59e0b}.pace-fill.pace-over{background:#ef4444}.pace-time-marker{background:var(--text-h);border-radius:1px;width:2px;height:14px;position:absolute;top:-3px;transform:translate(-1px)}.pace-footer{justify-content:space-between;margin-top:4px;font-size:12px;display:flex}.pace-pct{font-weight:600}.pace-pct.pace-on-track{color:#22c55e}.pace-pct.pace-warning{color:#f59e0b}.pace-pct.pace-over{color:#ef4444}.pace-remaining{color:var(--text)}.period-comparison{margin-top:32px}.pc-header{flex-wrap:wrap;align-items:baseline;gap:16px;margin-bottom:12px;display:flex}.pc-header h3{margin:0}.pc-presets{gap:6px;display:flex}.pc-preset{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:16px;padding:4px 12px;font-size:12px}.pc-preset.active{background:var(--accent);border-color:var(--accent);color:#fff}.delta-up{color:#ef4444}.delta-down{color:#22c55e}.pc-pct{opacity:.8;font-size:11px}.pc-total-row td{border-top:2px solid var(--border)}.insight-link{text-decoration:none;display:block}.insight-card{border:1px solid var(--border);border-radius:8px;align-items:center;gap:10px;margin-bottom:8px;padding:10px 14px;font-size:13px;transition:background .15s;display:flex}.insight-link:hover .insight-card{background:var(--accent-bg)}.insight-card.severity-info{border-left:3px solid #3b82f6}.insight-card.severity-warning{border-left:3px solid #f59e0b}.insight-card.severity-alert{border-left:3px solid #ef4444}.insight-icon{text-align:center;flex-shrink:0;width:20px;font-size:16px}.insight-message{color:var(--text-h);flex:1}.insight-dismiss{color:var(--text);cursor:pointer;opacity:.5;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:14px;transition:opacity .15s}.insight-dismiss:hover{opacity:1;background:var(--border)}.dashboard h2{margin:0 0 16px}.dashboard h3{color:var(--text-h);margin:32px 0 12px;font-size:18px}.summary-cards{flex-wrap:wrap;gap:16px;display:flex}.card{border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:1;gap:4px;min-width:160px;padding:16px 20px;display:flex}.card-label{color:var(--text);text-transform:uppercase;letter-spacing:.5px;font-size:13px;font-weight:500}.card-value{color:var(--text-h);font-size:28px;font-weight:600;font-family:var(--mono)}.card-delta{font-size:13px;font-weight:500;font-family:var(--mono)}.card-delta.favorable{color:#22c55e}.card-delta.unfavorable{color:#ef4444}.card.inflow{background:#22c55e0f;border-color:#22c55e4d}.card.outflow{background:#ef44440f;border-color:#ef44444d}.card.net.positive{background:#22c55e0f;border-color:#22c55e4d}.card.net.negative{background:#ef44440f;border-color:#ef44444d}.account-tabs{flex-wrap:wrap;gap:6px;margin:16px 0 8px;display:flex}.account-tab{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:20px;padding:5px 14px;font-size:13px;transition:all .15s}.account-tab:hover{border-color:var(--accent-border);color:var(--text-h)}.account-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.insights-section{margin:16px 0}.chart-section{margin-top:24px}.dashboard-bottom{gap:24px;margin-top:8px;display:flex}.dashboard-bottom-col{flex:1;min-width:0}@media (width<=768px){.dashboard-bottom{flex-direction:column}}.status{color:var(--text);font-size:14px}.status.error{color:#ef4444}.transactions h2{margin:0 0 16px}.tx-filters{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:20px;display:flex}.tx-filters label{color:var(--text);flex-direction:column;gap:4px;font-size:13px;font-weight:500;display:flex}.tx-filters input[type=text],.tx-filters input[type=date],.tx-filters select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:6px;padding:6px 10px}.checkbox-label{white-space:nowrap;align-items:center;flex-direction:row!important;gap:6px!important}.categorize-panel{background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;padding:12px 16px;font-size:14px;display:flex}.categorize-panel select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:6px 10px;font-size:14px}.btn-secondary{border:1px solid var(--border);background:var(--bg);color:var(--text);cursor:pointer;border-radius:6px;padding:6px 16px;font-size:14px}.account-name{color:var(--text);white-space:nowrap;font-size:12px}.transfer-row{opacity:.5}.cat-badge{background:var(--code-bg);border-radius:4px;align-items:center;gap:4px;padding:2px 8px;font-size:13px;display:inline-flex}.cat-badge.split{background:var(--accent-bg);color:var(--accent)}.auto-tag{background:var(--accent-bg);color:var(--accent);text-transform:uppercase;border-radius:3px;padding:1px 4px;font-size:10px;font-weight:600}.tags{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:12px;overflow:hidden}.pagination{color:var(--text);justify-content:center;align-items:center;gap:16px;margin-top:20px;font-size:14px;display:flex}.pagination button{border:1px solid var(--border);background:var(--bg);color:var(--text-h);cursor:pointer;border-radius:6px;padding:6px 14px;font-size:13px}.pagination button:disabled{opacity:.4;cursor:default}.account-card{border:1px solid var(--border);border-radius:10px;margin-bottom:12px;padding:16px}.account-card.needs-setup{border-color:var(--accent-border);background:var(--accent-bg)}.account-card.confirmed{background:#22c55e0a;border-color:#22c55e33}.account-card-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.account-badge{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:flex}.account-badge.confirmed{color:#22c55e;background:#22c55e26}.account-badge.new{color:var(--accent);background:#aa3bff26}.account-iban{font-family:var(--mono);color:var(--text-h);font-size:13px;font-weight:600}.account-info{color:var(--text);font-size:13px}.account-new-label{color:var(--accent);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:700}.account-card-meta{color:var(--text);gap:16px;margin-bottom:12px;font-size:12px;display:flex}.account-setup-form{border-top:1px solid var(--border);margin-top:4px;padding-top:12px}.setup-row{align-items:flex-end;gap:12px;margin-bottom:10px;display:flex}.setup-row label{color:var(--text);flex-direction:column;flex:1;gap:4px;font-size:12px;font-weight:500;display:flex}.setup-row input[type=text],.setup-row select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:7px 10px;font-size:13px}.checkbox-label-inline{white-space:nowrap;padding-bottom:7px;flex-direction:row!important;align-items:center!important;gap:6px!important;font-size:13px!important}.setup-error{color:#ef4444;margin-bottom:8px;font-size:12px}.btn-save{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:7px 20px;font-size:13px;font-weight:600}.btn-save:disabled{opacity:.5;cursor:default}@media (width<=768px){.setup-row{flex-direction:column}}.upload h2{margin:0 0 16px}.upload-form{max-width:560px}.bank-link{border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);border-radius:8px;align-items:center;gap:6px;padding:10px 16px;font-size:14px;font-weight:600;text-decoration:none;transition:opacity .15s;display:inline-flex}.bank-link:hover{opacity:.8}.bank-link-arrow{font-size:16px}.bank-link-hint{color:var(--text);margin:6px 0 16px;font-size:13px}.result-account{color:var(--text-h);font-size:14px;font-family:var(--mono);margin-bottom:4px}.result-snapshot{color:var(--text);margin-bottom:16px;font-size:14px}.drop-zone{border:2px dashed var(--border);text-align:center;cursor:pointer;color:var(--text);border-radius:10px;margin-bottom:16px;padding:40px 20px;font-size:14px;transition:border-color .2s,background .2s}.drop-zone:hover,.drop-zone.dragging{border-color:var(--accent);background:var(--accent-bg)}.drop-zone.has-file{background:#22c55e0f;border-color:#22c55e80}.file-name{color:var(--text-h);font-weight:500}.btn-upload{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;width:100%;padding:10px;font-size:15px;font-weight:600;transition:opacity .15s}.btn-upload:disabled{opacity:.5;cursor:default}.missing-hint{color:var(--text);margin-top:10px;font-size:13px;font-style:italic}.needs-attention{box-shadow:0 0 0 2px #eab30826;border-color:#eab30899!important}.upload-result{max-width:620px;margin-top:24px}.result-accounts{margin-top:20px}.upload-result h3{margin:0 0 12px}.result-stats{gap:16px;display:flex}.result-stat{text-align:center;border:1px solid var(--border);border-radius:8px;flex:1;padding:12px}.result-stat.success{background:#22c55e0f;border-color:#22c55e4d}.result-stat.skipped{background:#eab3080f;border-color:#eab3084d}.result-stat.failed{background:#ef44440f;border-color:#ef44444d}.stat-num{font-size:28px;font-weight:700;font-family:var(--mono);color:var(--text-h);display:block}.stat-label{color:var(--text);text-transform:uppercase;letter-spacing:.3px;font-size:12px}.result-errors{color:#ef4444;background:#ef44440f;border-radius:8px;margin-top:16px;padding:12px;font-size:13px}.result-errors h4{margin:0 0 8px}.result-errors ul{margin:0;padding-left:20px}.accounts-page h2{margin:0 0 16px}.section{margin-bottom:36px}.section h3{color:var(--text-h);margin:0 0 12px;font-size:18px}.inline-form{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.inline-form input[type=text],.inline-form select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:6px;padding:8px 10px}.inline-form input[type=text]{width:180px}.checkbox-label{color:var(--text);white-space:nowrap;align-items:center;gap:6px;font-size:14px;display:flex}.type-badge{text-transform:uppercase;letter-spacing:.3px;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.type-badge.adult{color:#3b82f6;background:#3b82f61f}.type-badge.child{color:#ca8a04;background:#eab3081f}.type-badge.checking{color:#22c55e;background:#22c55e1f}.type-badge.savings{color:#3b82f6;background:#3b82f61f}.type-badge.investment{color:#a855f7;background:#a855f71f}.categories h2{margin:0 0 16px}.create-form{align-items:flex-end;gap:10px;margin-bottom:24px;display:flex}.create-form input[type=text],.create-form select{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:6px;padding:8px 10px}.create-form input[type=text]{width:200px}.tree-indent{color:var(--text);font-family:var(--mono)}.edit-input{border:1px solid var(--accent-border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:4px;padding:4px 8px}.actions{gap:10px;display:flex}.contributions h2{margin:0 0 16px}.household-total{color:var(--text);margin-bottom:24px;font-size:16px}.household-total strong{color:var(--text-h);font-family:var(--mono)}.contribution-cards{flex-wrap:wrap;gap:20px;display:flex}.contrib-card{border:1px solid var(--border);border-radius:10px;flex:1;min-width:280px;padding:20px}.contrib-header{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.contrib-name{color:var(--text-h);font-size:18px;font-weight:600}.contrib-pct{color:var(--accent);font-size:28px;font-weight:700;font-family:var(--mono)}.contrib-bar-container{background:var(--border);border-radius:4px;height:8px;margin-bottom:16px;overflow:hidden}.contrib-bar{background:var(--accent);border-radius:4px;height:100%;transition:width .3s}.contrib-details{flex-direction:column;gap:6px;display:flex}.contrib-row{color:var(--text);justify-content:space-between;font-size:14px;display:flex}.contrib-row.total{border-top:1px solid var(--border);color:var(--text-h);padding-top:8px;font-weight:600}.contrib-row .mono{font-family:var(--mono);font-size:13px}.averages h2{margin:0 0 16px}.averages-controls{flex-wrap:wrap;gap:16px;margin-bottom:24px;display:flex}.averages-controls label{color:var(--text);flex-direction:column;gap:4px;font-size:13px;font-weight:500;display:flex}.averages-controls input[type=number]{border:1px solid var(--border);background:var(--bg);width:100px;color:var(--text-h);font-size:14px;font-family:var(--mono);border-radius:6px;padding:6px 10px}.outlier-row{background:#ef44440f}.badge{text-transform:uppercase;letter-spacing:.3px;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.outlier{color:#ef4444;background:#ef44441f}.badge.normal{color:#22c55e;background:#22c55e1f}.badge.insufficient{background:var(--code-bg);color:var(--text)}.budgets h2{margin:0 0 16px}.budget-controls{margin-bottom:16px}.budget-controls label{color:var(--text);flex-direction:column;gap:4px;width:fit-content;font-size:13px;font-weight:500;display:flex}.budget-controls input[type=month]{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:6px;padding:6px 10px}.budget-add-form{align-items:flex-end;gap:10px;margin-bottom:24px;display:flex}.budget-add-form select,.budget-add-form input[type=number]{border:1px solid var(--border);background:var(--bg);color:var(--text-h);font-size:14px;font-family:var(--sans);border-radius:6px;padding:8px 10px}.budget-add-form input[type=number]{width:140px}.budget-summary{gap:16px;margin-bottom:28px;display:flex}.summary-item{border:1px solid var(--border);border-radius:10px;flex-direction:column;flex:1;gap:4px;padding:14px 18px;display:flex}.summary-item.positive{background:#22c55e0f;border-color:#22c55e4d}.summary-item.negative{background:#ef44440f;border-color:#ef44444d}.summary-label{color:var(--text);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:500}.summary-value{font-size:24px;font-weight:600;font-family:var(--mono);color:var(--text-h)}.budget-bars{flex-direction:column;gap:16px;display:flex}.budget-row{border:1px solid var(--border);border-radius:10px;padding:14px 18px}.budget-row-header{justify-content:space-between;margin-bottom:8px;display:flex}.budget-cat-name{color:var(--text-h);font-weight:600}.budget-amounts{font-family:var(--mono);color:var(--text);font-size:14px}.budget-bar-track{background:var(--border);border-radius:5px;height:10px;margin-bottom:6px;overflow:hidden}.budget-bar-fill{background:var(--accent);border-radius:5px;height:100%;transition:width .3s}.budget-bar-fill.over{background:#ef4444}.budget-row-footer{color:var(--text);justify-content:space-between;font-size:13px;display:flex}.over-text{color:#ef4444;font-weight:600}.btn-primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-size:14px;font-weight:500}.btn-primary:disabled{opacity:.5;cursor:default}.btn-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline}.btn-link.danger{color:#ef4444}.category-detail h2{margin:0 0 16px}.cd-headline{flex-wrap:wrap;align-items:baseline;gap:20px;margin-bottom:24px;display:flex}.cd-big-number{align-items:baseline;gap:6px;display:flex}.cd-avg{color:var(--text-h);font-size:36px;font-weight:700;font-family:var(--mono)}.cd-avg-label{color:var(--text);font-size:14px}.cd-trend{font-size:14px;font-weight:600;font-family:var(--mono)}.cd-trend.up{color:#ef4444}.cd-trend.down{color:#22c55e}.cd-budget-status{color:var(--text);background:var(--code-bg);border-radius:6px;padding:4px 10px;font-size:13px}.cd-chart-section{margin-bottom:32px}.cd-chart-section h3{margin:0 0 12px}.cd-section{margin-bottom:32px}.cd-section h3{align-items:baseline;gap:12px;margin:0 0 12px;display:flex}.view-all-link{color:var(--accent);font-size:13px;font-weight:400;text-decoration:none}.view-all-link:hover{text-decoration:underline}.payee-link{color:var(--accent);text-decoration:none}.payee-link:hover{text-decoration:underline}.desc{text-overflow:ellipsis;white-space:nowrap;max-width:250px;overflow:hidden}.num.positive{color:#22c55e}.num.negative{color:#ef4444}.recurring h2{margin:0 0 16px}.recurring .btn-primary{margin-bottom:20px}.overdue-row{background:#ef44440f}.badge{border-radius:4px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.active{color:#22c55e;background:#22c55e26}.badge.overdue{color:#ef4444;background:#ef444426}.nowrap{white-space:nowrap}
