:root{--bg: #f4f5f7;--bg-gradient: linear-gradient(160deg, #f7f8fb 0%, #eef2f6 60%, #eaf3ee 100%);--panel: #ffffff;--panel-2: #f7f8fa;--border: #e3e6ea;--text: #1c2026;--muted: #737a85;--accent: #1f9d6a;--accent-2: #14b8a6;--accent-soft: #e2f5ec;--violet: #6d5ce7;--neg: #d64545;--neg-soft: #fbe7e7;--pos: #1f9d6a;--pos-soft: #e2f5ec;--warn: #b7791f;--warn-soft: #fbf0d9;--sidebar-bg: linear-gradient(180deg, #17332a 0%, #0f2a2a 55%, #101c2b 100%);--sidebar-text: #dfe9e4;--sidebar-muted: #8ea89f;--sidebar-active: rgba(255, 255, 255, .12);--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 4px 16px rgba(16, 24, 40, .06);--shadow-lg: 0 12px 32px rgba(16, 24, 40, .18);color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #111418;--bg-gradient: linear-gradient(160deg, #13171c 0%, #101418 60%, #0f1a16 100%);--panel: #1a1f26;--panel-2: #20262e;--border: #2b323b;--text: #e6e9ee;--muted: #8b939f;--accent: #3ccf8e;--accent-2: #2dd4bf;--accent-soft: rgba(60, 207, 142, .14);--violet: #8b7cf6;--neg: #f07171;--neg-soft: rgba(240, 113, 113, .16);--pos: #3ccf8e;--pos-soft: rgba(60, 207, 142, .14);--warn: #e2b04a;--warn-soft: rgba(226, 176, 74, .16);--sidebar-bg: linear-gradient(180deg, #0f2620 0%, #0b1f22 55%, #0c1420 100%);--sidebar-text: #d6e2dc;--sidebar-muted: #7f978f;--sidebar-active: rgba(255, 255, 255, .1);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5);color-scheme:dark}}:root[data-theme=dark]{--bg: #111418;--bg-gradient: linear-gradient(160deg, #13171c 0%, #101418 60%, #0f1a16 100%);--panel: #1a1f26;--panel-2: #20262e;--border: #2b323b;--text: #e6e9ee;--muted: #8b939f;--accent: #3ccf8e;--accent-2: #2dd4bf;--accent-soft: rgba(60, 207, 142, .14);--violet: #8b7cf6;--neg: #f07171;--neg-soft: rgba(240, 113, 113, .16);--pos: #3ccf8e;--pos-soft: rgba(60, 207, 142, .14);--warn: #e2b04a;--warn-soft: rgba(226, 176, 74, .16);--sidebar-bg: linear-gradient(180deg, #0f2620 0%, #0b1f22 55%, #0c1420 100%);--sidebar-text: #d6e2dc;--sidebar-muted: #7f978f;--sidebar-active: rgba(255, 255, 255, .1);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 16px rgba(0, 0, 0, .3);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .5);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg-gradient);background-attachment:fixed;color:var(--text);min-height:100vh}a{color:inherit;text-decoration:none}h1,h2,h3{letter-spacing:-.01em}button{font:inherit;padding:7px 14px;border-radius:8px;border:none;cursor:pointer;color:#fff;font-weight:600;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);box-shadow:0 2px 6px #1f9d6a4d;transition:transform .08s ease,box-shadow .15s ease,filter .15s ease}button:hover{filter:brightness(1.06);box-shadow:0 4px 12px #1f9d6a59}button:active{transform:translateY(1px)}button.secondary{background:var(--panel);color:var(--text);border:1px solid var(--border);box-shadow:none}button.link{background:none;border:none;color:inherit;padding:4px 8px;text-align:left;font-weight:500;box-shadow:none}button.link:hover{filter:none;box-shadow:none}select,input{font:inherit;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text)}input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}code{font-size:.9em;background:var(--panel-2);padding:1px 5px;border-radius:4px;border:1px solid var(--border)}.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:var(--sidebar-bg);color:var(--sidebar-text);padding:18px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar a,.sidebar button.link{padding:7px 10px;border-radius:8px;display:block;color:var(--sidebar-text);transition:background .12s ease}.sidebar a:hover,.sidebar button.link:hover{background:#ffffff12}.sidebar a.active{background:var(--sidebar-active);font-weight:600;box-shadow:inset 3px 0 0 var(--accent-2)}.sidebar h2{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--sidebar-muted);margin:18px 10px 6px;font-weight:600}.brand-row{display:flex;align-items:center;gap:10px;margin:0 10px 14px}.brand-icon{width:30px;height:30px;border-radius:8px;box-shadow:0 2px 8px #00000059}.brand-icon.large{width:48px;height:48px;border-radius:12px}.brand-row .brand{margin:0}.brand{font-size:20px;margin:0 10px 14px;font-weight:700;background:linear-gradient(90deg,#7fe3b4,#5ad4c8 60%,#9fb8ff);-webkit-background-clip:text;background-clip:text;color:transparent}.account-link{display:flex!important;justify-content:space-between;gap:8px}.account-link .num{color:var(--sidebar-muted);font-variant-numeric:tabular-nums;font-size:13px}.save-state{margin-top:auto;padding:10px;font-size:12px;color:var(--sidebar-muted);display:flex;align-items:center;gap:8px}.save-state:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--sidebar-muted)}.save-clean:before{background:var(--accent-2);box-shadow:0 0 8px var(--accent-2)}.save-dirty{color:var(--warn)}.save-dirty:before{background:var(--warn)}.save-saving:before{background:var(--accent-2);animation:pulse .9s ease-in-out infinite}.save-error{color:var(--neg);cursor:pointer}.save-error:before{background:var(--neg)}@keyframes pulse{50%{opacity:.3}}.demo-note{margin-top:auto;padding:10px;font-size:12px;line-height:1.45;color:var(--sidebar-muted);border-top:1px solid rgba(255,255,255,.08)}.demo-note strong{color:var(--warn)}.content{display:flex;flex-direction:column;height:100vh;padding:24px 32px 0;overflow:hidden}.page-header{flex:none}.page-body{flex:1;min-height:0;overflow:auto;padding-bottom:48px}.page-header{display:flex;align-items:center;gap:20px;margin-bottom:20px;flex-wrap:wrap}.page-header h2{margin:0;font-size:22px}.month-nav{display:flex;align-items:center;gap:8px}.month-nav a{font-size:20px;width:32px;height:32px;display:grid;place-items:center;border-radius:8px;color:var(--muted);background:var(--panel);border:1px solid var(--border)}.month-nav a:hover{color:var(--text);border-color:var(--accent)}.month-nav h2{min-width:190px;text-align:center}.stat{display:flex;flex-direction:column;gap:2px;font-variant-numeric:tabular-nums;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:10px 16px;min-width:130px;box-shadow:var(--shadow)}.stat .muted{font-size:11px;text-transform:uppercase;letter-spacing:.06em}.stat strong{font-size:20px}.stat.to-budget{color:#fff;border:none;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);box-shadow:0 6px 18px #1f9d6a59}.stat.to-budget.over{background:linear-gradient(135deg,#d64545,#f0883e);box-shadow:0 6px 18px #d6454559}.stat.to-budget .muted,.stat.to-budget strong{color:#fff}.stat.to-budget .muted{opacity:.85}.page-header label{margin-left:auto;display:flex;align-items:center;gap:6px}.grid{width:100%;border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow)}.grid thead th{position:sticky;top:0;z-index:2}.grid thead th:first-child{border-top-left-radius:12px}.grid thead th:last-child{border-top-right-radius:12px}.grid th,.grid td{padding:4px 10px;font-size:13px;line-height:1.3;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.grid tbody tr:last-child td{border-bottom:none}.grid thead th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);background:var(--panel-2)}.grid tbody tr:hover{background:linear-gradient(90deg,var(--accent-soft) 0%,color-mix(in srgb,var(--accent-soft) 35%,transparent) 55%,transparent 100%)}.grid tbody tr:hover td{background:transparent}.grid .group-row th{background:var(--panel-2);font-weight:700;padding-top:6px;padding-bottom:6px;border-top:1px solid var(--border)}.grid .group-row th:first-child{border-left:3px solid var(--accent)}.grid .group-row{cursor:pointer;-webkit-user-select:none;user-select:none}.grid .group-row:hover th{background:color-mix(in srgb,var(--accent-soft) 60%,var(--panel-2))}.grid .group-row .chevron{display:inline-block;color:var(--muted);transition:transform .15s ease;width:12px}.grid .group-row.collapsed .chevron{transform:rotate(-90deg)}.num{text-align:right!important;font-variant-numeric:tabular-nums}.neg{color:var(--neg)}.pos{color:var(--pos)}.muted{color:var(--muted)}.soft-pos,.soft-pos input.assigned{color:color-mix(in srgb,var(--pos) 70%,var(--text))}.soft-neg,.soft-neg input.assigned{color:color-mix(in srgb,var(--neg) 70%,var(--text))}.budget td:first-child{padding-left:24px}.pill{display:inline-block;padding:1px 9px;border-radius:999px;font-weight:600;min-width:80px;text-align:right}.pill.pos{background:var(--pos-soft);color:var(--pos)}.pill.neg{background:var(--neg-soft);color:var(--neg)}.pill.zero{background:var(--panel-2);color:var(--muted);font-weight:500}button.pill{font:inherit;border:none;box-shadow:none;cursor:pointer;transition:filter .15s ease}button.pill:hover:not(:disabled){filter:brightness(.94);box-shadow:none}button.pill:disabled{cursor:default}input.assigned{width:110px;text-align:right;padding:2px 8px;border-color:transparent;background:transparent;box-shadow:none}input.assigned:hover{border-color:var(--border);background:var(--panel-2)}input.assigned:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px var(--accent-soft)}.landing{max-width:960px;margin:0 auto;padding:20px 24px 60px}.landing-nav{display:flex;align-items:center;justify-content:space-between}.landing-nav .brand-row{margin:0}.landing-nav nav{display:flex;gap:20px;font-weight:600}.landing-nav nav a:hover{color:var(--accent)}.hero{text-align:center;padding:80px 0 48px;max-width:680px;margin:0 auto}.hero h1{font-size:40px;line-height:1.15;margin:0 0 18px;letter-spacing:-.02em}.hero p{font-size:17px;line-height:1.55;color:var(--muted);margin:0 0 28px}.hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:14px}.cta{display:inline-block;padding:11px 22px;border-radius:10px;color:#fff;font-weight:600;font-size:15px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-2) 100%);box-shadow:0 2px 6px #1f9d6a4d;transition:transform .08s ease,box-shadow .15s ease,filter .15s ease}.cta:hover{filter:brightness(1.06);box-shadow:0 4px 12px #1f9d6a59}.cta:active{transform:translateY(1px)}.cta.secondary{background:var(--panel);color:var(--text);border:1px solid var(--border);box-shadow:none}.small{font-size:13px}.feature-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.feature-grid .card{margin:0}.feature-grid p{margin:0;line-height:1.5}.steps{max-width:680px;margin:56px auto 0}.steps h2{text-align:center;font-size:24px;margin:0 0 16px}.steps ol{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:10px;font-size:15px;line-height:1.5}.landing-footer{margin-top:56px;text-align:center;border-top:1px solid var(--border);padding-top:20px}.landing-footer a{color:var(--accent)}@media(max-width:600px){.landing{padding:16px 16px 40px}.hero{padding:48px 0 32px}.hero h1{font-size:30px}}.welcome{max-width:540px;margin:80px auto;padding:0 20px}.welcome .brand-row{margin:0 0 6px}.welcome .brand{font-size:36px}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin:14px 0;box-shadow:var(--shadow)}.card h3{margin:0 0 8px}.picker-button{background:transparent;color:inherit;border:1px solid transparent;border-radius:6px;padding:2px 8px;text-align:left;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;box-shadow:none}.picker-button:hover,.picker-button:focus{border-color:var(--border);background:var(--panel-2);filter:none;box-shadow:none}.picker-popup{position:fixed;z-index:10;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px}.picker-input{width:100%;margin-bottom:6px}.picker-list{list-style:none;margin:0;padding:0;max-height:300px;overflow-y:auto}.picker-list li{padding:6px 10px;border-radius:7px;cursor:pointer;white-space:nowrap}.picker-list li.heading{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--accent);cursor:default;margin-top:8px;padding-bottom:3px;border-bottom:1px solid var(--border);border-radius:0;font-weight:700}.picker-list li.active{background:var(--accent-soft);color:var(--text)}.picker-list li.selected{font-weight:700}.picker-list li.empty{cursor:default}.picker-list li.custom{font-style:italic;color:var(--violet)}.grid tr.rule-suggestion td{background:color-mix(in srgb,var(--violet) 10%,var(--panel));box-shadow:inset 3px 0 0 var(--violet);padding-top:6px;padding-bottom:6px;text-align:right}.grid tr.rule-suggestion td>*{margin-left:10px}.grid tr.rule-suggestion button:not(.link){padding:4px 10px;font-size:12px}.grid tr.rule-suggestion button.link{display:inline;color:var(--muted)}.grid tr.uncategorized{background:linear-gradient(90deg,var(--warn-soft) 0%,color-mix(in srgb,var(--warn-soft) 35%,transparent) 55%,transparent 100%)}.grid tr.uncategorized:hover{background:linear-gradient(90deg,color-mix(in srgb,var(--warn) 22%,var(--panel)) 0%,var(--warn-soft) 60%,transparent 100%)}.grid tr.uncategorized td,.grid tbody tr.uncategorized:hover td{background:transparent}.grid tr.uncategorized td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.picker-button.needs-category{background:linear-gradient(135deg,#f2b53a,#e8792f);color:#fff;font-weight:600;border-radius:999px;padding:1px 10px;box-shadow:0 2px 8px #e8792f59}.picker-button.needs-category:hover,.picker-button.needs-category:focus{background:linear-gradient(135deg,#f2b53a,#e8792f);filter:brightness(1.06);border-color:transparent}.badge{background:linear-gradient(135deg,#f2b53a,#e8792f);color:#fff;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}.filter-chip{padding:6px 12px;border-radius:999px;background:var(--warn-soft);color:var(--warn);font-weight:600;border:1px solid transparent}.filter-chip.on{background:linear-gradient(135deg,#f2b53a,#e8792f);color:#fff}.filter-chip:hover{border-color:var(--warn)}.grid .section-row th{background:var(--panel-2);font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding-top:6px;padding-bottom:6px;border-top:1px solid var(--border)}.grid .section-row th:first-child{box-shadow:inset 3px 0 0 var(--violet);color:var(--violet)}input.inline{border-color:transparent;background:transparent;padding:2px 8px;min-width:180px}input.inline:hover{border-color:var(--border);background:var(--panel-2)}.actions{text-align:right;white-space:nowrap}.actions button.link{display:inline}button.link.danger{color:var(--neg)}.add-account{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.add-account input:not([type=checkbox]){flex:1;min-width:180px}.add-transaction{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0}.add-transaction .picker-button{border-color:var(--border);padding:6px 10px;border-radius:8px;min-width:160px}.add-transaction input.amount{width:110px;text-align:right}.row-actions{width:1%}.row-actions button.link{opacity:0;padding:0 6px}.grid tr:hover .row-actions button.link{opacity:1}dialog.confirm{border:none;border-radius:14px;padding:0;background:var(--panel);color:var(--text);box-shadow:var(--shadow-lg);width:min(420px,92vw)}dialog.confirm::backdrop{background:#0a0e1480;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.confirm-body{padding:22px 24px 20px}.confirm-body h3{margin:0 0 6px;font-size:17px}.confirm-body p{margin:0 0 18px}.confirm-actions{display:flex;justify-content:flex-end;gap:8px}.budget-body{display:flex;gap:16px;overflow:hidden;padding-bottom:0}.budget-table{flex:1;min-width:0;overflow:auto;padding-bottom:48px}.grid tbody tr.category-row{cursor:pointer}.grid tbody tr.selected{background:color-mix(in srgb,var(--accent-soft) 70%,var(--panel));box-shadow:inset 3px 0 0 var(--accent)}.grid tbody tr.selected td{background:transparent}.grid tbody tr.selected td:first-child{font-weight:600}.target-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--warn);margin-left:7px;vertical-align:1px}.slideover{flex:none;width:340px;overflow:auto;margin-bottom:24px;padding:18px 20px;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);animation:slide-in .18s ease}@keyframes slide-in{0%{transform:translate(24px);opacity:0}}.slideover-head{display:flex;align-items:flex-start;gap:8px}.slideover-head h3{margin:0 0 2px;font-size:18px}.slideover-head .muted{font-size:12px}.slideover-head button.close{margin-left:auto;font-size:20px;line-height:1;padding:0 6px;color:var(--muted)}.slideover-head button.close:hover{color:var(--text)}.slideover section{margin-top:20px}.slideover h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.slideover p{margin:6px 0 0;font-size:13px;line-height:1.4}.slideover-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;font-variant-numeric:tabular-nums}.slideover-stats>div{display:flex;flex-direction:column;gap:2px;padding:8px 10px;background:var(--panel-2);border-radius:10px}.slideover-stats .muted{font-size:10px;text-transform:uppercase;letter-spacing:.06em}.slideover-stats strong{font-size:15px}.target-row{display:flex;align-items:center;gap:8px}input.target-amount{flex:1;text-align:right}.target-row button.link{color:var(--muted);font-weight:500}.target-row button.link:hover{color:var(--neg)}.target-bar{height:6px;margin-top:12px;border-radius:999px;background:var(--panel-2);overflow:hidden}.target-bar>span{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width .2s ease}.target-bar.under>span{background:var(--warn)}.target-actions{display:flex;align-items:center;gap:10px;margin-top:12px;font-size:12px}.panel-transactions{list-style:none;margin:0;padding:0;font-variant-numeric:tabular-nums}.panel-transactions li{display:grid;grid-template-columns:48px 1fr auto;gap:8px;align-items:baseline;padding:4px 0;border-bottom:1px dashed var(--border);font-size:13px}.panel-transactions li:last-child{border-bottom:none}.panel-transactions li.head{border-bottom:1px solid var(--border);padding:0 0 4px}.panel-transactions li.head button.link{padding:0;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.panel-transactions li.head button.link:hover,.panel-transactions li.head button.link.active{color:var(--text)}.panel-transactions li.head .sort-arrow{font-size:8px;margin-left:4px;vertical-align:1px}.panel-transactions li .muted{font-size:12px}.panel-transactions li a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-transactions li a:hover{color:var(--accent)}.slideover h4 button.toggle{display:inline-flex;align-items:center;gap:6px;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit}.slideover h4 button.toggle:hover{color:var(--text)}.slideover h4 button.toggle .chevron{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid currentColor;transform:rotate(-90deg);transition:transform .15s ease}.slideover h4 button.toggle.open .chevron{transform:none}.slideover label.option{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px;font-size:13px}.slideover label.option input{margin-top:2px}.slideover label.option small{display:block;font-size:12px;line-height:1.35}.move-popover{position:fixed;z-index:10;width:320px;margin:0;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);padding:14px 16px}.move-popover>p{margin:0 0 12px;font-size:13px}.move-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.move-row>span{width:70px;color:var(--muted);font-size:13px}.move-row .picker-button{flex:1;max-width:none;border-color:var(--border);padding:6px 10px;border-radius:8px}.move-row .picker-button.muted{color:var(--muted)}.move-popover .confirm-actions{margin-top:14px}.confirm-actions button:disabled{opacity:.45;cursor:default;filter:none;box-shadow:none}input.move-amount{flex:1;text-align:right}button.danger:not(.link){background:linear-gradient(135deg,#e05252,#f0883e);box-shadow:0 2px 8px #d6454559}button.danger:not(.link):hover{box-shadow:0 4px 12px #d6454566}.nav-with-action{display:flex;align-items:center;gap:4px}.nav-with-action a{flex:1}.icon-button{background:none;border:none;box-shadow:none;color:var(--sidebar-muted);font-size:16px;width:28px;height:28px;padding:0;border-radius:6px;display:grid;place-items:center}.icon-button:hover:not(:disabled){background:#ffffff1a;color:var(--sidebar-text);filter:none;box-shadow:none}.icon-button:disabled{opacity:.35;cursor:default}.icon-button.spinning{animation:spin .9s linear infinite;opacity:1;color:var(--accent-2)}@keyframes spin{to{transform:rotate(360deg)}}.sync-message{font-size:12px;padding:2px 10px 6px;color:var(--accent-2)}.sync-message.neg{color:var(--neg)}:root{--series-income: #1f9d6a;--series-spending: #6d5ce7}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--series-income: #23a36a;--series-spending: #8b7cf6}}:root[data-theme=dark]{--series-income: #23a36a;--series-spending: #8b7cf6}.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.warn-text{color:var(--warn)}.chart{width:100%}.chart-svg{width:100%;height:auto;display:block}.chart-grid{stroke:var(--border);stroke-width:1}.chart-baseline{stroke:var(--muted);stroke-width:1}.chart-axis{fill:var(--muted);font-size:11px}.series-income{fill:var(--series-income)}.series-spending{fill:var(--series-spending)}.series-set-aside{fill:color-mix(in srgb,var(--series-spending) 45%,transparent)}.series-net-line{fill:none;stroke:var(--series-income);stroke-width:2;stroke-linejoin:round}.series-net-area{fill:var(--series-income);opacity:.12}.series-net-dot{fill:var(--panel);stroke:var(--series-income);stroke-width:2}.swatch.series-net{background:var(--series-income)}.chart-label{fill:var(--text);font-size:12px;font-weight:600}.tag{display:inline-block;margin-left:6px;padding:0 6px;border-radius:999px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;background:var(--accent-soft);color:var(--accent);font-weight:700;vertical-align:1px}.reserve-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 24px;margin-top:10px}.reserve-group{display:flex;flex-direction:column;gap:3px}.reserve-group label{display:flex;gap:6px;align-items:center;font-size:13px}.card h3 button.link{font-size:12px;font-weight:500;color:var(--accent);padding:0 6px}.chart-svg path.dim{opacity:.45}.chart-svg path{transition:opacity .12s ease}.chart-legend{display:flex;gap:18px;align-items:center;margin-top:8px;font-size:12px;color:var(--muted);flex-wrap:wrap}.swatch{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:-1px;margin-right:4px}.swatch.series-income{background:var(--series-income)}.swatch.series-spending{background:var(--series-spending)}.swatch.series-set-aside{background:color-mix(in srgb,var(--series-spending) 45%,transparent)}.chart-tooltip{color:var(--text);margin-left:auto}.movers{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 24px}.movers li{display:flex;gap:10px;align-items:baseline;padding:4px 0;border-bottom:1px dashed var(--border)}.mover-name{font-weight:600;flex:1}.mover-delta{font-variant-numeric:tabular-nums;font-weight:600}.report .total-row th{text-align:left}.report .total-row td,.report .total-row th{background:var(--panel-2);font-weight:600}.report td.heat{background:color-mix(in srgb,var(--series-spending) calc(var(--heat) * 22%),transparent)}.report th:first-child,.report td:first-child{position:sticky;left:0;background:var(--panel);z-index:1}.report thead th:first-child{z-index:3}.report .group-row th:first-child,.report .total-row th:first-child{background:var(--panel-2)}.report tr.uncategorized td:first-child{background:var(--panel)}.reconcile{border-left:4px solid var(--accent)}.reconcile.off{border-left-color:var(--warn)}.reconcile-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.reconcile-actions{margin-left:auto;display:flex;gap:8px}.reconcile-details{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.reconcile-details h4{margin:0 0 4px}.reconcile-details p{margin:0 0 8px;font-size:12px}.explain-list{list-style:none;margin:0;padding:0}.explain-list li{display:grid;grid-template-columns:90px 1fr auto;gap:10px;padding:3px 0;border-bottom:1px dashed var(--border);font-size:13px}.recon-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:1px}.recon-dot.ok{background:var(--accent-2)}.recon-dot.off{background:var(--warn);box-shadow:0 0 6px var(--warn)}.reconcile-note{margin:10px 0 0;font-size:12px}
