:root{--color-bg: #f8f9fa;--color-surface: #ffffff;--color-primary: #1d3557;--color-primary-light: #457b9d;--color-primary-pale: #e8eef4;--color-accent: #e63946;--color-text: #1b1b1b;--color-text-muted: #6c757d;--color-border: #dee2e6;--color-danger: #c1121f;--color-success: #2d6a4f;--color-warn: #e9c46a;--radius: 10px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);--nav-height: 60px}[data-theme=dark]{--color-bg: #0d1b2a;--color-surface: #1b2838;--color-primary-pale: #1a2a3a;--color-text: #e8e8e8;--color-text-muted: #9ca3af;--color-border: #334155;--shadow: 0 1px 3px rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100%;max-width:600px;margin:0 auto}.app-header{background:var(--color-primary);color:#fff;padding:1rem 1.25rem;text-align:center;flex-shrink:0}.app-header-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.app-header-bar .app-title-row{flex:1;justify-content:center;margin-left:44px}.header-settings-btn{flex-shrink:0;color:#fff}.header-settings-btn:hover{background:#ffffff26}.app-title-row{display:flex;align-items:center;justify-content:center;gap:.45rem}.app-title{font-size:1.2rem;font-weight:700}.app-beta{font-size:.65rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:.15rem .4rem;border-radius:4px;background:#fff3;color:#fff}.app-tagline{margin:.15rem 0 0;font-size:.75rem;font-weight:400;opacity:.85}.app-main{flex:1;padding:1rem 1.25rem;padding-bottom:calc(var(--nav-height) + 1rem);overflow-y:auto}.loading-text{text-align:center;color:var(--color-text-muted);padding:2rem}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:600px;display:flex;background:var(--color-surface);border-top:1px solid var(--color-border);height:var(--nav-height);z-index:100}.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;border:none;background:none;color:var(--color-text-muted);font-size:.7rem;cursor:pointer;min-height:44px}.nav-btn.active{color:var(--color-primary);font-weight:700}.month-nav{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1rem}.month-label{font-weight:600;min-width:140px;text-align:center}.icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:none;background:none;color:inherit;cursor:pointer;border-radius:var(--radius)}.icon-btn:hover{background:var(--color-primary-pale)}.ltb-chip{display:flex;align-items:center;gap:.5rem;padding:.85rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-weight:600}.ltb-chip.zero{background:#d8f3dc;color:var(--color-success)}.ltb-chip.warn{background:#fff3cd;color:#856404}[data-theme=dark] .ltb-chip.zero{background:#1b3a2a;color:#95d5b2}[data-theme=dark] .ltb-chip.warn{background:#3d3520;color:#e9c46a}.ltb-label{flex:1;font-size:.85rem}.ltb-value{font-size:1.25rem}.section-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:.5rem}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.section-heading .section-label{margin-bottom:0}.section-label-btn{background:none;border:none;padding:0;cursor:pointer;font:inherit;text-align:left;min-width:0}.group-name-input{flex:1;min-width:0;margin:0;padding:.15rem .35rem;border:1px solid var(--color-primary);border-radius:calc(var(--radius) - 2px);background:var(--color-surface);color:var(--color-primary);font:inherit;font-weight:700;text-transform:uppercase;letter-spacing:.06em;outline:none}.inline-group-edit{display:flex;flex-direction:column;gap:.35rem;flex:1;min-width:0}.inline-group-edit .group-name-input{width:100%}.section-heading-start{display:flex;align-items:center;gap:.35rem;min-width:0;flex:1}.expense-toolbar{margin-top:.25rem;margin-bottom:.75rem}.budget-section{margin-bottom:1.25rem}.budget-section.is-dragging{z-index:2}.budget-section.expense-group{margin-bottom:1rem;padding:0 .65rem .65rem;background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-primary-light);border-radius:var(--radius);box-shadow:var(--shadow)}.budget-section.expense-group>.section-heading{margin:0 -.65rem .65rem;padding:.5rem .65rem;background:var(--color-primary-pale);border-radius:calc(var(--radius) - 2px) var(--radius) 0 0}.budget-section.expense-group .section-label{color:var(--color-primary);font-weight:700}.budget-section.expense-group .category-row-wrap{margin-bottom:.4rem}.budget-section.expense-group .category-row-wrap:last-child{margin-bottom:0}.budget-section.expense-group .group-items{min-height:2.5rem}.income-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;width:100%;padding:.75rem;margin-bottom:.5rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);font-size:1rem;color:var(--color-text)}.income-name-edit{display:flex;align-items:center;gap:.15rem;flex:1;min-width:0}.income-name-edit .inline-name-input{flex:1}.income-name-edit .icon-btn{flex-shrink:0}.income-name-btn,.account-name-btn{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer;min-width:0}.income-name-btn:hover,.income-name-btn:focus-visible,.account-name-btn:hover,.account-name-btn:focus-visible{color:var(--color-primary);outline:none}.income-amount-btn{background:none;border:none;padding:.1rem .25rem;margin:0;font:inherit;font-weight:600;color:inherit;cursor:pointer;border-radius:calc(var(--radius) - 2px);font-variant-numeric:tabular-nums;flex-shrink:0}.income-amount-btn:hover,.income-amount-btn:focus-visible{background:var(--color-primary-pale);color:var(--color-primary);outline:none}.income-amount-input{width:5.5rem;flex-shrink:0}.inline-name-input{flex:1;min-width:0;width:auto;margin:0;padding:.25rem .4rem;font-size:inherit}.inline-add-group{margin-bottom:.75rem}.category-row-wrap{display:flex;align-items:stretch;gap:.25rem;margin-bottom:.5rem}.category-row-wrap.is-dragging{opacity:.7;z-index:2}.drag-handle{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:2rem;padding:0;border:none;background:transparent;color:var(--color-text-muted);cursor:grab;touch-action:none}.drag-handle:active{cursor:grabbing}.category-row{display:block;flex:1;min-width:0;text-align:left;padding:.65rem .75rem;margin-bottom:0;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text)}.category-row-top{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.35rem}.category-name{font-weight:500;min-width:0}.category-name-btn{background:none;border:none;padding:0;margin:0;font:inherit;font-weight:500;color:inherit;text-align:left;cursor:pointer;min-width:0}.category-amounts{display:inline-flex;align-items:center;flex-shrink:0;font-size:.8rem;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.category-budgeted-btn{background:none;border:none;padding:.1rem .2rem;margin:0;font:inherit;font-size:inherit;color:var(--color-text);font-weight:600;cursor:pointer;border-radius:calc(var(--radius) - 2px)}.category-budgeted-btn:hover,.category-budgeted-btn:focus-visible{background:var(--color-primary-pale);color:var(--color-primary);outline:none}.inline-amount-input{width:4.5rem;min-width:0;margin:0;padding:.15rem .3rem;border:1px solid var(--color-primary);border-radius:calc(var(--radius) - 2px);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:.8rem;font-weight:600;text-align:right;outline:none}.category-activity{color:var(--color-text-muted)}.category-activity-btn{background:none;border:none;padding:.1rem .2rem;margin:0;font:inherit;font-size:inherit;color:var(--color-text-muted);cursor:pointer;border-radius:calc(var(--radius) - 2px)}.category-activity-btn:hover,.category-activity-btn:focus-visible{background:var(--color-primary-pale);color:var(--color-primary);outline:none}.category-remaining{font-size:.75rem;color:var(--color-text-muted)}.category-remaining.negative{color:var(--color-danger);font-weight:600}.inline-new-item{display:flex;align-items:center;gap:.35rem;margin-top:.35rem;padding:.4rem .5rem;border:1px dashed var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.inline-new-item .text-input{margin-bottom:0;padding:.4rem .5rem;font-size:.9rem;width:auto;min-width:0}.inline-new-item-name{flex:1 1 0;min-width:0}.inline-new-item-amount{width:5rem;flex-shrink:0;text-align:right}.inline-new-item .icon-btn{flex-shrink:0}.inline-meta-edit{display:flex;flex-direction:column;gap:.5rem}.inline-meta-name{width:100%;min-width:0;margin-bottom:0;padding:.4rem .5rem;font-size:.9rem}.inline-meta-actions{display:flex;flex-shrink:0;align-items:center;gap:.1rem}.inline-meta-actions .icon-btn{min-width:44px;min-height:44px;padding:0}.inline-meta-edit .chip-row.compact{margin-bottom:0}.chip-row.compact{margin-bottom:0;gap:.3rem}.chip-row.compact .chip-btn{padding:.25rem .55rem;font-size:.75rem;min-height:28px}@media(max-width:420px){.inline-new-item{flex-wrap:wrap}.inline-new-item-amount{width:100%;text-align:left}.income-row{flex-wrap:wrap}}.progress-bar{height:6px;background:var(--color-border);border-radius:3px;overflow:hidden;margin-bottom:.25rem}.progress-bar.small{height:4px}.progress-fill{height:100%;background:var(--color-primary-light);border-radius:3px;transition:width .2s}.progress-fill.warn{background:var(--color-warn)}.progress-fill.over{background:var(--color-danger)}.fab{position:fixed;right:max(1.25rem,calc(50% - 280px));bottom:calc(var(--nav-height) + 1rem);width:56px;height:56px;border-radius:50%;border:none;background:var(--color-accent);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0003;cursor:pointer;z-index:90}.chip-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.75rem}.chip-row.wrap{flex-wrap:wrap}.chip-btn{padding:.4rem .75rem;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);font-size:.8rem;cursor:pointer;color:var(--color-text);min-height:36px}.chip-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.text-input{width:100%;padding:.65rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);font-size:1rem;margin-bottom:.75rem;background:var(--color-surface);color:var(--color-text)}.amount-input{font-variant-numeric:tabular-nums}.amount-input.large{font-size:1.75rem;font-weight:700;text-align:center}.field-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.35rem}.primary-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.65rem 1.25rem;border:none;border-radius:var(--radius);background:var(--color-primary);color:#fff;font-weight:600;cursor:pointer;min-height:44px}.primary-btn.full{width:100%}.primary-btn:disabled{opacity:.6;cursor:not-allowed}.ghost-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text);cursor:pointer;min-height:44px}.ghost-btn.small{min-height:36px;font-size:.8rem;padding:.35rem .6rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:200}.modal.sheet{width:100%;max-width:600px;background:var(--color-surface);border-radius:var(--radius) var(--radius) 0 0;padding:1.25rem;max-height:90vh;overflow-y:auto}.sheet-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:.5rem}.onboarding{max-width:360px;margin:0 auto}.onboarding-hero{text-align:center;margin-bottom:1.5rem;color:var(--color-primary)}.onboarding-hero h2{margin-top:.5rem}.txn-list{list-style:none}.txn-item{position:relative;padding:.75rem;border-bottom:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);margin-bottom:.5rem}.txn-row-btn{display:block;width:100%;padding:0;padding-right:2.25rem;border:none;background:transparent;color:inherit;text-align:left;cursor:pointer;font:inherit}.txn-main{display:flex;justify-content:space-between}.txn-payee{font-weight:500}.txn-date{font-size:.8rem;color:var(--color-text-muted)}.txn-meta{display:flex;justify-content:space-between;font-size:.85rem;margin-top:.25rem}.txn-amount{font-weight:600}.txn-amount.positive{color:var(--color-success)}.txn-delete{position:absolute;right:.5rem;top:50%;transform:translateY(-50%)}.empty-state{text-align:center;padding:3rem 1rem;color:var(--color-text-muted)}.empty-state p{margin-top:.5rem}.more-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}.card-title{display:flex;align-items:center;gap:.4rem;font-size:.95rem;margin-bottom:.75rem}.account-list{list-style:none;margin-bottom:.75rem}.account-item{border-bottom:1px solid var(--color-border)}.account-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;width:100%;padding:.5rem 0;color:inherit;min-height:44px}.account-name{display:flex;align-items:center;gap:.35rem;flex:1;min-width:0}.account-name .inline-name-input{width:100%}.more-card .inline-new-item{margin-bottom:.5rem}.stat-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:999px;background:var(--color-primary-pale);font-size:.8rem;font-weight:500}.stat-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.warn-chip{background:#fff3cd}.danger-chip{background:var(--color-danger);color:#fff}.card-actions,.settings-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.report-bars{list-style:none}.report-bars li{display:grid;grid-template-columns:1fr 2fr auto;gap:.5rem;align-items:center;margin-bottom:.5rem;font-size:.8rem}.report-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-amt{font-variant-numeric:tabular-nums}.toast{padding:.5rem .75rem;border-radius:var(--radius);margin-top:.5rem;font-size:.85rem}.toast.success{background:#d8f3dc;color:var(--color-success)}.toast.error{background:#fde8e8;color:var(--color-danger)}.install-banner{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.install-banner-text{flex:1;display:flex;align-items:center;gap:.4rem;font-size:.85rem}.install-banner-actions{display:flex;gap:.5rem}.install-banner-btn{padding:.4rem .8rem;font-size:.85rem}.install-banner-dismiss{border:none;background:none;cursor:pointer;color:var(--color-text-muted)}.split-row{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:.75rem}
