:root{--text:#3a3540;--text-h:#08060d;--bg:#e7e8ee;--card-bg:#e7e8ee;--border:#d3d5dd;--accent:#6b3bff;--accent-text:#fff;--danger:#d1435b;--shadow-light:#ffffffd9;--shadow-dark:#a3b1c68c;--shadow-raised:5px 5px 10px var(--shadow-dark), -5px -5px 10px var(--shadow-light);--shadow-pressed:inset 3px 3px 6px var(--shadow-dark), inset -3px -3px 6px var(--shadow-light);--shadow-soft:2px 2px 5px var(--shadow-dark), -2px -2px 5px var(--shadow-light);--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:#26272e;--card-bg:#26272e;--border:#34353d;--accent:#a58bff;--accent-text:#16171d;--danger:#ff8095;--shadow-light:#3a3c4699;--shadow-dark:#0009}}*{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;box-shadow:var(--shadow-pressed);background:var(--card-bg);color:var(--text-h);border:none;border-radius:6px;width:120px;padding:2px 6px;font-size:14px}.view-tabs{gap:8px;margin-bottom:16px;display:flex}.view-tabs button{background:var(--bg);color:var(--text);box-shadow:var(--shadow-raised);border:none;border-radius:10px;flex:1;padding:8px;font-weight:600;transition:box-shadow .15s}.view-tabs button.active{color:var(--accent);box-shadow:var(--shadow-pressed)}.investment-refresh-row{justify-content:center;align-items:center;gap:10px;margin-bottom:16px;display:flex}.investment-refresh-row button{background:var(--bg);color:var(--text-h);box-shadow:var(--shadow-raised);border:none;border-radius:10px;padding:8px 16px;font-weight:600;transition:box-shadow .15s}.investment-refresh-row button:active{box-shadow:var(--shadow-pressed)}.investment-refresh-row button:disabled{opacity:.5}.investment-refreshed-at{opacity:.6;font-size:12px}.investment-value-col{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.investment-gain{font-variant-numeric:tabular-nums;font-size:13px}.investment-gain-small{font-size:11px}.investment-gain.positive{color:#2e9e5b}.investment-gain.negative{color:var(--danger)}.balance-history-list em{opacity:.7;font-size:11px;font-style:italic}.sub-tabs{gap:6px;margin-bottom:16px;display:flex}.sub-tabs button{background:var(--bg);color:var(--text);box-shadow:var(--shadow-soft);border:none;border-radius:8px;flex:1;padding:6px;font-size:13px;transition:box-shadow .15s}.sub-tabs button.active{color:var(--accent);box-shadow:var(--shadow-pressed)}.net-worth-breakdown{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.net-worth-breakdown li{font-variant-numeric:tabular-nums;box-shadow:var(--shadow-raised);border:none;border-radius:10px;justify-content:space-between;margin-bottom:8px;padding:10px 14px;display:flex}.net-worth-breakdown li.net-worth-negative{color:var(--danger)}.user-picker{text-align:center;padding-top:64px}.user-picker-options{justify-content:center;gap:12px;display:flex}.user-picker-options button{background:var(--card-bg);box-shadow:var(--shadow-raised);border:none;border-radius:12px;padding:12px 24px;font-size:16px;transition:box-shadow .15s}.user-picker-options button:active{box-shadow:var(--shadow-pressed)}.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;box-shadow:var(--shadow-pressed);background:var(--card-bg);color:var(--text-h);text-align:center;border:none;border-radius:12px;width:200px;padding:10px 14px}.login-gate button{background:var(--accent);color:var(--accent-text);box-shadow:var(--shadow-raised);border:none;border-radius:12px;padding:10px 24px;font-weight:600;transition:box-shadow .15s}.login-gate button:active{box-shadow:var(--shadow-pressed)}.fab{background:var(--accent);width:56px;height:56px;color:var(--accent-text);box-shadow:5px 5px 10px var(--shadow-dark), -5px -5px 10px var(--shadow-light), 0 4px 14px #0003;z-index:20;border:none;border-radius:50%;font-size:28px;line-height:1;transition:box-shadow .15s;position:fixed;bottom:24px;right:20px}.fab:active{box-shadow:var(--shadow-pressed)}.modal-overlay{z-index:30;background:#00000080;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg);border-radius:16px 16px 0 0;width:100%;max-width:640px;max-height:85vh;padding:8px 16px 16px;overflow-y:auto}@media (width>=640px){.modal-overlay{align-items:center}.modal-content{border-radius:16px;padding:16px}}.expense-form{background:var(--card-bg);box-shadow:var(--shadow-raised);border:none;border-radius:14px;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,.expense-form textarea{font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);border:none;border-radius:8px;padding:8px 10px}.expense-form textarea{resize:vertical;font-family:inherit}.field-row{gap:10px;display:flex}.expense-form button[type=submit]{background:var(--accent);color:var(--accent-text);box-shadow:var(--shadow-raised);border:none;border-radius:8px;padding:10px 16px;font-weight:600;transition:box-shadow .15s}.expense-form button[type=submit]:active{box-shadow:var(--shadow-pressed)}.expense-form button[type=button]{background:var(--bg);color:var(--text);box-shadow:var(--shadow-raised);border:none;border-radius:8px;padding:10px 16px;transition:box-shadow .15s}.expense-form button[type=button]:active{box-shadow:var(--shadow-pressed)}.form-error{color:var(--danger);margin:0;font-size:14px}.person-tabs{gap:8px;margin-bottom:16px;display:flex}.person-tabs button{background:var(--bg);color:var(--text);box-shadow:var(--shadow-raised);border:none;border-radius:10px;flex:1;padding:8px;font-weight:600;transition:box-shadow .15s}.person-tabs button.active{color:var(--accent);box-shadow:var(--shadow-pressed)}.filter-bar{gap:8px;margin-bottom:16px;display:flex}.filter-bar button{background:var(--bg);color:var(--text);box-shadow:var(--shadow-soft);border:none;border-radius:10px;flex:1;padding:8px;transition:box-shadow .15s}.filter-bar button.active{color:var(--accent);box-shadow:var(--shadow-pressed)}.monthly-summary{box-shadow:var(--shadow-raised);border:none;border-radius:14px;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{box-shadow:var(--shadow-raised);border:none;border-radius:14px;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-notes{opacity:.75;border-left:2px solid var(--border);margin:0;padding-left:8px;font-size:13px;font-style:italic}.expense-actions{gap:8px;display:flex}.expense-actions button{background:var(--bg);color:var(--text);box-shadow:var(--shadow-soft);border:none;border-radius:8px;flex:1;padding:6px;font-size:13px;transition:box-shadow .15s}.expense-actions button:active{box-shadow:var(--shadow-pressed)}.expense-actions button.danger{background:var(--danger);color:#fff;box-shadow:none}.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{background:var(--bg);color:var(--text);box-shadow:var(--shadow-soft);border:none;border-radius:8px;flex:1;padding:6px;font-size:13px;transition:box-shadow .15s}.period-tabs button.active{color:var(--accent);box-shadow:var(--shadow-pressed)}.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}.person-comparison{margin-bottom:20px}.person-comparison h3{text-align:center;font-size:14px}.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);height:6px;box-shadow:var(--shadow-pressed);border-radius:999px;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);box-shadow:var(--shadow-raised);border:none;border-radius:10px;padding:10px 16px;font-weight:600;transition:box-shadow .15s}.insights-section button:active{box-shadow:var(--shadow-pressed)}.insights-section button:disabled{opacity:.5;cursor:default}.insights-text{white-space:pre-line;background:var(--card-bg);box-shadow:var(--shadow-pressed);border:none;border-radius:10px;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}.balance-chart{margin-bottom:20px}.balances-list{flex-direction:column;gap:8px;margin:0 0 20px;padding:0;list-style:none;display:flex}.balance-row-group{box-shadow:var(--shadow-raised);border:none;border-radius:14px;overflow:hidden}.balance-row{align-items:center;gap:10px;padding:10px 14px;display:flex}.balance-history-toggle{color:var(--text);opacity:.6;background:0 0;border:none;padding:0 4px;font-size:11px}.balance-record-form{gap:8px;padding:0 14px 12px;display:flex}.balance-record-form input[type=number]{flex:1;min-width:0}.balance-record-form input{font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);border:none;border-radius:8px;padding:6px 8px}.balance-record-form button{font:inherit;background:var(--bg);color:var(--text-h);box-shadow:var(--shadow-soft);border:none;border-radius:8px;padding:6px 8px;transition:box-shadow .15s}.balance-record-form button:active{box-shadow:var(--shadow-pressed)}.balance-record-form button[type=submit]{background:var(--accent);color:var(--accent-text);white-space:nowrap;box-shadow:var(--shadow-raised);border:none;font-weight:600}.balance-history-list{border-top:1px solid var(--border);margin:0;padding:0 14px 12px;list-style:none}.balance-history-list li{opacity:.8;font-variant-numeric:tabular-nums;justify-content:space-between;padding:6px 0;font-size:13px;display:flex}.balance-name{flex:1;align-items:center;gap:8px;font-weight:600;display:flex}.balance-category{opacity:.6;border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:400}.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;width:110px;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);text-align:right;border:none;border-radius:8px;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,.balance-add-form select{font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);border:none;border-radius:8px;flex:1;min-width:0;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;box-shadow:var(--shadow-raised);border:none;border-radius:8px;padding:8px 16px;font-weight:600;transition:box-shadow .15s}.balance-add-form button:active{box-shadow:var(--shadow-pressed)}@media (width<=420px){.balance-add-form{flex-direction:column}}
