:root{--primary: #218089;--primary-dark: #1a6b72;--primary-soft: rgba(33, 128, 137, .12);--success: #32c884;--success-text: #1a8c56;--danger: #ff5459;--danger-text: #d93a3f;--warning: #e68157;--info: #6b75a1;--bg: #fcfcf9;--surface: #ffffff;--surface-muted: #f6f8f8;--text: #134252;--text-secondary: #5a6e70;--border: rgba(94, 82, 64, .2);--shadow: 0 4px 6px rgba(0, 0, 0, .04);--fs-xs: 12px;--fs-sm: 14px;--fs-md: 16px;--fs-lg: 20px;--fs-xl: 24px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--radius: 10px;--radius-sm: 6px;--tap: 44px;--gutter: 12px;--bottom-nav-h: 64px}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:var(--fs-md);background-color:var(--bg);color:var(--text);line-height:1.5;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{overflow-x:clip}.container{max-width:1400px;margin:0 auto;padding:0 max(var(--gutter),env(safe-area-inset-right)) 0 max(var(--gutter),env(safe-area-inset-left))}header{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;padding:calc(10px + env(safe-area-inset-top)) 0 10px;box-shadow:var(--shadow);position:sticky;top:0;z-index:100}header .container{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3)}.logo{font-size:24px;font-weight:700;display:flex;align-items:center;gap:10px;min-width:0}.btn{min-height:var(--tap);padding:10px 20px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-sm);font-weight:500;transition:all .2s;display:inline-flex;align-items:center;gap:var(--sp-2)}.btn-primary{background:#fff;color:var(--primary)}.btn-primary:hover{background:#f0f0f0}.btn-submit{background:var(--primary);color:#fff;width:100%;padding:12px;font-weight:600;font-size:var(--fs-md);justify-content:center}.btn-submit:hover{background:var(--primary-dark)}.btn-small{min-width:var(--tap);min-height:var(--tap);padding:0 var(--sp-3);font-size:var(--fs-sm);border:none;border-radius:var(--radius-sm);cursor:pointer;background:#f0f0f0;color:var(--text);display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-small:hover{background:#e0e0e0}.btn-small:disabled{opacity:.6;cursor:default}.btn-small-primary{background:var(--primary-soft);color:var(--primary)}.btn-small-primary:hover{background:#21808938}.btn-small-danger{background:#ff545926;color:var(--danger-text)}.btn-small-danger:hover{background:#ff545947}.action-buttons{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.quick-actions{display:grid;gap:10px}.btn-action{width:100%;color:#fff}.btn-action--expense{background:var(--primary);color:#fff}.btn-action--income{background:var(--success-text);color:#fff}.btn-action--envelope{background:var(--info);color:#fff}.btn-action--category{background:#c4673f;color:#fff}.btn-action:hover{filter:brightness(.94)}.main{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4);padding:var(--sp-4) 0 calc(var(--sp-4) + env(safe-area-inset-bottom))}.main.dashboard{padding-bottom:calc(var(--bottom-nav-h) + 72px + env(safe-area-inset-bottom))}.sidebar,.content{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}.desktop-only{display:none}.dashboard>.sidebar,.dashboard>.content{display:contents}.dashboard .month-bar{order:-1;position:sticky;top:calc(60px + env(safe-area-inset-top));z-index:50;margin:calc(-1 * var(--sp-4)) calc(-1 * var(--gutter)) 0;padding:var(--sp-2) var(--gutter);background:var(--bg);border-bottom:1px solid var(--border)}.goals-card .goals-title{display:none}.goals-card .goals-header{justify-content:flex-end}.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);padding:var(--sp-4);box-shadow:var(--shadow);min-width:0}.card--spaced{margin-top:var(--sp-4)}.card-title{font-size:var(--fs-md);font-weight:600;margin-bottom:var(--sp-3);color:var(--text)}.card-title--inline{margin:0}.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat-box{background:linear-gradient(135deg,#f5f9fa,#e8f4f7);padding:var(--sp-3) var(--sp-2);border-radius:8px;text-align:center;min-width:0}.stat-value{font-size:clamp(16px,4.6vw,20px);font-weight:700;color:var(--primary);margin-bottom:2px;overflow-wrap:break-word}.stat-label{font-size:var(--fs-xs);color:var(--text-secondary)}.month-summary .card-title{margin-bottom:10px}.env-quick-list{display:grid;gap:var(--sp-3)}.env-quick-line{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px var(--sp-2);margin-bottom:var(--sp-1)}.env-quick-name{font-size:var(--fs-sm);font-weight:600;color:var(--text);min-width:0;overflow-wrap:anywhere}.env-quick-amount{font-size:var(--fs-xs);font-weight:600}.profile-name{font-weight:600;margin-bottom:var(--sp-1)}.profile-role{font-size:var(--fs-xs);color:var(--text-secondary)}.tabs-panel{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);min-width:0}.tabs{display:none}.tab{flex:1;padding:15px;text-align:center;cursor:pointer;border:none;background:none;font-size:var(--fs-sm);font-weight:500;color:var(--text-secondary);transition:all .2s;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.tab-content{display:none;padding:var(--sp-4) var(--sp-3);min-width:0}.tab-content.active{display:block}.tab-heading{font-size:var(--fs-lg);font-weight:700;margin-bottom:var(--sp-3)}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:900;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:var(--bottom-nav-h);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -4px 16px #0000000f}.bottom-nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:var(--bottom-nav-h);border:none;background:none;cursor:pointer;color:var(--text-secondary);font:inherit;font-size:var(--fs-xs);font-weight:500;position:relative}.bottom-nav-item i{font-size:20px}.bottom-nav-item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-nav-item.active{color:var(--primary);font-weight:700}.bottom-nav-item.active:before{content:"";position:absolute;top:0;left:25%;right:25%;height:3px;border-radius:0 0 3px 3px;background:var(--primary)}.quick-fab{position:fixed;right:max(var(--sp-4),env(safe-area-inset-right));bottom:calc(var(--bottom-nav-h) + var(--sp-4) + env(safe-area-inset-bottom));z-index:950;display:flex;flex-direction:column;align-items:flex-end;gap:var(--sp-3)}.quick-fab-toggle{width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;background:var(--primary);color:#fff;font-size:22px;box-shadow:0 6px 18px #21808973;transition:transform .2s,background .2s}.quick-fab--open .quick-fab-toggle{transform:rotate(45deg);background:var(--primary-dark)}.quick-fab-menu{list-style:none;display:flex;flex-direction:column;align-items:flex-end;gap:10px}.quick-fab-item{display:inline-flex;align-items:center;gap:10px;min-height:var(--tap);padding:0 var(--sp-4) 0 6px;border:none;border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:var(--fs-md);font-weight:600;box-shadow:0 4px 14px #00000026;cursor:pointer}.quick-fab-item-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;font-size:var(--fs-sm)}.quick-fab-backdrop{position:fixed;inset:0;z-index:940;background:#13425259}.form-group{margin-bottom:var(--sp-4)}label{display:block;margin-bottom:6px;font-weight:500;font-size:var(--fs-sm);color:var(--text)}input,select,textarea{width:100%;min-height:var(--tap);padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:var(--fs-md);color:var(--text);background:var(--surface)}input[type=radio],input[type=checkbox]{width:auto;min-height:0}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #21808926}.form-row{display:grid;grid-template-columns:minmax(0,1fr);gap:0 var(--sp-4)}.field-hint{display:block;margin-top:var(--sp-1);font-size:var(--fs-xs);color:var(--text-secondary)}.search-box{position:relative;margin-bottom:var(--sp-4)}.search-box input{padding-left:38px}.search-icon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-secondary)}.month-bar{display:flex;align-items:center;gap:var(--sp-2)}.month-nav{flex-shrink:0;width:var(--tap);height:var(--tap);border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--primary);font-size:var(--fs-md);cursor:pointer}.month-nav:active{background:var(--primary-soft)}.month-current{position:relative;flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:0 var(--sp-2);border-radius:var(--radius-sm)}.month-current:focus-within{box-shadow:0 0 0 3px #21808933}.month-label{font-size:var(--fs-lg);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.month-caret{color:var(--text-secondary);font-size:var(--fs-sm)}.month-today-text{display:none}.month-input-overlay{position:absolute;inset:0;width:100%;height:100%;min-height:0;padding:0;border:none;opacity:0;cursor:pointer}.month-today{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:var(--tap);min-height:var(--tap);padding:0;border:none;border-radius:999px;background:var(--primary-soft);color:var(--primary);font:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer}.card-toggle{display:flex;align-items:center;gap:var(--sp-2);width:100%;min-height:var(--tap);margin:calc(-1 * var(--sp-2)) 0;padding:0;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.card-toggle .card-title{flex:1;min-width:0;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-toggle-hint{flex-shrink:0;font-size:var(--fs-sm);font-weight:700;color:var(--text-secondary);font-variant-numeric:tabular-nums}.card-toggle-chevron{flex-shrink:0;width:24px;text-align:center;color:var(--text-secondary);transition:transform .2s}.collapsible:not(.is-collapsed) .card-toggle{margin-bottom:var(--sp-3)}.collapsible.is-collapsed .card-toggle-chevron{transform:rotate(-90deg)}.collapsible.is-collapsed{padding-top:var(--sp-3);padding-bottom:var(--sp-3)}@media (prefers-reduced-motion: reduce){.card-toggle-chevron{transition:none}}.filter-group{margin-bottom:var(--sp-3);min-width:0}.filter-group--last{padding-bottom:var(--sp-3);margin-bottom:var(--sp-2);border-bottom:1px solid var(--border)}.filter-label{display:block;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);margin-bottom:6px}.filter-buttons{display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;margin:0 calc(-1 * var(--sp-3));padding:2px var(--sp-3)}.filter-buttons::-webkit-scrollbar{display:none}.filter-btn{flex:0 0 auto;min-height:38px;padding:0 14px;border:1.5px solid var(--border);background:var(--surface);color:var(--text);border-radius:999px;cursor:pointer;font-size:var(--fs-sm);white-space:nowrap;transition:all .2s}.filter-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}table{width:100%;border-collapse:collapse}thead{background:#f5f5f5;border-bottom:2px solid var(--border)}@media (hover: hover){tbody tr:hover{background:#f9f9f9}}th{padding:12px;text-align:left;font-weight:600;font-size:13px;color:var(--text)}td{padding:12px;border-bottom:1px solid var(--border)}.num{text-align:right;font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.empty-row td{text-align:center;color:var(--text-secondary);font-size:var(--fs-sm)}.list-table thead,.stack-table thead{display:none}.list-table,.list-table tbody,.stack-table,.stack-table tbody{display:block}.list-table tr{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:6px 10px;padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}.list-table td{display:block;padding:0;border:none;min-width:0}.list-table .td-desc{grid-column:1 / 4;grid-row:1;font-size:var(--fs-md);font-weight:600;overflow-wrap:anywhere}.list-table .td-amount{grid-column:4;grid-row:1;text-align:right;font-size:var(--fs-md);font-variant-numeric:tabular-nums;white-space:nowrap}.list-table .td-date{grid-column:1;grid-row:2;font-size:var(--fs-sm);color:var(--text-secondary);white-space:nowrap}.list-table .td-meta{grid-column:2;grid-row:2;font-size:var(--fs-sm);color:var(--text-secondary)}.list-table .td-status{grid-column:3;grid-row:2;justify-self:start;font-size:var(--fs-sm);color:var(--text-secondary)}.list-table .td-actions{grid-column:1 / -1;grid-row:3;justify-self:end}.list-table .empty-row{display:block}.list-table .empty-row td{padding:var(--sp-5) 0}.sub-table{margin-top:var(--sp-2)}.stack-table tr{display:block;padding:10px 0;margin-left:calc(var(--depth, 0) * 12px);border-bottom:1px solid var(--border)}.stack-table td{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding:2px 0;border:none;font-size:var(--fs-sm)}.stack-table td[data-label]:before{content:attr(data-label);color:var(--text-secondary);font-weight:400;text-align:left}.stack-table .td-title{display:block;font-size:var(--fs-md);font-weight:600;margin-bottom:2px}.stack-table .empty-row td{display:block}.period-table tr.period-parent td{font-weight:600}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.list-toolbar{display:grid;gap:10px;margin-bottom:var(--sp-4)}.list-toolbar .search-box{margin:0}.list-toolbar-actions{display:flex;gap:var(--sp-2)}.sort-select{position:relative;flex:1;min-width:0}.sort-select i{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.sort-select select{padding-left:38px}.filters-toggle{flex-shrink:0;padding:0 var(--sp-4);border:1px solid var(--border);background:var(--surface);font-weight:600}.filters-toggle.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--primary);color:#fff;font-size:var(--fs-xs);font-weight:700}.advanced-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);margin-bottom:var(--sp-4);padding:var(--sp-3);background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius-sm)}.advanced-filters .form-group{margin:0;min-width:0}.amount-range{grid-column:1 / -1}.range-label{display:block;margin-bottom:6px;font-weight:500;font-size:var(--fs-sm)}.amount-range-inputs{display:flex;align-items:center;gap:var(--sp-2);color:var(--text-secondary)}.amount-range-inputs input{flex:1;min-width:0}.list-totals{margin:var(--sp-2) 0 var(--sp-3);padding:14px;border-radius:var(--radius);background:linear-gradient(135deg,#f5f9fa,#e8f4f7);border:1px solid rgba(33,128,137,.18)}.list-totals-main{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3)}.list-totals-label{display:block;font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--primary-dark)}.list-totals-count{font-size:var(--fs-sm);color:var(--text-secondary)}.list-totals-value{font-size:clamp(22px,6.5vw,28px);font-weight:800;color:var(--danger-text);font-variant-numeric:tabular-nums;white-space:nowrap}.list-totals-breakdown{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:var(--sp-3)}.breakdown-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;min-height:var(--tap);padding:6px var(--sp-2);border:1.5px solid transparent;border-radius:var(--radius-sm);background:#ffffffbf;color:var(--text);font:inherit;text-align:left;cursor:pointer}.breakdown-item strong{font-size:var(--fs-sm);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.breakdown-label{display:flex;align-items:center;gap:5px;font-size:var(--fs-xs);color:var(--text-secondary)}.breakdown-label:before{content:"";flex-shrink:0;width:8px;height:8px;border-radius:50%;background:currentColor}.breakdown-item--paid .breakdown-label:before{background:var(--success)}.breakdown-item--pending .breakdown-label:before{background:var(--info)}.breakdown-item--future .breakdown-label:before{background:var(--warning)}.breakdown-item.active{border-color:var(--primary);background:var(--surface)}.link-btn{display:inline-flex;align-items:center;gap:6px;min-height:36px;margin-top:var(--sp-2);padding:0;border:none;background:none;color:var(--primary);font:inherit;font-size:var(--fs-sm);font-weight:600;text-decoration:underline;cursor:pointer}.empty-row .link-btn{margin:0 0 0 var(--sp-2)}.th-sort{display:inline-flex;align-items:center;gap:6px;padding:0;border:none;background:none;font:inherit;font-weight:600;color:inherit;cursor:pointer}.th-sort:hover{color:var(--primary)}.th-sort .sort-idle{opacity:.35}th[aria-sort] .th-sort{color:var(--primary)}.list-table tfoot{display:none}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:var(--fs-xs);font-weight:600;white-space:nowrap}.badge-success{background:#32c8842e;color:var(--success-text)}.badge-danger{background:#ff54592e;color:var(--danger-text)}.badge-warning{background:#e681572e;color:#b4562f}.badge-info{background:#6b75a129;color:var(--info)}.amount-positive{color:var(--success-text);font-weight:600}.amount-negative{color:var(--danger-text);font-weight:600}.text-success{color:var(--success-text)}.text-danger{color:var(--danger-text)}.text-primary{color:var(--primary)}.category-tag{display:inline-block;padding:2px 8px;background:var(--primary-soft);color:var(--primary);border-radius:4px;font-size:var(--fs-xs);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.series-note{font-size:13px;color:var(--primary-dark);background:#21808914;border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:var(--sp-4)}.series-note--action{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.series-scope{display:flex;flex-direction:column;gap:var(--sp-1)}.series-scope-title{margin:0}.series-scope-option{display:inline-flex;align-items:center;gap:8px;min-height:var(--tap);margin:0;font-weight:500;cursor:pointer}.series-scope-option input{width:auto}.series-hint{margin:0}.series-icon{color:var(--primary);font-size:var(--fs-xs);margin-left:6px}.series-mark{font-size:10px;margin-left:2px}.progress-bar{width:100%;height:8px;background:#e3e7e7;border-radius:4px;overflow:hidden;margin-bottom:var(--sp-2)}.progress-fill{height:100%;background:var(--primary);border-radius:4px;transition:width .3s}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:var(--sp-4)}.summary-card{background:var(--surface);padding:var(--sp-3) 14px;border-radius:8px;border:1px solid var(--border);min-width:0}.summary-label{font-size:var(--fs-xs);color:var(--text-secondary);margin-bottom:var(--sp-1)}.summary-value{font-size:clamp(18px,5vw,24px);font-weight:700;overflow-wrap:anywhere}.empty-state{text-align:center;padding:40px 20px;color:var(--text-secondary)}.empty-state-icon{font-size:48px;margin-bottom:15px;opacity:.5}.success-message{background:#32c8841a;border:1px solid var(--success);color:var(--success-text);padding:12px;border-radius:var(--radius-sm);margin-bottom:15px;display:none}.success-message.show{display:block}.dropdown-menu{position:relative;display:inline-block}.dropdown-content{display:none;position:absolute;right:0;background-color:var(--surface);min-width:160px;box-shadow:0 8px 16px #0003;padding:12px 0;z-index:1;border-radius:var(--radius-sm);border:1px solid var(--border)}.dropdown-content a{color:var(--text);padding:12px 16px;text-decoration:none;display:block;cursor:pointer;font-size:var(--fs-sm)}.dropdown-content a:hover{background-color:#f9f9f9}.dropdown-content a.danger{color:var(--danger)}.dropdown-menu.active .dropdown-content{display:block}.modal{display:none;position:fixed;inset:0;background:#00000080;z-index:1000;justify-content:center;align-items:flex-end}.modal.active{display:flex}.modal-content{background:var(--surface);width:100%;max-height:calc(100dvh - 24px - env(safe-area-inset-top));overflow-y:auto;overscroll-behavior:contain;border-radius:16px 16px 0 0;padding:0 var(--sp-4) calc(var(--sp-4) + env(safe-area-inset-bottom));box-shadow:0 -10px 40px #0003}.modal-header{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);margin:0 calc(-1 * var(--sp-4)) var(--sp-3);padding:18px var(--sp-4) 10px;background:var(--surface);border-bottom:1px solid var(--border)}.modal-header:before{content:"";position:absolute;top:6px;left:50%;width:40px;height:4px;margin-left:-20px;border-radius:2px;background:#d5dcdc}.modal-title{font-size:var(--fs-lg)}.modal-close{flex-shrink:0;width:var(--tap);height:var(--tap);margin-right:-10px;background:none;border:none;font-size:28px;line-height:1;cursor:pointer;color:var(--text-secondary)}.modal-content .btn-submit{position:sticky;bottom:0;z-index:1;margin-top:var(--sp-2);box-shadow:0 0 0 var(--sp-4) var(--surface),0 -10px 16px 6px var(--surface)}.goals-header{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:var(--sp-3)}.goal-item{padding:10px 0;border-top:1px solid var(--border)}.goal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-2);margin-bottom:6px}.goal-title{display:flex;flex-direction:column;gap:2px;min-width:0}.goal-head .action-buttons{flex-shrink:0}.goal-split{margin:0 0 var(--sp-4);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:0}.goal-split legend{padding:0 var(--sp-1);font-weight:600}.goal-split-option{display:flex;align-items:flex-start;gap:var(--sp-2);min-height:var(--tap);padding:var(--sp-2) 0;cursor:pointer}.goal-priority-list{margin:var(--sp-2) 0;padding:0;list-style:none}.goal-priority-item{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-1) 0;border-top:1px solid var(--border)}.goal-priority-item.is-self{font-weight:600}.goal-priority-rank{width:1.5em;text-align:center;color:var(--text-secondary)}.goal-priority-name{flex:1;min-width:0;overflow-wrap:anywhere}.goal-line{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin-bottom:6px}.goal-meta,.goal-status{font-size:var(--fs-xs);color:var(--text-secondary)}.goal-item[data-status=reached] .progress-fill{background:var(--success)}.goal-item[data-status=missed] .progress-fill{background:var(--danger)}.goal-success{color:var(--success-text);font-weight:600}.goal-missed{color:var(--danger-text);font-weight:600}.goal-manage-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:var(--sp-2) 0;border-top:1px solid var(--border)}.goal-manage-row .goal-meta{display:block}.envelope-card{margin-bottom:var(--sp-4);margin-left:calc(var(--depth, 0) * 10px);border-left-width:4px;padding:14px}.envelope-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-3)}.envelope-title{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;min-width:0;font-size:var(--fs-md);color:var(--text);overflow-wrap:anywhere}.envelope-head .action-buttons{flex-shrink:0;flex-wrap:nowrap}.envelope-toggle{background:none;border:none;cursor:pointer;color:var(--text-secondary);min-width:32px;min-height:32px}.envelope-amounts{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--sp-2);margin-bottom:var(--sp-3);padding:10px;background:var(--surface-muted);border-radius:var(--radius-sm)}.envelope-amounts dt{font-size:var(--fs-xs);color:var(--text-secondary)}.envelope-amounts dd{font-weight:700;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.alert-overbudget{background:#ff54591a;border:1px solid var(--danger);color:var(--danger-text);padding:10px;border-radius:var(--radius-sm);margin-bottom:var(--sp-3);font-size:var(--fs-sm);font-weight:600}.kind-badge{font-size:var(--fs-xs);font-weight:600;padding:2px 8px;border-radius:10px;background:var(--primary-soft);color:var(--primary)}.kind-badge.kind-income{background:#32c88426;color:var(--success-text)}.kind-badge.kind-total{background:#eef0f4;color:var(--text-secondary)}.period-selector{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;gap:var(--sp-3);margin-bottom:var(--sp-4)}.period-selector .field-hint{grid-column:1 / -1;margin:0}@media (min-width: 768px){:root{--gutter: 20px}header{padding:calc(20px + env(safe-area-inset-top)) 0 20px}.main{gap:var(--sp-5);padding:var(--sp-5) 0}.main.dashboard{padding-bottom:var(--sp-6)}.desktop-only{display:block}.dashboard>.sidebar,.dashboard>.content{display:flex}.dashboard .month-bar{order:0;position:static;margin:0;padding:0;background:none;border:none;justify-content:flex-start}.month-current{flex:0 1 auto;min-width:200px;border:1px solid var(--border);background:var(--surface)}.month-label{font-size:var(--fs-md)}.month-today{min-height:36px;padding:0 var(--sp-3)}.month-today-text{display:inline}.goals-card .goals-title{display:block}.goals-card .goals-header{justify-content:space-between}.bottom-nav,.quick-fab,.quick-fab-backdrop,.tab-heading{display:none}.card{padding:20px}.stats-grid{gap:15px}.stat-box{padding:15px}.tabs{display:flex;border-bottom:2px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;overflow-x:auto;scrollbar-width:none}.tab-content{padding:20px}.form-row{grid-template-columns:repeat(2,minmax(0,1fr))}label,input,select,textarea{font-size:var(--fs-sm)}input,select,textarea{min-height:40px}.btn-small{min-width:32px;min-height:32px;padding:0 10px;font-size:13px}.filter-buttons{flex-wrap:wrap;overflow:visible;margin:0;padding:0}.period-selector{display:flex;flex-wrap:wrap;gap:12px 20px}.period-selector .field-hint{align-self:center}.envelope-card{margin-left:calc(var(--depth, 0) * 24px);padding:20px}.envelope-amounts dd{font-size:var(--fs-md)}.summary-cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.summary-card{padding:20px}.list-table,.stack-table{display:table}.list-table thead,.stack-table thead{display:table-header-group;background:#f5f5f5;border-bottom:2px solid var(--border)}.list-table tbody,.stack-table tbody{display:table-row-group}.list-table tr,.list-table .empty-row,.stack-table tr{display:table-row;margin:0;padding:0}.list-table td,.stack-table td,.stack-table .td-title,.stack-table .empty-row td{display:table-cell;padding:12px;border-bottom:1px solid var(--border);font-size:var(--fs-sm);font-weight:inherit;vertical-align:middle}.list-table .td-desc,.list-table .td-amount{font-size:var(--fs-sm)}.list-table .td-date{color:var(--text);font-weight:600}.list-table .td-amount,.list-table .td-amount.amount-negative,.list-table .td-amount.amount-positive{text-align:left;font-weight:600}.list-table .td-desc{font-weight:400}.stack-table td[data-label]:before{content:none}.stack-table .td-title{padding-left:calc(12px + var(--depth, 0) * 18px)}.period-table tr.period-parent td{font-weight:600}.list-toolbar{grid-template-columns:minmax(0,1fr) auto;align-items:center}.sort-select{flex:0 1 240px}.advanced-filters{grid-template-columns:repeat(4,minmax(0,1fr));align-items:end}.amount-range{grid-column:auto}.list-totals{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:0 var(--sp-5);padding:var(--sp-4) 20px}.list-totals-main{flex-direction:column-reverse;align-items:flex-start;gap:0}.list-totals-breakdown{margin:0}.list-totals .link-btn{grid-column:1 / -1}.list-table tfoot{display:table-footer-group}.list-table tfoot th,.list-table tfoot td{padding:12px;border-top:2px solid var(--border);font-weight:700;text-align:left;background:#f5f5f5}.list-table tfoot .td-amount{font-size:var(--fs-md)}.sub-table thead{background:#f0f0f0}.sub-table th,.sub-table td{padding:8px;font-size:13px}.sub-table tbody tr{background:#fafafa}.modal{align-items:center}.modal-content{width:90%;max-width:500px;max-height:calc(100dvh - 48px);border-radius:var(--radius);padding:0 30px 30px;box-shadow:0 10px 40px #0003}.modal-header{margin:0 -30px 20px;padding:24px 30px 12px;border-bottom:none}.modal-header:before{content:none}}@media (min-width: 1024px){.main{grid-template-columns:300px minmax(0,1fr);gap:30px;padding:30px 0}.content,.sidebar{gap:20px}.tab{padding:15px}.summary-value{font-size:var(--fs-xl)}.stat-box{padding:var(--sp-3) 6px}.stat-value{font-size:18px}}.reset-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--background, #f5f7fa);padding:20px}.reset-card{background:var(--surface, #fff);border-radius:12px;box-shadow:var(--shadow, 0 4px 20px rgba(0,0,0,.08));padding:40px 36px;width:100%;max-width:420px;text-align:center}.reset-logo{font-size:40px;color:var(--primary, #218089);margin-bottom:16px}.reset-card h2{margin:0 0 8px;color:var(--text, #222)}.reset-hint{color:var(--text-secondary, #777);font-size:14px;margin-bottom:20px}.reset-actions{margin-top:16px}.success-banner{background:#32c8841a;border:1px solid #32c884;color:#1a8c56;border-radius:8px;padding:14px 16px;margin:12px 0;font-size:14px;text-align:left}.btn-forgot{background:none;border:none;color:var(--primary, #218089);font-size:13px;cursor:pointer;padding:4px 0;text-decoration:underline;display:block;margin:6px auto 0}.error-banner{background:#ff545914;border:1px solid var(--danger, #ff5459);color:var(--danger, #ff5459);border-radius:8px;padding:14px 16px;margin:12px 0;font-size:14px}
