:root{color:#181f1e;font-synthesis:none;text-rendering:optimizelegibility;--background:#f3f5f2;--surface:#fff;--ink:#181f1e;--muted:#6a736f;--subtle:#98a19c;--line:#dce1dd;--line-light:#e9ede9;--expense:#c74642;--expense-soft:#fbe9e8;--income:#246b59;--income-soft:#e6f2ed;--blue:#3d6e8d;--blue-soft:#e8f0f5;--gold:#a8701d;--gold-soft:#f7eddc;background:#f3f5f2;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:1180px;min-height:100%;margin:0}body{background:var(--background);min-height:100vh}button,input,select{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:2px solid #3d6e8d61}button:disabled{cursor:not-allowed;opacity:.42}.spin{animation:.85s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-page{background:var(--background);grid-template-rows:1fr auto;place-items:center;min-height:100vh;padding:56px;display:grid}.login-panel{background:var(--surface);border:1px solid var(--line);text-align:center;border-radius:8px;width:470px;padding:48px 54px 36px;box-shadow:0 18px 48px #181f1e12}.login-brand img{object-fit:contain;width:174px;height:auto}.login-brand h1{letter-spacing:0;margin:24px 0 8px;font-size:21px}.login-brand p{color:var(--muted);margin:0;font-size:14px;line-height:1.6}.login-action{flex-direction:column;align-items:center;gap:12px;min-height:102px;margin-top:34px;display:flex}.google-button{width:340px;min-height:44px}.google-button.is-disabled{pointer-events:none;opacity:.55}.login-loading{border:1px solid var(--line);width:340px;height:44px;color:var(--muted);border-radius:6px;justify-content:center;align-items:center;gap:9px;font-size:14px;font-weight:650;display:flex}.form-error{background:var(--expense-soft);width:340px;color:var(--expense);border-radius:6px;margin:0;padding:10px 12px;font-size:12px;line-height:1.45}.login-privacy{color:var(--subtle);margin:20px 0 0;font-size:11px}.login-page footer{color:var(--subtle);font-size:12px}.loading-screen{background:var(--background);flex-direction:column;justify-content:center;align-items:center;gap:24px;min-height:100vh;display:flex}.loading-screen img{width:144px}.loading-screen div{color:var(--muted);align-items:center;gap:8px;font-size:13px;font-weight:650;display:flex}.app-shell{grid-template-columns:244px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:#fff;flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.sidebar-brand{border-bottom:1px solid var(--line-light);align-items:center;gap:10px;height:82px;padding:0 24px;display:flex}.sidebar-brand img{object-fit:contain;width:104px;height:37px}.sidebar nav{flex-direction:column;gap:5px;padding:18px 14px;display:flex}.nav-item{height:44px;color:var(--muted);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:12px;padding:0 12px;font-size:14px;font-weight:650;display:flex}.nav-item:hover{background:var(--background);color:var(--ink)}.nav-item.is-active{background:var(--blue-soft);color:var(--blue);font-weight:750}.sidebar-household{background:var(--background);border:1px solid var(--line-light);border-radius:7px;flex-direction:column;gap:7px;margin:6px 18px;padding:15px;display:flex}.sidebar-section-label{color:var(--subtle);text-transform:uppercase;font-size:10px;font-weight:750}.sidebar-household strong{font-size:13px;line-height:1.35}.sidebar-household span{color:var(--muted);align-items:center;gap:6px;font-size:11px;display:flex}.sidebar-account{border-top:1px solid var(--line);align-items:center;gap:10px;min-height:78px;margin-top:auto;padding:14px 16px;display:flex}.avatar{background:var(--income-soft);width:34px;height:34px;color:var(--income);border-radius:50%;flex:0 0 34px;place-items:center;font-size:14px;font-weight:800;display:grid}.account-copy{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.account-copy strong{font-size:12px}.account-copy span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.workspace{min-width:0}.topbar{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f3f5f2f5;justify-content:space-between;align-items:center;height:82px;padding:0 30px;display:flex;position:sticky;top:0}.topbar h1{letter-spacing:0;margin:0 0 5px;font-size:20px}.topbar p{color:var(--muted);margin:0;font-size:12px}.topbar-actions,.toolbar-actions{align-items:center;gap:10px;display:flex}.sync-time{color:var(--subtle);font-size:11px}.workspace-content{padding:24px 30px 48px}.page-stack{flex-direction:column;gap:20px;max-width:1560px;margin:0 auto;display:flex}.page-loading{height:240px;color:var(--muted);place-items:center;font-size:12px;font-weight:650;display:grid}.page-toolbar,.analytics-toolbar{background:var(--surface);border:1px solid var(--line);border-radius:8px;align-items:center;gap:12px;min-height:58px;padding:9px 12px;display:flex}.page-toolbar{justify-content:space-between}.month-control{grid-template-columns:32px 132px 32px 48px;align-items:center;gap:4px;display:grid}.month-control strong{text-align:center;font-size:15px}.icon-button{width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:0;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--background);color:var(--ink)}.icon-button.bordered{border:1px solid var(--line);background:var(--surface)}.today-button{border:1px solid var(--line);background:var(--surface);height:30px;color:var(--blue);cursor:pointer;border-radius:6px;padding:0 9px;font-size:11px;font-weight:750}.toolbar-caption{color:var(--muted);font-size:11px}.secondary-button{border:1px solid var(--line);background:var(--surface);min-height:34px;color:var(--ink);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;gap:7px;padding:0 12px;font-size:12px;font-weight:700;display:inline-flex}.secondary-button:hover:not(:disabled){background:#fafbfa;border-color:#bcc6bf}.metric-grid{gap:14px;display:grid}.metric-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.metric-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-width:0;min-height:128px;padding:17px 18px 14px;position:relative;overflow:hidden}.metric-card:before{content:"";background:var(--line);width:3px;position:absolute;inset:0 auto 0 0}.metric-card.tone-expense:before{background:var(--expense)}.metric-card.tone-income:before{background:var(--income)}.metric-card.tone-blue:before{background:var(--blue)}.metric-label{color:var(--muted);justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.metric-label small{background:var(--background);color:var(--muted);border-radius:4px;padding:3px 6px;font-size:10px}.metric-card>strong{letter-spacing:0;text-overflow:ellipsis;white-space:nowrap;margin-top:13px;font-size:24px;display:block;overflow:hidden}.metric-card.tone-expense>strong{color:var(--expense)}.metric-card.tone-income>strong{color:var(--income)}.metric-card.tone-blue>strong{color:var(--blue)}.metric-note{min-height:18px;color:var(--muted);align-items:center;gap:8px;margin-top:9px;display:flex}.metric-note>span{align-items:center;gap:2px;font-size:10px;font-weight:750;display:inline-flex}.metric-note>small{font-size:10px}.metric-note .is-up{color:var(--expense)}.metric-note .is-down{color:var(--income)}.overview-grid{grid-template-columns:minmax(0,1.65fr) minmax(360px,1fr);gap:14px;display:grid}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;min-width:0}.chart-panel{min-height:352px;padding:18px}.panel-heading,.section-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.panel-heading h2,.section-heading h2{letter-spacing:0;margin:0;font-size:15px}.panel-heading p,.section-heading p{color:var(--muted);margin:5px 0 0;font-size:11px}.chart-body{height:270px;margin-top:15px}.chart-body.large{height:330px}.chart-body.small{height:245px}.chart-legend{color:var(--muted);align-items:center;gap:12px;font-size:10px;font-weight:700;display:flex}.chart-legend span:before{content:"";border-radius:50%;width:7px;height:7px;margin-right:5px;display:inline-block}.chart-legend .expense-dot:before{background:var(--expense)}.chart-legend .income-dot:before{background:var(--income)}.donut-layout{grid-template-columns:46% 1fr;align-items:center;gap:8px;height:278px;display:grid}.donut-chart{height:230px;position:relative}.donut-center{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.donut-center strong{font-size:24px}.donut-center span{color:var(--muted);margin-top:2px;font-size:10px}.donut-list{flex-direction:column;gap:9px;min-width:0;display:flex}.donut-list>div{grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:7px;min-width:0;font-size:10px;display:grid}.donut-list span:nth-child(2){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.donut-list strong{font-size:10px}.legend-swatch{border-radius:2px;width:7px;height:7px}.section-block{flex-direction:column;gap:11px;display:flex}.table-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;width:100%;overflow:hidden}.transaction-table{border-collapse:collapse;table-layout:fixed;width:100%}.transaction-table th{border-bottom:1px solid var(--line);height:42px;color:var(--muted);text-align:left;background:#eef1ee;padding:0 12px;font-size:10px;font-weight:750}.transaction-table th:first-child{width:136px}.transaction-table th:nth-child(2){width:66px}.transaction-table th:nth-child(3){width:142px}.transaction-table th:nth-child(4){width:auto}.transaction-table th:nth-child(5){width:236px}.transaction-table th:nth-child(6){width:152px}.transaction-table td{border-bottom:1px solid var(--line-light);height:62px;color:var(--ink);vertical-align:middle;padding:9px 12px;font-size:11px}.transaction-table tbody tr:last-child td{border-bottom:0}.transaction-table tbody tr:hover td{background:#fafbfa}.table-sort{width:100%;color:inherit;font-size:inherit;font-weight:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:flex}.table-sort.align-right{justify-content:flex-end}.date-cell{white-space:nowrap;color:var(--muted)!important}.kind-badge{border-radius:5px;align-items:center;height:24px;padding:0 7px;font-size:10px;font-weight:800;display:inline-flex}.kind-badge.expense{background:var(--expense-soft);color:var(--expense)}.kind-badge.income{background:var(--income-soft);color:var(--income)}.category-cell{align-items:center;gap:7px;min-width:0;display:flex}.category-cell span{font-size:17px}.category-cell strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.merchant-cell{flex-direction:column;gap:5px;min-width:0;display:flex}.merchant-cell strong,.merchant-cell span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.merchant-cell strong{color:var(--blue);font-size:11px}.merchant-cell span{font-size:12px;font-weight:650}.payment-cell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:var(--muted)!important}.amount-cell{text-align:right}.amount-cell strong,.amount-cell span{white-space:nowrap;display:block}.amount-cell strong{font-size:12px}.amount-cell span{color:var(--muted);margin-top:4px;font-size:9px}.amount-cell.expense strong,.expense-text{color:var(--expense)}.amount-cell.income strong,.income-text{color:var(--income)}.align-right{text-align:right!important}.empty-table{text-align:center;height:180px!important;color:var(--muted)!important}.filter-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;grid-template-columns:minmax(280px,1fr) 160px 180px 170px 36px;align-items:center;gap:9px;min-height:58px;padding:10px;display:grid}.search-field{border:1px solid var(--line);background:var(--surface);height:36px;color:var(--muted);border-radius:6px;align-items:center;gap:8px;padding:0 10px;display:flex}.search-field:focus-within{border-color:var(--blue);box-shadow:0 0 0 2px #3d6e8d1f}.search-field input{width:100%;color:var(--ink);border:0;outline:0;font-size:12px}.filter-panel select,.date-field input{border:1px solid var(--line);background:var(--surface);height:36px;color:var(--ink);border-radius:6px;padding:0 9px;font-size:11px}.transaction-summary-strip{background:var(--surface);border:1px solid var(--line);border-radius:8px;grid-template-columns:repeat(4,1fr);min-height:62px;display:grid}.transaction-summary-strip>div{border-right:1px solid var(--line-light);justify-content:space-between;align-items:center;padding:0 18px;display:flex}.transaction-summary-strip>div:last-child{border-right:0}.transaction-summary-strip span{color:var(--muted);font-size:11px}.transaction-summary-strip strong{font-size:13px}.pagination{min-height:38px;color:var(--muted);justify-content:space-between;align-items:center;font-size:11px;display:flex}.pagination>div{align-items:center;gap:10px;display:flex}.pagination strong{min-width:64px;color:var(--ink);text-align:center}.segmented-control,.preset-control{border:1px solid var(--line);background:#eef1ee;border-radius:7px;gap:2px;padding:3px;display:inline-flex}.segmented-control button,.preset-control button{min-width:76px;height:31px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;padding:0 11px;font-size:11px;font-weight:700}.segmented-control button.is-active,.preset-control button.is-active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #181f1e17}.segmented-control.compact button{min-width:80px}.analytics-toolbar{flex-wrap:nowrap}.preset-control button{min-width:60px}.date-field{align-items:center;gap:7px;display:flex}.date-field span{color:var(--muted);font-size:10px;font-weight:700}.date-field input{width:132px}.date-separator{color:var(--subtle)}.analytics-toolbar-spacer{flex:1}.toggle-row{border:1px solid var(--line);height:36px;color:var(--muted);white-space:nowrap;border-radius:6px;align-items:center;gap:8px;padding:0 9px;font-size:10px;font-weight:700;display:flex}.switch{cursor:pointer;background:#c8cfca;border:0;border-radius:9px;width:32px;height:18px;padding:2px}.switch span{background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .16s;display:block}.switch.is-on{background:var(--income)}.switch.is-on span{transform:translate(14px)}.period-banner{min-height:64px;color:var(--income);background:#edf4ef;border:1px solid #ccd9d1;border-radius:8px;align-items:center;gap:12px;padding:0 18px;display:flex}.period-banner>div{flex-direction:column;gap:3px;display:flex}.period-banner span{color:var(--muted);font-size:9px;font-weight:700}.period-banner strong{color:var(--ink);font-size:12px}.period-banner small{color:var(--muted);margin-left:auto;font-size:10px}.analytics-trend{min-height:426px}.breakdown-panel{padding:18px}.panel-heading.with-tabs{min-height:42px}.breakdown-layout{border-top:1px solid var(--line-light);grid-template-columns:minmax(0,1.45fr) minmax(330px,.75fr);gap:24px;margin-top:18px;padding-top:17px;display:grid}.breakdown-ranking{border:1px solid var(--line-light);border-radius:7px;flex-direction:column;align-self:start;display:flex;overflow:hidden}.breakdown-ranking>div{border-bottom:1px solid var(--line-light);grid-template-columns:24px minmax(0,1fr) 40px 100px;align-items:center;gap:7px;min-height:44px;padding:0 11px;font-size:10px;display:grid}.breakdown-ranking>div:last-child{border-bottom:0}.breakdown-ranking small{color:var(--muted);text-align:right}.breakdown-ranking strong{text-align:right;white-space:nowrap}.ranking-label{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.rank{background:var(--background);width:21px;height:21px;color:var(--muted);border-radius:5px;place-items:center;font-size:9px;font-weight:800;display:inline-grid}.analytics-bottom-grid{grid-template-columns:minmax(420px,.9fr) minmax(520px,1.1fr);gap:14px;display:grid}.analytics-bottom-grid .chart-panel,.largest-panel{min-height:330px}.largest-panel{padding:18px}.largest-list{flex-direction:column;margin-top:14px;display:flex}.largest-list>div{border-bottom:1px solid var(--line-light);grid-template-columns:24px 28px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:48px;display:grid}.largest-list>div:last-child{border-bottom:0}.largest-icon{font-size:17px}.largest-list>div>div{flex-direction:column;gap:3px;min-width:0;display:flex}.largest-list>div>div strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.largest-list>div>div small{color:var(--muted);font-size:9px}.largest-list>div>strong{white-space:nowrap;font-size:11px}.panel-empty{height:260px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:12px;display:flex}.empty-copy{color:var(--muted);margin:0;font-size:11px}.error-banner{background:var(--expense-soft);min-height:46px;color:var(--expense);border:1px solid #ecc1bf;border-radius:7px;align-items:center;gap:9px;padding:0 14px;font-size:12px;display:flex}.error-banner button{color:var(--expense);cursor:pointer;background:0 0;border:0;margin-left:auto;font-size:11px;font-weight:750}.recharts-default-tooltip{border:1px solid var(--line)!important;border-radius:6px!important;font-size:11px!important;box-shadow:0 6px 20px #181f1e14!important}@media (width>=1600px){.workspace-content{padding-left:38px;padding-right:38px}.transaction-table th:nth-child(4){width:31%}}
