.layout{min-height:100vh;display:flex;flex-direction:column}.top-header{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;min-height:var(--nav-height);padding:env(safe-area-inset-top,0) 16px 0;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.top-header-left{display:flex;align-items:center;gap:8px;position:relative}.top-header-brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1.125rem;color:var(--color-primary)}.top-header-brand span{font-size:1.25rem}.top-header-actions{display:flex;align-items:center;gap:4px}.theme-toggle{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);font-size:1.2rem;color:var(--color-text-secondary);transition:background .15s}.theme-toggle:hover{background:var(--color-surface-hover)}.hamburger{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);transition:background .15s}.hamburger:hover{background:var(--color-surface-hover)}@media (min-width: 1025px){.hamburger{display:none}}.hamburger-icon{display:flex;flex-direction:column;gap:4px;width:18px}.hamburger-icon span{display:block;height:2px;width:100%;background:var(--color-text);border-radius:1px;transition:transform .2s,opacity .2s}.hamburger-icon.open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.hamburger-icon.open span:nth-child(2){opacity:0}.hamburger-icon.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.header-menu{position:absolute;top:calc(100% + 8px);left:0;min-width:200px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:6px;display:flex;flex-direction:column;gap:2px;z-index:200;animation:menuSlide .15s ease-out}@keyframes menuSlide{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.header-menu-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);font-size:.9375rem;font-weight:500;color:var(--color-text-secondary);text-decoration:none;transition:background .15s,color .15s}.header-menu-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.header-menu-link.active{background:var(--color-primary-light);color:var(--color-primary)}.header-menu-link .nav-icon{font-size:1.25rem;width:24px;text-align:center}@media (min-width: 1025px){.header-menu{display:none}}.layout-body{display:flex;flex:1}.main-content{flex:1;padding:16px 16px 24px;max-width:1200px;width:100%;margin:0 auto}.sidebar{display:none}@media (min-width: 1025px){.sidebar{display:flex;flex-direction:column;width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);padding:16px 8px;position:sticky;top:calc(var(--nav-height) + env(safe-area-inset-top,0px));height:calc(100vh - var(--nav-height) - env(safe-area-inset-top,0px));overflow-y:auto}}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);font-size:.9375rem;font-weight:500;color:var(--color-text-secondary);transition:background .15s,color .15s;text-decoration:none}.sidebar-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebar-link.active{background:var(--color-primary-light);color:var(--color-primary)}.sidebar-link .nav-icon{font-size:1.25rem;width:24px;text-align:center}.toast-container{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);left:12px;right:12px;z-index:300;display:flex;flex-direction:column;gap:8px;max-width:360px;margin:0 auto}@media (min-width: 768px){.toast-container{left:auto;right:20px;margin:0;width:auto;min-width:300px}}.toast{display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);animation:toastIn .25s ease-out;font-size:.875rem}@keyframes toastIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.toast-icon{font-size:1.125rem;flex-shrink:0}.toast-message{flex:1;color:var(--color-text)}.toast-dismiss{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);color:var(--color-text-muted);font-size:.75rem}.toast-dismiss:hover{background:var(--color-surface-hover)}.toast.success{border-left:3px solid var(--color-income)}.toast.error{border-left:3px solid var(--color-expense)}.toast.info{border-left:3px solid var(--color-primary)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:24px;background:var(--color-bg, #f5f5f5)}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:16px}.login-title{font-size:1.5rem;font-weight:700;text-align:center;margin:0 0 8px;color:var(--color-text)}.login-error{background:#ef44441a;color:var(--color-expense, #ef4444);padding:10px 14px;border-radius:8px;font-size:.9rem;text-align:center}.login-input{padding:14px 16px;border:1px solid var(--color-border, #ddd);border-radius:10px;font-size:1rem;background:var(--color-card, #fff);color:var(--color-text);outline:none;transition:border-color .15s}.login-input:focus{border-color:var(--color-primary, #8B6F47)}.login-btn{padding:14px;border:none;border-radius:10px;background:var(--color-primary, #8B6F47);color:#fff;font-size:1.05rem;font-weight:600;cursor:pointer;transition:opacity .15s;margin-top:4px}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-btn:hover:not(:disabled){opacity:.9}.bar-chart{width:100%}.bar-chart-title{font-size:.9375rem;font-weight:600;margin-bottom:16px;color:var(--color-text)}.bar-chart-vertical{display:flex;align-items:flex-end;gap:4px;height:180px;padding-top:8px}.bar-chart-vertical .bar-group{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;gap:4px;min-width:0}.bar-chart-vertical .bar-group .bars{flex:1;display:flex;align-items:flex-end;gap:2px;width:100%}.bar-chart-vertical .bar{flex:1;border-radius:3px 3px 0 0;min-height:2px;transition:height .4s ease-out;position:relative}.bar-chart-vertical .bar:hover{opacity:.85}.bar-chart-vertical .bar .bar-tooltip{display:none;position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--color-text);color:var(--color-bg);padding:4px 8px;border-radius:4px;font-size:.6875rem;white-space:nowrap;margin-bottom:4px;pointer-events:none}.bar-chart-vertical .bar:hover .bar-tooltip{display:block}.bar-chart-vertical .bar-label{font-size:.6875rem;color:var(--color-text-muted);text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.bar-chart-horizontal{display:flex;flex-direction:column;gap:10px}.h-bar-row{display:flex;flex-direction:column;gap:4px}.h-bar-header{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem}.h-bar-label{color:var(--color-text);font-weight:500}.h-bar-value{color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.h-bar-track{height:8px;background:var(--color-surface-hover);border-radius:4px;overflow:hidden}.h-bar-fill{height:100%;border-radius:4px;transition:width .4s ease-out;min-width:2px}.stacked-bar-chart{display:flex;flex-direction:column;gap:14px}.stacked-row{display:flex;flex-direction:column;gap:4px}.stacked-header{display:flex;justify-content:space-between;font-size:.8125rem}.stacked-track{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--color-surface-hover)}.stacked-segment{transition:width .4s ease-out;min-width:2px;position:relative}.stacked-segment:hover{opacity:.85}.chart-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px}.chart-legend-item{display:flex;align-items:center;gap:6px;font-size:.75rem;color:var(--color-text-secondary)}.chart-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:stretch;justify-content:center;padding:0;background:#00000080;animation:fadeIn .15s ease-out}@media (min-width: 768px){.modal-overlay{align-items:center;padding:24px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--color-surface);border-radius:0;width:100%;height:100%;max-height:none;display:flex;flex-direction:column;animation:slideDown .2s ease-out}@media (min-width: 768px){.modal{max-width:560px;width:auto;min-width:460px;height:auto;max-height:90vh;border-radius:var(--radius-lg);animation:scaleIn .2s ease-out}}@keyframes slideDown{0%{transform:translateY(-30px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top,0px) + 16px) 20px 16px;border-bottom:1px solid var(--color-border)}@media (min-width: 768px){.modal-header{padding:16px 20px}}.modal-header h2{font-size:1.125rem;font-weight:600}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);font-size:1.25rem;color:var(--color-text-secondary);transition:background .15s}.modal-close:hover{background:var(--color-surface-hover)}.modal-body{padding:20px;overflow-y:auto;flex:1}.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:16px 20px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 16px);border-top:1px solid var(--color-border)}@media (min-width: 768px){.modal-footer{padding-bottom:16px}}.tx-form{display:flex;flex-direction:column;gap:14px}.tx-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 480px){.tx-form .form-row{grid-template-columns:1fr}}.tx-form-computed{background:var(--color-surface-hover);border-radius:var(--radius-md);padding:12px;display:flex;flex-direction:column;gap:6px}.tx-form-computed-row{display:flex;justify-content:space-between;font-size:.8125rem}.tx-form-computed-label{color:var(--color-text-secondary)}.tx-form-computed-value{font-weight:600;font-variant-numeric:tabular-nums}.tx-form-computed-value.income{color:var(--color-income)}.tx-form-computed-value.expense{color:var(--color-expense)}.dashboard-header{margin-bottom:20px}.dashboard-header h1{font-size:1.5rem;font-weight:700}.dashboard-header p{font-size:.875rem;color:var(--color-text-secondary);margin-top:2px}.summary-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:24px}@media (min-width: 768px){.summary-cards{grid-template-columns:repeat(4,1fr)}}.summary-card{padding:16px}.summary-card-label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}.summary-card-value{font-size:1.375rem;font-weight:700;font-variant-numeric:tabular-nums}.summary-card-value.income{color:var(--color-income)}.summary-card-value.expense{color:var(--color-expense)}.summary-card-value.net.positive{color:var(--color-income)}.summary-card-value.net.negative{color:var(--color-expense)}.summary-card-value.pending{color:var(--color-pending)}.dashboard-chart{margin-bottom:24px;padding:20px}.recent-section{margin-bottom:24px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-header h2{font-size:1.0625rem;font-weight:600}.section-header a{font-size:.8125rem;font-weight:500}.recent-list{display:flex;flex-direction:column}.recent-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--color-border);gap:12px}.recent-item:last-child{border-bottom:none}.recent-item-left{display:flex;flex-direction:column;min-width:0;flex:1}.recent-item-name{font-weight:500;font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-item-meta{display:flex;align-items:center;gap:6px;margin-top:2px}.recent-item-date{font-size:.75rem;color:var(--color-text-muted)}.recent-item-right{text-align:right;flex-shrink:0}.recent-item-amount{font-weight:600;font-size:.9375rem;font-variant-numeric:tabular-nums}.fab{position:fixed;bottom:calc(var(--nav-height) + 16px);right:16px;z-index:50;width:56px;height:56px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:1.75rem;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);transition:transform .15s,background .15s}.fab:hover{background:var(--color-primary-hover);transform:scale(1.05)}@media (min-width: 1025px){.fab{bottom:24px;right:24px}}.filter-bar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.filter-bar .form-input{font-size:.8125rem;padding:6px 10px;min-width:0}.filter-bar select.form-input{min-width:120px}.filter-bar input[type=date].form-input{min-width:130px}.filter-bar .filter-clear{font-size:.8125rem;color:var(--color-text-muted);padding:6px 10px}.filter-bar .filter-clear:hover{color:var(--color-expense)}@media (max-width: 767px){.filter-bar{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;-webkit-overflow-scrolling:touch}.filter-bar .form-input,.filter-bar select.form-input{flex-shrink:0;min-width:110px}}.transactions-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px}.transactions-header h1{font-size:1.5rem;font-weight:700}.tx-list{display:flex;flex-direction:column}.tx-row{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--color-border);gap:12px;cursor:pointer;transition:background .1s;position:relative;overflow:hidden}.tx-row:hover{background:var(--color-surface-hover)}.tx-row:last-child{border-bottom:none}.tx-row-main{flex:1;min-width:0}.tx-row-name{font-weight:500;font-size:.9375rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-row-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:4px}.tx-row-date{font-size:.75rem;color:var(--color-text-muted)}.tx-row-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.tx-row-amount{font-weight:600;font-size:.9375rem;font-variant-numeric:tabular-nums;text-align:right}.tx-row-delete{opacity:0;transition:opacity .15s;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);color:var(--color-text-muted);font-size:.875rem;flex-shrink:0}.tx-row:hover .tx-row-delete{opacity:1}.tx-row-delete:hover{background:var(--color-expense-bg);color:var(--color-expense)}@media (max-width: 767px){.tx-row-delete{opacity:1}}.load-more-container{display:flex;justify-content:center;padding:16px}.tx-count{text-align:center;padding:8px;font-size:.8125rem;color:var(--color-text-muted)}.bill-form{display:flex;flex-direction:column;gap:14px}.bill-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 480px){.bill-form .form-row{grid-template-columns:1fr}}.bill-form-computed{background:var(--color-surface-hover);border-radius:var(--radius-md);padding:12px;display:flex;flex-direction:column;gap:6px}.bill-form-computed-row{display:flex;justify-content:space-between;font-size:.8125rem}.bill-form-computed-label{color:var(--color-text-secondary)}.bill-form-computed-value{font-weight:600;font-variant-numeric:tabular-nums}.bills-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px}.bills-header h1{font-size:1.5rem;font-weight:700}.bill-list{display:flex;flex-direction:column}.bill-row{display:flex;align-items:center;padding:12px 16px;border-bottom:1px solid var(--color-border);gap:12px;cursor:pointer;transition:background .1s}.bill-row:hover{background:var(--color-surface-hover)}.bill-row:last-child{border-bottom:none}.bill-icon{width:40px;height:40px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:1.25rem;background:var(--color-surface-hover);flex-shrink:0}.bill-row-main{flex:1;min-width:0}.bill-row-type{font-weight:500;font-size:.9375rem}.bill-row-meta{display:flex;align-items:center;gap:6px;margin-top:2px}.bill-row-date{font-size:.75rem;color:var(--color-text-muted)}.bill-row-consumed{font-size:.75rem;color:var(--color-text-secondary)}.bill-row-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.bill-row-amount{font-weight:600;font-size:.9375rem;font-variant-numeric:tabular-nums;color:var(--color-expense)}.bill-row-due{font-size:.6875rem;color:var(--color-text-muted);text-align:right}.bill-row-due.overdue{color:var(--color-expense);font-weight:600}.bill-row-delete{opacity:0;transition:opacity .15s;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-full);color:var(--color-text-muted);font-size:.875rem;flex-shrink:0}.bill-row:hover .bill-row-delete{opacity:1}.bill-row-delete:hover{background:var(--color-expense-bg);color:var(--color-expense)}@media (max-width: 767px){.bill-row-delete{opacity:1}}.reports-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}.reports-header h1{font-size:1.5rem;font-weight:700}.reports-controls{display:flex;align-items:center;gap:8px}.reports-grid{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 768px){.reports-grid{grid-template-columns:1fr 1fr}}.report-card{padding:20px}.report-card.full-width{grid-column:1 / -1}.report-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;grid-column:1 / -1}@media (min-width: 768px){.report-stats{grid-template-columns:repeat(4,1fr)}}.report-stat{padding:16px;text-align:center}.report-stat-label{font-size:.75rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.report-stat-value{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}.report-stat-value.income{color:var(--color-income)}.report-stat-value.expense{color:var(--color-expense)}.report-stat-value.net{color:var(--color-primary)}.report-stat-value.count{color:var(--color-text)}.banking-form{display:flex;flex-direction:column;gap:0}.banking-form-toggle{display:flex;background:var(--color-surface);border-radius:12px;padding:4px;margin-bottom:20px}.banking-form-toggle .toggle-btn{flex:1;padding:10px 16px;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;background:transparent;color:var(--color-muted);transition:all .2s}.banking-form-toggle .toggle-btn.active.expense{background:var(--color-expense);color:#fff;box-shadow:0 2px 8px #ef444440}.banking-form-toggle .toggle-btn.active.income{background:var(--color-income);color:#fff;box-shadow:0 2px 8px #10b98140}.banking-form-field{display:flex;align-items:center;padding:14px 0;border-bottom:1px solid var(--color-border);gap:12px}.banking-form-field:last-child{border-bottom:none}.banking-form-field>label{flex-shrink:0;width:90px;font-size:.9rem;font-weight:500;color:var(--color-primary, #8B6F47)}.banking-form-field>.form-input{flex:1;border:none;background:transparent;padding:4px 0;font-size:1rem;outline:none;box-shadow:none}.banking-form-field>.form-input:focus{border:none;box-shadow:none}.banking-form-amount{font-size:1.25rem!important;font-weight:600}.banking-form-chips{display:flex;gap:8px;flex:1}.chip-btn{padding:6px 16px;border-radius:20px;border:1.5px solid var(--color-border);background:transparent;font-size:.85rem;font-weight:500;cursor:pointer;color:var(--color-text);transition:all .15s}.chip-btn.active{background:var(--color-primary, #8B6F47);border-color:var(--color-primary, #8B6F47);color:#fff}.banking-form-field-category{position:relative}.category-combo{flex:1;position:relative}.category-combo>.form-input{width:100%;border:none;background:transparent;padding:4px 28px 4px 0;font-size:1rem;outline:none;box-shadow:none}.category-combo>.form-input:focus{border:none;box-shadow:none}.category-combo-toggle{position:absolute;right:0;top:50%;transform:translateY(-50%);background:none;border:none;padding:4px 6px;font-size:.7rem;color:var(--color-muted);cursor:pointer;line-height:1}.category-combo-list{position:absolute;top:100%;left:0;right:0;z-index:100;background:var(--color-surface);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 16px #0000001f;max-height:200px;overflow-y:auto;margin:4px 0 0;padding:4px 0;list-style:none;-webkit-overflow-scrolling:touch}.category-combo-item{padding:10px 14px;font-size:.9rem;cursor:pointer;transition:background .1s}.category-combo-item:hover,.category-combo-item:active{background:var(--color-hover, #f5f5f5)}.category-combo-item.selected{font-weight:600;color:var(--color-primary, #8B6F47)}.category-combo-empty{padding:10px 14px;font-size:.85rem;color:var(--color-muted);text-align:center}.banking-form-actions{display:flex;gap:10px;width:100%}.banking-form-actions .btn-secondary{flex-shrink:0}.banking-form-delete{flex-shrink:0;padding:14px 16px;border:none;border-radius:var(--radius-md);background:var(--color-expense-bg, rgba(239, 68, 68, .1));color:var(--color-expense);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.banking-form-delete:hover:not(:disabled){background:var(--color-expense);color:#fff}.banking-form-submit{flex:1;padding:14px 24px;border:none;border-radius:var(--radius-md);background:var(--color-primary);color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s}.banking-form-submit:hover:not(:disabled){background:var(--color-primary-hover)}.banking-form-submit:disabled{opacity:.5;cursor:not-allowed}.banking-form-more-toggle{display:flex;align-items:center;gap:6px;background:none;border:none;padding:12px 0;font-size:.85rem;font-weight:600;color:var(--color-muted);cursor:pointer;letter-spacing:.02em}.banking-form-more-chevron{display:inline-block;transition:transform .2s;font-size:.9rem;transform:rotate(0)}.banking-form-more-chevron.open{transform:rotate(90deg)}.banking-form-more .banking-form-field{padding:10px 0}.ptr-container{overscroll-behavior-y:contain}.ptr-indicator{display:flex;align-items:center;justify-content:center;overflow:hidden;transition:height .2s ease-out}.ptr-indicator.refreshing{transition:height .3s ease-out}.ptr-icon{transition:transform .2s ease;color:var(--color-primary)}.ptr-icon.ready{transform:rotate(180deg)}.ptr-icon.spinning{transform:none;animation:ptr-spin .8s linear infinite}@keyframes ptr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.banking-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.banking-header h1{font-size:1.5rem;font-weight:700;margin:0}.banking-header-left,.banking-header-actions{display:flex;align-items:center;gap:8px}.banking-header-icon-btn{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--color-text-secondary);transition:background .15s,color .15s}.banking-header-icon-btn:hover{background:var(--color-surface-hover);color:var(--color-primary)}.banking-header-back{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);font-size:1.8rem;line-height:1;color:var(--color-primary);transition:background .15s}.banking-header-back:hover{background:var(--color-surface-hover)}.banking-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}@media (max-width: 640px){.banking-summary{grid-template-columns:repeat(2,1fr)}}.banking-charts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}@media (max-width: 768px){.banking-charts{grid-template-columns:1fr}}.banking-chart{padding:16px}.banking-summary-bar{display:flex;border-radius:var(--radius-md);overflow:hidden;margin-bottom:12px;font-weight:700;font-size:1rem;text-align:center}.banking-summary-income{flex:1;padding:10px 8px;background:#22c55e1f;color:var(--color-income)}.banking-summary-expense{flex:1;padding:10px 8px;background:#ef44441f;color:var(--color-expense)}.banking-list{padding:0}.banking-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--color-border);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background-color .15s}.banking-row:last-child{border-bottom:none}.banking-row:hover{background-color:var(--color-hover)}.banking-row-icon{font-size:1.5rem;flex-shrink:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-surface-hover)}.banking-row-main{flex:1;min-width:0}.banking-row-desc{font-weight:700;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banking-row-meta{display:flex;align-items:center;gap:2px;margin-top:3px;font-size:.8rem;color:var(--color-text-secondary)}.banking-row-initial{font-weight:600;white-space:nowrap}.banking-row-date{white-space:nowrap}.banking-row-user{font-size:.75rem;background:var(--color-surface);padding:1px 6px;border-radius:8px}.banking-row-right{display:flex;flex-direction:column;align-items:flex-end;flex-shrink:0}.banking-row-amount{font-weight:700;font-size:1.1rem;white-space:nowrap}.banking-row-amount.income{color:var(--color-income)}.banking-row-amount.expense{color:var(--color-expense)}.banking-row-chevron{font-size:1.4rem;color:var(--color-text-secondary);opacity:.4;flex-shrink:0;line-height:1}.banking-footer{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 0}.banking-count{text-align:center;font-size:.85rem;color:var(--color-muted)}.banking-load-more{width:100%;max-width:320px;padding:10px 20px;font-size:.9rem}.budget-report{max-width:600px;margin:0 auto}.budget-report-header{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:12px}.budget-report-month{font-size:1.25rem;font-weight:700;min-width:160px;text-align:center}.budget-report-nav{background:none;border:none;font-size:2rem;line-height:1;cursor:pointer;color:var(--color-text);padding:4px 12px;border-radius:8px;transition:background .15s;-webkit-user-select:none;user-select:none}.budget-report-nav:hover:not(:disabled){background:var(--color-surface-hover)}.budget-report-nav:disabled{opacity:.25;cursor:default}.budget-report-filters{display:flex;justify-content:center;margin-bottom:16px}.budget-report-user-select{width:auto;min-width:160px;text-align:center;font-size:.9rem;padding:6px 12px}.budget-report-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;margin-bottom:16px;background:var(--color-surface-hover)}.budget-report-bar-income{background:var(--color-income);transition:width .3s}.budget-report-bar-expense{background:var(--color-expense);transition:width .3s}.budget-tabs{display:flex;gap:0;margin-bottom:16px;background:var(--color-surface);border-radius:var(--radius-lg);padding:4px;border:1px solid var(--color-border)}.budget-tab{flex:1;padding:8px 4px;font-size:.8125rem;font-weight:600;color:var(--color-text-secondary);border-radius:var(--radius-md);transition:background .15s,color .15s;text-align:center}.budget-tab:hover{color:var(--color-text)}.budget-tab.active{background:var(--color-primary);color:#fff}.budget-period-selector{display:flex;gap:0;margin-bottom:12px;background:var(--color-surface);border-radius:var(--radius-lg);padding:3px;border:1px solid var(--color-border)}.budget-period-btn{flex:1;padding:6px 2px;font-size:.75rem;font-weight:600;color:var(--color-text-secondary);border-radius:var(--radius-md);transition:background .15s,color .15s;text-align:center}.budget-period-btn:hover{color:var(--color-text)}.budget-period-btn.active{background:var(--color-primary);color:#fff}.budget-period-nav{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:12px}.budget-period-label{font-size:1rem;font-weight:600;min-width:140px;text-align:center}.budget-report-table{padding:0}.budget-report-row{display:flex;align-items:center;justify-content:space-between;padding:14px 20px}.budget-report-row-header{border-bottom:1px solid var(--color-border)}.budget-report-row-header .budget-report-label{font-size:1.05rem;font-weight:600}.budget-report-row-header .budget-report-value{font-size:1.05rem;font-weight:700}.budget-report-categories{border-bottom:1px solid var(--color-border)}.budget-report-row-cat{padding:11px 16px 11px 20px;gap:8px;border-bottom:1px solid color-mix(in srgb,var(--color-border) 40%,transparent)}.budget-report-row-cat:last-child{border-bottom:none}.budget-report-cat-label{font-size:.95rem;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.budget-report-cat-value{font-size:.95rem;font-weight:600;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;flex-shrink:0}.budget-report-divider{border-top:2px dashed var(--color-border)}.budget-report-row-balance{padding:16px 20px}.budget-report-row-balance .budget-report-label,.budget-report-row-balance .budget-report-value{font-size:1.1rem;font-weight:700}.budget-report-value.income{color:var(--color-income)}.budget-report-value.expense{color:var(--color-expense)}.budget-report-cat-value.income{color:var(--color-income)}.budget-report-chart,.budget-report-trend{padding:16px 20px}.budget-report-trend-table{display:flex;flex-direction:column;gap:0}.trend-header-row{display:flex;align-items:center;padding:8px 0;border-bottom:2px solid var(--color-border);font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.trend-row{display:flex;align-items:center;padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--color-border) 40%,transparent)}.trend-row:last-child{border-bottom:none}.trend-row-total{border-top:2px dashed var(--color-border);font-weight:700}.trend-cell{font-size:.85rem;font-variant-numeric:tabular-nums}.trend-cat{flex:1.5;display:flex;align-items:center;gap:8px;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend-val{flex:0 0 72px;text-align:left;font-weight:600;color:var(--color-text-secondary)}.trend-row-total .trend-val{color:var(--color-text)}.trend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.trend-spark{flex:0 0 76px;display:flex;align-items:center;justify-content:flex-end}.sparkline{display:block;overflow:visible}.budget-report-expand-chevron{display:inline-block;font-size:1.2rem;color:var(--color-text-secondary);transition:transform .2s ease;margin-right:8px;flex-shrink:0}.budget-report-expand-chevron.expanded{transform:rotate(90deg)}.budget-report-row-tappable{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background-color .15s}.budget-report-row-tappable:hover{background-color:var(--color-hover)}.budget-report-cat-icon{font-size:1.1rem;flex-shrink:0;width:28px;text-align:center}.budget-report-cat-chevron{font-size:1.2rem;color:var(--color-text-secondary);opacity:.4;flex-shrink:0;margin-left:auto;padding-left:8px}.budget-drilldown{margin-top:24px}.budget-drilldown-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.budget-drilldown-back{background:none;border:none;font-size:2rem;line-height:1;cursor:pointer;color:var(--color-primary);padding:4px 8px;border-radius:8px;transition:background .15s;flex-shrink:0}.budget-drilldown-back:hover{background:var(--color-surface-hover)}.budget-drilldown-title{display:flex;align-items:center;gap:8px;font-size:1.1rem;font-weight:700;flex:1;min-width:0}.budget-drilldown-icon{font-size:1.2rem}.budget-drilldown-period{font-size:.8rem;color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.budget-tx-section{margin-top:24px}.budget-tx-title{font-size:1.05rem;font-weight:700;margin:0 0 12px}.budget-tx-footer{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 0}.budget-tx-load-more{width:100%;max-width:320px;padding:10px 20px;font-size:.9rem}.budget-tx-empty{text-align:center;color:var(--color-text-secondary);font-size:.9rem;padding:24px 0}@media (max-width: 480px){.budget-report-trend{padding:12px}.trend-cell.trend-cat{flex:1;font-size:.7rem;gap:4px}.trend-cell.trend-val{flex:0 0 52px;font-size:.65rem;padding-left:0}.trend-spark{flex:0 0 28px}.trend-spark .sparkline{width:24px;height:12px}.trend-header-row{font-size:.65rem}.trend-dot{width:6px;height:6px}}:root{--color-primary: #8B6F47;--color-primary-hover: #74593A;--color-primary-light: #FBF5ED;--color-income: #10B981;--color-income-bg: #D1FAE5;--color-expense: #EF4444;--color-expense-bg: #FEE2E2;--color-pending: #F59E0B;--color-pending-bg: #FEF3C7;--color-bg: #F9FAFB;--color-surface: #FFFFFF;--color-surface-hover: #F3F4F6;--color-border: #E5E7EB;--color-text: #111827;--color-text-secondary: #6B7280;--color-text-muted: #9CA3AF;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--nav-height: 56px;--sidebar-width: 240px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif}[data-theme]{background:var(--color-bg);color:var(--color-text);min-height:100vh}[data-theme=dark]{--color-primary: #C4A265;--color-primary-hover: #D4B87A;--color-primary-light: #2A2318;--color-income: #34D399;--color-income-bg: #064E3B;--color-expense: #F87171;--color-expense-bg: #7F1D1D;--color-pending: #FBBF24;--color-pending-bg: #78350F;--color-bg: #0F172A;--color-surface: #1E293B;--color-surface-hover: #334155;--color-border: #334155;--color-text: #F1F5F9;--color-text-secondary: #94A3B8;--color-text-muted: #64748B;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-family);background:var(--color-bg);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:contain}a{color:var(--color-primary);text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;font-size:inherit}input,select,textarea{font-family:inherit;font-size:inherit}ul,ol{list-style:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:var(--radius-md);font-weight:500;font-size:.875rem;transition:background .15s,opacity .15s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-hover)}.btn-danger{background:var(--color-expense);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-ghost{color:var(--color-text-secondary);padding:6px 10px}.btn-ghost:hover:not(:disabled){background:var(--color-surface-hover);color:var(--color-text)}.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-full);font-size:1.25rem}.form-group{display:flex;flex-direction:column;gap:4px}.form-group label{font-size:.8125rem;font-weight:500;color:var(--color-text-secondary)}.form-input{padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);transition:border-color .15s}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #8b6f4726}.form-input::placeholder{color:var(--color-text-muted)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-checkbox{display:flex;align-items:center;gap:8px}.form-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-primary)}.card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);padding:16px}.loading-container{display:flex;align-items:center;justify-content:center;padding:48px 16px}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:48px 16px;color:var(--color-text-secondary)}.empty-state .empty-icon{font-size:2.5rem;margin-bottom:12px}.empty-state p{font-size:.9375rem}.error-banner{background:var(--color-expense-bg);color:var(--color-expense);padding:12px 16px;border-radius:var(--radius-md);font-size:.875rem;margin-bottom:16px}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}
