:root{--paper:#f3f5ef;--card:#fff;--ink:#1f261f;--ink-soft:#5c655a;--green:#235c46;--green-deep:#173e2f;--green-tint:#e4eee6;--credit:#1e6b45;--debit:#a23b2c;--debit-tint:#f7e9e5;--line:#dde3d8;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-ui:"Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-mono:"IBM Plex Mono", Consolas, "Courier New", monospace}body{background-color:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.5}code{font-family:var(--font-mono)}button,input,select,textarea{font-family:inherit}select,textarea,input[type=text],input[type=date],input[type=number]{border:1px solid var(--line);background-color:var(--card);color:var(--ink);border-radius:8px;padding:8px 10px;font-size:.9rem}select{cursor:pointer}select:focus,textarea:focus,input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-tint);outline:none}:focus-visible{outline:2px solid var(--green);outline-offset:2px}::selection{background-color:var(--green-tint)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.duplicate-resolver{background-color:var(--debit-tint);border:1px solid var(--debit);border-radius:10px;margin-top:24px;padding:18px 20px}.duplicate-resolver h3{color:var(--debit);margin:0 0 12px;font-size:1rem}.duplicate-item{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:10px 0;display:flex}.duplicate-info{font-family:var(--font-mono);color:var(--ink);margin:0;font-size:.85rem}.duplicate-actions{gap:8px;display:flex}.duplicate-actions button{background-color:var(--card);border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;border-radius:6px;padding:4px 12px;font-size:.8rem;font-weight:600;transition:color .2s,border-color .2s}.duplicate-actions button:hover{color:var(--green);border-color:var(--green)}.filter-bar{background-color:var(--card);border:1px solid var(--line);border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-bottom:20px;padding:14px 18px;display:flex}.filter-bar label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:.75rem;font-weight:600}.filter-bar input,.filter-bar select{width:180px}.filter-bar select{width:220px}.date-range{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.date-range input{width:auto}.selected-categories{flex-wrap:wrap;gap:6px;display:flex}.category-tag{background-color:var(--green-tint);color:var(--green-deep);border-radius:999px;align-items:center;padding:4px 12px;font-size:.85rem;font-weight:500;display:inline-flex}.remove-category{color:var(--debit);cursor:pointer;background:0 0;border:none;margin-left:6px;padding:0;font-size:15px;line-height:1}@media (width<=600px){.filter-bar input,.filter-bar select{width:100%}}.transaction-table{border-collapse:collapse;text-align:left;width:100%;margin:16px 0 4px;font-size:.95rem}.transaction-table th{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);border-bottom:2px solid var(--green);padding:10px 12px;font-size:.75rem;font-weight:600}.transaction-table td{border-bottom:1px solid var(--line);padding:10px 12px}.transaction-table tbody tr:hover{background-color:var(--green-tint)}.transaction-table .date{font-family:var(--font-mono);color:var(--ink-soft);white-space:nowrap;font-size:.85rem}.transaction-table th.amount,.transaction-table td.amount{text-align:right}.transaction-table td.amount{font-family:var(--font-mono);white-space:nowrap;font-weight:500}.transaction-table td.amount.credit{color:var(--credit)}.transaction-table td.amount.debit{color:var(--debit)}.transaction-table td button{border:1px solid var(--line);color:var(--ink-soft);cursor:pointer;background-color:#0000;border-radius:6px;margin:0 4px 0 0;padding:4px 12px;font-size:.8rem;font-weight:600;transition:color .2s,border-color .2s}.transaction-table .edit-btn:hover:not(:disabled){color:var(--green);border-color:var(--green)}.transaction-table .delete-btn:hover{color:var(--debit);border-color:var(--debit)}.transaction-table .cancel-btn:hover{color:var(--ink);border-color:var(--ink)}.transaction-table td button:disabled{opacity:.5;cursor:not-allowed}.transaction-table .editing-row td{background-color:var(--green-tint)}.transaction-table .editing-row input{box-sizing:border-box;width:100%;padding:6px 8px;font-size:.9rem}.toggle-container{flex-flow:wrap;justify-content:center;align-items:center;gap:10px;margin-bottom:12px;display:flex}.toggle-switch{border:1px solid var(--line);background-color:var(--card);min-width:0;color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.04em;box-sizing:border-box;border-radius:999px;justify-content:center;align-items:center;padding:6px 16px;font-size:.78rem;font-weight:600;transition:color .2s,border-color .2s,background-color .2s;display:flex}.toggle-switch:hover{color:var(--green);border-color:var(--green)}.toggle-span .toggle-switch{background-color:var(--green);border-color:var(--green);color:#f6f5ec;cursor:default}.toggle-text{text-align:center;pointer-events:none;white-space:nowrap}.toggle-span{color:var(--ink-soft);text-align:center;flex-direction:row;align-items:center;font-size:.85rem;font-weight:600;display:flex}.app-container{max-width:1180px;margin:0 auto;padding:24px 24px 56px}.app-header{background-color:var(--green);border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;padding:20px 28px;display:flex}.app-title{font-family:var(--font-display);letter-spacing:.01em;color:#f6f5ec;margin:0;font-size:1.9rem;font-weight:600}.app-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.app-header .action-button{color:#f6f5ec;background-color:#0000;border:1px solid #f6f5ec73}.app-header .action-button:hover{background-color:#f6f5ec24;border-color:#f6f5ecb3}.app-header .action-button:active{background-color:#f6f5ec38}.app-header select{color:#f6f5ec;background-color:#0000;border-color:#f6f5ec73}.app-header select option{color:var(--ink)}.action-button{letter-spacing:.01em;border:1px solid var(--green);color:#f6f5ec;background-color:var(--green);cursor:pointer;border-radius:8px;align-items:center;padding:9px 18px;font-size:.9rem;font-weight:600;transition:background-color .2s,border-color .2s;display:inline-flex}.action-button:hover{background-color:var(--green-deep);border-color:var(--green-deep)}.action-button:disabled,.action-button.disabled{opacity:.55;cursor:not-allowed}.file-button:focus-within{outline-offset:2px;outline:2px solid #f6f5ec}.tab-content{background-color:var(--card);border:1px solid var(--line);border-top:none;border-radius:0 0 12px 12px;padding:28px}.error-message{background-color:var(--debit-tint);border:1px solid var(--debit);color:var(--debit);border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:16px;padding:12px 16px;display:flex}.error-message button{cursor:pointer;color:var(--debit);background:0 0;border:none;font-size:18px}.loading-spinner{text-align:center;color:var(--ink-soft);padding:20px}.error-fallback{text-align:center;background-color:var(--card);border:1px solid var(--line);border-radius:12px;margin:20px;padding:40px}.error-fallback button{background-color:var(--green);color:#f6f5ec;cursor:pointer;border:none;border-radius:8px;margin-top:16px;padding:9px 18px;font-weight:600}.error-fallback button:hover{background-color:var(--green-deep)}@media (width<=600px){.app-container{padding:12px 12px 40px}.app-header{padding:16px 18px}.tab-content{padding:16px}}.tabs{background-color:var(--card);border:1px solid var(--line);border-bottom:1px solid var(--line);z-index:1000;border-radius:12px 12px 0 0;align-items:stretch;margin:0;padding:0;display:flex;position:sticky;top:0;overflow:hidden}.tab-button{text-align:center;color:var(--ink-soft);cursor:pointer;background-color:#0000;border:none;border-bottom:2px solid #0000;flex:1;padding:14px 12px;font-size:.9rem;font-weight:600;transition:color .2s,border-color .2s}.tab-button:hover{color:var(--ink);background-color:var(--green-tint)}.tab-button.active{color:var(--green);border-bottom-color:var(--green)}.tab-button:focus-visible{outline:2px solid var(--green);outline-offset:-2px}@media (width<=768px){.tab-button{padding:10px 8px;font-size:.8rem}}@media (width<=480px){.tab-button{padding:8px 6px;font-size:.72rem}}
