:root{--text:#3a3540;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--card-bg:#f8f7fa;--accent:#6b3bff;--accent-text:#fff;--danger:#d1435b;--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/145% var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#d4d2d8;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--card-bg:#1f2028;--accent:#a58bff;--accent-text:#16171d;--danger:#ff8095}}*{box-sizing:border-box}body{margin:0}h1,h2,h3{color:var(--text-h);margin:0 0 12px;font-weight:600}button{font:inherit;cursor:pointer}.app-shell{max-width:640px;margin:0 auto;padding:16px 16px 64px}.app-shell.error{color:var(--danger)}.app-header{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.offline-banner{background:var(--accent);color:var(--accent-text);text-align:center;border-radius:8px;margin-bottom:12px;padding:8px 12px;font-size:13px}.current-user{color:var(--text);opacity:.7;background:0 0;border:none;padding:0;font-size:14px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.current-user-input{font:inherit;border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);border-radius:4px;width:120px;padding:2px 6px;font-size:14px}.view-tabs{gap:8px;margin-bottom:16px;display:flex}.view-tabs button{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:6px;flex:1;padding:8px;font-weight:600}.view-tabs button.active{background:var(--text-h);color:var(--bg);border-color:var(--text-h)}.user-picker{text-align:center;padding-top:64px}.user-picker-options{justify-content:center;gap:12px;display:flex}.user-picker-options button{border:1px solid var(--border);background:var(--card-bg);border-radius:8px;padding:12px 24px;font-size:16px}.login-gate{text-align:center;padding-top:64px}.login-gate form{flex-direction:column;align-items:center;gap:10px;display:flex}.login-gate input{font:inherit;border:1px solid var(--border);background:var(--card-bg);color:var(--text-h);text-align:center;border-radius:8px;width:200px;padding:10px 14px}.login-gate button{background:var(--accent);color:var(--accent-text);border:none;border-radius:8px;padding:10px 24px;font-weight:600}.expense-form{border:1px solid var(--border);background:var(--card-bg);border-radius:10px;flex-direction:column;gap:10px;margin-bottom:16px;padding:16px;display:flex}.expense-form label{flex-direction:column;flex:1;gap:4px;font-size:13px;display:flex}.suggesting-hint{opacity:.6;font-style:italic;font-weight:400}.expense-form input,.expense-form select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:8px 10px}.field-row{gap:10px;display:flex}.expense-form button[type=submit]{background:var(--accent);color:var(--accent-text);border:none;border-radius:6px;padding:10px 16px;font-weight:600}.expense-form button[type=button]{border:1px solid var(--border);color:var(--text);background:0 0;border-radius:6px;padding:10px 16px}.form-error{color:var(--danger);margin:0;font-size:14px}.filter-bar{gap:8px;margin-bottom:16px;display:flex}.filter-bar button{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;flex:1;padding:8px}.filter-bar button.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.monthly-summary{border:1px solid var(--border);border-radius:10px;margin-bottom:20px;padding:12px 16px}.monthly-summary ul{margin:0;padding:0;list-style:none}.monthly-summary li{font-variant-numeric:tabular-nums;justify-content:space-between;padding:4px 0;display:flex}.expense-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.expense-row{border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;padding:12px 14px;display:flex}.expense-main{align-items:center;gap:10px;display:flex}.expense-amount{font-variant-numeric:tabular-nums;font-size:17px;font-weight:700}.expense-category{color:var(--text);opacity:.85}.expense-type{text-transform:uppercase;letter-spacing:.04em;background:var(--border);border-radius:999px;margin-left:auto;padding:2px 8px;font-size:11px}.expense-type--household{background:var(--accent);color:var(--accent-text)}.pending-badge{color:var(--text);opacity:.6;font-size:11px;font-style:italic}.expense-meta{opacity:.7;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:13px;display:flex}.expense-actions{gap:8px;display:flex}.expense-actions button{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;flex:1;padding:6px;font-size:13px}.expense-actions button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}.confirm-delete-label{flex:2;align-self:center;font-size:13px}.empty-state{text-align:center;opacity:.6;padding:32px 0}@media (width<=420px){.field-row{flex-direction:column}}.period-tabs{gap:6px;margin-bottom:12px;display:flex}.period-tabs button{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;flex:1;padding:6px;font-size:13px}.period-tabs button.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.period-nav{justify-content:center;align-items:center;gap:16px;margin-bottom:16px;display:flex}.period-nav button{color:var(--text);background:0 0;border:none;padding:4px 10px;font-size:20px;line-height:1}.period-label{color:var(--text-h);text-align:center;min-width:140px;font-weight:600}.report-total{text-align:center;margin-bottom:20px}.report-total-amount{color:var(--text-h);font-variant-numeric:tabular-nums;font-size:32px;font-weight:700;display:block}.report-change{opacity:.8;font-size:13px}.report-change.up{color:var(--danger)}.report-change.down{color:#2e9e5b}.report-invested{opacity:.8;justify-content:center;align-items:center;gap:6px;margin-top:4px;font-size:13px;display:flex}.donut-chart{margin-bottom:16px}.category-breakdown{flex-direction:column;gap:12px;margin:0 0 20px;padding:0;list-style:none;display:flex}.category-breakdown-row{align-items:center;gap:8px;font-size:14px;display:flex}.category-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.category-name{flex:1}.category-pct{opacity:.6;font-variant-numeric:tabular-nums;font-size:12px}.category-amount{font-variant-numeric:tabular-nums;text-align:right;min-width:70px;font-weight:600}.category-bar-track{background:var(--border);border-radius:999px;height:6px;margin-top:4px;overflow:hidden}.category-bar-fill{border-radius:999px;height:100%}.insights-section{border-top:1px solid var(--border);margin-top:8px;padding-top:16px}.insights-section button{background:var(--accent);width:100%;color:var(--accent-text);border:none;border-radius:6px;padding:10px 16px;font-weight:600}.insights-section button:disabled{opacity:.5;cursor:default}.insights-text{white-space:pre-line;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;margin-top:14px;padding:12px 14px;font-size:14px;line-height:1.6}.balances-total{text-align:center;margin-bottom:20px}.balances-total-label{opacity:.7;margin-top:2px;font-size:13px;display:block}.balances-list{flex-direction:column;gap:8px;margin:0 0 20px;padding:0;list-style:none;display:flex}.balance-row{border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:10px 14px;display:flex}.balance-name{flex:1;font-weight:600}.balance-amount{font:inherit;color:var(--text-h);font-variant-numeric:tabular-nums;background:0 0;border:none;font-weight:600;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.balance-input{font:inherit;border:1px solid var(--border);background:var(--bg);width:110px;color:var(--text-h);text-align:right;border-radius:6px;padding:4px 6px;font-weight:600}.balance-delete{color:var(--danger);background:0 0;border:none;padding:0 4px;font-size:20px;line-height:1}.balance-add-form{gap:8px;display:flex}.balance-add-form input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);border-radius:6px;padding:8px 10px}.balance-add-form input:first-child{flex:2}.balance-add-form input:nth-child(2){flex:1;min-width:0}.balance-add-form button{background:var(--accent);color:var(--accent-text);white-space:nowrap;border:none;border-radius:6px;padding:8px 16px;font-weight:600}@media (width<=420px){.balance-add-form{flex-direction:column}}
