:root{color-scheme:dark;--gruv-bg: #1d2021;--gruv-bg-hard: #1d2021;--gruv-surface: #282828;--gruv-surface-deep: #3c3836;--gruv-border: #504945;--gruv-border-light: #665c54;--gruv-border-subtle: #3c3836;--gruv-fg: #ebdbb2;--gruv-fg-light: #fbf1c7;--gruv-muted: #a89984;--gruv-dim: #928374;--gruv-dark: #282828;--gruv-dark-deep: #1d2021;--gruv-accent: #fabd2f;--gruv-accent-deep: #d79921;--gruv-income: #b8bb26;--gruv-expense: #fb4934;--gruv-expense-deep: #cc241d;--gruv-danger-bright: #fb5f4c;--gruv-warning: #fabd2f;--gruv-light-text: #fbf1c7;--gruv-on-accent: #282828;--gruv-on-status: #282828;--gruv-focus: #83a598;--gruv-focus-contrast: #1d2021;--gruv-hover: #3c3836;--gruv-income-surface: #3c3836;--gruv-expense-surface: #3c3836;--gruv-overlay: rgba(29, 32, 33, .72);--safe-area-top: env(safe-area-inset-top, 0px);--clr-error: var(--gruv-expense);--clr-primary: var(--gruv-accent);--clr-income: var(--gruv-income);--clr-muted: var(--gruv-muted);--font-display: "DM Sans", system-ui, -apple-system, sans-serif;--font-body: "DM Sans", system-ui, -apple-system, sans-serif;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--duration-fast: .1s;--duration-normal: .2s;--duration-slow: .3s;--ease-out: cubic-bezier(.25, .46, .45, .94);--ease-in-out: cubic-bezier(.42, 0, .58, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{touch-action:manipulation;overflow-x:hidden}body{font-family:var(--font-body);background:var(--gruv-bg);color:var(--gruv-fg);min-height:100vh;overflow-x:hidden;font-size:.9375rem;line-height:1.45}:where(a,button,input,select,textarea,[role=tab],[role=region][tabindex]):focus-visible{outline:2px solid var(--gruv-focus);outline-offset:3px;box-shadow:0 0 0 4px var(--gruv-focus-contrast)}h1{font-size:1.4rem;color:var(--gruv-fg-light);letter-spacing:.02em;font-family:var(--font-display)}body>h1{padding:1.5rem 2rem 0}.page-header{display:flex;align-items:center;gap:1rem;padding:1.5rem 2rem 0}.back-link{color:var(--gruv-muted);font-size:.85rem;text-decoration:none}.back-link:hover{color:var(--gruv-fg-light)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;padding:1.5rem 2rem}.container{padding:1.5rem 2rem;display:flex;flex-direction:column;gap:1rem}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;grid-column:1 / -1}.dashboard-top-row{grid-column:1 / -1;display:flex;gap:1rem;align-items:stretch}@media(max-width:640px){.dashboard-top-row{flex-direction:column}}.card{background:var(--gruv-surface);padding:1.25rem 1.5rem;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--gruv-border-light)}.card .label{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gruv-muted);margin-bottom:.4rem}.card .value{font-size:1.8rem;font-weight:700;font-variant-numeric:tabular-nums}.card.income .value{color:var(--gruv-income)}.card.expense .value{color:var(--gruv-expense)}.card.net .value{color:var(--gruv-accent)}.chart-card,.budgets-card,.filters-card,.table-card{background:var(--gruv-surface);padding:1.25rem;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--gruv-border-light)}.table-card{overflow-x:auto;min-width:0;-webkit-overflow-scrolling:touch}.table-card table{width:max-content;min-width:100%}.chart-card h2,.budgets-card h2,.filters-card h2,.table-card h2{font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gruv-muted);margin-bottom:1rem}.table-card h2 a{font-size:.75rem;font-weight:400;color:var(--gruv-accent);text-decoration:none;text-transform:none;letter-spacing:0;transition:color var(--duration-fast) var(--ease-out)}.table-card h2 a:hover{text-decoration:underline}.chart-wrap{position:relative;height:220px}.budgets-card{grid-column:span 2}.budget-row{margin-bottom:.9rem}.budget-meta{display:flex;justify-content:space-between;font-size:.8rem;margin-bottom:.3rem}.budget-meta .cat{color:var(--gruv-fg)}.budget-meta .nums{color:var(--gruv-fg-light)}.progress-bg{background:var(--gruv-surface-deep);height:8px;overflow:hidden;border-radius:var(--radius-sm)}.progress-fill{height:100%}.fill-green{background:var(--gruv-income)}.fill-yellow{background:var(--gruv-warning)}.fill-red{background:var(--gruv-expense)}.add-form{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.add-form .full{grid-column:1 / -1}.budgets-card .add-form{margin-top:.75rem}.filters-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem;align-items:end}.filters-form--toolbar{display:flex;flex-direction:column;gap:.75rem;align-items:stretch;grid-template-columns:none}.filters-primary{display:flex;flex-wrap:wrap;gap:.6rem .75rem;align-items:flex-end}.filters-primary .filter-group{flex:0 1 128px;min-width:108px;max-width:150px}.filters-primary .filter-group--search{flex:1 1 200px;min-width:160px;max-width:none}.filters-primary .filter-group--period{flex:0 1 168px;min-width:148px;max-width:200px}.filters-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:nowrap;flex:0 0 auto;margin-left:auto;padding-bottom:1px}.filters-actions>:is(.filters-toggle,.btn-secondary,select){flex-shrink:0}.filters-primary>.filters-actions{flex-wrap:wrap;justify-content:flex-end;min-width:0}.filters-form .filters-primary>.filters-actions>select{width:auto;min-width:16rem}.filters-toggle{background:none;border:none;color:var(--gruv-accent);font-size:.8rem;font-weight:600;cursor:pointer;padding:.5rem .15rem;white-space:nowrap;transition:color var(--duration-fast) var(--ease-out)}.filters-toggle:hover{color:var(--gruv-accent-deep)}.filter-chips{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.filter-chip{display:inline-flex;align-items:center;gap:.35rem;background:var(--gruv-surface-deep);border:1px solid var(--gruv-border);color:var(--gruv-fg);padding:.2rem .5rem;font-size:.75rem;border-radius:var(--radius-sm)}.filter-chip button{background:none;border:none;color:var(--gruv-fg-light);cursor:pointer;padding:0;line-height:1;font-size:.95rem;transition:color var(--duration-fast) var(--ease-out)}.filter-chip button:hover{color:var(--gruv-fg-light)}.filters-clear{background:none;border:none;color:var(--gruv-muted);font-size:.75rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px;padding:.2rem .35rem;transition:color var(--duration-fast) var(--ease-out)}.filters-clear:hover{color:var(--gruv-fg)}.filter-group label{display:block;font-size:.72rem;color:var(--gruv-muted);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.06em}@media(max-width:900px){.filters-primary .filter-group,.filters-primary .filter-group--search,.filters-primary .filter-group--period{flex:1 1 calc(50% - .3rem);max-width:none}.filters-primary .filter-group--search{flex-basis:100%}.filters-actions{flex:1 1 100%;width:100%;min-width:0;max-width:100%;margin-left:0;flex-wrap:wrap;align-items:stretch}.filters-actions>*{min-width:0;max-width:100%}}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),select,textarea){background:var(--gruv-surface-deep);border:1px solid var(--gruv-border);color:var(--gruv-fg);padding:.5rem .75rem;font:inherit;font-size:.85rem;line-height:1.25;border-radius:var(--radius-sm);transition:border-color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),textarea){width:100%}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),select,textarea):focus{border-color:var(--gruv-accent)}.input,.add-form select,.filters-form select{width:100%}textarea{min-height:5rem;resize:vertical}.table-card{grid-column:1 / -1}table{width:100%;border-collapse:collapse;font-size:.82rem}th{text-align:left;color:var(--gruv-muted);padding:.4rem .6rem;font-weight:500;border-bottom:1px solid var(--gruv-border-light)}td{padding:.5rem .6rem;border-bottom:1px solid var(--gruv-border-subtle)}tr:last-child td{border-bottom:none}.table-card tbody tr{transition:background-color var(--duration-fast) var(--ease-out)}.table-card tbody tr:hover{background:var(--gruv-border-subtle)}.dashboard-top-row .card{box-shadow:var(--shadow-md)}.stats .card{font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:.15rem .5rem;font-size:.72rem;font-weight:600;border-radius:var(--radius-sm);font-variant-numeric:tabular-nums}.badge.income{background:var(--gruv-income-surface);color:var(--gruv-income)}.badge.expense{background:var(--gruv-expense-surface);border:1px solid var(--gruv-expense);color:var(--gruv-fg-light)}.badge.recurring{background:var(--gruv-accent);color:var(--gruv-on-accent);margin-left:.3rem}.badge.amount-badge{font-size:.82rem;font-variant-numeric:tabular-nums;padding:.2rem .55rem}.badge.badge-r{font-size:.65rem;padding:.1rem .35rem;margin-left:.3rem;background:var(--gruv-accent);color:var(--gruv-on-accent);cursor:default}.badge.badge-adj{font-size:.65rem;padding:.1rem .35rem;margin-left:.3rem;background:var(--gruv-surface-deep);color:var(--gruv-light-text);cursor:default}.tag-chip{display:inline-flex;align-items:center;gap:.2rem;background:var(--gruv-dark-deep);color:var(--gruv-light-text);padding:.1rem .4rem;font-size:.68rem;margin:.1rem .15rem .1rem 0;border-radius:var(--radius-sm)}.tag-remove{background:none;border:none;color:var(--gruv-fg-light);cursor:pointer;font-size:.65rem;padding:0;line-height:1}.tag-remove:hover{color:var(--gruv-fg-light)}.tag-cell{display:flex;flex-wrap:wrap;align-items:center;gap:.1rem}.tag-input{background:var(--gruv-surface-deep);border:1px solid var(--gruv-accent);color:var(--gruv-fg);padding:.1rem .35rem;font-size:.68rem;width:90px;border-radius:var(--radius-sm)}.amount.income{color:var(--gruv-income);font-variant-numeric:tabular-nums}.amount.expense{color:var(--gruv-fg-light);font-variant-numeric:tabular-nums}.form-error{color:var(--gruv-fg-light);font-size:.75rem;margin-top:.4rem;display:none}.empty{color:var(--gruv-muted);font-size:.82rem;padding:1rem .6rem}.table-card>.empty{display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;padding:1rem;text-align:left}.table-card>.empty .btn{width:auto;max-width:100%}.tabs{display:flex;gap:0;margin-bottom:1rem;border-bottom:2px solid var(--gruv-border-light)}.tab{background:none;border:none;padding:.5rem 1.25rem;font-size:.82rem;font-weight:600;color:var(--gruv-muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color var(--duration-fast) var(--ease-out),border-bottom-color var(--duration-normal) var(--ease-out)}.tab:hover{color:var(--gruv-fg)}.tab.active{color:var(--gruv-accent);border-bottom-color:var(--gruv-accent)}.budget-empty-toggle{display:block;background:none;border:none;padding:0;margin:-.5rem 0 .75rem;font-size:.78rem;color:var(--gruv-muted);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.budget-empty-toggle:hover{color:var(--gruv-accent)}.tx-status-cell{display:inline-flex;align-items:center;gap:6px}.tx-status-approval{color:var(--gruv-accent);font-size:.7rem;line-height:1}.tx-account-balance-header{display:flex;align-items:center;gap:.6rem;padding:.6rem 1rem;margin-bottom:.75rem;background:var(--gruv-surface);border-radius:var(--radius-md);font-size:.85rem;color:var(--gruv-muted);flex-wrap:wrap}.tx-account-balance-header strong{color:var(--gruv-fg);font-weight:700}.tx-account-balance-op{color:var(--gruv-muted);font-weight:700}.page{padding:1.5rem 2rem}.navbar{display:flex;align-items:center;justify-content:space-between;padding:var(--safe-area-top) 2rem 0;height:calc(48px + var(--safe-area-top));background:var(--gruv-dark-deep);position:sticky;top:0;z-index:100;box-shadow:var(--shadow-sm)}.navbar-brand{font-size:1.1rem;font-weight:400;color:var(--gruv-light-text);letter-spacing:.06em;font-family:var(--font-display)}.navbar-links{display:flex;gap:.25rem}.navbar-actions{display:flex;align-items:center;gap:.25rem}.navbar-toggle-amounts{display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--gruv-dim);cursor:pointer;padding:.35rem;border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease-out)}.navbar-toggle-amounts:hover{color:var(--gruv-light-text)}.navbar-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:.4rem}.navbar-hamburger span{display:block;width:22px;height:2px;background:var(--gruv-dim)}.navbar-hamburger:hover span{background:var(--gruv-light-text)}.navbar-mobile-menu{display:none}.nav-link{color:var(--gruv-muted);text-decoration:none;font-size:.85rem;padding:.35rem .75rem;border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.nav-link:hover{color:var(--gruv-light-text);background:var(--gruv-hover)}.nav-link.active{color:var(--gruv-light-text);background:var(--gruv-dark)}@media(max-width:640px){.grid{padding:1rem}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.card .value{font-size:1.4rem}.budgets-card{grid-column:span 1}.add-form{grid-template-columns:1fr}.budget-meta{flex-direction:column;gap:.2rem}}@media(max-width:900px){.navbar-links,.navbar-hamburger,.navbar-mobile-menu{display:none}.sidebar{display:none!important}.app-layout{flex-direction:column}.app-main{padding-bottom:calc(60px + env(safe-area-inset-bottom,0px))}.budget-page{grid-template-columns:1fr}.budget-table{font-size:.78rem}}.mobile-bottom-nav{display:none}@media(max-width:900px){.mobile-bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;height:calc(60px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--gruv-dark-deep);border-top:1px solid var(--gruv-dark);z-index:100;justify-content:stretch;align-items:center}.mobile-bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1 1 0;gap:2px;color:var(--gruv-muted);text-decoration:none;font-size:.65rem;padding:.35rem .25rem;border-radius:var(--radius-sm);min-width:0;max-width:100%;min-height:44px;overflow:visible;transition:color var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent}.mobile-bottom-nav-item:hover{color:var(--gruv-light-text)}.mobile-bottom-nav-item.active{color:var(--gruv-accent)}.mobile-bottom-nav-icon{display:flex;align-items:center;justify-content:center}.mobile-bottom-nav-label{display:block;width:100%;min-width:0;font-weight:500;white-space:normal;overflow:visible;overflow-wrap:anywhere;line-height:1.1;text-align:center}}.budget-page{display:grid;grid-template-columns:1fr 280px;gap:1rem;padding:1.5rem 2rem;align-items:start}.budget-navbar{grid-column:1 / -1;display:flex;align-items:center;gap:1rem;background:var(--gruv-surface);padding:.75rem 1.25rem;border-radius:var(--radius-md);position:sticky;top:0;z-index:10;box-shadow:var(--shadow-sm);border:1px solid var(--gruv-border-light)}@media(max-width:640px){.budget-navbar{flex-direction:column;align-items:stretch}.budget-navbar-col{flex-wrap:wrap}.budget-navbar-col:last-child{margin-left:0}}.budget-navbar-col{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.budget-sidebar-rta{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .9rem;border-radius:var(--radius-sm);font-weight:700;font-size:.9rem;margin-bottom:1rem}.budget-sidebar-rta.positive{background:var(--gruv-income);color:var(--gruv-light-text)}.budget-sidebar-rta.negative{background:var(--gruv-expense);color:var(--gruv-light-text)}.budget-sidebar-rta.zero{background:var(--gruv-muted);color:var(--gruv-light-text)}.budget-sidebar-rta .rta-label{font-size:.75rem;opacity:.85}.budget-sidebar-rta .rta-amount{font-size:1.15rem}.future-assignments-panel{margin:-.35rem 0 1rem;border:1px solid var(--gruv-border-light);border-radius:var(--radius-sm);overflow:hidden}.future-assignments-toggle{width:100%;min-height:44px;display:flex;justify-content:space-between;align-items:center;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--gruv-fg);padding:.55rem .7rem;font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;text-align:left}.future-assignments-toggle:hover{background:var(--gruv-hover);color:var(--gruv-fg-light)}.future-assignments-toggle:focus-visible{outline:2px solid var(--gruv-focus);outline-offset:-2px;background:var(--gruv-hover)}.future-assignments-list{padding:0 .7rem .35rem}.budget-navbar-income{display:flex;align-items:center;gap:.5rem;padding:.35rem .75rem;background:var(--gruv-income);color:var(--gruv-on-status);border-radius:var(--radius-sm);font-weight:700;white-space:nowrap}.budget-navbar-income-label{font-size:.75rem;opacity:.85}.budget-navbar-income-amount{font-size:1.1rem}.budget-income-card{background:var(--gruv-surface);border:1px solid var(--gruv-border-light);border-radius:var(--radius-md);padding:1rem 1.25rem;margin-bottom:.75rem;box-shadow:var(--shadow-sm)}.budget-income-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.budget-income-card>summary{list-style:none;cursor:pointer;margin-bottom:0}.budget-income-card>summary::-webkit-details-marker{display:none}.budget-income-card>summary:focus-visible{outline:2px solid var(--gruv-focus);outline-offset:2px;border-radius:var(--radius-sm)}.budget-income-card-label{font-size:.9rem;color:var(--gruv-muted)}.budget-income-card-amount{font-size:1.4rem;font-weight:700;color:var(--gruv-income)}.budget-income-card-amount{display:inline-flex;align-items:center;gap:.35rem}.budget-income-disclosure-icon{transition:transform var(--duration-fast) var(--ease-out)}.budget-income-card[open]>summary{margin-bottom:.5rem}.budget-income-card[open] .budget-income-disclosure-icon{transform:rotate(180deg)}.budget-income-table{width:100%;border-collapse:collapse}.budget-income-table th{font-size:var(--text-small);color:var(--gruv-muted);text-align:left;padding:.25rem 0;border-bottom:1px solid var(--gruv-border-light)}.budget-income-table td{padding:.3rem 0;font-size:.85rem}.budget-income-table td.income-amount{text-align:right;color:var(--gruv-income);font-weight:600}.budget-left{display:flex;flex-direction:column;gap:1rem;min-width:0}.budget-main{background:var(--gruv-surface);padding:1.25rem;overflow-x:auto;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--gruv-border-light)}@media(max-width:640px){.budget-page{grid-template-columns:1fr;padding:.5rem}.budget-sidebar-panel{order:0}.budget-main{padding:.75rem}.budget-table th,.budget-table td{padding:.25rem .35rem}.rta-amount{font-size:1.1rem}.budget-sidebar-panel{padding:.75rem}}.budget-header{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.budget-header-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.budget-month-nav{display:flex;align-items:center;gap:.25rem}.budget-month-label{color:var(--gruv-fg);font-weight:700;min-width:8ch;text-align:center}.budget-header-tabs{display:flex;gap:.5rem}.rta-banner{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;margin-bottom:1rem;font-weight:700}.rta-banner.positive{background:var(--gruv-income);color:var(--gruv-light-text)}.rta-banner.negative{background:var(--gruv-expense);color:var(--gruv-light-text)}.rta-banner.zero{background:var(--gruv-muted);color:var(--gruv-light-text)}.rta-amount{font-size:1.4rem}.budget-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-top:.75rem;min-width:420px}.budget-table th{text-align:left;color:var(--gruv-muted);padding:.4rem .6rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--gruv-border-light)}.budget-table th:not(:first-child),.budget-table td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.budget-table td{padding:.35rem .6rem;border-bottom:1px solid var(--gruv-border-subtle)}.budget-group-row{background:var(--gruv-surface-deep);font-weight:700;cursor:pointer}.budget-group-row.drag-over{background:var(--gruv-bg-hard);outline:2px solid var(--gruv-accent);outline-offset:-2px}.drag-handle{opacity:0;cursor:grab;margin-right:.4rem;-webkit-user-select:none;user-select:none;font-size:.9em;transition:opacity .15s}.budget-category-row:hover .drag-handle{opacity:.5}.budget-category-row .drag-handle:hover{opacity:.8}.budget-category-row[draggable=true]{cursor:grabbing!important}.budget-category-row[draggable=true] .drag-handle{opacity:.8!important;cursor:grabbing!important}.budget-group-row td{padding:.4rem .6rem}.avail-positive{color:var(--gruv-income);font-weight:600}.avail-zero{color:var(--gruv-muted)}.avail-negative{color:var(--gruv-fg-light);font-weight:600}.budget-edit-input{width:10rem;min-height:var(--control-height-sm);text-align:right;background:var(--gruv-surface-deep);border:1px solid var(--gruv-focus);padding:.5rem .65rem;font-size:var(--text-body);border-radius:var(--radius-sm)}.budget-category-row{cursor:pointer;transition:background .1s}.budget-category-row:hover{background:var(--gruv-border-subtle)}.budget-category-row.selected{background:var(--gruv-surface-deep)}.avail-underfunded{background:var(--gruv-warning);color:var(--gruv-on-status);padding:1px 6px;border-radius:var(--radius-sm);font-size:var(--text-small)}.sidebar-category-header{display:flex;justify-content:space-between;align-items:center}.sidebar-category-close{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:.5rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--gruv-muted);cursor:pointer;font:inherit;font-size:1.2em;line-height:1}.sidebar-category-close:hover{background:var(--gruv-hover);color:var(--gruv-fg-light)}.sidebar-target-form{display:flex;flex-direction:column;gap:.5rem}.sidebar-target-form select,.sidebar-target-form input{width:100%;padding:4px 6px;font-size:.85em}.auto-assign-section{margin-top:.75rem}.auto-assign-header{width:100%;min-height:44px;display:flex;align-items:center;gap:.3rem;padding:.5rem .65rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--gruv-fg);cursor:pointer;font:inherit;font-weight:600;text-align:left}.auto-assign-header:hover{background:var(--gruv-hover);border-color:var(--gruv-border);color:var(--gruv-fg-light)}.auto-assign-options{margin-top:.5rem}.auto-assign-option{width:100%;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .65rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--gruv-accent);cursor:pointer;font:inherit;font-size:.82rem;text-align:left}.auto-assign-option:hover{background:var(--gruv-hover);border-color:var(--gruv-border);color:var(--gruv-accent-deep);text-decoration:none}.auto-assign-separator{border-top:1px solid var(--gruv-border-light);margin:.4rem 0}.budget-sidebar-panel{background:var(--gruv-surface);padding:1.25rem;border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--gruv-border-light)}.sidebar-stat-row{display:flex;justify-content:space-between;font-size:.82rem;padding:.35rem 0;border-bottom:1px solid var(--gruv-border-light);font-variant-numeric:tabular-nums}.app-layout{display:flex;min-height:calc(100vh - 48px - var(--safe-area-top))}.app-main{flex:1;min-width:0}.sidebar{width:260px;flex-shrink:0;background:var(--gruv-dark-deep);color:var(--gruv-light-text);display:flex;flex-direction:column;position:sticky;top:48px;height:calc(100vh - 48px);overflow-y:auto}.sidebar.sidebar-collapsed{width:48px;overflow:hidden}.sidebar.sidebar-collapsed .sidebar-nav,.sidebar.sidebar-collapsed .sidebar-accounts{opacity:0;pointer-events:none}.sidebar-nav{border-bottom:1px solid var(--gruv-dark);padding:.5rem 0}.sidebar-link{display:block;color:var(--gruv-muted);text-decoration:none;font-size:.85rem;padding:.4rem 1rem;white-space:nowrap;border-radius:0;transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.sidebar-link:hover{color:var(--gruv-light-text);background:var(--gruv-hover)}.sidebar-link.active{color:var(--gruv-light-text);background:var(--gruv-dark)}.sidebar-accounts{flex:1;padding:.5rem 0}.sidebar-group-header{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;color:var(--gruv-muted);font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:.5rem 1rem .3rem;cursor:pointer;text-align:left;transition:color var(--duration-fast) var(--ease-out)}.sidebar-group-header:hover{color:var(--gruv-light-text)}.sidebar-group-right{display:flex;align-items:center;gap:.5rem}.sidebar-group-total{color:var(--gruv-muted);font-size:.75rem;font-weight:400;text-transform:none;letter-spacing:0;font-variant-numeric:tabular-nums}.sidebar-chevron{font-size:.65rem;color:var(--gruv-fg-light);transition:transform var(--duration-fast) var(--ease-out)}.sidebar-account{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;color:var(--gruv-muted);text-decoration:none;font-size:.8rem;padding:.3rem 1rem .3rem 1.5rem;cursor:pointer;text-align:left;white-space:nowrap;transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.sidebar-account:hover,.sidebar-account.active{background:var(--gruv-dark);color:var(--gruv-light-text)}.sidebar-account-name{overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.sidebar-account-balance{font-size:.75rem;color:var(--gruv-muted);margin-left:.5rem;flex-shrink:0;font-variant-numeric:tabular-nums}.sidebar-account-balance.negative{color:var(--gruv-expense)}.sidebar-account:hover .sidebar-account-balance.negative,.sidebar-account.active .sidebar-account-balance.negative{color:var(--gruv-fg-light)}.sidebar-section-title{margin:.9rem 1rem .35rem;padding:0;color:var(--gruv-fg-light);font-size:.7rem;font-weight:700;line-height:1.25;letter-spacing:.08em;text-transform:uppercase}.sidebar-toggle{display:flex;align-items:center;justify-content:center;width:100%;background:none;border:none;border-top:1px solid var(--gruv-dark);color:var(--gruv-fg-light);font-size:1rem;padding:.6rem;cursor:pointer;flex-shrink:0;transition:color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out)}.sidebar-toggle:hover{color:var(--gruv-dim);background:var(--gruv-dark)}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes modal-panel-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-overlay{position:fixed;inset:0;background:var(--gruv-overlay);z-index:200;display:flex;align-items:center;justify-content:center;animation:modal-overlay-in var(--duration-normal) var(--ease-out)}.modal{background:var(--gruv-surface);width:90%;max-width:480px;max-height:90vh;overflow-y:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--gruv-border-light);animation:modal-panel-in var(--duration-normal) var(--ease-out)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem .5rem}.modal-header h2{font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gruv-muted);margin:0}.modal-close{background:none;border:none;color:var(--gruv-muted);cursor:pointer;font-size:1rem;padding:.2rem .4rem;line-height:1;transition:color var(--duration-fast) var(--ease-out)}.modal-close:hover{color:var(--gruv-fg)}.modal-body{padding:.5rem 1.25rem 1.25rem}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-header h2{margin:0}@media(max-width:640px){.filters-actions{flex:1 1 100%;width:100%;min-width:0;margin-left:0;flex-wrap:wrap;align-items:stretch}.filters-actions>*{min-width:0;max-width:100%;min-height:44px}.filters-actions>.filters-toggle{flex:1 1 100%;text-align:left}.filters-actions>.btn-secondary,.filters-actions>select,.filters-actions>.filter-checkbox{flex:1 1 calc(50% - .25rem)}.filters-actions>.btn-secondary{display:inline-flex;align-items:center;justify-content:center}.filters-actions>.filter-checkbox{display:inline-flex;align-items:center;gap:.4rem}.filters-actions>.filter-checkbox input{width:1.25rem;min-width:1.25rem;height:1.25rem;flex:0 0 auto}.transactions-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.transactions-stats .card{min-width:0;padding:.65rem .5rem}.transactions-stats .card .label{margin-bottom:.25rem;font-size:.68rem;white-space:nowrap}.transactions-stats .card .value{font-size:1.1rem;line-height:1.2;overflow-wrap:anywhere}.transactions-table-card .section-header{flex-wrap:wrap;gap:.5rem}.transactions-table-card .section-header h2{min-width:0}.transactions-table-card .section-header .btn{flex:1 1 100%;width:100%;min-height:44px;max-width:100%;white-space:nowrap}.modal{width:95%;max-height:90dvh}}.span-full{grid-column:1 / -1}.link-plain{text-decoration:none;color:inherit}.text-muted{color:var(--gruv-muted)}.text-error{color:var(--gruv-fg-light)}.text-income{color:var(--gruv-income)}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fade-up var(--duration-slow) var(--ease-out) both}@keyframes progress-fill{0%{width:0}}.progress-fill,.progress-bg .progress-fill{animation:progress-fill var(--duration-slow) var(--ease-out)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:var(--gruv-surface-deep);border-radius:var(--radius-sm);min-height:1em;min-width:3em}.skeleton-line{height:12px;margin-bottom:8px;border-radius:var(--radius-sm)}.skeleton-line.w-50{width:50%}.skeleton-line.w-75{width:75%}.skeleton-line.w-100{width:100%}.skeleton-card{height:80px;border-radius:var(--radius-md);margin-bottom:8px}.skeleton-stat{height:60px;border-radius:var(--radius-md)}.loading-skeleton{min-width:0;width:100%}.loading-skeleton-shape{min-width:0}.loading-skeleton-line-shape,.loading-skeleton-chart-shape{padding:1rem;border:1px solid var(--gruv-border-light);border-radius:var(--radius-md);background:var(--gruv-surface)}.loading-skeleton-line-shape .skeleton-line:last-child,.loading-skeleton-chart-shape .skeleton-line{margin-bottom:0}.loading-skeleton-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10rem),1fr));gap:1rem}.loading-skeleton-card-grid .skeleton-stat{min-width:0;margin:0;border:1px solid var(--gruv-border-light);background:var(--gruv-surface)}.loading-skeleton-chart-shape{min-height:14rem}.loading-skeleton-chart-area{display:flex;align-items:flex-end;gap:.75rem;height:9rem;margin-top:1rem;padding:.75rem .25rem 0;border-bottom:1px solid var(--gruv-border)}.loading-skeleton-chart-bar{flex:1 1 0;min-width:0;height:45%;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--gruv-surface-deep)}.loading-skeleton-chart-bar:nth-child(2){height:75%}.loading-skeleton-chart-bar:nth-child(3){height:55%}.loading-skeleton-chart-bar:nth-child(4){height:90%}.loading-skeleton-chart-bar:nth-child(5){height:65%}.loading-skeleton-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.accounts-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start;min-width:0;max-width:100%}@media(max-width:1200px){.accounts-layout{grid-template-columns:1fr}}.sidebar-segmented{display:flex;border:1px solid var(--gruv-border);border-radius:4px;overflow:hidden}.sidebar-segmented button{padding:3px 10px;font-size:11px;border:none;background:transparent;color:var(--gruv-muted);cursor:pointer}.sidebar-segmented button.active{background:var(--gruv-accent);color:var(--gruv-on-accent)}@media(max-width:640px){.accounts-layout>:last-child{order:-1}}@media(max-width:640px){.accounts-page .accounts-layout .account-row{flex-wrap:wrap;gap:8px}.accounts-page .accounts-layout .account-row-sparkline{display:none}.accounts-page .accounts-layout .account-row-balance{min-width:auto;flex:1}.accounts-page .accounts-layout .account-row-actions{flex:0 0 100%;width:100%;max-width:100%;min-width:0;flex-wrap:wrap}.accounts-page .accounts-layout .account-row-actions>button,.accounts-page .accounts-layout .account-row-actions>.row-actions-menu{display:inline-flex;align-items:center;justify-content:center;flex:1 1 44px;min-width:44px;min-height:44px;max-width:100%;white-space:normal;overflow-wrap:anywhere}.accounts-page .accounts-layout .account-row-actions>.row-actions-menu>button{min-height:44px}.accounts-page{padding:.75rem!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}body.hide-amounts .amount,body.hide-amounts .value,body.hide-amounts .nums,body.hide-amounts .sidebar-stat-row span:last-child,body.hide-amounts .sidebar-account-balance,body.hide-amounts .sidebar-group-total,body.hide-amounts .budget-table td:nth-child(n+3),body.hide-amounts .budget-income-card-amount,body.hide-amounts .rta-amount,body.hide-amounts .badge.amount-badge,body.hide-amounts .account-row-balance,body.hide-amounts .account-group-total,body.hide-amounts .account-group-delta,body.hide-amounts .sidebar-credit-available,body.hide-amounts .budget-rta-amount,body.hide-amounts .budget-amount-button,body.hide-amounts .budget-editable-amount,body.hide-amounts .budget-navbar-income-amount,body.hide-amounts .auto-assign-option>span:last-child,body.hide-amounts .future-assignments-toggle>span:last-child{visibility:hidden;position:relative;-webkit-user-select:none;user-select:none}body.hide-amounts .amount:after,body.hide-amounts .value:after,body.hide-amounts .nums:after,body.hide-amounts .sidebar-stat-row span:last-child:after,body.hide-amounts .sidebar-account-balance:after,body.hide-amounts .sidebar-group-total:after,body.hide-amounts .budget-table td:nth-child(n+3):after,body.hide-amounts .budget-income-card-amount:after,body.hide-amounts .rta-amount:after,body.hide-amounts .badge.amount-badge:after,body.hide-amounts .account-row-balance:after,body.hide-amounts .account-group-total:after,body.hide-amounts .account-group-delta:after,body.hide-amounts .sidebar-credit-available:after,body.hide-amounts .budget-rta-amount:after,body.hide-amounts .budget-amount-button:after,body.hide-amounts .budget-editable-amount:after,body.hide-amounts .budget-navbar-income-amount:after,body.hide-amounts .auto-assign-option>span:last-child:after,body.hide-amounts .future-assignments-toggle>span:last-child:after{content:"***";visibility:visible;position:absolute;left:0;top:0}body.hide-amounts .budget-table td:nth-child(n+3):after{width:100%;padding:inherit}.budget-page{grid-template-columns:minmax(0,1fr) minmax(15rem,18rem);min-width:0;background:var(--gruv-bg)}:where(.budget-page *){min-width:0}.budget-page>.tabs,.budget-navbar,.budget-main,.budget-sidebar-panel,.budget-income-card{border:1px solid var(--gruv-border-subtle);border-radius:var(--radius-md);box-shadow:none}.budget-page>.tabs{width:100%;margin-bottom:0;padding:.25rem;background:var(--gruv-surface);border-bottom:1px solid var(--gruv-border)}.budget-navbar{background:var(--gruv-surface);padding:.5rem .75rem;top:calc(48px + var(--safe-area-top));box-shadow:none}.budget-navbar-col,.budget-header-row,.budget-month-nav,.budget-header-tabs,.budget-empty-actions{min-width:0}.budget-month-label{color:var(--gruv-fg);font-weight:700}.budget-main{background:var(--gruv-surface);padding:1rem;min-width:0;max-width:100%;overflow:visible;overscroll-behavior-inline:contain;scrollbar-color:var(--gruv-border) var(--gruv-surface)}.budget-table-frame{position:relative;min-width:0;max-width:100%;margin-top:.5rem;padding:.25rem;border:1px solid var(--gruv-border-subtle);border-radius:var(--radius-sm);background:var(--gruv-surface)}.budget-table-mobile-hint{display:none}.budget-table-frame:before,.budget-table-frame:after{content:"";position:absolute;z-index:2;inset-block:1px;width:1.5rem;pointer-events:none;opacity:0;transition:opacity var(--duration-normal) var(--ease-out)}.budget-table-frame:before{left:1px;background:linear-gradient(to right,var(--gruv-surface),transparent)}.budget-table-frame:after{right:1px;background:linear-gradient(to left,var(--gruv-surface),transparent)}.budget-table-frame.has-more-left:before,.budget-table-frame.has-more-right:after{opacity:1}.budget-table-scroll{min-width:0;max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scroll-padding-inline:.75rem;scrollbar-width:thin;scrollbar-color:var(--gruv-border) var(--gruv-surface-deep)}.budget-table-scroll::-webkit-scrollbar{height:.55rem}.budget-table-scroll::-webkit-scrollbar-track{background:var(--gruv-surface-deep)}.budget-table-scroll::-webkit-scrollbar-thumb{background:var(--gruv-border);border:2px solid var(--gruv-surface-deep);border-radius:var(--radius-sm)}.budget-table-scroll::-webkit-scrollbar-thumb:hover{background:var(--gruv-focus)}.budget-table{width:100%;min-width:63rem;margin-top:0;color:var(--gruv-fg);font-size:var(--text-small);line-height:1.4;table-layout:fixed}.budget-table-col-select{width:3.5rem}.budget-table-col-category{width:18rem}.budget-table-col-amount{width:10.25rem}.budget-table col.budget-table-col-amount:last-child{width:11rem}.budget-table th{color:var(--gruv-muted);padding:.55rem .65rem;font-size:var(--text-small);line-height:1.25;border-bottom:1px solid var(--gruv-border)}.budget-table td{padding:.5rem .65rem;border-bottom:1px solid var(--gruv-border-subtle);overflow:visible}.budget-table th:last-child,.budget-table td:last-child{min-width:11rem;white-space:nowrap}.budget-table td:last-child{font-weight:600}.budget-table th:first-child,.budget-table td:first-child{text-align:center}.budget-table-select-control{display:inline-flex;align-items:center;justify-content:center;width:44px;min-width:44px;height:44px;margin:-.5rem 0;cursor:pointer}.budget-table-select-control input{margin:0}.budget-table th:nth-child(2),.budget-table td:nth-child(2){text-align:left}.budget-table th:nth-child(n+3),.budget-table td:nth-child(n+3){white-space:nowrap}.budget-group-row{background:var(--gruv-surface-deep);color:var(--gruv-fg-light);border-top:1px solid var(--gruv-border)}.budget-group-row td{padding-top:.65rem;padding-bottom:.65rem}.budget-group-row.drag-over{background:var(--gruv-hover);outline-color:var(--gruv-accent)}.budget-category-row:hover,.budget-category-row.selected{background:var(--gruv-hover)}.budget-category-row .avail-positive,.budget-category-row .avail-negative,.budget-category-row .avail-zero{font-weight:600}.budget-income-card,.budget-sidebar-panel{background:var(--gruv-surface);padding:1rem}.budget-income-card-label{color:var(--gruv-muted)}.budget-income-card-amount,.budget-income-table td.income-amount{color:var(--gruv-income)}.budget-income-table th{color:var(--gruv-muted);border-bottom-color:var(--gruv-border-subtle)}.budget-rta-summary,.budget-sidebar-rta,.rta-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-width:0;padding:.9rem 1rem;margin-bottom:.75rem;border:1px solid var(--gruv-border);border-radius:var(--radius-md);background:var(--gruv-surface-deep);color:var(--gruv-fg);box-shadow:none}.budget-rta-summary.positive,.budget-sidebar-rta.positive,.rta-banner.positive{background:var(--gruv-income-surface);border-color:var(--gruv-income)}.budget-rta-summary.negative,.budget-sidebar-rta.negative,.rta-banner.negative{background:var(--gruv-expense-surface);border-color:var(--gruv-expense)}.budget-rta-summary.zero,.budget-sidebar-rta.zero,.rta-banner.zero{background:var(--gruv-surface-deep);border-color:var(--gruv-border)}.budget-rta-label,.budget-sidebar-rta .rta-label{color:var(--gruv-muted);font-size:var(--text-small);font-weight:700;letter-spacing:.06em;text-transform:uppercase}.budget-rta-amount,.budget-sidebar-rta .rta-amount,.rta-banner .rta-amount{color:var(--gruv-fg-light);font-size:clamp(1.25rem,2vw,1.75rem);font-variant-numeric:tabular-nums;font-weight:800}.budget-rta-summary.positive .budget-rta-amount,.budget-sidebar-rta.positive .rta-amount,.rta-banner.positive .rta-amount{color:var(--gruv-income)}.budget-rta-summary.negative .budget-rta-amount,.budget-sidebar-rta.negative .rta-amount,.rta-banner.negative .rta-amount{color:var(--gruv-expense)}.budget-state,.budget-empty-state{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem;min-width:0;padding:1rem;border:1px solid var(--gruv-border-subtle);border-radius:var(--radius-md);background:var(--gruv-bg-hard);color:var(--gruv-muted)}.budget-empty-state{align-items:center;justify-content:center;min-height:9rem;text-align:center}.budget-empty-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;width:100%}.budget-filter-select{display:none}.budget-empty-guidance.budget-empty-guidance-compact{display:flex;align-items:center;justify-content:space-between;gap:.75rem;max-width:none;padding:.75rem 0;border-block-start:1px solid var(--gruv-border-subtle)}.budget-empty-guidance.budget-empty-guidance-compact>span{display:flex;align-items:center;gap:.4rem;min-width:0}.budget-empty-guidance.budget-empty-guidance-compact>.btn-secondary{flex:0 0 auto}.budget-empty-toggle{min-height:36px;padding:.35rem .5rem;color:var(--gruv-muted);border-radius:var(--radius-sm);text-decoration:none}.budget-empty-toggle:hover{color:var(--gruv-fg);background:var(--gruv-hover)}.budget-group-toggle,.budget-category-button,.budget-amount-button{min-width:0;min-height:36px;font:inherit;cursor:pointer}.budget-group-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem .65rem;border:0;background:transparent;color:var(--gruv-fg-light);font-weight:700;text-align:left}.budget-category-button,.budget-amount-button{border:1px solid transparent;background:transparent;color:var(--gruv-fg)}.budget-category-button{width:100%;padding:.35rem .5rem;text-align:left;overflow-wrap:anywhere;white-space:normal}.budget-amount-button{padding:.35rem .5rem;color:var(--gruv-fg-light);font-variant-numeric:tabular-nums;text-align:right}.budget-group-toggle:hover,.budget-category-button:hover,.budget-amount-button:hover{background:var(--gruv-hover);border-color:var(--gruv-border)}.budget-page button:disabled{cursor:not-allowed;opacity:1}@media(max-width:900px){.budget-page{grid-template-columns:minmax(0,1fr);gap:.75rem;padding:.75rem}.budget-page button{min-height:44px}.budget-navbar{position:static;padding:.5rem}.budget-navbar-col{flex:1 1 100%;gap:.4rem}.budget-navbar-col .btn{flex:1 1 8rem}.budget-month-nav{justify-content:space-between;width:100%}.budget-main{padding:.75rem}.budget-main>.tabs{display:none}.budget-filter-select{display:grid;gap:.35rem;color:var(--gruv-muted);font-size:var(--text-caption);font-weight:700}.budget-filter-select select{width:100%;min-height:44px;padding:.55rem 2.25rem .55rem .75rem;border:1px solid var(--gruv-border);border-radius:var(--radius-sm);background:var(--gruv-bg-hard);color:var(--gruv-fg);font:inherit}.budget-empty-guidance-compact{flex-wrap:wrap}.budget-empty-guidance-compact>span{flex:1 1 13rem}.budget-table-scroll{width:100%}.budget-rta-summary,.budget-sidebar-rta,.rta-banner{align-items:flex-start;flex-direction:column;gap:.25rem}.budget-empty-actions>*{flex:1 1 9rem}.app-main{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}.mobile-bottom-nav{min-height:64px;height:calc(64px + env(safe-area-inset-bottom,0px));background:var(--gruv-dark-deep);border-top-color:var(--gruv-border)}.mobile-bottom-nav-label{color:inherit;font-size:.75rem}}.budget-navbar .budget-rta-summary{flex:0 1 auto;max-width:22rem;margin-left:auto;margin-bottom:0;padding:.55rem .8rem}.budget-page>.budget-state,.budget-page>.budget-empty-state{grid-column:1 / -1;justify-self:stretch;width:100%}.budget-state .btn,.budget-empty-state .btn,.budget-state button.btn,.budget-empty-state button.btn{width:auto}@media(max-width:900px){.budget-navbar .budget-rta-summary{width:100%;max-width:none;margin-left:0}}.reports-page{min-width:0;grid-template-columns:minmax(0,1fr)}.reports-page .reports-tabs{display:flex;align-items:stretch;gap:.25rem;min-width:0;margin-bottom:0;padding:.25rem;background:var(--gruv-surface);border:1px solid var(--gruv-border);border-radius:var(--radius-md)}.reports-page .reports-tabs .tab{flex:0 0 auto;min-height:44px;white-space:nowrap}.reports-page .report-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;min-width:0}.reports-page .report-toolbar h2{margin-bottom:.25rem}.reports-page .report-tabs{display:flex;align-items:center;justify-content:flex-end;gap:.35rem;min-width:0;flex-wrap:wrap}.reports-page .report-tabs>.tab,.reports-page .report-tabs>.btn-secondary{min-height:44px}.reports-page .report-subtitle{color:var(--gruv-muted);font-size:.78rem;line-height:1.4}.reports-page .report-breakdown-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:1.25rem;min-width:0;margin-top:1rem}.reports-page .report-breakdown-grid>*{min-width:0}.reports-page .report-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;min-width:0;margin-top:1.25rem}.reports-page .report-metrics>div{display:flex;flex-direction:column;gap:.4rem;min-width:0;padding:.7rem;background:var(--gruv-bg-hard);border:1px solid var(--gruv-border);border-radius:var(--radius-sm)}.reports-page .report-metrics span,.reports-page .report-metrics strong{display:block;min-width:0}.reports-page .report-metrics span{color:var(--gruv-muted);font-size:.72rem;line-height:1.3;letter-spacing:.05em;text-transform:uppercase}.reports-page .report-metrics strong{color:var(--gruv-fg-light);font-size:.95rem;line-height:1.35;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}@media(max-width:640px){.reports-page .reports-tabs{overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-color:var(--gruv-border) var(--gruv-surface)}.reports-page .report-toolbar{flex-direction:column;align-items:stretch;gap:.75rem}.reports-page .report-tabs{justify-content:flex-start;width:100%}.reports-page .report-breakdown-grid{grid-template-columns:minmax(0,1fr);gap:1rem}.reports-page .report-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}}@media(max-width:900px){.budget-page,.container,.grid{padding:1rem;gap:1rem}.accounts-page{padding:1rem!important}.reports-page .reports-tabs{overflow-x:auto;max-width:100%;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-color:var(--gruv-border) var(--gruv-surface)}.app-main .tab,.app-main .btn,.app-main .btn-sm,.app-main .btn-xs,.app-main .btn-danger,.app-main .btn-secondary,.app-main .filters-toggle,.app-main .filters-clear,.app-main input:not([type=checkbox]):not([type=radio]):not(.tag-input),.app-main select,.app-main label.btn-secondary,.app-main .filter-checkbox{min-height:44px}.app-main label.btn-secondary,.app-main .filter-checkbox{display:inline-flex;align-items:center}.app-main label.btn-secondary{justify-content:center}}:root{--control-height: 2.75rem;--control-height-sm: 2.5rem;--control-height-xs: 2.25rem;--text-body: .9375rem;--text-small: .8125rem}:where(button,input,select,textarea){font-family:var(--font-body);line-height:1.35}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),select,textarea){border-color:var(--gruv-border);background:var(--gruv-surface-deep);color:var(--gruv-fg);font-size:var(--text-body)}:where(.app-main input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]):not(.tag-input),.app-main select,.app-main textarea,.app-auth-form input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),.app-auth-form select,.app-auth-form textarea){min-height:var(--control-height)}.tag-input{min-height:0}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),textarea)::placeholder{color:var(--gruv-muted);opacity:1}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),select,textarea):focus{border-color:var(--gruv-focus)}:where(input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),select,textarea):disabled{background:var(--gruv-surface);border-color:var(--gruv-border);color:var(--gruv-muted);cursor:not-allowed;opacity:1}textarea{min-height:5rem}:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs){display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:0;min-height:var(--control-height);padding:.625rem .9rem;border:1px solid transparent;border-radius:var(--radius-sm);font-family:var(--font-body);font-size:.875rem;font-weight:600;line-height:1.2;cursor:pointer;text-align:center;text-decoration:none;white-space:nowrap;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.btn,.btn.btn-sm,.btn.btn-xs{background:var(--gruv-accent);border-color:var(--gruv-accent);color:var(--gruv-on-accent)}.btn{width:100%}:is(.btn-secondary,.btn-sm,.btn-xs){width:auto;background:var(--gruv-surface-deep);border-color:var(--gruv-border);color:var(--gruv-fg)}.btn.btn-sm,.btn.btn-xs{background:var(--gruv-accent);border-color:var(--gruv-accent);color:var(--gruv-on-accent)}.btn-sm{min-height:var(--control-height-sm);padding:.5rem .75rem}.btn-xs{min-height:var(--control-height-xs);padding:.45rem .7rem;font-size:var(--text-small)}.row-actions-menu{position:relative;display:inline-flex}.row-actions-popover{position:fixed;z-index:60;min-width:200px;padding:4px;display:flex;flex-direction:column;gap:2px;background:var(--gruv-surface);border:1px solid var(--gruv-border);border-radius:var(--radius-sm);box-shadow:0 10px 28px #00000080}.row-actions-popover button{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;border:none;border-radius:3px;background:transparent;color:var(--gruv-fg);font-family:var(--font-body);font-size:.8125rem;font-weight:600;line-height:1.2;text-align:left;cursor:pointer}.row-actions-popover button:hover,.row-actions-popover button:focus-visible{background:var(--gruv-hover)}.row-actions-popover button.danger{color:var(--gruv-danger-bright);border-top:1px solid var(--gruv-border-subtle);margin-top:2px;padding-top:12px}.row-actions-popover button.danger:hover,.row-actions-popover button.danger:focus-visible{background:var(--gruv-danger-bright);color:var(--gruv-bg)}.btn:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading),.btn.btn-sm:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading),.btn.btn-xs:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading){background:var(--gruv-fg);border-color:var(--gruv-fg);color:var(--gruv-surface)}:is(.btn-secondary,.btn-sm,.btn-xs):hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading){background:var(--gruv-hover);border-color:var(--gruv-focus);color:var(--gruv-fg)}.btn.btn-sm:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading),.btn.btn-xs:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading){background:var(--gruv-fg);border-color:var(--gruv-fg);color:var(--gruv-surface)}.btn-danger{width:auto;background:var(--gruv-bg);border-color:var(--gruv-border);color:var(--gruv-expense)}.btn-danger:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading){background:var(--gruv-bg);border-color:var(--gruv-expense);color:var(--gruv-expense)}.budget-sidebar-panel [style*=--gruv-expense]{color:var(--gruv-fg-light)!important}.budget-page button[style*=--clr-error]:not(:disabled):not([aria-disabled=true]){background:var(--gruv-bg)!important;border-color:var(--gruv-expense)!important;color:var(--gruv-expense)!important}:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs):active:not(:disabled){transform:translateY(1px)}:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs):disabled,:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs)[aria-disabled=true]{background:var(--gruv-surface);border-color:var(--gruv-border);color:var(--gruv-muted);cursor:not-allowed;opacity:1;transform:none}.budget-page button:disabled,.budget-page button[aria-disabled=true]{opacity:1}:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs)[aria-busy=true],:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs).is-loading,:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs).loading{cursor:progress;opacity:.8;pointer-events:none}:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs)[aria-busy=true]:after,:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs).is-loading:after,:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs).loading:after{content:"…";margin-left:.1rem}:where(.amount,.value,.nums,.budget-table,.budget-income-table,.budget-rta-amount,.budget-editable-amount,.budget-amount-button,.sidebar-stat-row){font-variant-numeric:tabular-nums}.app-layout,.app-main,.budget-page,.app-auth-shell{background:var(--gruv-bg);color:var(--gruv-fg)}.navbar{background:var(--gruv-bg);border-bottom:1px solid var(--gruv-border);box-shadow:none}.sidebar{background:var(--gruv-bg);border-right:1px solid var(--gruv-border)}.sidebar-nav{border-bottom-color:var(--gruv-border)}.mobile-bottom-nav{background:var(--gruv-surface);border-top-color:var(--gruv-border)}.budget-rta-copy{display:flex;flex-direction:column;gap:.2rem;min-width:0}.budget-rta-copy{color:var(--gruv-fg-light);font-size:var(--text-small);line-height:1.45}.budget-rta-label,.budget-sidebar-rta .rta-label{color:var(--gruv-fg-light)}.budget-rta-actions,.budget-reorder-controls{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.5rem;min-width:0}.budget-inline-status{display:inline-flex;align-items:center;max-width:100%;min-height:2.25rem;padding:.45rem .7rem;overflow-wrap:anywhere;border:1px solid var(--gruv-border);border-radius:var(--radius-sm);background:var(--gruv-surface-deep);color:var(--gruv-fg-light);font-size:var(--text-small);line-height:1.35}.budget-inline-status.is-success,.budget-inline-status[data-state=success]{border-color:var(--gruv-income);color:var(--gruv-income)}.budget-inline-status.is-error,.budget-inline-status[data-state=error],.budget-field-error{border-color:var(--gruv-expense);color:var(--gruv-fg-light)}.budget-inline-status.is-warning,.budget-inline-status[data-state=warning]{border-color:var(--gruv-accent);color:var(--gruv-accent)}.budget-field-error{display:block;max-width:60ch;margin-top:.35rem;padding:.5rem .65rem;border:1px solid var(--gruv-expense);border-radius:var(--radius-sm);background:var(--gruv-surface);font-size:var(--text-small);line-height:1.45}.budget-panel-section{min-width:0;padding:.85rem;border:1px solid var(--gruv-border);border-radius:var(--radius-md);background:var(--gruv-surface-deep);color:var(--gruv-fg-light)}.budget-panel-section+.budget-panel-section{margin-top:.75rem}.budget-panel-section-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;min-width:0;margin-bottom:.65rem;font-size:1rem;color:var(--gruv-fg)}.budget-panel-section-header>button{display:flex;align-items:center;justify-content:space-between;gap:.6rem;width:100%;min-width:0;min-height:44px;padding:.5rem .65rem;border:1px solid transparent;border-radius:var(--radius-sm);background:var(--gruv-surface);color:var(--gruv-fg-light);font:inherit;font-weight:700;line-height:1.25;text-align:left;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.budget-panel-section-header>button:hover{background:var(--gruv-hover);border-color:var(--gruv-border)}.budget-panel-section-header>button:focus-visible{outline:2px solid var(--gruv-focus);outline-offset:-2px;box-shadow:0 0 0 4px var(--gruv-focus-contrast)}.budget-panel-section-title{display:inline-flex;align-items:center;gap:.5rem;min-width:0}.budget-panel-section-title>span{min-width:0;overflow-wrap:anywhere}.budget-panel-section-header>button>svg:last-child{flex:0 0 auto;margin-left:auto;color:var(--gruv-fg-light)}.budget-panel-section-header>*,.budget-autoassign-group{min-width:0}.budget-autoassign-group{display:flex;flex-direction:column;gap:.5rem;padding:.7rem;border:1px solid var(--gruv-border);border-radius:var(--radius-sm);background:var(--gruv-surface)}.budget-autoassign-group+.budget-autoassign-group{margin-top:.65rem}.budget-autoassign-group h3{display:flex;align-items:center;gap:.4rem;color:var(--gruv-fg-light);font-size:var(--text-body);line-height:1.3}.budget-autoassign-group p{color:var(--gruv-fg-light);font-size:var(--text-small);line-height:1.45}.budget-autoassign-group.destructive{border-color:var(--gruv-expense);background:var(--gruv-bg)}.budget-autoassign-group.destructive .auto-assign-option{border-color:var(--gruv-expense);color:var(--gruv-fg-light)}.budget-autoassign-group.destructive .auto-assign-option:hover{background:var(--gruv-surface-deep);border-color:var(--gruv-expense);color:var(--gruv-fg-light)}.budget-empty-guidance{max-width:42ch;color:var(--gruv-fg-light);font-size:var(--text-body);line-height:1.5}.budget-category-label{display:flex;align-items:center;gap:.35rem;min-width:0}.budget-category-label .drag-handle{flex:0 0 auto;margin-right:0;color:var(--gruv-fg-light)}.budget-category-label .budget-category-button{flex:1 1 auto;width:auto;min-width:0}.budget-move-form{display:grid;grid-template-columns:minmax(0,1fr);gap:.5rem;min-width:0}.budget-move-form label,.budget-reorder-controls label{color:var(--gruv-fg-light);font-size:var(--text-small);font-weight:600;line-height:1.35}.budget-move-form select,.budget-move-form input,.budget-move-form .budget-editable-amount{width:100%;min-width:0}.budget-move-form .budget-editable-amount,.sidebar-target-form .budget-editable-amount,.budget-sidebar-panel>.notice .budget-editable-amount{min-height:var(--control-height)}.budget-move-form .budget-inline-status,.budget-move-form>.btn-xs{width:100%}.budget-reorder-controls{justify-content:flex-start;align-items:center;margin-top:.35rem;padding-left:1.65rem}.budget-reorder-controls select{flex:1 1 10rem;min-width:8rem;min-height:var(--control-height-xs);padding:.45rem .6rem;font-size:var(--text-small)}.budget-reorder-controls .btn-xs{flex:0 0 auto}.budget-reorder-controls .budget-inline-status{flex:1 1 100%;border-color:var(--gruv-focus);color:var(--gruv-fg-light)}.budget-reorder-controls .budget-inline-status[role=alert]{border-color:var(--gruv-expense);color:var(--gruv-fg-light)}.budget-reorder-controls select[aria-invalid=true]{border-color:var(--gruv-expense)}.budget-category-row[draggable=true]{cursor:grab!important}.budget-category-row[draggable=true]:active{cursor:grabbing!important}.budget-category-row[draggable=true] .drag-handle{opacity:.8!important}.budget-category-row:focus-within,.budget-category-row:hover{background:var(--gruv-hover)}.budget-editable-amount,input.budget-editable-amount,button.budget-editable-amount{display:inline-flex;align-items:center;justify-content:flex-end;min-width:7rem;min-height:var(--control-height-sm);padding:.5rem .65rem;border:1px solid var(--gruv-border);border-radius:var(--radius-sm);background:var(--gruv-surface-deep);color:var(--gruv-fg);font-size:var(--text-body);font-variant-numeric:tabular-nums;text-align:right}.budget-reorder-controls button{min-width:var(--control-height-xs);min-height:var(--control-height-xs)}.app-auth-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(20rem,28rem);align-items:center;gap:clamp(1.5rem,5vw,5rem);width:min(100%,72rem);min-height:100dvh;margin:0 auto;padding:clamp(1.25rem,4vw,3rem)}.app-auth-copy{min-width:0;max-width:42rem}.app-auth-copy h1,.app-auth-copy .page-title{margin:0;color:var(--gruv-fg);font-family:var(--font-display);font-size:clamp(1.6rem,1.15rem + 2vw,2.5rem);line-height:1.15}.app-auth-copy p{max-width:55ch;margin-top:.85rem;color:var(--gruv-muted);font-size:var(--text-body);line-height:1.55}.app-auth-form{width:100%;max-width:28rem;justify-self:end;padding:clamp(1.25rem,3vw,2rem);border:1px solid var(--gruv-border);border-radius:var(--radius-lg);background:var(--gruv-surface)}.app-auth-form>*+*{margin-top:.85rem}.app-auth-help{max-width:42ch;margin-top:.75rem;color:var(--gruv-muted);font-size:var(--text-small);line-height:1.5}.page-title{color:var(--gruv-fg);font-family:var(--font-display);font-size:clamp(1.35rem,1.1rem + 1vw,1.8rem);line-height:1.2}.nav-icon-button{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:var(--control-height);min-width:var(--control-height);min-height:var(--control-height);padding:.5rem;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--gruv-muted);cursor:pointer;line-height:1}.nav-icon-button:hover:not(:disabled){background:var(--gruv-surface-deep);border-color:var(--gruv-border);color:var(--gruv-fg)}.nav-icon-button:disabled,.nav-icon-button[aria-disabled=true]{background:var(--gruv-surface);border-color:var(--gruv-border);color:var(--gruv-muted);cursor:not-allowed;opacity:1}@media(max-width:1100px){.budget-page{grid-template-columns:minmax(0,1fr) minmax(15rem,16rem);gap:.75rem}.budget-main,.budget-sidebar-panel{padding:.875rem}}@media(max-width:900px){.budget-page{grid-template-columns:minmax(0,1fr);gap:.75rem;padding:.75rem}.budget-navbar{position:static;flex-direction:column;align-items:stretch;gap:.75rem}.budget-navbar-col,.budget-navbar-col:last-child{width:100%;margin-left:0}.budget-navbar-col .btn,.budget-navbar-col .btn-sm,.budget-navbar-col .btn-xs{flex:1 1 auto;min-width:0}.budget-navbar .budget-rta-summary{width:100%;max-width:none;margin-left:0}.budget-main,.budget-left,.budget-sidebar-panel{width:100%;min-width:0}.budget-rta-actions{justify-content:flex-start;margin-left:0}.budget-reorder-controls select,.budget-reorder-controls button{min-height:44px}.app-auth-shell{grid-template-columns:minmax(0,1fr);align-items:start;gap:1.25rem;padding:1.25rem}.app-auth-copy,.app-auth-form{max-width:none}.app-auth-form{justify-self:stretch}.app-auth-shell :is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs){min-height:44px}}@media(max-width:640px){.budget-page{gap:.5rem;padding:.5rem}.budget-navbar{padding:.625rem}.budget-navbar-col:first-child{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.budget-navbar-col:first-child .budget-month-nav{grid-column:1 / -1;justify-content:space-between;width:100%}.budget-main,.budget-sidebar-panel{padding:.75rem}.budget-rta-actions,.budget-reorder-controls{width:100%;margin-left:0}.budget-rta-actions>*,.budget-reorder-controls button{flex:1 1 10rem;width:100%}.budget-panel-section-header{align-items:stretch}.budget-reorder-controls{align-items:stretch;flex-direction:column}.budget-table{min-width:63rem}.budget-table th,.budget-table td{padding-inline:.6rem}.app-auth-shell{min-height:100svh;padding:1rem}.app-auth-form{padding:1rem}}@media(prefers-reduced-motion:reduce){:is(.btn,.btn-secondary,.btn-danger,.btn-sm,.btn-xs):active{transform:none!important}}.budget-page>.page-title{grid-column:1 / -1;align-self:start;margin:0 0 .25rem;padding:0}.budget-page>.tabs{grid-column:1 / -1;margin:0}.budget-navbar{display:grid;grid-template-columns:minmax(0,1fr) minmax(18rem,22rem);align-items:center;gap:.75rem 1rem;padding:.75rem 1rem}.budget-navbar>.budget-navbar-col:first-child{display:grid;grid-template-columns:auto minmax(10rem,1fr) auto auto;align-items:center;gap:.5rem .75rem;width:auto;min-width:0;flex:1 1 auto;flex-wrap:nowrap}.budget-navbar .budget-month-nav{display:flex;align-items:center;gap:.25rem;min-width:0;white-space:nowrap}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn){display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:auto;min-width:2.25rem;min-height:2.25rem;padding:.4rem .55rem;border:1px solid var(--gruv-border);border-radius:var(--radius-sm);background:var(--gruv-surface-deep);color:var(--gruv-fg);font:inherit;cursor:pointer}.budget-navbar .budget-month-label{flex:1 1 auto;min-width:8ch;color:var(--gruv-fg-light);font-weight:700;line-height:1.25;text-align:center;white-space:nowrap}.budget-navbar .budget-month-nav>span:not(.budget-month-label){flex:0 1 auto;margin-left:0!important;color:var(--gruv-muted)!important;font-size:var(--text-small)!important;white-space:nowrap}.budget-navbar .budget-shortcuts-hint{display:inline-flex;align-items:center;justify-self:start;min-width:0;min-height:0;max-width:100%;padding:0;overflow:hidden;border:0;border-radius:0;background:transparent;color:var(--gruv-muted);font-size:var(--text-small);line-height:1.35;white-space:nowrap;text-overflow:ellipsis}.budget-navbar .budget-shortcuts-hint kbd{margin:0 .15rem;padding:.08rem .3rem;border:1px solid var(--gruv-border);border-radius:var(--radius-sm);background:var(--gruv-surface-deep);color:var(--gruv-fg);font:inherit;font-size:.75rem;line-height:1.2}.budget-navbar .budget-primary-action{width:auto;min-height:2.25rem;background:var(--gruv-accent);border-color:var(--gruv-accent);color:var(--gruv-on-accent)}.budget-navbar .budget-primary-action:hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading){background:var(--gruv-accent-deep);border-color:var(--gruv-accent-deep);color:var(--gruv-on-accent)}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn),.budget-navbar>.budget-rta-summary :is(.btn-secondary,.btn-xs,.btn-sm){width:auto;background:var(--gruv-surface-deep);border-color:var(--gruv-border);color:var(--gruv-fg)}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn):hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading),.budget-navbar>.budget-rta-summary :is(.btn-secondary,.btn-xs,.btn-sm):hover:not(:disabled):not([aria-busy=true]):not(.is-loading):not(.loading){background:var(--gruv-hover);border-color:var(--gruv-focus);color:var(--gruv-fg-light)}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn,.budget-primary-action):is(:disabled,[aria-disabled=true]),.budget-navbar>.budget-rta-summary :is(.btn-secondary,.btn-xs,.btn-sm):is(:disabled,[aria-disabled=true]){background:var(--gruv-surface);border-color:var(--gruv-border);color:var(--gruv-muted);cursor:not-allowed;transform:none}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn,.budget-primary-action),.budget-navbar>.budget-rta-summary :is(.btn-secondary,.btn-xs,.btn-sm){transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn,.budget-primary-action):focus-visible,.budget-navbar>.budget-rta-summary :is(.btn-secondary,.btn-xs,.btn-sm):focus-visible{outline:2px solid var(--gruv-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--gruv-focus-contrast)}.budget-navbar>.budget-rta-summary{display:grid;grid-column:2;grid-row:1;grid-template-columns:minmax(0,1fr) minmax(8rem,auto);align-items:center;gap:.5rem .75rem;width:100%;max-width:none;margin:0;padding:0 0 0 1rem;border:0;border-inline-start:1px solid var(--gruv-border);border-radius:0;background:transparent}.budget-navbar>.budget-rta-summary.positive{border-inline-start-color:var(--gruv-income)}.budget-navbar>.budget-rta-summary.negative{border-inline-start-color:var(--gruv-expense)}.budget-navbar>.budget-rta-summary.zero{border-inline-start-color:var(--gruv-border)}.budget-navbar>.budget-rta-summary .budget-rta-copy{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:.2rem .6rem;min-width:0}.budget-rta-heading{display:inline-flex;align-items:center;gap:.35rem;min-width:0;max-width:100%}.budget-navbar>.budget-rta-summary .budget-rta-amount{font-size:1.2rem}.budget-navbar>.budget-rta-summary .budget-rta-actions{grid-column:2;grid-row:1;align-self:center;justify-content:flex-end}.budget-navbar>.budget-rta-summary>.budget-inline-status{grid-column:1 / -1;width:100%}@media(max-width:900px){.budget-page>.page-title,.budget-page>.tabs,.budget-page>.budget-navbar,.budget-page>.budget-left,.budget-page>.budget-sidebar-panel{order:0}.budget-navbar{display:flex;flex-direction:column;align-items:stretch;gap:.75rem}.budget-navbar>.budget-navbar-col.budget-toolbar-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;width:100%;min-width:0;gap:.5rem .75rem}.budget-toolbar-main>.budget-month-cluster{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem;min-width:0}.budget-toolbar-main>.budget-month-cluster>.budget-month-nav{grid-column:1;width:100%}.budget-toolbar-main>.budget-month-cluster>.budget-shortcuts-hint{grid-column:2;grid-row:1}.budget-toolbar-main>.budget-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:nowrap;gap:.5rem}.budget-navbar>.budget-rta-summary{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-column:auto;grid-row:auto;align-items:center;gap:.5rem .75rem;width:100%;padding:.625rem 0 0;border-inline-start:0;border-block-start:1px solid var(--gruv-border)}.budget-navbar>.budget-rta-summary.positive{border-block-start-color:var(--gruv-income)}.budget-navbar>.budget-rta-summary.negative{border-block-start-color:var(--gruv-expense)}.budget-navbar>.budget-rta-summary .budget-rta-actions{grid-column:auto;grid-row:auto}}@media(max-width:640px){.budget-page>.page-title{margin-bottom:.125rem}.budget-page>.tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem}.budget-page>.tabs .tab{min-height:44px;margin-bottom:0;padding:.5rem .75rem}.budget-navbar{padding:.625rem}.budget-navbar>.budget-navbar-col:first-child{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:.5rem}.budget-navbar>.budget-navbar-col:first-child .budget-month-nav{grid-column:1 / -1;display:flex;align-items:center;width:100%;flex:0 0 auto;gap:.5rem}.budget-navbar :is(.budget-month-button,.budget-month-nav>.btn){flex:0 0 44px;width:44px;min-width:44px;min-height:44px;padding:.5rem}.budget-navbar .budget-month-label{flex:1 1 auto;min-width:0;font-size:.95rem;line-height:1.25;overflow:visible}.budget-navbar .budget-primary-action{width:100%;min-height:44px}.budget-navbar>.budget-rta-summary{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:.5rem;width:100%;padding:.625rem 0 0;border-inline-start:0;border-block-start:1px solid var(--gruv-border)}.budget-navbar>.budget-rta-summary.positive{border-block-start-color:var(--gruv-income)}.budget-navbar>.budget-rta-summary.negative{border-block-start-color:var(--gruv-expense)}.budget-navbar>.budget-rta-summary .budget-rta-actions,.budget-navbar>.budget-rta-summary .budget-rta-actions>*,.budget-navbar>.budget-rta-summary>.budget-inline-status{width:100%}.budget-navbar>.budget-rta-summary .budget-rta-actions{justify-content:stretch}.budget-navbar>.budget-rta-summary .budget-rta-actions>*{min-height:44px}.mobile-bottom-nav{align-items:stretch}.mobile-bottom-nav-item{flex:1 1 0;width:20%;max-width:none;padding:.25rem .15rem;overflow:visible}.mobile-bottom-nav-label{min-height:2.2em;font-size:.75rem;line-height:1.1;white-space:normal;overflow:visible;overflow-wrap:anywhere;text-overflow:clip}}@media(min-width:901px){.budget-navbar .budget-month-nav{flex:0 0 auto}.budget-navbar .budget-month-label{flex:0 0 auto;min-width:max-content}.budget-navbar>.budget-navbar-col.budget-toolbar-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem 1rem;width:100%;min-width:0}.budget-toolbar-main>.budget-month-cluster{display:flex;align-items:center;gap:.75rem;width:100%;min-width:0}.budget-toolbar-main>.budget-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,auto));align-items:center;justify-self:end;gap:.5rem;width:auto;min-width:0}.budget-toolbar-actions>:is(.btn,.btn-secondary){width:auto}}@media(max-width:640px){.budget-navbar>.budget-navbar-col.budget-toolbar-main{display:grid;grid-template-columns:minmax(0,1fr);gap:.5rem;width:100%;min-width:0}.budget-toolbar-main>.budget-month-cluster{display:flex;width:100%;min-width:0}.budget-toolbar-main>.budget-month-cluster>.budget-month-nav{display:flex;align-items:center;justify-content:flex-start;gap:.5rem;width:100%;min-width:0}.budget-month-nav>.budget-month-button{flex:0 0 44px;width:44px;min-width:44px;height:44px;min-height:44px}.budget-toolbar-main .budget-month-label{flex:1 1 0;min-width:0;overflow:visible;text-overflow:clip;white-space:nowrap}.budget-toolbar-main>.budget-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;width:100%;min-width:0}.budget-toolbar-actions>:is(.btn,.btn-secondary){width:100%;min-width:0;height:44px;min-height:44px}}@media(min-width:901px)and (max-width:1200px){.budget-navbar{grid-template-columns:minmax(0,1fr);gap:.75rem}.budget-navbar>.budget-navbar-col.budget-toolbar-main{grid-template-columns:minmax(0,1fr) auto;width:100%;min-width:0}.budget-toolbar-main>.budget-month-cluster{display:grid;gap:.35rem;min-width:0}.budget-toolbar-main>.budget-month-cluster>.budget-month-nav{width:100%}.budget-navbar>.budget-rta-summary{grid-column:auto;grid-row:auto;grid-template-columns:minmax(0,1fr) auto;width:100%;padding:.625rem 0 0;border-inline-start:0;border-block-start:1px solid var(--gruv-border)}.budget-navbar>.budget-rta-summary.positive{border-block-start-color:var(--gruv-income)}.budget-navbar>.budget-rta-summary.negative{border-block-start-color:var(--gruv-expense)}.budget-navbar>.budget-rta-summary .budget-rta-actions{grid-column:auto;grid-row:auto}}.budget-secondary-actions{min-width:0}.budget-secondary-actions>summary{list-style:none;cursor:pointer}.budget-secondary-actions>summary::-webkit-details-marker{display:none}.budget-secondary-actions>summary:focus-visible{outline:2px solid var(--gruv-focus);outline-offset:2px}@media(min-width:901px){.budget-secondary-actions{display:flex;align-items:center;justify-self:end;min-width:0}.budget-secondary-actions>summary{display:none}.budget-secondary-actions>.budget-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,auto));align-items:center;gap:.5rem;width:auto;min-width:0}}@media(max-width:900px){.budget-secondary-actions{display:grid;gap:.5rem;min-width:0}.budget-secondary-actions>summary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.5rem .75rem}.budget-secondary-actions>.budget-toolbar-actions{display:none}.budget-secondary-actions[open]>.budget-toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;width:100%;min-width:0}}@media(max-width:640px){.budget-secondary-actions{width:100%;justify-self:stretch}.budget-secondary-actions>summary{width:100%}}@media(max-width:900px){.budget-left{display:flex;gap:.75rem}.budget-left>.budget-main{order:1}.budget-left>.budget-income-card{order:2;margin-bottom:0}.budget-category-detail{scroll-margin-block:.75rem calc(64px + env(safe-area-inset-bottom,0px))}}@media(max-width:640px){.budget-table-mobile-hint{display:block;margin:.45rem 0 .25rem;color:var(--gruv-muted);font-size:var(--text-small);line-height:1.4}.budget-table-frame:before,.budget-table-frame:after{display:none}.budget-table-scroll{overflow-x:visible;scrollbar-width:none}.budget-table-scroll::-webkit-scrollbar{display:none}.budget-table{display:block;width:100%;min-width:0;border-collapse:separate;table-layout:auto}.budget-table>thead{display:none}.budget-table>tbody{display:block}.budget-table>tbody+tbody{margin-top:.5rem}.budget-table>tbody>tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(7.75rem,auto);min-width:0;border-bottom:1px solid var(--gruv-border-subtle)}.budget-table>tbody>tr>td{display:flex;align-items:center;justify-content:space-between;gap:.65rem;min-width:0;padding:.45rem .5rem;border-bottom:0;text-align:left!important;white-space:normal!important}.budget-table>tbody>tr>td:before{content:attr(data-label);flex:0 0 auto;color:var(--gruv-muted);font-size:var(--text-small);font-weight:600;line-height:1.3}.budget-table>tbody>tr>td:first-child:before,.budget-table>tbody>tr>td:nth-child(2):before{display:none}.budget-table>tbody>tr.budget-group-row{grid-template-areas:"group-select group-select" "group-name group-available";background:var(--gruv-surface-deep)}.budget-table>tbody>tr.budget-group-row>td:first-child{grid-area:group-select;justify-content:flex-end;padding-block:.25rem 0}.budget-table>tbody>tr.budget-group-row>td:nth-child(2){grid-area:group-name;align-items:flex-start;padding-block:.25rem .45rem}.budget-table>tbody>tr.budget-group-row>td:nth-child(6){grid-area:group-available;align-items:flex-start;padding-block:.25rem .45rem;font-weight:700}.budget-table>tbody>tr.budget-group-row>td:nth-child(3),.budget-table>tbody>tr.budget-group-row>td:nth-child(4),.budget-table>tbody>tr.budget-group-row>td:nth-child(5){display:none}.budget-table>tbody>tr.budget-group-row .budget-group-toggle{min-height:44px;padding-inline:0}.budget-table>tbody>tr.budget-category-row{grid-template-areas:"category select" "assigned available" "committed spent";padding-block:.15rem;background:var(--gruv-surface)}.budget-table>tbody>tr.budget-category-row.selected{background:var(--gruv-hover)}.budget-table>tbody>tr.budget-category-row>td:first-child{grid-area:select;justify-content:flex-end;padding-block:.1rem 0}.budget-table>tbody>tr.budget-category-row>td:nth-child(2){grid-area:category;align-items:stretch;flex-direction:column;justify-content:flex-start;padding:.1rem .5rem 0!important}.budget-table>tbody>tr.budget-category-row>td:nth-child(3){grid-area:assigned}.budget-table>tbody>tr.budget-category-row>td:nth-child(4){grid-area:committed}.budget-table>tbody>tr.budget-category-row>td:nth-child(5){grid-area:spent}.budget-table>tbody>tr.budget-category-row>td:nth-child(6){grid-area:available;font-weight:700}.budget-table>tbody>tr.budget-category-row .budget-category-label,.budget-table>tbody>tr.budget-category-row .budget-inline-editor{min-width:0}.budget-table>tbody>tr.budget-category-row .budget-inline-editor{display:flex;flex:1 1 auto;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.budget-table>tbody>tr.budget-category-row .budget-amount-button,.budget-table>tbody>tr.budget-category-row .budget-edit-input{min-height:44px}.budget-table>tbody>tr.budget-category-row .budget-category-button{min-height:44px;padding-inline:0}.budget-table>tbody>tr.budget-category-row .budget-reorder-controls{width:100%;padding-left:0}.budget-table td:last-child{min-width:0}}.budget-tooltip{position:relative;display:inline-flex;align-items:center;flex:0 0 auto;min-width:0}.budget-tooltip-trigger{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;min-width:1.75rem;min-height:1.75rem;padding:0;border:1px solid var(--gruv-border);border-radius:50%;background:var(--gruv-surface-deep);color:var(--gruv-muted);cursor:help;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.budget-tooltip-trigger:hover,.budget-tooltip-trigger:focus-visible{border-color:var(--gruv-focus);background:var(--gruv-hover);color:var(--gruv-fg-light)}.budget-tooltip-bubble{position:absolute;z-index:30;inset-block-start:calc(100% + .5rem);inset-inline-start:0;width:max-content;max-width:min(22rem,calc(100vw - 2rem));padding:.55rem .7rem;border:1px solid var(--gruv-border-light);border-radius:var(--radius-md);background:var(--gruv-surface-deep);box-shadow:0 .35rem 1rem #00000047;color:var(--gruv-fg-light);font-size:var(--text-small);font-weight:400;line-height:1.4;text-align:start;white-space:normal;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-.35rem);transition:opacity var(--duration-fast) var(--ease-out),visibility var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.budget-tooltip:hover .budget-tooltip-bubble,.budget-tooltip:focus-within .budget-tooltip-bubble{opacity:1;visibility:visible;transform:translateY(0)}.budget-shortcuts-hint .budget-tooltip-bubble{inset-inline-start:auto;inset-inline-end:0}.budget-rta-tooltip .budget-tooltip-bubble{inset-inline-start:50%;transform:translate(-50%) translateY(-.35rem)}.budget-rta-tooltip:hover .budget-tooltip-bubble,.budget-rta-tooltip:focus-within .budget-tooltip-bubble{transform:translate(-50%) translateY(0)}.budget-tooltip-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.budget-navbar .budget-shortcuts-hint{display:inline-flex;flex:0 0 auto;align-items:center;min-width:0;min-height:0;padding:0;overflow:visible;border:0;background:transparent;color:var(--gruv-muted)}.budget-navbar .budget-rta-tooltip .budget-tooltip-trigger{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem}@media(max-width:900px){.budget-tooltip-trigger{width:44px;height:44px;min-width:44px;min-height:44px}.budget-tooltip-bubble{max-width:min(22rem,calc(100vw - 1.5rem))}}@media(max-width:640px){.budget-toolbar-main>.budget-month-cluster{display:flex;flex-wrap:nowrap;align-items:center;gap:.5rem}.budget-navbar>.budget-navbar-col:first-child .budget-month-cluster>.budget-month-nav{flex:1 1 auto;width:auto;min-width:0}.budget-toolbar-main>.budget-month-cluster>.budget-shortcuts-hint{flex:0 0 44px}}@media(prefers-reduced-motion:reduce){.budget-tooltip-trigger,.budget-tooltip-bubble{transition:none}}@media(min-width:901px)and (max-width:1100px){.filters-primary>.filters-actions{flex:1 1 100%;width:100%;min-width:0;margin-left:0;flex-wrap:wrap;align-items:stretch}.filters-primary>.filters-actions>:is(.filters-toggle,.btn-secondary,select,.filter-checkbox){flex:0 1 auto;min-width:max-content;max-width:100%}.filters-primary>.filters-actions>select{flex:1 1 16rem;min-width:16rem}}
