: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-sticky-header{z-index:25;background:var(--bg);margin:-16px -16px 16px;padding:16px 16px 4px;position:sticky;top:0}.offline-banner{background:var(--accent);color:var(--accent-text);text-align:center;border-radius:8px;margin-bottom:12px;padding:8px 12px;font-size:13px}.app-topnav{background:var(--bg);box-shadow:var(--shadow-raised);border-radius:14px;align-items:center;gap:20px;margin-bottom:16px;padding:8px 12px;display:none}.app-topnav-brand{color:var(--accent);white-space:nowrap;align-items:center;gap:8px;font-size:17px;font-weight:700;display:flex}.app-topnav-items{flex:1;gap:4px;display:flex}.app-topnav-items button{color:var(--text);opacity:.75;background:0 0;border:none;border-radius:10px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:600;transition:box-shadow .15s,color .15s,opacity .15s;display:flex}.app-topnav-items button.active{color:var(--accent);opacity:1;box-shadow:var(--shadow-pressed)}.app-topnav-profile{background:var(--bg);box-shadow:var(--shadow-soft);color:var(--text-h);white-space:nowrap;border:none;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:600;display:flex}.app-bottomnav{padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));background:var(--bg);z-index:20;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #0000001f}.app-bottomnav button{color:var(--text);opacity:.55;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:4px 8px;font-size:10px;display:flex}.app-bottomnav button.active{color:var(--accent);opacity:1}@media (width>=900px){.app-shell{max-width:1100px;padding-bottom:32px}.app-topnav{display:flex}.app-bottomnav{display:none}}.profile-menu{flex-direction:column;gap:10px;display:flex}.profile-menu h2{margin:0 0 4px}.profile-menu-name{text-align:left;font:inherit;color:var(--text-h);background:0 0;border:none;padding:8px 0;font-weight:600}.profile-menu-name-input{font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);border:none;border-radius:8px;padding:8px 10px}.profile-menu button:not(.profile-menu-name){background:var(--bg);color:var(--text-h);box-shadow:var(--shadow-raised);text-align:left;border:none;border-radius:10px;padding:10px 12px;font-weight:600}.profile-menu-logout{color:var(--danger)}.household-settings{flex-direction:column;gap:8px;display:flex}.household-members{flex-wrap:wrap;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.household-members li{box-shadow:var(--shadow-soft);border-radius:999px;padding:4px 10px;font-size:13px;font-weight:600}.household-section{border-top:1px solid var(--border);padding-top:8px}.household-section h3{margin:0 0 4px;font-size:14px}.household-section .suggesting-hint{margin-bottom:8px;display:block}.household-section button{background:var(--bg);color:var(--text-h);box-shadow:var(--shadow-raised);border:none;border-radius:10px;padding:8px 14px;font-weight:600}.household-invite-code{letter-spacing:.08em;font-variant-numeric:tabular-nums;margin-top:8px;font-size:20px;font-weight:700}.household-invite-code .suggesting-hint{letter-spacing:normal;margin-left:6px;font-size:11px;font-weight:400;display:inline}.household-section form.field-row input{font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);text-transform:uppercase;border:none;border-radius:8px;flex:1;padding:8px 10px}.household-section>input{width:100%;font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);border:none;border-radius:8px;margin-bottom:8px;padding:8px 10px}.circle-request-list{flex-direction:column;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.circle-request-row{box-shadow:var(--shadow-raised);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.circle-request-actions{flex-shrink:0;gap:6px;display:flex}.circle-request-row button{font:inherit;background:var(--bg);color:var(--text-h);box-shadow:var(--shadow-soft);white-space:nowrap;border:none;border-radius:8px;padding:6px 10px}.circle-leave-button{color:var(--danger)}.confirm-dialog{text-align:center;flex-direction:column;gap:6px;display:flex}.confirm-dialog-title{margin:0;font-size:16px;font-weight:700}.confirm-dialog .field-row{justify-content:center;margin-top:8px}.admin-dashboard{flex-direction:column;gap:16px;display:flex}.admin-user-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.admin-user-row{box-shadow:var(--shadow-raised);border-radius:12px;flex-direction:column;gap:8px;padding:10px;display:flex}.admin-user-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.admin-user-name{align-items:center;gap:6px;font-weight:600;display:flex}.admin-user-header button{background:var(--bg);color:var(--text-h);box-shadow:var(--shadow-soft);white-space:nowrap;border:none;border-radius:8px;padding:6px 12px;font-weight:600}.admin-feature-toggles{flex-wrap:wrap;gap:10px;display:flex}.admin-feature-toggle{align-items:center;gap:4px;font-size:13px;display:flex}.dashboard-welcome{background:var(--bg);box-shadow:var(--shadow-raised);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;padding:16px;display:flex}.dashboard-welcome h2{margin:0}.dashboard-welcome-date{opacity:.7;font-size:13px}.dashboard-welcome-stats{gap:20px;display:flex}.dashboard-welcome-stats>div{flex-direction:column;display:flex}.dashboard-stat-label{opacity:.6;font-size:11px}.dashboard-stat-value{font-variant-numeric:tabular-nums;font-weight:700}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:24px;display:grid}.dashboard-card{background:var(--bg);box-shadow:var(--shadow-raised);border-radius:14px;padding:14px}.dashboard-card h3{margin:0 0 8px;font-size:14px}.dashboard-card-wide{grid-column:1/-1}.dashboard-card button{background:var(--accent);color:var(--accent-text);box-shadow:var(--shadow-raised);border:none;border-radius:10px;padding:10px 16px;font-weight:600}.dashboard-card button:disabled{opacity:.5}.dashboard-card-total{font-variant-numeric:tabular-nums;margin:0 0 6px;font-size:20px;font-weight:700}.dashboard-mini-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.dashboard-mini-list li{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:13px;display:flex}.dashboard-mini-list-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.dashboard-avatar{background:var(--accent);width:24px;height:24px;color:var(--accent-text);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.dashboard-detail-section{margin-top:8px}.dashboard-detail-section h2{margin-bottom:8px;font-size:16px}.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{-webkit-overflow-scrolling:touch;scrollbar-width:none;gap:6px;margin-bottom:12px;display:flex;overflow-x:auto}.sub-tabs::-webkit-scrollbar{display:none}.sub-tabs button{white-space:nowrap;background:var(--bg);color:var(--text);box-shadow:var(--shadow-soft);border:none;border-radius:8px;flex:none;padding:6px 12px;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)}button.auth-mode-switch{box-shadow:none;color:var(--text);opacity:.7;background:0 0;border:none;margin:16px auto 0;padding:0;font-size:13px;font-weight:400;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;display:block}button.auth-mode-switch:active{box-shadow:none}button.auth-mode-switch:disabled{visibility:hidden}.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:12px;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}.insight-quota{opacity:.6;text-align:center;margin-top:6px;font-size:12px;display:block}.insight-quota-unlimited{opacity:1;color:var(--accent);font-weight:600}.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}.balance-mini-chart{border-top:1px solid var(--border);padding:4px 4px 0}.chart-legend{opacity:.8;flex-wrap:wrap;gap:10px;margin:4px 0 0;padding:0;font-size:11px;list-style:none;display:flex}.chart-legend li{align-items:center;gap:4px;display:flex}.chart-legend-swatch{border-radius:2px;width:8px;height:8px;display:inline-block}.chart-legend-swatch.chart-legend-line{border-radius:999px;width:12px;height:3px}.balances-list{flex-direction:column;gap:8px;margin:0 0 20px;padding:0;list-style:none;display:flex}.investment-type-group{margin-bottom:8px}.investment-type-group-header{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;padding:0 4px 6px;font-size:13px;font-weight:600;display:flex}.bulk-update-form{max-height:80vh;overflow-y:auto}.bulk-update-list{flex-direction:column;gap:4px;display:flex}.bulk-update-row{justify-content:space-between;align-items:center;gap:10px;padding:6px 4px;display:flex}.bulk-update-row span{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.bulk-update-row input{width:110px;font:inherit;box-shadow:var(--shadow-pressed);background:var(--bg);color:var(--text-h);text-align:right;border:none;border-radius:8px;padding:6px 8px}.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-edit{color:var(--text);opacity:.6;background:0 0;border:none;padding:0 4px;font-size:14px;line-height:1}.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}}
