:root{--text-muted:#adb5bd;--text-muted-dark:#6c757d;--teal-darker:#228a7d;--teal-darkest:#1a6e62;--header-logo-height:32px;--header-icon-size:24px;--font-family-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif}body{background-color:var(--light-gray);color:var(--deep-navy);font-family:var(--font-family-sans);line-height:1.5}a{color:#2a9d8f;color:var(--teal);text-decoration:none}a:hover{color:#228a7d;color:var(--teal-darker)}:root{--deep-navy:#0d1b2a;--medium-blue:#1d3557;--teal:#2a9d8f;--light-gray:#e9ecef;--warm-orange:#ff8c42;--white:#fff;--gray-border:#ced4da;--text-muted:#6c757d;--warm-orange-darker:#e0752a;--warm-orange-lighter:#ffe8d6;--teal-lighter:#e0f2f1;--medium-blue-lighter:#4a658a}*,:after,:before{box-sizing:border-box}html{height:100%}body,html{margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#e9ecef;background-color:var(--light-gray,#f0f2f5);color:#0d1b2a;color:var(--deep-navy,#1a202c);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:16px;min-height:100%}.auth-container{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:20px}.auth-card,.auth-container{box-sizing:border-box;width:100%}.auth-card{background-color:#fff;background-color:var(--white,#fff);border-radius:8px;box-shadow:0 4px 12px #0000001a;max-width:450px;padding:30px 40px;text-align:center}.auth-title{color:#0d1b2a;color:var(--deep-navy,#1a202c);font-size:1.8em;font-weight:600;margin-bottom:10px}.auth-subtitle{color:#1d3557;color:var(--medium-blue,#4a5568);font-size:1em;margin-bottom:25px}.auth-form{flex-direction:column;text-align:left}.auth-form,.form-row{display:flex;gap:15px}.form-row .form-group{flex:1 1;margin-bottom:0}.form-group{margin-bottom:0;position:relative}.form-group label{color:#1d3557;color:var(--medium-blue,#2d3748);display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-group input[type=email],.form-group input[type=password],.form-group input[type=text]{background-color:#fff;background-color:var(--white,#fff);border:1px solid #ced4da;border:1px solid var(--gray-border,#cbd5e0);border-radius:6px;color:#0d1b2a;color:var(--deep-navy,#2d3748);font-size:16px;line-height:1.5;padding:12px 16px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.form-group.has-password-toggle input[type=password]{padding-right:45px}.form-group input:focus{border-color:#2a9d8f;border-color:var(--teal,#2a9d8f);box-shadow:0 0 0 3px #e0f2f1;box-shadow:0 0 0 3px var(--teal-lighter,#2a9d8f26);outline:none}.form-group input::placeholder{color:#6c757d;color:var(--text-muted,#adb5bd);opacity:1}.password-toggle-btn{align-items:center;background:none;border:none;bottom:0;color:#6c757d;color:var(--text-muted,#6c757d);cursor:pointer;display:flex;height:43px;justify-content:center;margin:0;opacity:.7;padding:0 12px;position:absolute;right:0;transition:opacity .2s ease,color .2s ease;width:45px}.password-toggle-btn:hover{color:#2a9d8f;color:var(--teal,#2a9d8f);opacity:1}.password-toggle-btn svg{height:18px;width:18px}.form-group input.input-error{background-color:#ffe8d6;background-color:var(--warm-orange-lighter,#fff5f5);border-color:#ff8c42;border-color:var(--warm-orange,#e53e3e)}.form-group input.input-error:focus{border-color:#ff8c42;border-color:var(--warm-orange,#e53e3e);box-shadow:0 0 0 3px #ffe8d6;box-shadow:0 0 0 3px var(--warm-orange-lighter,#ff8c4226)}.field-error{color:#e0752a;color:var(--warm-orange-darker,#c53030);display:block;font-size:13px;margin-top:5px;padding-left:2px;text-align:left}.auth-error-message{align-items:center;background-color:#ffe8d6;background-color:var(--warm-orange-lighter,#fed7d7);border:1px solid #ff8c42;border:1px solid var(--warm-orange,#f56565);border-left-width:4px;border-radius:4px;color:#e0752a;color:var(--warm-orange-darker,#a34a00);display:flex;font-size:14px;font-weight:500;gap:10px;margin-bottom:20px;padding:12px 16px;text-align:left}.auth-button{background-color:#ff8c42;background-color:var(--warm-orange,#ff8c42);border:none;border-radius:6px;box-shadow:0 2px 4px #00000014;color:#fff;color:var(--white,#fff);cursor:pointer;font-size:16px;font-weight:600;margin-top:10px;padding:12px 15px;transition:background-color .25s ease,transform .15s ease,box-shadow .25s ease;width:100%}.auth-button:hover:not(:disabled){background-color:#e0752a;background-color:var(--warm-orange-darker,#e0752a);box-shadow:0 3px 6px #0000001a;transform:translateY(-1px)}.auth-button:active:not(:disabled){box-shadow:0 1px 2px #0000001a;transform:translateY(0)}.auth-button:disabled{background-color:#4a658a;background-color:var(--medium-blue-lighter,#a0aec0);box-shadow:none;cursor:not-allowed;opacity:.65;transform:none}.auth-footer,.auth-form-footer{color:#6c757d;color:var(--text-muted,#6c757d);font-size:.9em;margin-top:25px;text-align:center}.auth-footer a,.auth-form-footer a{color:#2a9d8f;color:var(--teal,#2a9d8f);font-weight:600;text-decoration:none}.auth-footer a:hover,.auth-form-footer a:hover{color:#1d3557;color:var(--medium-blue,#1d3557);text-decoration:underline}.forgot-password{margin-bottom:20px;margin-top:-10px;text-align:right}.forgot-password a{font-size:14px}.success-message{text-align:center}.success-message,.success-message h2{color:#2a9d8f;color:var(--teal,#2f855a)}.success-message h2{font-size:22px;margin-bottom:12px}.success-message p{color:#1d3557;color:var(--medium-blue,#38a169);font-size:16px}.auth-page-container{display:flex;min-height:100vh;width:100%}.auth-split-layout{display:grid;grid-template-columns:5fr 3fr;height:100vh;overflow:hidden;width:100%}.auth-form-column{align-items:center;background-color:#fff;background-color:var(--white);display:flex;justify-content:center;overflow-y:auto;padding:40px 60px;position:relative}.auth-page-logo{height:auto;left:60px;max-width:250px;position:absolute;top:40px;z-index:10}.auth-form-container{max-width:400px;width:100%}.auth-logo{display:block;height:auto;margin-bottom:30px;max-width:150px}.auth-main-heading{color:#0d1b2a;color:var(--deep-navy);font-size:28px;font-weight:700;margin-bottom:8px;text-align:left}.auth-sub-heading{color:#1d3557;color:var(--medium-blue);font-size:16px;margin-bottom:35px;text-align:left}.auth-promo-column{align-items:center;animation:auroraBackground 25s ease infinite;background:linear-gradient(120deg,#0d1b2a,#1d3557,#2a9d8f,#1d3557,#0d1b2a);background:linear-gradient(120deg,var(--deep-navy),var(--medium-blue),var(--teal),var(--medium-blue),var(--deep-navy));background-size:300% 300%;display:flex;justify-content:center;overflow:hidden;padding:60px;position:relative}.auth-promo-column:before{background-color:#0d1b2a4d;bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.auth-promo-content{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#1d355726;border:1px solid #ffffff1a;border-radius:12px;box-shadow:0 8px 32px 0 #0d1b2a26;color:#fff;color:var(--white);max-width:420px;padding:40px 50px;position:relative;text-align:center;z-index:2}.auth-promo-button,.auth-promo-heading,.auth-promo-text{animation:fadeInUp .6s ease-out forwards;opacity:0}.auth-promo-heading{animation-delay:.2s;color:#fff;color:var(--white);font-size:30px;font-weight:700;margin-bottom:15px}.auth-promo-text{animation-delay:.4s;color:#e9ecef;color:var(--light-gray);font-size:17px;line-height:1.6;margin-bottom:30px;opacity:0}.auth-promo-button{animation-delay:.6s;background-color:#fff;background-color:var(--white);border:2px solid #fff;border:2px solid var(--white);border-radius:6px;box-shadow:0 2px 5px #ffffff1a;color:#0d1b2a;color:var(--deep-navy);cursor:pointer;display:inline-block;font-size:16px;font-weight:600;opacity:0;padding:14px 35px;text-decoration:none;transition:background-color .3s ease,color .3s ease,transform .2s ease,box-shadow .3s ease}.auth-promo-button:hover{background-color:#ffffffe6;box-shadow:0 4px 10px #fff3;color:#0d1b2a;color:var(--deep-navy);transform:translateY(-3px) scale(1.03)}@media (max-width:500px){.auth-card{border-radius:0;box-shadow:none;display:flex;flex-direction:column;justify-content:center;max-width:100%;min-height:100vh;padding:25px 20px}.auth-card .form-row{flex-direction:column;gap:15px}.auth-card .auth-title{font-size:1.6em}.auth-card .auth-subtitle{font-size:.95em;margin-bottom:20px}}@media (max-width:992px){.auth-split-layout{grid-template-columns:1fr;height:auto}.auth-form-column{min-height:60vh;order:1;padding:40px}.auth-page-logo{left:40px;max-width:180px;top:30px}.auth-promo-column{padding:50px 30px}.auth-promo-content{padding:35px 40px}.auth-promo-heading{font-size:26px}.auth-promo-text{font-size:16px}}@media (max-width:576px){.auth-form-column,.auth-promo-column{padding-left:20px;padding-right:20px}.auth-page-logo{left:20px;max-width:160px;top:20px}.auth-form-container{max-width:100%}.auth-main-heading{font-size:24px}.auth-sub-heading{font-size:15px;margin-bottom:25px}.auth-promo-column{padding:40px 20px}.auth-promo-content{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:30px}.auth-promo-heading{font-size:24px}.auth-promo-text{font-size:15px}}@keyframes auroraBackground{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.transaction-search-bar{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e2e8f0cc;border-radius:20px;box-shadow:0 8px 32px #0000000f,0 2px 8px #00000008;margin-bottom:24px;overflow:hidden;padding:28px 32px;position:relative}.transaction-search-bar:before{background:linear-gradient(90deg,#14b8a6,#06b6d4,#3b82f6);content:"";height:2px;left:0;opacity:.7;position:absolute;right:0;top:0}.search-row{grid-gap:24px;align-items:end;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-bottom:24px}.search-actions{align-items:center;border-top:1px solid #e2e8f080;display:flex;flex-wrap:wrap;gap:16px;justify-content:flex-end;margin-top:8px;padding-top:20px}.search-field{display:flex;flex-direction:column;min-width:0;position:relative}.search-label{color:#475569;font-size:15px;font-weight:600;letter-spacing:-.1px;margin-bottom:10px}.search-input,.search-select{background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;color:#334155;font-size:15px;font-weight:500;padding:14px 16px 14px 48px;transition:all .3s cubic-bezier(.4,0,.2,1);width:100%}.search-select{cursor:pointer;padding-left:16px}.search-input:focus,.search-select:focus{border-color:#14b8a6;box-shadow:0 0 0 4px #14b8a61a,0 4px 16px #14b8a626;outline:none;transform:translateY(-1px)}.search-input::placeholder{color:#94a3b8;font-weight:400}.search-icon{color:#64748b;font-size:18px;left:16px;transition:color .3s ease}.search-input-container:focus-within .search-icon,.search-input:focus+.search-icon{color:#14b8a6}.search-loading-icon{animation:spin 1s linear infinite;color:#14b8a6;font-size:18px;position:absolute;right:16px;top:50%;transform:translateY(-50%)}.search-suggestions{animation:slideDown .2s ease-out;background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;left:0;max-height:240px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 4px);z-index:1000}.search-suggestion{border-bottom:1px solid #f1f5f9;color:#475569;cursor:pointer;font-weight:500;padding:14px 18px;transition:all .2s cubic-bezier(.4,0,.2,1)}.search-suggestion.selected,.search-suggestion:hover{background:linear-gradient(135deg,#f0fdfa,#ecfdf5);border-left:3px solid #14b8a6;color:#0f766e;padding-left:15px;transform:translateX(4px)}.search-suggestion:last-child{border-bottom:none;border-radius:0 0 12px 12px}.search-suggestion:first-child{border-radius:12px 12px 0 0}.search-button,.search-clear-button{align-items:center;border:none;border-radius:12px;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:10px;height:-webkit-fit-content;height:fit-content;overflow:hidden;padding:14px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.search-button:before,.search-clear-button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.search-button:hover:before,.search-clear-button:hover:before{left:100%}.search-button{background:linear-gradient(135deg,#14b8a6,#0891b2);box-shadow:0 4px 16px #14b8a64d;color:#fff}.search-button:hover{background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.search-button:focus{box-shadow:0 0 0 4px #14b8a633,0 8px 32px #14b8a666;outline:none}.search-clear-button{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 4px 16px #ef44444d;color:#fff}.search-clear-button:hover{background:linear-gradient(135deg,#dc2626,#b91c1c);box-shadow:0 8px 32px #ef444466;transform:translateY(-2px)}.search-clear-button:focus{box-shadow:0 0 0 4px #ef444433,0 8px 32px #ef444466;outline:none}.button-group{align-items:center;display:flex;gap:12px}.button-separator{background:linear-gradient(180deg,#0000,#e2e8f0,#0000);height:32px;margin:0 8px;width:1px}.date-range-group{grid-gap:16px;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:16px;display:grid;gap:16px;grid-column:span 2;grid-template-columns:1fr 1fr;margin-top:8px;padding:20px}@media (max-width:1024px){.search-row{gap:20px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.date-range-group{grid-column:span 1;grid-template-columns:1fr}}@media (max-width:768px){.transaction-search-bar{border-radius:16px;padding:24px 20px}.search-row{gap:16px;grid-template-columns:1fr}.search-actions{flex-direction:column;gap:12px;justify-content:stretch}.search-button,.search-clear-button{justify-content:center;width:100%}.button-group{flex-direction:column;width:100%}.button-separator{height:1px;margin:8px 0;width:100%}.date-range-group{grid-column:span 1;padding:16px}}@media (max-width:480px){.transaction-search-bar{margin-bottom:20px;padding:20px 16px}.search-input,.search-select{font-size:14px;padding:12px 14px 12px 44px}.search-icon{font-size:16px;left:14px}.search-button,.search-clear-button{font-size:14px;padding:12px 20px}}.dashboard-page{display:flex;flex-direction:column;gap:30px}.card-style{background-color:var(--white);border:1px solid var(--gray-border);border-radius:8px;box-shadow:0 2px 10px #0000000d;padding:25px 30px}.section-title{border-bottom:1px solid var(--light-gray);font-size:20px;margin-bottom:20px;margin-top:0;padding-bottom:10px}.upload-controls{align-items:center;display:flex;flex-wrap:wrap;gap:15px}#csv-upload-input{border:1px solid var(--gray-border);border-radius:4px;flex-grow:1;font-size:14px;min-width:200px;padding:8px 10px}#csv-upload-input::-webkit-file-upload-button{background-color:var(--medium-blue);border:none;border-radius:4px;color:#fff;cursor:pointer;margin-right:10px;padding:8px 12px;-webkit-transition:background-color .2s;transition:background-color .2s}#csv-upload-input::file-selector-button{background-color:var(--medium-blue);border:none;border-radius:4px;color:#fff;cursor:pointer;margin-right:10px;padding:8px 12px;transition:background-color .2s}#csv-upload-input::-webkit-file-upload-button:hover{background-color:var(--deep-navy)}#csv-upload-input::file-selector-button:hover{background-color:var(--deep-navy)}.upload-button{justify-content:center;min-width:150px;padding:10px 20px}.upload-button .spinner{animation:spin 1s linear infinite}.upload-feedback{align-items:center;border-radius:5px;display:flex;font-size:14px;gap:10px;margin-top:15px;padding:12px 15px}.upload-feedback.success-message{align-items:flex-start;background-color:var(--teal-lighter);border:1px solid var(--teal);color:var(--teal-darkest);flex-direction:column}.upload-feedback.error-message{background-color:var(--warm-orange-lighter);border:1px solid var(--warm-orange);color:var(--warm-orange-darker)}.upload-row-errors{color:var(--warm-orange-darker);font-size:13px;list-style:disc;margin-left:20px;margin-top:10px;padding-left:15px}.upload-row-errors li{margin-bottom:4px}.loading-transactions{align-items:center;color:var(--medium-blue);display:flex;font-size:16px;gap:10px;justify-content:center;padding:40px 20px}.loading-transactions .spinner{animation:spin 1s linear infinite}.empty-state-container.minimal{background-color:initial;border:none;box-shadow:none;margin:20px auto;padding:20px 0}.empty-state-container.minimal .empty-state-text{color:var(--text-muted-dark);margin-bottom:20px}.empty-state-container.minimal .action-buttons button{font-size:14px;padding:10px 20px}.transaction-table-container{overflow-x:auto}.transaction-table{border-collapse:collapse;font-size:14px;width:100%}.transaction-table td,.transaction-table th{border-bottom:1px solid var(--light-gray);padding:12px 15px;text-align:left}.transaction-table th{background-color:#f8f9fa;color:var(--medium-blue);font-weight:600}.transaction-table tbody tr:hover{background-color:var(--teal-lighter)}.transaction-table td:first-child{white-space:nowrap;width:15%}.transaction-table td:nth-child(2){width:45%;word-break:break-word}.transaction-table td:nth-child(3){width:20%}.transaction-table td:nth-child(4){font-weight:500;text-align:right;width:20%}.transaction-table .uncategorised{color:var(--text-muted-dark);font-style:italic}.transaction-table .amount-debit{color:var(--deep-navy)}.transaction-table .amount-credit{color:var(--teal-darker)}.action-buttons{display:flex;flex-wrap:wrap;gap:20px;justify-content:center}.action-button{display:inline-flex;font-size:15px;font-weight:600;gap:10px;padding:12px 25px;text-decoration:none;transition:background-color .2s ease,transform .15s ease,box-shadow .2s ease}.action-button.teal-button{background-color:var(--teal);box-shadow:0 2px 4px #2a9d8f33;color:var(--white)}.action-button.teal-button:hover{background-color:var(--teal-darker);box-shadow:0 4px 8px #2a9d8f4d;transform:translateY(-2px)}.action-button.teal-button:active{background-color:var(--teal-darkest);box-shadow:0 1px 2px #2a9d8f33;transform:translateY(0)}.button-icon{font-size:1.2em;position:relative;top:-1px}@media (max-width:768px){.empty-state-container{margin:30px auto;padding:30px 35px}.action-buttons{align-items:center;flex-direction:column;gap:15px}.action-button{justify-content:center;max-width:300px;width:100%}.empty-state-heading{font-size:22px}.empty-state-text{font-size:15px}}.categorisation-prompt{align-items:center;background-color:var(--teal-lighter);border-left:5px solid var(--teal);display:flex;gap:20px;justify-content:space-between;padding:20px 25px}.categorisation-prompt .prompt-icon{color:var(--teal);flex-shrink:0;font-size:2.5em}.categorisation-prompt .prompt-text{flex-grow:1}.categorisation-prompt p{color:var(--deep-navy);margin:0 0 5px}.categorisation-prompt p:last-child{font-size:.95em;margin-bottom:0}.categorisation-prompt strong{font-weight:600}.categorisation-prompt .action-button{flex-shrink:0;padding:10px 20px}.bank-connection-section{margin-bottom:1.5rem;padding:1.5rem}.bank-connection-section .section-title{align-items:center;display:flex;gap:.5rem;margin-bottom:1rem}.bank-connection-section .title-icon{margin-bottom:-2px}.connection-status{padding-top:.5rem}.connection-status.linked .status-indicator{align-items:center;color:var(--teal-600);display:flex;font-weight:600;gap:.5rem;margin-bottom:1rem}.connection-status.linked .icon-success{color:var(--teal-500)}.connection-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:.5rem}.remove-button .button-icon,.sync-button .button-icon{margin-right:.3rem}.remove-button{background-color:initial;border:1px solid var(--grey-300);color:var(--grey-600)}.remove-button:hover{background-color:var(--red-50);border-color:var(--red-400);color:var(--red-600)}.remove-button:disabled{background-color:initial;border-color:var(--grey-300);color:var(--grey-500);cursor:not-allowed;opacity:.6}.connection-status.not-linked p{color:var(--grey-700);margin-bottom:.75rem}.connection-status.not-linked .external-link{color:var(--teal-600);display:inline-block;font-size:.9em;margin-bottom:1rem;text-decoration:underline}.connection-status.not-linked .external-link:hover{color:var(--teal-700)}.pat-input-area{align-items:stretch;display:flex;gap:.5rem;margin-bottom:.5rem}.pat-input-area .input-icon{align-self:center;color:var(--grey-400);margin-left:.5rem;position:absolute;z-index:1}.pat-input{border:1px solid var(--grey-300);border-radius:4px;flex-grow:1;padding:.6rem .8rem .6rem 2rem}.pat-input:focus{border-color:var(--teal-500);box-shadow:0 0 0 2px #2dd4bf33;outline:none}.pat-feedback,.sync-feedback{align-items:center;border-radius:4px;display:flex;font-size:.9em;gap:.5rem;margin-top:.75rem;padding:.6rem .8rem}.pat-feedback.error-message,.sync-feedback.error-message{background-color:var(--red-50);border:1px solid var(--red-200);color:var(--red-700)}.pat-feedback.error-message svg,.sync-feedback.error-message svg{color:var(--red-500)}.pat-feedback.success-message,.sync-feedback.success-message{background-color:var(--green-50);border:1px solid var(--green-200);color:var(--green-700)}.pat-feedback.success-message svg,.sync-feedback.success-message svg{color:var(--green-500)}.empty-state-container.minimal{color:var(--grey-500);padding:2rem 1rem;text-align:center}.empty-state-container.minimal svg{color:var(--grey-400);font-size:2rem;margin-bottom:.5rem}.transaction-modal-overlay{align-items:center;animation:fadeIn .2s ease-out forwards;background-color:#0d1b2a99;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1040}.transaction-modal-content{animation:slideUpFadeInModal .3s ease-out forwards;background-color:var(--white);border-radius:8px;box-shadow:0 5px 20px #0003;display:flex;flex-direction:column;max-height:90vh;max-width:600px;overflow:hidden;width:90%}.transaction-modal--sm{max-width:450px}.transaction-modal--md{max-width:600px}.transaction-modal--lg{max-width:800px}.transaction-modal--loading .modal-body{opacity:.8;pointer-events:none}.modal-header{background-color:#f8f9fa}.modal-body{flex:1 1}.transaction-form{gap:16px}.form-group,.transaction-form{display:flex;flex-direction:column}.form-group{gap:6px}.form-label{align-items:center;color:var(--deep-navy);display:flex;font-size:.9em;font-weight:500;gap:8px}.form-icon{color:var(--teal);font-size:.9em}.form-input{background-color:var(--white);border:1px solid var(--light-gray);border-radius:5px;font-size:.95em;outline:none;padding:10px 12px;transition:border-color .2s,box-shadow .2s}.form-input:focus{border-color:var(--teal);box-shadow:0 0 0 2px #20c9971a}.form-input:disabled{background-color:#f8f9fa;color:var(--text-muted-dark);cursor:not-allowed}.form-input--error{border-color:#dc3545;box-shadow:0 0 0 2px #dc35451a}.form-input--error:focus{border-color:#dc3545;box-shadow:0 0 0 2px #dc354533}.form-row{grid-gap:12px;display:grid;gap:12px;grid-template-columns:2fr 1fr}.radio-group{display:flex;gap:16px;padding:8px 0}.radio-option{align-items:center;color:var(--text-dark);cursor:pointer;display:flex;font-size:.95em;gap:6px}.radio-option input[type=radio]{accent-color:var(--teal);height:16px;width:16px}.radio-option input[type=radio]:disabled{cursor:not-allowed;opacity:.5}.radio-label{font-size:.95em}.selector-field{align-items:stretch;display:flex;gap:8px}.selector-field .form-input{background-color:#f8f9fa;cursor:pointer;flex:1 1}.selector-button{background-color:var(--teal);border:none;border-radius:5px;color:var(--white);cursor:pointer;font-size:.9em;font-weight:500;padding:10px 16px;transition:background-color .2s;white-space:nowrap}.selector-button:hover:not(:disabled){background-color:var(--teal-darker)}.selector-button:disabled{background-color:var(--light-gray);color:var(--text-muted-dark);cursor:not-allowed}.form-error{align-items:center;color:#dc3545;display:flex;font-size:.85em;gap:4px;margin-top:2px}.form-error--global{background-color:#f8d7da;border:1px solid #f5c2c7;border-radius:4px;font-size:.9em;margin-top:8px;padding:10px 12px}.modal-button{align-items:center;border:none;display:flex;font-weight:500;gap:6px;justify-content:center;min-width:120px;padding:10px 20px;transition:background-color .2s,transform .1s}.modal-button:disabled{opacity:.6;transform:none}.modal-button.cancel{border:1px solid var(--light-gray);color:var(--text-dark)}.modal-button.cancel:hover:not(:disabled){background-color:#f8f9fa;border-color:var(--border-color)}.modal-button.confirm:hover:not(:disabled){transform:translateY(-1px)}@media (max-width:768px){.transaction-modal-content{margin:10px;max-height:95vh;width:95%}.modal-header{padding:12px 15px}.modal-body{padding:15px}.modal-footer{flex-direction:column-reverse;gap:8px;padding:12px 15px}.modal-button{min-width:0;min-width:auto;width:100%}.form-row{gap:16px;grid-template-columns:1fr}.radio-group{gap:12px}.radio-group,.selector-field{flex-direction:column}.selector-button{align-self:stretch;text-align:center}.transaction-modal--lg,.transaction-modal--md,.transaction-modal--sm{max-width:95%}}@media (max-width:480px){.modal-header h2{font-size:1.1em}.form-label{font-size:.85em}.form-input{font-size:.9em;padding:8px 10px}.modal-button{font-size:.9em;padding:8px 16px}}.tree-view{background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;color:#1f2937;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,sans-serif;font-size:14px;line-height:1.6;overflow:hidden;position:relative}.tree-empty{background:linear-gradient(135deg,#f9fafb,#f3f4f6);border-radius:8px;color:#6b7280;font-style:italic;margin:16px;padding:48px 24px;text-align:center}.tree-nodes{min-height:120px;padding:8px 0;transition:background-color .2s ease}.move-mode-banner{align-items:center;animation:slideDown .3s ease-out;background:linear-gradient(135deg,#fef3c7,#fed7aa);border-bottom:2px solid #f59e0b;display:flex;padding:12px 16px}.move-banner-content{align-items:center;display:flex;gap:12px;width:100%}.move-banner-icon{color:#92400e;font-size:18px}.move-banner-text{color:#92400e;flex:1 1;font-weight:600}.move-cancel-button{align-items:center;background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:6px;transition:all .2s ease}.move-cancel-button:hover{background:linear-gradient(135deg,#fee2e2,#fecaca);border-color:#fca5a5;color:#dc2626}.root-move-zone{animation:rootMoveZoneAppear .3s ease-out;background:linear-gradient(135deg,#dbeafe,#bfdbfe);border:3px dashed #3b82f6;border-radius:12px;cursor:pointer;margin:16px;padding:20px;transition:all .3s cubic-bezier(.4,0,.2,1)}.root-move-zone:hover{background:linear-gradient(135deg,#bfdbfe,#93c5fd);border-color:#1d4ed8;box-shadow:0 8px 25px #3b82f64d;transform:scale(1.02)}.root-move-zone-content{align-items:center;display:flex;flex-direction:column;gap:8px;text-align:center}.root-move-icon{color:#1e40af;font-size:28px}.root-move-text{color:#1e40af;font-size:16px;font-weight:600}.tree-view.move-mode{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:2px solid #0ea5e9}.tree-node{background:linear-gradient(135deg,#fff,#fefefe);border:2px solid #0000;border-radius:8px;cursor:pointer;margin:2px 0;padding:8px 12px;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1)}.tree-node:hover{background:linear-gradient(135deg,#f8fafc,#f1f5f9);box-shadow:0 2px 8px #00000014;transform:translateX(2px)}.tree-node.selected{background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.tree-node.being-moved{animation:beingMovedPulse 2s ease-in-out infinite;background:linear-gradient(135deg,#fef3c7,#fed7aa)!important;border:2px solid #f59e0b!important;opacity:.7;transform:scale(.98)}.tree-node.move-destination-node{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:1px solid #0ea5e9;position:relative}.tree-node.move-destination-node:hover{background:linear-gradient(135deg,#e0f2fe,#bae6fd);border-color:#0284c7;transform:translateX(4px)}.move-destination{align-items:center;animation:moveDestinationSlideIn .2s ease-out;background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:2px solid #22c55e;border-radius:8px;cursor:pointer;display:flex;height:40px;justify-content:center;margin:4px 16px;position:relative;transition:all .2s ease}.move-destination:hover{background:linear-gradient(135deg,#dcfce7,#bbf7d0);box-shadow:0 4px 12px #22c55e4d;transform:scale(1.02)}.move-destination-line{background:linear-gradient(90deg,#0000,#22c55e,#0000);border-radius:2px;height:3px;left:0;position:absolute;right:0}.move-destination.move-destination-before .move-destination-line{top:-1px}.move-destination.move-destination-after .move-destination-line{bottom:-1px}.move-destination-label{align-items:center;background:#ffffffe6;border-radius:20px;box-shadow:0 2px 8px #0000001a;color:#166534;display:flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px}.move-destination-icon{color:#22c55e;font-size:14px}.move-destination-inside-overlay{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:linear-gradient(135deg,#22c55e1a,#4ade8026);border:3px solid #22c55e;border-radius:8px;bottom:0;cursor:pointer;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;transition:all .2s ease;z-index:20}.move-destination-inside-overlay:hover{background:linear-gradient(135deg,#22c55e26,#4ade8033);border-color:#16a34a}.move-destination-inside-content{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #22c55e4d;border-radius:25px;box-shadow:0 4px 16px #00000026;color:#166534;display:flex;font-weight:600;gap:8px;padding:12px 20px}.tree-node-content{align-items:center;display:flex;gap:8px;position:relative;z-index:10}.tree-node-content:focus{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-radius:6px;box-shadow:0 0 0 2px #3b82f6;outline:none}.tree-node-toggle{width:20px}.toggle-button,.tree-node-toggle{align-items:center;display:flex;justify-content:center}.toggle-button{background:none;border:none;border-radius:4px;color:#6b7280;cursor:pointer;padding:2px;transition:all .2s ease}.toggle-button:hover{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#374151;transform:scale(1.1)}.toggle-spacer{width:16px}.tree-node-icon{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 1px 2px #0000000d;display:flex;height:20px;justify-content:center;transition:all .2s ease;width:20px}.tree-node:hover .tree-node-icon{background:linear-gradient(135deg,#e2e8f0,#cbd5e1);transform:scale(1.05)}.tree-node.data-type-category .tree-node-icon{background:linear-gradient(135deg,#fef3c7,#fde68a);border-color:#f59e0b;color:#f59e0b}.tree-node.data-type-vendor .tree-node-icon{background:linear-gradient(135deg,#f3e8ff,#e9d5ff);border-color:#8b5cf6;color:#8b5cf6}.tree-node.data-type-transaction .tree-node-icon{background:linear-gradient(135deg,#d1fae5,#a7f3d0);border-color:#10b981;color:#10b981}.tree-node-name{align-items:center;color:#374151;display:flex;flex:1 1;font-weight:500;gap:6px}.transaction-amount,.transaction-count{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);border-radius:10px;color:#6b7280;font-size:12px;font-weight:600;padding:2px 6px}.transaction-amount{background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#059669}.tree-node-actions{align-items:center;display:flex;gap:4px;opacity:0;transition:opacity .2s ease}.tree-node:hover .tree-node-actions{opacity:1}.context-menu-button{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:6px;transition:all .2s ease}.context-menu-button:hover{background:linear-gradient(135deg,#e2e8f0,#cbd5e1);box-shadow:0 2px 4px #0000001a;color:#374151;transform:scale(1.05)}.context-menu{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 10px 25px #00000026;min-width:160px;padding:4px;position:fixed;z-index:1000}.context-menu-item{align-items:center;background:none;border:none;border-radius:6px;color:#374151;cursor:pointer;display:flex;font-size:14px;gap:8px;padding:8px 12px;text-align:left;transition:all .2s ease;width:100%}.context-menu-item:hover{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#111827}.category-edit-form{align-items:center;display:flex;flex:1 1;gap:8px}.category-edit-input{background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #3b82f6;border-radius:6px;color:#374151;flex:1 1;font-size:14px;font-weight:500;padding:6px 8px}.category-edit-input:focus{border-color:#1d4ed8;box-shadow:0 0 0 3px #3b82f61a;outline:none}.category-edit-actions{display:flex;gap:4px}.category-cancel-button,.category-save-button{align-items:center;background:none;border:none;border-radius:4px;cursor:pointer;display:flex;justify-content:center;padding:4px;transition:all .2s ease}.category-save-button{color:#10b981}.category-save-button:hover:not(:disabled){background:linear-gradient(135deg,#ecfdf5,#d1fae5);transform:scale(1.1)}.category-save-button:disabled{cursor:not-allowed;opacity:.5}.category-cancel-button{color:#ef4444}.category-cancel-button:hover{background:linear-gradient(135deg,#fef2f2,#fee2e2);transform:scale(1.1)}.category-edit-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fca5a5;border-radius:4px;color:#ef4444;font-size:12px;margin-top:4px;padding:4px 8px}.tree-node.create-input{background:linear-gradient(135deg,#f0f9ff,#e0f2fe);border:2px dashed #0ea5e9}.category-input{background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #0ea5e9;border-radius:6px;flex:1 1;font-size:14px;padding:6px 8px}.category-input:focus{border-color:#0284c7;box-shadow:0 0 0 3px #0ea5e91a;outline:none}.action-button{background:none;border-radius:4px;font-weight:700;padding:4px 8px;transition:all .2s ease}.action-button:hover{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);transform:scale(1.05)}.tree-node-children{border-left:2px solid #f3f4f6;margin-left:12px;padding-left:8px;transition:all .3s ease}.tree-node-children.expanding{animation:expandChildren .3s ease-out}.tree-node-children.collapsing{animation:collapseChildren .15s ease-in}@keyframes expandChildren{0%{max-height:0;opacity:0;transform:scaleY(.8)}to{max-height:1000px;opacity:1;transform:scaleY(1)}}@keyframes collapseChildren{0%{max-height:1000px;opacity:1;transform:scaleY(1)}to{max-height:0;opacity:0;transform:scaleY(.8)}}.search-highlight{animation:highlightPulse .8s ease-out;background:linear-gradient(135deg,#fef08a,#fde047);border-radius:3px;box-shadow:0 1px 3px #f59e0b4d;color:#713f12;font-weight:700;padding:1px 3px}@keyframes highlightPulse{0%{background:linear-gradient(135deg,#fef08a,#fde047);transform:scale(1)}50%{background:linear-gradient(135deg,#fbbf24,#f59e0b);transform:scale(1.05)}to{background:linear-gradient(135deg,#fef08a,#fde047);transform:scale(1)}}.tree-view.bulk-mode{background:linear-gradient(135deg,#fefce8,#fef3c7);border:2px solid #f59e0b}.bulk-operations-toolbar{align-items:center;background:linear-gradient(135deg,#fff,#f8fafc);border-bottom:1px solid #e2e8f0;display:flex;gap:16px;justify-content:space-between;padding:12px 16px}.bulk-info{color:#374151;font-weight:600}.bulk-actions{display:flex;gap:8px}.bulk-action-btn{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:6px;color:#374151;cursor:pointer;font-size:12px;font-weight:600;padding:6px 12px;transition:all .2s ease}.bulk-action-btn:hover:not(:disabled){background:linear-gradient(135deg,#e2e8f0,#cbd5e1);transform:translateY(-1px)}.bulk-action-btn.danger{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-color:#fca5a5;color:#dc2626}.bulk-action-btn.danger:hover:not(:disabled){background:linear-gradient(135deg,#fee2e2,#fecaca)}.bulk-action-btn:disabled{cursor:not-allowed;opacity:.5}.bulk-checkbox{margin-right:8px}.bulk-checkbox input[type=checkbox]{accent-color:#3b82f6;height:16px;width:16px}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes rootMoveZoneAppear{0%{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes moveDestinationSlideIn{0%{opacity:0;transform:scaleY(.3)}to{opacity:1;transform:scaleY(1)}}@keyframes beingMovedPulse{0%,to{opacity:.7;transform:scale(.98)}50%{opacity:.9;transform:scale(1)}}@media (max-width:768px){.root-move-zone{margin:8px;padding:16px}.root-move-text{font-size:14px}.move-mode-banner{padding:8px 12px}.move-banner-text{font-size:13px}.move-destination{height:32px;margin:2px 8px}.move-destination-label{font-size:11px;padding:6px 12px}}@media print{.move-destination,.move-destination-inside-overlay,.move-mode-banner,.root-move-zone{display:none!important}}@media (prefers-contrast:high){.root-move-zone{border-color:#1d4ed8;border-width:4px}.move-destination{border-color:#16a34a;border-width:3px}.move-destination-inside-overlay{border-color:#16a34a;border-width:4px}}.tree-node.data-system{opacity:.8}.tree-view.move-mode .tree-node.data-system{background:linear-gradient(135deg,#f3f4f6,#e5e7eb)!important;opacity:.4}.tree-view.move-mode .tree-node.data-type-transaction,.tree-view.move-mode .tree-node.data-type-vendor{opacity:.3;pointer-events:none}.category-modal-overlay{align-items:center;animation:fadeIn .2s ease-out forwards;background-color:#0d1b2a99;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1040}.category-modal-content{animation:slideUpFadeInModal .3s ease-out forwards;background-color:var(--white);border-radius:8px;box-shadow:0 5px 20px #0003;display:flex;flex-direction:column;max-height:85vh;max-width:550px;overflow:hidden;width:90%}.category-modal--sm{max-width:400px}.category-modal--md{max-width:550px}.category-modal--lg{max-width:750px}.category-modal--immediate .modal-body{padding-bottom:15px}.category-modal--none .selection-preview{display:none}.category-modal--no-creation .modal-actions-top{display:none}.add-top-level-button{align-items:center;background:none;border:1px dashed var(--teal);border-radius:4px;color:var(--teal);cursor:pointer;display:inline-flex;font-size:.9em;font-weight:500;gap:5px;padding:6px 12px;transition:background-color .2s,color .2s}.add-top-level-button:hover{background-color:var(--teal-lighter);color:var(--teal-darker)}.add-top-level-button svg{margin-bottom:-1px}.tree-section{margin-bottom:15px}.tree-section h4{color:var(--text-muted-dark);font-size:.85em;letter-spacing:.5px;margin:0 0 8px;text-transform:uppercase}.no-categories-message{color:var(--text-muted-dark);padding:20px;text-align:center}.modal-button.cancel{background-color:var(--white);border-color:var(--gray-border);color:var(--medium-blue)}.modal-button.cancel:hover:not(:disabled){background-color:var(--light-gray)}.modal-button.confirm{color:var(--white)}.category-tree-node{margin-bottom:2px}.node-content{border-radius:4px;padding:6px 8px;transition:background-color .15s ease-in-out}.node-content:hover{background-color:var(--light-gray)}.node-content.selected{background-color:var(--teal-lighter);color:var(--teal-darkest)}.node-content.selected .node-name{font-weight:600}.expand-icon{border-radius:3px;color:var(--text-muted-dark);display:inline-flex;flex-shrink:0;height:18px;margin-right:5px;width:18px}.expand-icon:hover{background-color:#0000000d}.expand-icon .spacer{display:inline-block;width:14px}.node-name{font-size:.95em}.add-child-button{background:none;border:none;border-radius:3px;color:var(--text-muted);cursor:pointer;line-height:0;margin-left:8px;opacity:0;padding:3px;transition:opacity .2s,color .2s}.node-content:hover .add-child-button{opacity:.7}.add-child-button:hover{background-color:#0000000d;color:var(--teal);opacity:1}.add-child-input-area{align-items:center;display:flex;gap:5px;padding:5px 0 5px 20px}.add-child-input-area input[type=text]{border:1px solid var(--gray-border);border-radius:3px;flex-grow:1;font-size:.9em;padding:4px 8px}.add-child-input-area input:disabled{background-color:var(--light-gray);cursor:not-allowed}.add-child-input-area button{background:none;border:none;border-radius:3px;color:var(--text-muted-dark);cursor:pointer;line-height:0;padding:4px;transition:color .2s,background-color .2s}.add-child-input-area button:hover:not(:disabled){background-color:#0000000d;color:var(--deep-navy)}.add-child-input-area button:disabled{cursor:not-allowed;opacity:.5}.add-child-input-area button .spinner-inline{height:14px;vertical-align:middle;width:14px}.add-child-input-area .inline-error-text{color:var(--warm-orange-darker);font-size:.8em;margin-left:5px}.add-top-level-input-area{align-items:center;display:flex;gap:8px;padding-bottom:10px}.add-top-level-input-area input[type=text]{border:1px solid var(--gray-border);border-radius:4px;flex-grow:1;font-size:.95em;padding:6px 10px}.add-top-level-input-area button{background:none;border:none;border-radius:3px;color:var(--text-muted-dark);cursor:pointer;line-height:0;padding:5px;transition:color .2s,background-color .2s}.add-top-level-input-area button:hover:not(:disabled){background-color:#0000000d;color:var(--deep-navy)}.add-top-level-input-area button:disabled{cursor:not-allowed;opacity:.5}.add-top-level-input-area button .spinner-inline{height:14px;vertical-align:middle;width:14px}.modal-error.inline-error-text{color:var(--warm-orange-darker);font-size:.9em;margin-bottom:10px;margin-top:-5px;padding-left:5px}.category-tree-container.disabled-tree{opacity:.5;pointer-events:none}.vendor-modal-overlay{align-items:center;animation:fadeIn .2s ease-out forwards;background-color:#0d1b2a99;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1040}.vendor-modal-content{animation:slideUpFadeInModal .3s ease-out forwards;background-color:var(--white);border-radius:8px;box-shadow:0 5px 20px #0003;display:flex;flex-direction:column;max-height:85vh;max-width:550px;overflow:hidden;width:90%}.vendor-modal--sm{max-width:400px}.vendor-modal--md{max-width:550px}.vendor-modal--lg{max-width:750px}.vendor-modal--immediate .modal-body{padding-bottom:15px}.vendor-modal--none .selection-preview{display:none}.vendor-modal--no-creation .modal-actions-top{display:none}@keyframes slideUpFadeInModal{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{border-bottom:1px solid var(--light-gray);padding:15px 20px}.modal-header h2{font-size:1.25em}.modal-close-button{color:var(--text-muted-dark);font-size:1.5em;line-height:1;padding:5px;transition:color .2s}.modal-close-button:hover{color:var(--deep-navy)}.modal-search{background-color:#f8f9fa;border-bottom:1px solid var(--light-gray);padding:15px 20px}.search-input-container{align-items:center;display:flex;position:relative}.search-icon{color:var(--text-muted-dark);z-index:1}.search-input{border:1px solid var(--light-gray);border-radius:5px;font-size:.95em;outline:none;padding:10px 12px 10px 40px;transition:border-color .2s,box-shadow .2s}.search-input:focus{border-color:var(--teal);box-shadow:0 0 0 2px #20c9971a}.search-input::placeholder{color:var(--text-muted-dark)}.modal-actions-top{border-bottom:1px solid var(--light-gray);padding:10px 20px}.add-vendor-button{align-items:center;background:none;border:1px dashed var(--teal);border-radius:4px;color:var(--teal);cursor:pointer;display:inline-flex;font-size:.9em;font-weight:500;gap:5px;padding:6px 12px;transition:background-color .2s,color .2s}.add-vendor-button:hover:not(:disabled){background-color:var(--teal-lighter);color:var(--teal-darker)}.add-vendor-button:disabled{cursor:not-allowed;opacity:.5}.add-vendor-button svg{margin-bottom:-1px}.add-vendor-input-area{align-items:center;display:flex;gap:8px;margin-top:5px}.add-vendor-input-area input[type=text]{border:1px solid var(--light-gray);border-radius:4px;flex:1 1;font-size:.9em;outline:none;padding:6px 10px}.add-vendor-input-area input:focus{border-color:var(--teal);box-shadow:0 0 0 2px #20c9971a}.add-vendor-input-area input:disabled{background-color:#f5f5f5;cursor:not-allowed}.add-vendor-input-area button{align-items:center;background-color:var(--teal);border:1px solid var(--teal);border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;padding:6px 8px;transition:background-color .2s}.add-vendor-input-area button:hover:not(:disabled){background-color:var(--teal-darker)}.add-vendor-input-area button:disabled{cursor:not-allowed;opacity:.5}.add-vendor-input-area button .spinner-inline{animation:spin 1s linear infinite}.add-vendor-input-area .inline-error-text{color:var(--danger);font-size:.8em;margin-top:5px}.modal-error.inline-error-text{color:var(--danger);display:block;font-size:.85em;margin-top:8px}.modal-body{flex-grow:1;overflow-y:auto;padding:20px}.selection-preview{border-bottom:1px dashed var(--light-gray);color:var(--text-muted-dark);font-size:.95em;margin-bottom:15px;padding-bottom:10px}.selection-preview strong{color:var(--deep-navy);font-weight:600}.vendor-list-container{transition:opacity .3s}.vendor-list-container.disabled-list{opacity:.6;pointer-events:none}.loading-container{color:var(--text-muted-dark);flex-direction:column;padding:40px 20px}.loading-container .spinner{animation:spin 1s linear infinite;font-size:24px;margin-bottom:15px}.loading-container p{margin:0}.error-container{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:40px 20px;text-align:center}.error-message{color:var(--danger);font-size:.95em;margin-bottom:15px}.retry-button{background-color:var(--teal);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.9em;padding:8px 16px;transition:background-color .2s}.retry-button:hover{background-color:var(--teal-darker)}.vendor-section{margin-bottom:20px}.vendor-section h4{color:var(--text-muted-dark);font-size:.85em;letter-spacing:.5px;margin:0 0 10px;text-transform:uppercase}.vendor-list{border:1px solid var(--light-gray);border-radius:5px;overflow:hidden}.vendor-item{background-color:#fff;border-bottom:1px solid var(--light-gray);cursor:pointer;justify-content:space-between;padding:12px 15px;transition:background-color .2s,border-left .2s}.vendor-item:last-child{border-bottom:none}.vendor-item:hover{background-color:#f8f9fa}.vendor-item.selected{border-left:4px solid var(--teal)}.vendor-item.selected,.vendor-item.selected:hover{background-color:var(--teal-lighter)}.vendor-name{color:var(--deep-navy);flex:1 1}.vendor-type{border-radius:12px;font-size:.8em;font-weight:500;letter-spacing:.5px;padding:2px 8px;text-transform:uppercase}.vendor-item .vendor-type{background-color:var(--light-gray);color:var(--text-muted-dark)}.vendor-item.selected .vendor-type{background-color:var(--teal);color:#fff}.no-vendors-message{color:var(--text-muted-dark);font-style:italic;padding:40px 20px;text-align:center}.modal-footer{background-color:#f8f9fa;border-top:1px solid var(--light-gray);padding:15px 20px}.modal-button{border:1px solid #0000;border-radius:5px;cursor:pointer;font-size:.95em;font-weight:600;margin-left:10px;padding:8px 18px;transition:background-color .2s,border-color .2s,color .2s}.modal-button:disabled{cursor:not-allowed;opacity:.5}.modal-button.cancel{background-color:#e9ecef;border-color:#e9ecef;color:var(--text-muted-dark)}.modal-button.cancel:hover:not(:disabled){background-color:#dee2e6;border-color:#dee2e6}.modal-button.confirm{background-color:var(--teal);border-color:var(--teal);color:#fff}.modal-button.confirm:hover:not(:disabled){background-color:var(--teal-darker);border-color:var(--teal-darker)}@media (max-width:768px){.vendor-modal-content{margin:20px;max-height:90vh;width:95%}.modal-header{padding:12px 15px}.modal-body{padding:15px}.modal-search{padding:12px 15px}.modal-actions-top{padding:8px 15px}.modal-footer{padding:12px 15px}.vendor-item{padding:10px 12px}.vendor-modal--lg,.vendor-modal--md,.vendor-modal--sm{max-width:none}}.modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.transaction-details-modal{background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;display:flex;flex-direction:column;max-height:80vh;max-width:500px;overflow:hidden;width:90%}.modal-header{background:var(--light-gray);border-bottom:1px solid var(--gray-border);padding:20px 24px}.modal-header h2{color:var(--deep-navy);font-size:1.25rem;font-weight:600;margin:0}.close-button{background:none;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer;font-size:1.25rem;padding:4px;transition:all .2s ease}.close-button:hover{background:var(--gray-border);color:var(--deep-navy)}.modal-content{flex:1 1;overflow-y:auto;padding:24px}.detail-row{align-items:flex-start;display:flex;gap:16px;margin-bottom:20px}.detail-row:last-child{margin-bottom:0}.detail-label{align-items:center;color:var(--text-muted-dark);display:flex;font-size:.9rem;font-weight:500;gap:8px;min-width:140px}.detail-label svg{color:var(--teal);font-size:1rem}.detail-value{color:var(--deep-navy);flex:1 1;font-weight:500}.amount{font-size:1.1rem;font-weight:600}.amount-outflow{color:var(--expense-red)}.amount-inflow{color:var(--income-green)}.amount.amount-debit{color:var(--expense-red)}.amount.amount-credit{color:var(--income-green)}.detail-section{margin-bottom:24px}.detail-section:last-child{margin-bottom:0}.section-title{border-bottom:1px solid var(--gray-border);color:var(--deep-navy);font-size:16px;font-weight:600;margin:0 0 16px;padding-bottom:8px}.modal-footer{background:var(--light-gray);border-top:1px solid var(--gray-border);justify-content:flex-end;padding:16px 24px}.close-modal-button{background:var(--gray-border);border:none;border-radius:4px;color:var(--text-muted-dark);cursor:pointer;font-weight:500;padding:8px 16px;transition:all .2s ease}.close-modal-button:hover{background:var(--text-muted);color:#fff}@media (max-width:500px){.transaction-details-modal{max-height:90vh;width:95%}.modal-header{padding:16px 20px}.modal-content{padding:20px}.detail-row{flex-direction:column;gap:8px}.detail-label{min-width:auto}}.vendor-rename-modal-overlay{align-items:center;animation:vendor-rename-modal-fade-in .2s ease-out;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#0009;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.vendor-rename-modal-content{animation:vendor-rename-modal-slide-up .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 50px #0000004d;max-height:90vh;max-width:500px;overflow-y:auto;position:relative;width:90%}.vendor-rename-modal-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px 24px 16px}.vendor-rename-modal-header h2{color:#1f2937;font-size:1.5rem;font-weight:600;margin:0}.vendor-rename-modal-close-button{align-items:center;background:none;border:none;border-radius:6px;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:8px;transition:all .2s}.vendor-rename-modal-close-button:hover:not(:disabled){background-color:#f3f4f6;color:#374151}.vendor-rename-modal-close-button:disabled{cursor:not-allowed;opacity:.5}.vendor-rename-modal-close-button svg{height:20px;width:20px}.vendor-rename-modal-body{padding:24px}.vendor-rename-form-group{margin-bottom:20px}.vendor-rename-form-label{color:#374151;display:block;font-size:.875rem;font-weight:500;margin-bottom:8px}.required{color:#ef4444}.vendor-rename-current-name{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:6px;color:#6b7280;font-weight:500;padding:12px}.vendor-rename-input-container{position:relative}.vendor-rename-search-wrapper{align-items:center;display:flex;position:relative}.vendor-rename-search-icon{color:#9ca3af;height:16px;left:12px;position:absolute;top:50%;transform:translateY(-50%);width:16px;z-index:1}.vendor-rename-form-input{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;padding:12px 16px 12px 40px;transition:all .2s;width:100%}.vendor-rename-form-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.vendor-rename-form-input.error{border-color:#ef4444;box-shadow:0 0 0 3px #ef44441a}.vendor-rename-form-input:disabled{background-color:#f9fafb;color:#6b7280;cursor:not-allowed}.vendor-rename-loading-icon{animation:vendor-rename-spin 1s linear infinite;color:#3b82f6;height:16px;position:absolute;right:12px;top:50%;transform:translateY(-50%);width:16px}.vendor-rename-suggestions{background:#fff;border:1px solid #d1d5db;border-radius:8px;box-shadow:0 10px 25px #00000026;left:0;max-height:200px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 4px);z-index:1001}.vendor-rename-suggestions-header{background-color:#f9fafb;border-bottom:1px solid #e5e7eb;color:#6b7280;font-size:.75rem;font-weight:500;padding:8px 12px}.vendor-rename-suggestion{align-items:center;border-bottom:1px solid #f3f4f6;cursor:pointer;display:flex;padding:10px 12px;transition:background-color .15s}.vendor-rename-suggestion:last-child{border-bottom:none}.vendor-rename-suggestion.selected,.vendor-rename-suggestion:hover{background-color:#eff6ff}.vendor-rename-suggestion-icon{color:#3b82f6;flex-shrink:0;height:14px;margin-right:8px;width:14px}.vendor-rename-suggestion-text{color:#374151;font-size:.875rem;font-weight:500}.vendor-rename-error-message{align-items:center;color:#ef4444;display:flex;font-size:.875rem;margin-top:8px}.vendor-rename-error-message svg{flex-shrink:0;height:16px;margin-right:6px;width:16px}.vendor-rename-info-text{background-color:#eff6ff;border:1px solid #dbeafe;border-radius:6px;margin-top:16px;padding:12px}.vendor-rename-info-text p{color:#1e40af;font-size:.875rem;line-height:1.5;margin:0}.vendor-rename-merge-confirmation{padding:16px 0;text-align:center}.vendor-rename-merge-icon{display:flex;justify-content:center;margin-bottom:16px}.vendor-rename-merge-icon svg{color:#3b82f6;height:48px;width:48px}.vendor-rename-merge-confirmation h3{color:#1f2937;font-size:1.25rem;font-weight:600;margin:0 0 16px}.vendor-rename-merge-confirmation p{color:#4b5563;line-height:1.5;margin:0 0 12px}.vendor-rename-merge-details{background-color:#f0f9ff;border:1px solid #e0f2fe;border-radius:8px;margin-top:20px;padding:16px;text-align:left}.vendor-rename-merge-detail{align-items:flex-start;color:#0f172a;display:flex;font-size:.875rem;line-height:1.5;margin-bottom:12px}.vendor-rename-merge-detail:last-child{margin-bottom:0}.vendor-rename-merge-check{color:#059669;flex-shrink:0;height:16px;margin-right:8px;margin-top:2px;width:16px}.vendor-rename-modal-footer{border-top:1px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px 24px}.vendor-rename-button{align-items:center;border-radius:6px;cursor:pointer;display:flex;font-size:.875rem;font-weight:500;gap:6px;justify-content:center;min-width:100px;padding:10px 20px;transition:all .2s}.vendor-rename-button:disabled{cursor:not-allowed;opacity:.6}.vendor-rename-button-secondary{background-color:#fff;border:1px solid #d1d5db;color:#374151}.vendor-rename-button-secondary:hover:not(:disabled){background-color:#f9fafb;border-color:#9ca3af}.vendor-rename-button-primary{background-color:#3b82f6;border:1px solid #3b82f6;color:#fff}.vendor-rename-button-primary:hover:not(:disabled){background-color:#2563eb;border-color:#2563eb}.vendor-rename-button-icon{height:16px;width:16px}.vendor-rename-button-spinner{animation:vendor-rename-spin 1s linear infinite;height:16px;width:16px}@keyframes vendor-rename-modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes vendor-rename-modal-slide-up{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes vendor-rename-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:640px){.vendor-rename-modal-content{margin:16px;width:95%}.vendor-rename-modal-header{padding:20px 20px 12px}.vendor-rename-modal-header h2{font-size:1.25rem}.vendor-rename-modal-body{padding:20px}.vendor-rename-modal-footer{flex-direction:column;padding:12px 20px 20px}.vendor-rename-button{min-width:auto;width:100%}.vendor-rename-suggestions{max-height:150px}}@media (prefers-contrast:high){.vendor-rename-modal-content{border:2px solid #000}.vendor-rename-form-input{border-width:2px}.vendor-rename-button-primary{background-color:#000;border-color:#000}}@media (prefers-reduced-motion:reduce){.vendor-rename-button,.vendor-rename-button-spinner,.vendor-rename-form-input,.vendor-rename-loading-icon,.vendor-rename-modal-content,.vendor-rename-modal-overlay{animation:none;transition:none}}.vendor-rule-conflict-modal{animation:modalSlideIn .4s cubic-bezier(.16,1,.3,1);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:linear-gradient(145deg,#fff,#fefefe 50%,#fdfdfd);border:1px solid #fff3;border-radius:20px;box-shadow:0 32px 64px -12px #0000004d,0 0 0 1px #ffffff0d,inset 0 1px 0 #ffffff1a;max-width:680px;overflow:hidden;transform-origin:center;width:95%}@keyframes modalSlideIn{0%{filter:blur(10px);opacity:0;transform:scale(.9) translateY(-20px) rotateX(10deg)}to{filter:blur(0);opacity:1;transform:scale(1) translateY(0) rotateX(0deg)}}.vendor-rule-conflict-modal .modal-header{align-items:center;background:linear-gradient(135deg,#fef3c7,#fed7aa 25%,#fecaca 50%,#fde68a 75%,#fef3c7);border-bottom:1px solid #f8717126;display:flex;justify-content:space-between;overflow:hidden;padding:28px 32px;position:relative}.vendor-rule-conflict-modal .modal-header:before{animation:shimmer 3s ease-in-out infinite;background:linear-gradient(90deg,#0000,#f871711a,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;width:100%}.vendor-rule-conflict-modal .modal-header:after{animation:glow 2s ease-in-out infinite alternate;background:linear-gradient(90deg,#0000,#f59e0b 20%,#ef4444 50%,#f97316 80%,#0000);bottom:0;content:"";height:2px;left:0;opacity:.6;position:absolute;right:0}@keyframes shimmer{0%{left:-100%}50%{left:100%}to{left:100%}}@keyframes glow{0%{opacity:.4}to{opacity:.8}}.vendor-rule-conflict-modal .header-content{align-items:center;display:flex;gap:16px;position:relative;z-index:2}.vendor-rule-conflict-modal .warning-icon{animation:warningPulse 2s cubic-bezier(.4,0,.6,1) infinite;color:#dc2626;filter:drop-shadow(0 2px 4px rgba(220,38,38,.4));font-size:28px;position:relative}.vendor-rule-conflict-modal .warning-icon:before{animation:warningRipple 2s ease-out infinite;background:radial-gradient(circle,#dc262633 0,#0000 70%);border-radius:50%;content:"";height:120%;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:120%}@keyframes warningPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes warningRipple{0%{opacity:.8;transform:translate(-50%,-50%) scale(.8)}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}.vendor-rule-conflict-modal h2{color:#7c2d12;font-size:22px;font-weight:800;letter-spacing:-.025em;margin:0;position:relative;text-shadow:0 1px 2px #7c2d1233;z-index:2}.vendor-rule-conflict-modal .close-button{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffe6;border:1px solid #dc262633;border-radius:12px;color:#dc2626;cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;padding:10px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);width:40px;z-index:2}.vendor-rule-conflict-modal .close-button:hover:not(:disabled){background:#fff;border-color:#dc2626;box-shadow:0 8px 16px -4px #dc26264d;color:#991b1b;transform:scale(1.1) rotate(90deg)}.vendor-rule-conflict-modal .close-button:active:not(:disabled){transform:scale(.95) rotate(90deg)}.vendor-rule-conflict-modal .modal-body{background:linear-gradient(145deg,#fff,#fefefe);padding:32px}.vendor-rule-conflict-modal .conflict-info{animation:conflictInfoSlide .5s ease-out .2s both;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#fef2f2e6,#fff7ede6 50%,#fef2f2e6);border:2px solid #f8717133;border-radius:16px;box-shadow:0 4px 6px -1px #f871711a,0 2px 4px -1px #f871710f,inset 0 1px 0 #ffffff1a;margin-bottom:32px;padding:24px;position:relative}@keyframes conflictInfoSlide{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.vendor-rule-conflict-modal .conflict-info:before{animation:float 3s ease-in-out infinite;background:linear-gradient(135deg,#fef3c7,#fed7aa);border-radius:20px;box-shadow:0 4px 6px -1px #0000001a;content:"⚠️";font-size:16px;left:24px;padding:8px 12px;position:absolute;top:-12px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.vendor-rule-conflict-modal .conflict-info:after{animation:colorShift 4s ease-in-out infinite;background:linear-gradient(90deg,#f59e0b,#ef4444 25%,#f97316 50%,#ef4444 75%,#f59e0b);border-radius:16px 16px 0 0;content:"";height:4px;left:0;position:absolute;right:0;top:0}@keyframes colorShift{0%,to{opacity:.8}50%{opacity:1}}.vendor-rule-conflict-modal .conflict-info p{align-items:center;color:#7c2d12;display:flex;flex-wrap:wrap;font-size:16px;font-weight:500;gap:12px;line-height:1.7;margin:16px 0}.vendor-rule-conflict-modal .conflict-info p:first-child{margin-top:0}.vendor-rule-conflict-modal .conflict-info p:last-child{margin-bottom:0}.vendor-rule-conflict-modal .conflict-info strong{color:#7c2d12;font-weight:700;margin-right:8px;text-shadow:0 1px 2px #7c2d121a}.vendor-rule-conflict-modal .category-tag{align-items:center;background:linear-gradient(135deg,#3b82f61a,#93c5fd33);border:2px solid #3b82f64d;border-radius:12px;box-shadow:0 2px 4px 0 #3b82f61a,inset 0 1px 0 #fff3;color:#1e40af;display:inline-flex;font-size:14px;font-weight:700;gap:8px;overflow:hidden;padding:8px 16px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.vendor-rule-conflict-modal .category-tag:before{background:linear-gradient(90deg,#0000,#fff6,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s ease;width:100%}.vendor-rule-conflict-modal .category-tag:hover{border-color:#3b82f680;box-shadow:0 8px 16px -4px #3b82f633,inset 0 1px 0 #ffffff4d;transform:translateY(-2px) scale(1.02)}.vendor-rule-conflict-modal .category-tag:hover:before{left:100%}.vendor-rule-conflict-modal .move-icon,.vendor-rule-conflict-modal .tag-icon{filter:drop-shadow(0 1px 2px rgba(59,130,246,.2));font-size:14px;opacity:.9}.vendor-rule-conflict-modal .options-section{animation:optionsSlide .6s ease-out .4s both}@keyframes optionsSlide{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.vendor-rule-conflict-modal .options-section h3{color:#0f172a;font-size:20px;font-weight:800;letter-spacing:-.025em;margin:0 0 24px;padding-bottom:12px;position:relative;text-align:center}.vendor-rule-conflict-modal .options-section h3:after{background:linear-gradient(90deg,#3b82f6,#8b5cf6);border-radius:2px;bottom:0;content:"";height:3px;left:50%;position:absolute;transform:translateX(-50%);width:60px}.vendor-rule-conflict-modal .option-group{display:flex;flex-direction:column;gap:20px}.vendor-rule-conflict-modal .option-label{align-items:flex-start;animation:optionFadeIn .5s ease-out both;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#ffffffe6,#f8fafce6);border:2px solid #e2e8f0cc;border-radius:16px;cursor:pointer;display:flex;gap:20px;overflow:hidden;padding:24px;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.vendor-rule-conflict-modal .option-label:first-child{animation-delay:.5s}.vendor-rule-conflict-modal .option-label:nth-child(2){animation-delay:.6s}.vendor-rule-conflict-modal .option-label:nth-child(3){animation-delay:.7s}@keyframes optionFadeIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.vendor-rule-conflict-modal .option-label:before{background:linear-gradient(90deg,#0000,#3b82f614,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s ease;width:100%}.vendor-rule-conflict-modal .option-label:hover{background:linear-gradient(135deg,#f8fafcf2,#f1f5f9f2);border-color:#3b82f666;box-shadow:0 16px 32px -8px #3b82f626,0 0 0 1px #3b82f61a;transform:translateY(-4px) scale(1.01)}.vendor-rule-conflict-modal .option-label:hover:before{left:100%}.vendor-rule-conflict-modal .option-label:has(input:checked){background:linear-gradient(135deg,#eff6ffe6,#dbeafee6);border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f626,0 16px 32px -8px #3b82f640;transform:translateY(-2px) scale(1.02)}.vendor-rule-conflict-modal .option-label:has(input:checked):after{animation:selectedGlow 2s ease-in-out infinite;background:linear-gradient(180deg,#3b82f6,#1d4ed8,#3b82f6);border-radius:0 16px 16px 0;content:"";height:100%;left:0;position:absolute;top:0;width:6px}@keyframes selectedGlow{0%,to{opacity:.8}50%{opacity:1}}.vendor-rule-conflict-modal .option-label input[type=radio]{accent-color:#3b82f6;cursor:pointer;height:24px;margin-top:4px;position:relative;transform:scale(1.2);width:24px}.vendor-rule-conflict-modal .option-content{flex:1 1;position:relative;z-index:1}.vendor-rule-conflict-modal .option-content strong{color:#0f172a;display:block;font-size:18px;font-weight:800;letter-spacing:-.025em;margin-bottom:8px;text-shadow:0 1px 2px #0f172a1a}.vendor-rule-conflict-modal .option-content p{color:#64748b;font-size:15px;font-weight:500;line-height:1.6;margin:0}.vendor-rule-conflict-modal .option-content em{background:linear-gradient(135deg,#dbeafe99,#bfdbfe99);border:1px solid #3b82f633;border-radius:6px;color:#3b82f6;font-size:14px;font-style:normal;font-weight:700;padding:4px 8px;text-shadow:0 1px 2px #3b82f61a}.vendor-rule-conflict-modal .modal-footer{animation:footerSlide .5s ease-out .8s both;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#f8fafce6,#ffffffe6);border-top:1px solid #f1f5f9cc;display:flex;gap:16px;justify-content:flex-end;padding:28px 32px}@keyframes footerSlide{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.vendor-rule-conflict-modal .button-secondary{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#ffffffe6,#f8fafce6);border:2px solid #e2e8f0cc;border-radius:12px;color:#475569;cursor:pointer;font-size:15px;font-weight:700;overflow:hidden;padding:14px 28px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.vendor-rule-conflict-modal .button-secondary:before{background:linear-gradient(90deg,#0000,#94a3b826,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s ease;width:100%}.vendor-rule-conflict-modal .button-secondary:hover:not(:disabled){background:linear-gradient(135deg,#f1f5f9f2,#e2e8f0f2);border-color:#94a3b899;box-shadow:0 8px 16px -4px #94a3b84d;transform:translateY(-2px) scale(1.02)}.vendor-rule-conflict-modal .button-secondary:hover:not(:disabled):before{left:100%}.vendor-rule-conflict-modal .button-primary{background:linear-gradient(135deg,#3b82f6,#2563eb 50%,#1d4ed8);border:2px solid #3b82f6;border-radius:12px;box-shadow:0 8px 16px -4px #3b82f666,inset 0 1px 0 #fff3;color:#fff;cursor:pointer;font-size:15px;font-weight:700;overflow:hidden;padding:14px 28px;position:relative;text-shadow:0 1px 2px #1d4ed84d;transition:all .3s cubic-bezier(.4,0,.2,1)}.vendor-rule-conflict-modal .button-primary:before{background:linear-gradient(90deg,#0000,#ffffff4d,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .6s ease;width:100%}.vendor-rule-conflict-modal .button-primary:hover:not(:disabled){background:linear-gradient(135deg,#2563eb,#1d4ed8 50%,#1e40af);border-color:#2563eb;box-shadow:0 16px 32px -8px #3b82f680,0 0 0 4px #3b82f626,inset 0 1px 0 #ffffff4d;transform:translateY(-3px) scale(1.05)}.vendor-rule-conflict-modal .button-primary:hover:not(:disabled):before{left:100%}.vendor-rule-conflict-modal .button-primary:active:not(:disabled){transform:translateY(-1px) scale(1.02)}.vendor-rule-conflict-modal .button-primary:disabled,.vendor-rule-conflict-modal .button-secondary:disabled{animation:none;box-shadow:none;cursor:not-allowed;opacity:.6;transform:none}.vendor-rule-conflict-modal .button-primary:disabled{background:linear-gradient(135deg,#94a3b8,#64748b);border-color:#94a3b8;overflow:hidden;position:relative}.vendor-rule-conflict-modal .button-primary:disabled:after{animation:spin 1s linear infinite;border:3px solid #0000;border-radius:50%;border-top-color:#fff;bottom:0;content:"";height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}@media (max-width:768px){.vendor-rule-conflict-modal{border-radius:16px;margin:12px;max-height:90vh;overflow-y:auto;width:96%}.vendor-rule-conflict-modal .modal-body,.vendor-rule-conflict-modal .modal-footer,.vendor-rule-conflict-modal .modal-header{padding:24px}.vendor-rule-conflict-modal .option-label{gap:16px;padding:20px}.vendor-rule-conflict-modal .modal-footer{flex-direction:column-reverse;gap:12px}.vendor-rule-conflict-modal .modal-footer button{padding:16px 28px;width:100%}.vendor-rule-conflict-modal h2{font-size:20px}.vendor-rule-conflict-modal .options-section h3{font-size:18px}}@media (prefers-color-scheme:dark){.vendor-rule-conflict-modal{background:linear-gradient(145deg,#1e293b,#0f172a);border:1px solid #3b82f633;box-shadow:0 32px 64px -12px #0009,0 0 0 1px #3b82f61a}.vendor-rule-conflict-modal .modal-header{background:linear-gradient(135deg,#7c2d124d,#991b1b4d);border-bottom-color:#f871714d}.vendor-rule-conflict-modal h2{color:#fca5a5}.vendor-rule-conflict-modal .conflict-info{background:linear-gradient(135deg,#1e293bcc,#334155cc);border-color:#f871714d}.vendor-rule-conflict-modal .conflict-info p,.vendor-rule-conflict-modal .conflict-info strong{color:#e2e8f0}.vendor-rule-conflict-modal .options-section h3{color:#f1f5f9}.vendor-rule-conflict-modal .option-label{background:linear-gradient(135deg,#1e293bcc,#334155cc);border-color:#47556999}.vendor-rule-conflict-modal .option-content strong{color:#f1f5f9}.vendor-rule-conflict-modal .option-content p{color:#cbd5e1}.vendor-rule-conflict-modal .modal-footer{background:linear-gradient(135deg,#1e293be6,#0f172ae6)}}.categorise-page-container{background:linear-gradient(135deg,#f8fafc,#f1f5f9);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1400px;min-height:100vh;padding:32px}.categorise-header-bar{align-items:center;background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #fff3;border-radius:20px;box-shadow:0 8px 32px #00000014,0 2px 8px #0000000a;display:flex;justify-content:space-between;margin-bottom:32px;overflow:hidden;padding:32px;position:relative}.categorise-header-bar:before{background:linear-gradient(90deg,#14b8a6,#06b6d4,#3b82f6,#8b5cf6);border-radius:20px 20px 0 0;content:"";height:4px;left:0;position:absolute;right:0;top:0}.categorise-header-bar h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e293b,#475569);background-clip:text;-webkit-background-clip:text;font-size:32px;font-weight:800;letter-spacing:-.5px;margin:0}.category-management-area{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #ffffff4d;border-radius:20px;box-shadow:0 8px 32px #00000014,0 2px 8px #0000000a;display:flex;flex-direction:column;gap:24px;overflow:hidden;padding:32px;position:relative}.category-management-area:before{background:linear-gradient(90deg,#14b8a6,#06b6d4,#3b82f6);content:"";height:2px;left:0;opacity:.6;position:absolute;right:0;top:0}.category-management-area.busy-state{opacity:.8;pointer-events:none}.category-toolbar{gap:24px;justify-content:space-between}.category-toolbar,.toolbar-actions{align-items:center;display:flex;flex-wrap:wrap}.toolbar-actions{gap:16px}.collapse-all-button{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:2px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000f;color:#475569;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:8px;overflow:hidden;padding:14px 20px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.collapse-all-button:before{background:linear-gradient(90deg,#0000,#94a3b81a,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.collapse-all-button:hover:before{left:100%}.collapse-all-button:hover:not(:disabled){background:linear-gradient(135deg,#e2e8f0,#cbd5e1);border-color:#94a3b8;box-shadow:0 4px 16px #0000001a;color:#334155;transform:translateY(-1px)}.collapse-all-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.search-categories-input-container{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:16px;box-shadow:0 2px 8px #0000000a;display:flex;flex-grow:1;gap:12px;max-width:500px;min-width:300px;padding:8px 16px;transition:all .3s cubic-bezier(.4,0,.2,1)}.search-categories-input-container:focus-within{border-color:#14b8a6;box-shadow:0 0 0 4px #14b8a61a,0 4px 16px #14b8a626;transform:translateY(-1px)}.search-categories-input-container .search-icon{color:#64748b;font-size:18px;transition:color .3s ease}.search-categories-input-container:focus-within .search-icon{color:#14b8a6}.search-categories-input{background:#0000;border:none;color:#334155;font-size:16px;font-weight:500;outline:none;padding:8px 0;width:100%}.search-categories-input::placeholder{color:#94a3b8;font-weight:400}.category-management-area h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e293b,#475569);background-clip:text;-webkit-background-clip:text;font-size:24px;font-weight:700;letter-spacing:-.3px;margin-bottom:0;margin-top:0}.category-instructions{color:#64748b;font-size:16px;font-weight:500;line-height:1.6;margin-bottom:8px}.add-category-input-area.top-level-add-form{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:16px;display:flex;gap:16px;margin-top:0;padding:20px}.add-category-button{align-items:center;background:linear-gradient(135deg,#14b8a6,#0891b2);border:none;border-radius:14px;box-shadow:0 4px 16px #14b8a64d;color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:700;gap:10px;overflow:hidden;padding:14px 20px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap}.add-category-button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.add-category-button:hover:before{left:100%}.add-category-button:hover:not(:disabled){background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.add-category-button:disabled{background:linear-gradient(135deg,#94a3b8,#64748b);box-shadow:none;cursor:not-allowed;opacity:.7;transform:none}.add-category-input-area input[type=text]{background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 1px 3px #0000000d;color:#334155;flex-grow:1;font-size:16px;font-weight:500;padding:14px 16px;transition:all .3s cubic-bezier(.4,0,.2,1)}.add-category-input-area input[type=text]:focus{border-color:#14b8a6;box-shadow:0 0 0 4px #14b8a61a,0 4px 16px #14b8a626;outline:none;transform:translateY(-1px)}.add-category-input-area button{align-items:center;background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 2px 8px #0000000f;color:#475569;cursor:pointer;display:flex;font-weight:600;gap:8px;padding:14px 18px;transition:all .3s cubic-bezier(.4,0,.2,1)}.add-category-input-area button:hover:not(:disabled){background:linear-gradient(135deg,#e2e8f0,#cbd5e1);border-color:#94a3b8;box-shadow:0 4px 16px #0000001a;transform:translateY(-1px)}.add-category-input-area button:disabled{cursor:not-allowed;opacity:.6;transform:none}.category-tree-view{margin-top:16px}.category-tree-view .tree-view-container{background:#0000;border:none;border-radius:0;max-height:800px;min-height:400px;overflow-y:auto}.category-tree-view .tree-view-container:focus-within{box-shadow:none}.category-tree-view.disabled-tree,.disabled-tree{opacity:.6;pointer-events:none}.page-error-state,.page-loading-state{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-radius:20px;display:flex;flex-direction:column;justify-content:center;margin:40px 0;min-height:60vh;padding:80px 32px;text-align:center}.page-loading-state .spinner{animation:spin 1.5s linear infinite;color:#14b8a6;font-size:48px;margin-bottom:24px}.page-error-state svg{color:#f97316;font-size:64px;margin-bottom:32px}.page-error-state h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e293b,#475569);background-clip:text;-webkit-background-clip:text;font-size:32px;font-weight:800;letter-spacing:-.5px;margin-bottom:16px}.page-error-state p{color:#64748b;font-size:18px;line-height:1.6;margin-bottom:32px}.page-error-state button{background:linear-gradient(135deg,#14b8a6,#0891b2);border:none;border-radius:16px;box-shadow:0 4px 16px #14b8a64d;color:#fff;cursor:pointer;font-size:16px;font-weight:700;padding:16px 32px;transition:all .3s cubic-bezier(.4,0,.2,1)}.page-error-state button:hover{background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.page-error-state.banner-error{align-items:center;background:linear-gradient(135deg,#fef2f2,#fee2e2);border:2px solid #fecaca;border-radius:16px;box-shadow:0 4px 16px #dc26261a;color:#dc2626;flex-direction:row;justify-content:space-between;margin-bottom:24px;min-height:auto;padding:20px 24px}.page-error-state.banner-error p{flex-grow:1;font-size:16px;font-weight:600;margin:0;padding-left:16px;text-align:left}.page-error-state.banner-error svg{font-size:24px;margin-bottom:0;margin-right:16px}.dismiss-error-button{background:#0000;border:2px solid #fecaca;border-radius:12px;color:#dc2626;cursor:pointer;font-size:14px;font-weight:600;padding:8px 16px;transition:all .3s cubic-bezier(.4,0,.2,1)}.dismiss-error-button:hover{background:#fecaca80;box-shadow:0 2px 8px #dc262633;transform:translateY(-1px)}.inline-error-text.error-message{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fecaca;border-radius:12px;color:#dc2626;font-size:15px;font-weight:600;margin-top:8px;padding:12px 16px;text-align:left;width:100%}.add-category-input-area.top-level-add-form .inline-error-text.error-message{flex-basis:100%;margin-top:16px}.category-tree-node{border-radius:12px;margin-bottom:4px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.category-tree-node:hover{background:linear-gradient(135deg,#f8fafc,#f1f5f9);transform:translateX(4px)}.category-tree-node.selected{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border-left:4px solid #14b8a6;transform:translateX(8px)}.category-tree-node.item-type-vendor .node-content{cursor:default}.vendor-icon{flex-shrink:0;margin-right:8px}.category-tree-node.item-type-vendor .expand-icon .spacer{display:inline-block;width:16px}.category-tree-node.item-type-vendor .node-actions{display:none!important}.node-content{align-items:center;border-radius:12px;cursor:pointer;display:flex;gap:12px;min-height:44px;outline:none;padding:12px 16px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.node-content:hover{background:linear-gradient(135deg,#f8fafccc,#f1f5f9cc)}.node-content:focus{background:linear-gradient(135deg,#f8fafce6,#f1f5f9e6);box-shadow:0 0 0 3px #14b8a633;position:relative;z-index:1}.node-content.selected{background:linear-gradient(135deg,#ecfdf5,#d1fae5);color:#0f766e}.node-content.disabled{cursor:not-allowed;opacity:.6}.expand-icon{align-items:center;border-radius:8px;color:#64748b;cursor:pointer;display:flex;height:24px;justify-content:center;transition:all .3s cubic-bezier(.4,0,.2,1);width:24px}.expand-icon:hover{background:#14b8a61a;color:#14b8a6;transform:scale(1.1)}.expand-icon:focus{outline:2px solid #14b8a6;outline-offset:2px}.node-icon{color:#64748b;flex-shrink:0;font-size:18px;transition:color .3s ease}.category-icon{color:#14b8a6}.vendor-icon{color:#f59e0b}.node-name{color:#1e293b;flex-grow:1;font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-tree-node.item-type-vendor .node-name{color:#64748b;font-size:15px;font-weight:500}.category-amount{background:linear-gradient(135deg,#ecfdf5,#d1fae5);border:1px solid #a7f3d0;border-radius:12px;color:#047857;font-size:14px;font-weight:700}.category-amount,.vendor-count{align-items:center;box-shadow:0 1px 3px #0000000d;gap:6px;padding:4px 12px;white-space:nowrap}.vendor-count{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe;border-radius:12px;color:#1d4ed8;cursor:pointer;display:flex;font-size:13px;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1)}.vendor-count:hover{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-color:#93c5fd;box-shadow:0 4px 16px #1d4ed833;transform:translateY(-2px)}.vendor-count:focus{outline:2px solid #3b82f6;outline-offset:2px}.node-actions{align-items:center;display:flex;gap:8px;margin-left:auto;opacity:0;transition:opacity .3s ease}.category-tree-node:hover .node-actions{opacity:1}.action-button-icon{align-items:center;background:none;border:none;border-radius:8px;color:#94a3b8;cursor:pointer;display:inline-flex;font-size:16px;justify-content:center;margin-left:4px;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.action-button-icon:hover{background:#14b8a61a;color:#14b8a6;transform:scale(1.1)}.action-button-icon:focus{background:#14b8a61a;color:#14b8a6;outline:none}.action-button-icon:disabled{cursor:not-allowed;opacity:.4;transform:none}.action-button-icon.delete-category-button:hover{background:#ef44441a;color:#ef4444}@media (max-width:1024px){.categorise-page-container{padding:24px}.categorise-header-bar{flex-direction:column;gap:20px;text-align:center}.category-toolbar{flex-direction:column;gap:16px}.search-categories-input-container{max-width:none;min-width:auto}}@media (max-width:768px){.categorise-page-container{padding:20px}.categorise-header-bar{padding:24px}.categorise-header-bar h1{font-size:28px}.category-management-area{padding:24px}.toolbar-actions{flex-direction:column;gap:12px;width:100%}.add-category-button,.collapse-all-button{justify-content:center;width:100%}.add-category-input-area.top-level-add-form{flex-direction:column;gap:12px}.add-category-input-area.top-level-add-form input[type=text]{width:100%}.node-content{gap:10px;padding:10px 12px}.node-name{font-size:15px}}@media (max-width:480px){.categorise-page-container{padding:16px}.categorise-header-bar{padding:20px}.categorise-header-bar h1{font-size:24px}.category-management-area{padding:20px}.search-categories-input-container{padding:6px 12px}.search-categories-input{font-size:14px}.node-content{padding:8px 10px}}@media (prefers-contrast:high){.category-management-area{border:2px solid #000}.node-content:focus{outline:3px solid #000}}.category-management-area{animation:slideIn .5s ease-out}.category-tree-node{animation:slideIn .3s ease-out}.category-tree-node:nth-child(2){animation-delay:.05s}.category-tree-node:nth-child(3){animation-delay:.1s}.category-tree-node:nth-child(4){animation-delay:.15s}.vendor-rule-prompt-overlay{align-items:center;animation:fadeIn .2s ease-out;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.vendor-rule-prompt-modal{animation:slideIn .2s ease-out;background:#fff;border-radius:8px;box-shadow:0 10px 25px #00000026;max-height:80vh;max-width:500px;overflow:hidden;width:90%}.modal-header{border-bottom:1px solid #e2e8f0;justify-content:space-between;padding:20px 24px 16px}.modal-header,.modal-title{align-items:center;display:flex}.modal-title{color:#2d3748;font-size:1.25rem;font-weight:600;gap:8px;margin:0}.title-icon{color:#3182ce}.modal-close-button{background:none;border:none;border-radius:4px;color:#718096;cursor:pointer;font-size:1.5rem;padding:4px;transition:all .2s ease}.modal-close-button:hover{background-color:#f7fafc;color:#2d3748}.modal-body{padding:20px 24px}.rule-description{color:#2d3748;font-size:1rem;line-height:1.5;margin-bottom:16px}.vendor-selection-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.vendor-selection-header p{flex:1 1;margin:0}.select-all-button{background:#f7fafc;border:1px solid #e2e8f0;border-radius:4px;color:#4a5568;font-size:.875rem;font-weight:500;padding:6px 12px;transition:all .2s ease;white-space:nowrap}.select-all-button:hover{background-color:#edf2f7;border-color:#cbd5e0}.vendor-selection-list{background-color:#f7fafc;border:1px solid #e2e8f0;border-radius:6px;max-height:250px;overflow-y:auto;padding:16px}.vendor-selection-item{margin-bottom:12px}.vendor-selection-item:last-child{margin-bottom:0}.vendor-checkbox-label{align-items:center;cursor:pointer;display:flex;gap:8px;padding:8px 0;transition:all .2s ease}.vendor-checkbox-label:hover{background-color:#3182ce0d;border-radius:4px;padding:8px 4px}.vendor-checkbox{background-color:#fff;border:2px solid #cbd5e0;border-radius:3px;cursor:pointer;flex-shrink:0;height:18px;margin:0;transition:all .2s ease;width:18px}.vendor-checkbox:checked{background-color:#3182ce;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m13.854 3.646-7.5 7.5a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6 10.293l7.146-7.147a.5.5 0 0 1 .708.708z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:12px 12px;border-color:#3182ce}.vendor-checkbox:focus{outline:2px solid #3182ce;outline-offset:2px}.vendor-checkbox-text{color:#4a5568;flex:1 1;font-weight:500}.vendor-list{background-color:#f7fafc;border-radius:6px;list-style:none;margin:16px 0;max-height:200px;overflow-y:auto;padding:16px}.vendor-item{align-items:center;color:#4a5568;display:flex;font-weight:500;gap:8px;padding:8px 0}.vendor-item:not(:last-child){border-bottom:1px solid #e2e8f0}.vendor-icon{color:#3182ce;font-size:.875rem}.rule-explanation{background-color:#ebf8ff;border-left:4px solid #3182ce;border-radius:6px;padding:16px}.rule-explanation p{color:#2b6cb0;font-size:.875rem;line-height:1.5;margin:0}.modal-footer{border-top:1px solid #e2e8f0;display:flex;gap:12px;justify-content:center;padding:16px 24px 20px}.cancel-button{background:#fff;border:1px solid #d2d6dc;border-radius:6px;color:#4a5568;cursor:pointer;font-weight:500;padding:10px 20px;transition:all .2s ease}.cancel-button:hover:not(:disabled){background-color:#f7fafc;border-color:#a0aec0}.cancel-button:disabled{cursor:not-allowed;opacity:.5}.confirm-button{align-items:center;background:#3182ce;border:1px solid #3182ce;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-weight:500;gap:8px;padding:10px 20px;transition:all .2s ease}.confirm-button:hover:not(:disabled){background-color:#2c5aa0;border-color:#2c5aa0}.confirm-button:disabled{cursor:not-allowed;opacity:.7}.spinner{animation:spin 1s linear infinite}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:640px){.vendor-rule-prompt-modal{max-height:90vh;width:95%}.modal-body,.modal-footer,.modal-header{padding-left:16px;padding-right:16px}.modal-footer{flex-direction:column}.cancel-button,.confirm-button{justify-content:center;width:100%}}.categorization-page{background:linear-gradient(135deg,#f8fafc,#f1f5f9);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;min-height:100vh;padding:32px}.categorization-header{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #fff3;border-radius:20px;box-shadow:0 8px 32px #00000014,0 2px 8px #0000000a;margin-bottom:40px;overflow:hidden;padding:32px;position:relative;text-align:center}.categorization-header:before{background:linear-gradient(90deg,#14b8a6,#06b6d4,#3b82f6,#8b5cf6);border-radius:20px 20px 0 0;content:"";height:4px;left:0;position:absolute;right:0;top:0}.header-with-back{gap:24px;justify-content:center;margin-bottom:20px}.back-button,.header-with-back{align-items:center;display:flex}.back-button{background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 2px 8px #0000000f;color:#475569;cursor:pointer;font-weight:600;gap:8px;overflow:hidden;padding:12px 20px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.back-button:before{background:linear-gradient(90deg,#0000,#fff6,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.back-button:hover:before{left:100%}.back-button:hover:not(:disabled){background:linear-gradient(135deg,#14b8a6,#0891b2);border-color:#14b8a6;box-shadow:0 8px 25px #14b8a64d;color:#fff;transform:translateY(-2px)}.back-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.header-content{flex-grow:1;text-align:center}.categorization-header h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e293b,#475569);background-clip:text;-webkit-background-clip:text;font-size:32px;font-weight:800;letter-spacing:-.5px;margin:0 0 8px}.transaction-count{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#64748b,#94a3b8);background-clip:text;-webkit-background-clip:text;font-size:18px;font-weight:600;margin:0 0 24px}.progress-indicator{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border:1px solid #e2e8f0;border-radius:12px;color:#64748b;display:inline-block;font-size:16px;font-weight:600;padding:8px 16px}.navigate-button{align-items:center;background:linear-gradient(135deg,#14b8a6,#0891b2);border:none;border-radius:16px;box-shadow:0 4px 16px #14b8a64d;color:#fff;cursor:pointer;display:flex;font-size:16px;font-weight:700;gap:12px;overflow:hidden;padding:16px 28px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.navigate-button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.navigate-button:hover:before{left:100%}.navigate-button:hover:not(:disabled){background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-3px)}.navigate-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.selection-controls{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #ffffff4d;border-radius:20px;box-shadow:0 8px 32px #00000014,0 2px 8px #0000000a;display:flex;flex-direction:column;gap:24px;margin-bottom:32px;overflow:hidden;padding:28px 32px;position:relative}.selection-controls:before{background:linear-gradient(90deg,#14b8a6,#06b6d4,#3b82f6);content:"";height:2px;left:0;opacity:.6;position:absolute;right:0;top:0}.selection-header{justify-content:space-between}.bulk-controls,.selection-header{align-items:center;display:flex;flex-wrap:wrap;gap:20px}.select-all-button{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:2px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000f;color:#475569;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:12px;overflow:hidden;padding:14px 20px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.select-all-button:before{background:linear-gradient(90deg,#0000,#94a3b81a,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.select-all-button:hover:before{left:100%}.select-all-button:hover:not(:disabled){background:linear-gradient(135deg,#e2e8f0,#cbd5e1);border-color:#94a3b8;box-shadow:0 4px 16px #0000001a;color:#334155;transform:translateY(-1px)}.select-all-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.selection-count{background:linear-gradient(135deg,#f1f5f9,#e2e8f0);border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000a;color:#64748b;font-size:16px;font-weight:600;padding:10px 18px}.categorization-actions{align-items:center;border-top:1px solid #e2e8f080;display:flex;gap:16px;justify-content:flex-end;padding-top:20px}.categorization-controls{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.action-group{align-items:center;background:#f8fafc80;border:1px solid #e2e8f04d;border-radius:16px;display:flex;gap:12px;padding:4px}.action-separator{background:linear-gradient(180deg,#0000,#e2e8f0,#0000);height:28px;margin:0 8px;width:1px}.category-select-button{align-items:center;background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #e2e8f0;border-radius:14px;box-shadow:0 2px 8px #0000000f;color:#475569;cursor:pointer;display:flex;font-size:15px;font-weight:600;gap:12px;justify-content:flex-start;min-width:180px;overflow:hidden;padding:14px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.category-select-button:before{background:linear-gradient(90deg,#0000,#14b8a61a,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.category-select-button:hover:before{left:100%}.category-select-button:hover:not(:disabled){border-color:#14b8a6;box-shadow:0 4px 16px #14b8a633;color:#0f766e;transform:translateY(-1px)}.category-select-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.categorise-button{align-items:center;background:linear-gradient(135deg,#14b8a6,#0891b2);border:none;border-radius:14px;box-shadow:0 4px 16px #14b8a64d;color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:700;gap:12px;overflow:hidden;padding:14px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.categorise-button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.categorise-button:hover:before{left:100%}.categorise-button:hover:not(:disabled){background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.categorise-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.hide-button{align-items:center;background:linear-gradient(135deg,#f97316,#ea580c);border:none;border-radius:14px;box-shadow:0 4px 16px #f973164d;color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:700;gap:12px;overflow:hidden;padding:14px 24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.hide-button:before{background:linear-gradient(90deg,#0000,#fff3,#0000);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.hide-button:hover:before{left:100%}.hide-button:hover:not(:disabled){background:linear-gradient(135deg,#ea580c,#dc2626);box-shadow:0 8px 32px #f9731666;transform:translateY(-2px)}.hide-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.unhide-button{align-items:center;background:linear-gradient(135deg,#14b8a6,#0891b2);border:none;border-radius:14px;box-shadow:0 4px 16px #14b8a64d;color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:700;gap:12px;padding:14px 24px;transition:all .3s cubic-bezier(.4,0,.2,1)}.unhide-button:hover:not(:disabled){background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.unhide-button:disabled{cursor:not-allowed;opacity:.6;transform:none}.button-icon{font-size:18px;transition:transform .3s ease}.button-icon-right{font-size:16px;transition:transform .3s ease}.navigate-button:hover .button-icon-right{transform:translateX(4px)}.spinner-inline{animation:spin 1s linear infinite}.transaction-groups{display:flex;flex-direction:column;gap:24px}.transaction-group{background:linear-gradient(135deg,#fff,#f8fafc);border:1px solid #ffffff4d;border-radius:20px;box-shadow:0 8px 32px #00000014,0 2px 8px #0000000a;overflow:hidden;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.transaction-group:hover{box-shadow:0 16px 48px #0000001f,0 4px 16px #00000014;transform:translateY(-4px)}.transaction-group:before{background:linear-gradient(90deg,#14b8a6,#06b6d4,#3b82f6,#8b5cf6);content:"";height:3px;left:0;opacity:.8;position:absolute;right:0;top:0}.group-header{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f080;display:flex;gap:20px;padding:24px 28px;position:relative}.group-select-button{background:none;border:none;border-radius:12px;color:#64748b;cursor:pointer;flex-shrink:0;font-size:22px;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.group-select-button:hover:not(:disabled){background:#14b8a61a;color:#14b8a6;transform:scale(1.1)}.group-select-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.group-select-button .partial{color:#f97316}.group-info{flex-grow:1}.group-description{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e293b,#475569);background-clip:text;-webkit-background-clip:text;font-size:22px;font-weight:700;letter-spacing:-.3px;margin:0 0 6px}.group-meta{color:#64748b;font-size:16px;font-weight:500}.vendor-display{align-items:center;display:flex;gap:12px}.vendor-edit-button{background:none;border:none;border-radius:10px;color:#94a3b8;cursor:pointer;opacity:0;padding:8px;transform:translateX(-8px);transition:all .3s cubic-bezier(.4,0,.2,1)}.group-info:hover .vendor-edit-button{opacity:1;transform:translateX(0)}.vendor-edit-button:hover{background:#14b8a61a;color:#14b8a6;transform:scale(1.1)}.vendor-edit-button:disabled{cursor:not-allowed;opacity:.4;transform:none}.vendor-edit-container{align-items:center;display:flex;gap:12px;width:100%}.vendor-edit-input{background:#fff;border:2px solid #14b8a6;border-radius:12px;box-shadow:0 4px 16px #14b8a633;color:#1e293b;flex:1 1;font-size:22px;font-weight:700;padding:12px 16px;transition:all .3s ease}.vendor-edit-input:focus{border-color:#0f766e;box-shadow:0 4px 16px #14b8a64d,0 0 0 4px #14b8a61a;outline:none}.vendor-edit-input:disabled{background:#f1f5f9;opacity:.6}.vendor-edit-actions{display:flex;gap:8px}.vendor-cancel-button,.vendor-save-button{background:none;border:none;border-radius:10px;cursor:pointer;font-size:18px;padding:10px;transition:all .3s cubic-bezier(.4,0,.2,1)}.vendor-save-button{color:#22c55e}.vendor-save-button:hover:not(:disabled){background:#22c55e1a;transform:scale(1.1)}.vendor-cancel-button{color:#f97316}.vendor-cancel-button:hover:not(:disabled){background:#f973161a;transform:scale(1.1)}.vendor-cancel-button:disabled,.vendor-save-button:disabled{cursor:not-allowed;opacity:.4;transform:none}.group-transactions{padding:0}.transaction-item{align-items:center;border-bottom:1px solid #e2e8f04d;display:flex;gap:20px;padding:20px 28px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.transaction-item:last-child{border-bottom:none}.transaction-item:hover{background:linear-gradient(135deg,#f8fafc,#f1f5f9);transform:translateX(4px)}.transaction-item:before{background:linear-gradient(180deg,#14b8a6,#06b6d4);bottom:0;content:"";left:0;position:absolute;top:0;transition:width .3s ease;width:0}.transaction-item:hover:before{width:4px}.transaction-select-button{background:none;border:none;border-radius:10px;color:#64748b;cursor:pointer;flex-shrink:0;font-size:20px;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.transaction-select-button:hover:not(:disabled){background:#14b8a61a;color:#14b8a6;transform:scale(1.1)}.transaction-select-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.transaction-details{align-items:center;display:flex;flex-grow:1;justify-content:space-between}.transaction-date{color:#64748b;font-size:16px;font-weight:600}.transaction-amount{font-size:18px;font-weight:800;letter-spacing:-.3px}.transaction-amount.amount-debit{color:#dc2626}.transaction-amount.amount-credit{color:#16a34a}.transaction-info-button{background:none;border:none;border-radius:10px;color:#94a3b8;cursor:pointer;flex-shrink:0;font-size:16px;padding:10px;transition:all .3s cubic-bezier(.4,0,.2,1)}.transaction-info-button:hover:not(:disabled){background:#94a3b81a;color:#64748b;transform:scale(1.1)}.transaction-info-button:disabled{cursor:not-allowed;opacity:.5;transform:none}.categorization-page.empty-state,.categorization-page.error-state,.categorization-page.loading-state{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-radius:20px;display:flex;flex-direction:column;justify-content:center;margin:40px 0;min-height:60vh;padding:80px 32px;text-align:center}.categorization-page .spinner{animation:spin 1.5s linear infinite;color:#14b8a6;font-size:48px;margin-bottom:24px}.categorization-page.empty-state svg,.categorization-page.error-state svg{color:#64748b;font-size:64px;margin-bottom:32px}.categorization-page.error-state svg{color:#f97316}.categorization-page.empty-state h2,.categorization-page.error-state h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#1e293b,#475569);background-clip:text;-webkit-background-clip:text;font-size:32px;font-weight:800;letter-spacing:-.5px;margin-bottom:16px}.categorization-page.empty-state p,.categorization-page.error-state p{color:#64748b;font-size:18px;line-height:1.6;margin-bottom:32px}.categorization-page.empty-state .action-button,.retry-button{background:linear-gradient(135deg,#14b8a6,#0891b2);border:none;border-radius:16px;box-shadow:0 4px 16px #14b8a64d;color:#fff;cursor:pointer;font-size:16px;font-weight:700;padding:16px 32px;transition:all .3s cubic-bezier(.4,0,.2,1)}.categorization-page.empty-state .action-button:hover,.retry-button:hover{background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.categorization-error.error-message{background:linear-gradient(135deg,#fef2f2,#fee2e2);border:2px solid #fecaca;border-radius:16px;box-shadow:0 4px 16px #dc26261a;color:#dc2626}.categorization-error.error-message,.categorization-success.success-message{align-items:center;display:flex;font-size:16px;font-weight:600;gap:16px;margin-bottom:24px;padding:20px 24px}.categorization-success.success-message{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:2px solid #bbf7d0;border-radius:16px;box-shadow:0 4px 16px #16a34a1a;color:#16a34a}.empty-state-actions{display:flex;flex-wrap:wrap;gap:20px;justify-content:center;margin-top:40px}.empty-state-actions .action-button{align-items:center;border:2px solid;border-radius:16px;cursor:pointer;display:flex;font-size:16px;font-weight:700;gap:12px;padding:16px 24px;transition:all .3s cubic-bezier(.4,0,.2,1)}.empty-state-actions .teal-button{background:linear-gradient(135deg,#14b8a6,#0891b2);border-color:#0000;box-shadow:0 4px 16px #14b8a64d;color:#fff}.empty-state-actions .teal-button:hover:not(:disabled){background:linear-gradient(135deg,#0f766e,#0e7490);box-shadow:0 8px 32px #14b8a666;transform:translateY(-2px)}.empty-state-actions .secondary-button{background:linear-gradient(135deg,#fff,#f8fafc);border-color:#e2e8f0;box-shadow:0 4px 16px #00000014;color:#475569}.empty-state-actions .secondary-button:hover:not(:disabled){border-color:#14b8a6;box-shadow:0 8px 32px #14b8a633;color:#0f766e;transform:translateY(-2px)}@media (max-width:768px){.categorization-page{padding:20px}.categorization-header{margin-bottom:32px;padding:24px}.categorization-header h1{font-size:28px}.transaction-count{font-size:16px}.selection-controls{gap:20px;padding:24px 20px}.selection-header{align-items:stretch;flex-direction:column;gap:16px}.bulk-controls{flex-wrap:wrap;gap:16px;justify-content:center}.categorization-actions{justify-content:stretch;padding-top:16px}.categorization-controls{align-items:stretch;flex-direction:column;gap:12px}.action-group{flex-direction:column;gap:8px;padding:12px}.action-separator{height:1px;margin:8px 0;width:100%}.categorise-button,.category-select-button,.hide-button{justify-content:center;min-width:auto}.group-header{padding:20px}.group-description{font-size:20px}.transaction-item{padding:16px 20px}.transaction-details{align-items:flex-start;flex-direction:column;gap:8px}.transaction-amount{font-size:16px}}@media (max-width:480px){.categorization-page{padding:16px}.categorization-header{padding:20px}.categorization-header h1{font-size:24px}.group-description{font-size:18px}.group-header,.selection-controls{padding:16px}.transaction-item{padding:12px 16px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.transaction-group{animation:slideUp .5s ease-out}.transaction-group:nth-child(2){animation-delay:.1s}.transaction-group:nth-child(3){animation-delay:.2s}.transaction-group:nth-child(4){animation-delay:.3s}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (prefers-contrast:high){.selection-controls,.transaction-group{border:2px solid #000}}button:focus-visible{outline:3px solid #14b8a6;outline-offset:2px}.chart-empty,.chart-loading{align-items:center;background-color:#f8f9fa;border:2px dashed #e1e5e9;border-radius:8px;color:#6c757d;display:flex;font-size:14px;height:300px;justify-content:center}.chart-header{align-items:center;border-bottom:1px solid #e1e5e9;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:10px}.chart-header h3{color:#343a40;font-size:18px;font-weight:600;margin:0}.chart-summary{align-items:center;display:flex;gap:20px}.balance-chart-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.final-balance.positive{color:#22c55e;font-weight:600}.final-balance.negative{color:#ef4444;font-weight:600}.category-chart-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.pie-chart-wrapper{align-items:flex-start;display:flex;gap:30px}.category-list{flex:1 1;max-width:300px}.category-item{align-items:center;background-color:#f8f9fa;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:6px;padding:8px 12px;transition:background-color .2s ease}.category-item.clickable{cursor:pointer}.category-item.clickable:hover{background-color:#e9ecef}.category-info{align-items:center;display:flex;gap:8px}.category-color{border-radius:2px;flex-shrink:0;height:12px;width:12px}.category-name{color:#343a40;font-size:14px;font-weight:500}.category-amount{align-items:flex-end;display:flex;flex-direction:column;gap:2px}.category-amount .amount{color:#343a40;font-size:14px;font-weight:600}.category-amount .percentage,.more-categories{color:#6c757d;font-size:12px}.more-categories{font-style:italic;padding:10px;text-align:center}.total-spending{color:#343a40;font-weight:600}.income-expenses-chart-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.chart-summary{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:15px}.summary-item{display:flex;flex-direction:column;gap:4px}.summary-item .label{color:#6c757d;font-size:12px;letter-spacing:.5px;text-transform:uppercase}.summary-item .value{font-size:16px;font-weight:600}.summary-item.income .value{color:#22c55e}.summary-item.expenses .value{color:#ef4444}.summary-item.savings.positive .value{color:#22c55e}.summary-item.savings.negative .value{color:#ef4444}.summary-item.rate .value{color:#3b82f6}.savings-rate-section{border-top:1px solid #e1e5e9;margin-top:30px;padding-top:20px}.savings-rate-section h4{color:#343a40;font-size:16px;font-weight:600;margin:0 0 15px}.savings-rate-bars{display:flex;flex-direction:column;gap:8px}.savings-rate-item{grid-gap:10px;align-items:center;display:grid;gap:10px;grid-template-columns:80px 1fr 60px;padding:4px 0}.month-label{color:#6c757d;font-size:12px;font-weight:500}.rate-bar-container{background-color:#f8f9fa;border-radius:10px;height:20px;overflow:hidden;position:relative}.rate-bar{border-radius:10px;height:100%;transition:width .3s ease}.rate-bar.positive{background:linear-gradient(90deg,#22c55e,#16a34a)}.rate-bar.negative{background:linear-gradient(90deg,#ef4444,#dc2626)}.rate-percentage{font-size:12px;font-weight:600;text-align:right}.sankey-chart-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.flow-stats{align-items:center;display:flex;gap:20px}.stat-item{display:flex;flex-direction:column;gap:2px}.stat-item .label{color:#6c757d;font-size:11px;letter-spacing:.5px;text-transform:uppercase}.stat-item .value{font-size:14px;font-weight:600}.stat-item.income .value{color:#22c55e}.stat-item.expenses .value{color:#ef4444}.stat-item.efficiency .value.positive{color:#22c55e}.stat-item.efficiency .value.negative{color:#ef4444}.sankey-chart-wrapper{height:400px;margin:20px 0}.sankey-legend{border-top:1px solid #e1e5e9;margin:20px 0;padding-top:15px}.sankey-legend h4{color:#343a40;font-size:14px;font-weight:600;margin:0 0 12px}.legend-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.legend-item{align-items:center;background-color:#f8f9fa;border-radius:4px;display:flex;gap:8px;padding:4px 8px}.legend-color{border-radius:2px;flex-shrink:0;height:10px;width:10px}.legend-text{color:#343a40;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend-item.more{color:#6c757d;font-style:italic;justify-content:center}.flow-insights{border-top:1px solid #e1e5e9;margin-top:20px;padding-top:15px}.flow-insights h4{color:#343a40;font-size:14px;font-weight:600;margin:0 0 12px}.insights-list{display:flex;flex-direction:column;gap:8px}.insight-item{align-items:center;background-color:#f8f9fa;border-radius:6px;display:flex;gap:10px;padding:8px 12px}.insight-icon{flex-shrink:0;font-size:16px}.insight-text{color:#495057;font-size:13px}.tooltip-container{background:#000000e6;border:1px solid #fff3;border-radius:4px;box-shadow:0 4px 6px #0000001a;padding:8px 12px}.tooltip-label{color:#fff;font-size:12px;font-weight:600;margin:0 0 4px}.tooltip-content p,.tooltip-percentage,.tooltip-value{color:#e1e5e9;font-size:11px;margin:2px 0}.tooltip-content{margin:0}.tooltip-expenses,.tooltip-income,.tooltip-rate,.tooltip-savings{font-size:11px;margin:2px 0}@media (max-width:768px){.pie-chart-wrapper{flex-direction:column;gap:20px}.category-list{max-width:none}.chart-summary{gap:10px;grid-template-columns:repeat(2,1fr)}.flow-stats{align-items:flex-start;flex-direction:column;gap:10px}.savings-rate-item{gap:8px;grid-template-columns:60px 1fr 50px}}.visualise-page{background-color:#f8f9fa;margin:0 auto;max-width:1200px;min-height:100vh;padding:20px}.page-header{margin-bottom:30px;text-align:center}.page-header h1{color:#343a40;font-size:28px;font-weight:700}.page-header p{color:#6c757d;font-size:16px}.controls-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px;padding:20px}.controls-container{grid-gap:30px;align-items:end;display:grid;gap:30px;grid-template-columns:1fr auto auto}.preset-controls{display:flex;flex-direction:column;gap:8px}.preset-controls label{color:#343a40;font-size:14px;font-weight:600}.preset-buttons{display:flex;flex-wrap:wrap;gap:8px}.preset-button{background:#fff;border:2px solid #e9ecef;border-radius:6px;color:#495057;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s ease}.preset-button:hover{background-color:#f8f9fa;border-color:#007bff}.preset-button.active{background-color:#007bff;border-color:#007bff;color:#fff}.custom-range-controls{align-items:end;display:flex;gap:15px}.date-input-group{display:flex;flex-direction:column;gap:4px}.date-input-group label{color:#6c757d;font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.date-input-group input{background-color:#fff;border:1px solid #ced4da;border-radius:4px;color:#495057;font-size:14px;padding:8px 12px}.date-input-group input:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.currency-control{display:flex;flex-direction:column;gap:4px}.currency-control label{color:#6c757d;font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}.currency-control select{background-color:#fff;border:1px solid #ced4da;border-radius:4px;color:#495057;font-size:14px;min-width:80px;padding:8px 12px}.currency-control select:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.error-banner{align-items:center;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:20px;padding:15px 20px}.error-banner p{color:#721c24;font-size:14px;margin:0}.error-banner button{background-color:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;font-weight:600;padding:6px 12px;transition:background-color .2s ease}.error-banner button:hover{background-color:#c82333}.charts-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:30px}.chart-section.full-width{grid-column:1/-1}.chart-section.half-width{grid-column:span 1}.summary-section{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:25px}.summary-section h2{border-bottom:1px solid #e1e5e9;color:#343a40;font-size:20px;font-weight:600;margin:0 0 20px;padding-bottom:10px}.summary-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.summary-card{background:#f8f9fa;border-left:4px solid #007bff;border-radius:6px;padding:20px}.summary-card h3{color:#495057;font-size:16px;font-weight:600;margin:0 0 15px}.metric{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.metric:last-child{margin-bottom:0}.metric .label{color:#6c757d;font-size:13px;font-weight:500}.metric .value{color:#343a40;font-size:15px;font-weight:600}.metric .value.positive{color:#22c55e}.metric .value.negative{color:#ef4444}@media (max-width:992px){.charts-grid{grid-template-columns:1fr}.chart-section.half-width{grid-column:span 1}.controls-container{gap:20px;grid-template-columns:1fr}.custom-range-controls{justify-content:flex-start}}@media (max-width:768px){.controls-section,.visualise-page{padding:15px}.preset-buttons{grid-template-columns:repeat(2,1fr)}.custom-range-controls{align-items:stretch;flex-direction:column;gap:10px}.summary-grid{grid-template-columns:1fr}.page-header h1{font-size:24px}.page-header p{font-size:14px}}@media (max-width:480px){.preset-buttons{flex-direction:column}.error-banner,.preset-button{text-align:center}.error-banner{align-items:stretch;flex-direction:column;gap:10px}}.vendor-rules-page{margin:0 auto;max-width:1200px;padding:24px}.page-header{margin-bottom:32px}.page-header h1{color:#1a202c;font-size:2rem;font-weight:600;margin:0 0 8px}.page-header p{color:#718096;font-size:1rem;margin:0}.alert{align-items:center;border-radius:6px;display:flex;font-weight:500;margin-bottom:20px;padding:12px 16px}.alert-error{background-color:#fed7d7;border:1px solid #feb2b2;color:#c53030}.alert-success{background-color:#c6f6d5;border:1px solid #9ae6b4;color:#2f855a}.filters-section{align-items:center;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px;padding:20px}.search-container{flex:1 1;min-width:250px;position:relative}.search-icon{color:#a0aec0;font-size:16px;left:12px;position:absolute;top:50%;transform:translateY(-50%)}.search-input{border:1px solid #e2e8f0;border-radius:6px;font-size:14px;padding:10px 12px 10px 36px;transition:all .2s;width:100%}.search-input:focus{border-color:#3182ce;box-shadow:0 0 0 3px #3182ce1a;outline:none}.filter-container{min-width:180px;position:relative}.filter-icon{color:#a0aec0;font-size:16px;left:12px;position:absolute;top:50%;transform:translateY(-50%);z-index:1}.category-filter{background:#fff;border:1px solid #e2e8f0;border-radius:6px;cursor:pointer;font-size:14px;padding:10px 12px 10px 36px;transition:all .2s;width:100%}.category-filter:focus{border-color:#3182ce;box-shadow:0 0 0 3px #3182ce1a;outline:none}.results-count{color:#718096;font-size:14px;font-weight:500;white-space:nowrap}.loading-container{align-items:center;color:#718096;display:flex;gap:12px;justify-content:center;padding:60px 20px}.loading-spinner{animation:spin 1s linear infinite;font-size:20px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.table-container{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow:hidden}.vendor-rules-table{border-collapse:collapse;width:100%}.vendor-rules-table th{background-color:#f7fafc;color:#2d3748;font-weight:600;text-align:left}.vendor-rules-table td,.vendor-rules-table th{border-bottom:1px solid #e2e8f0;font-size:14px;padding:16px}.vendor-rules-table tbody tr:hover{background-color:#f7fafc}.vendor-rules-table tbody tr:last-child td{border-bottom:none}.vendor-name{color:#2d3748;font-weight:500}.category-name{color:#4a5568}.rule-type{text-align:center}.rule-badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:500;letter-spacing:.5px;padding:4px 8px;text-transform:uppercase}.rule-badge.persistent{background-color:#bee3f8;color:#2c5282}.rule-badge.manual{background-color:#fed7cc;color:#c05621}.created-date{color:#718096;font-size:13px}.actions{display:flex;gap:8px;justify-content:flex-end}.action-button{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:6px;padding:8px 12px;transition:all .2s}.edit-button{background-color:#edf2f7;color:#4a5568}.edit-button:hover{background-color:#e2e8f0;color:#2d3748}.delete-button{background-color:#fed7d7;color:#c53030}.delete-button:hover{background-color:#feb2b2;color:#9b2c2c}.no-results{color:#718096;font-style:italic;padding:60px 20px;text-align:center}@media (max-width:768px){.vendor-rules-page{padding:16px}.filters-section{align-items:stretch;flex-direction:column;gap:12px}.filter-container,.search-container{min-width:auto}.results-count{text-align:center}.vendor-rules-table{font-size:13px}.vendor-rules-table td,.vendor-rules-table th{padding:12px 8px}.vendor-rules-table td:nth-child(4),.vendor-rules-table th:nth-child(4){display:none}.actions{flex-direction:column;gap:4px}.action-button{font-size:12px;padding:6px 10px}}@media (max-width:480px){.page-header h1{font-size:1.5rem}.vendor-rules-table td:nth-child(3),.vendor-rules-table th:nth-child(3){display:none}}:root{--sidebar-background:var(--background-darker,#1a1d24);--sidebar-text-color:var(--text-light,#e0e0e0);--sidebar-hover-background:var(--background-medium-dark,#2c313a);--sidebar-active-background:var(--accent-color,#007bff);--sidebar-active-text-color:var(--text-on-accent,#fff);--sidebar-icon-size:1.2rem;--sidebar-border-color:var(--border-color-dark,#303030)}.sidebar{background-color:#1a1d24;background-color:var(--sidebar-background);border-right:1px solid #303030;border-right:1px solid var(--sidebar-border-color);box-shadow:2px 0 5px #0000001a;color:#e0e0e0;color:var(--sidebar-text-color);display:flex;flex-direction:column;height:100vh;left:0;position:fixed;top:0;width:250px;width:var(--sidebar-width);z-index:1000}.sidebar-header{align-items:center;display:flex;justify-content:center;margin-bottom:10px;padding:20px 15px}.sidebar-logo{height:40px;margin-right:10px}.sidebar-title{color:#e0e0e0;color:var(--sidebar-text-color);font-size:1.5rem;font-weight:700}.sidebar-logo{height:35px;max-width:100%;object-fit:contain;width:auto}.sidebar-nav{flex-grow:1}.sidebar-nav ul{list-style-type:none;margin:0;padding:0}.sidebar-link{align-items:center;border-left:3px solid #0000;border-radius:var(--border-radius-standard);color:#e0e0e0;color:var(--sidebar-text-color);display:flex;font-size:1rem;margin:5px 10px;padding:12px 20px;text-decoration:none;transition:background-color .2s ease,color .2s ease}.sidebar-link:hover{background-color:#2c313a;background-color:var(--sidebar-hover-background)}.sidebar-link.active{background-color:#007bff;background-color:var(--sidebar-active-background);border-left-color:var(--accent-color-darker);color:#fff;color:var(--sidebar-active-text-color);font-weight:500}.sidebar-icon{align-items:center;display:inline-flex;font-size:1.2rem;font-size:var(--sidebar-icon-size);margin-right:15px;min-width:20px}.sidebar-label{flex-grow:1}.sidebar-footer{border-top:1px solid #303030;border-top:1px solid var(--sidebar-border-color);margin-top:auto;padding:10px}.sidebar-footer .sidebar-link{background:none;border:none;color:#e0e0e0;color:var(--sidebar-text-color);cursor:pointer;font-family:inherit;font-size:1rem;text-align:left;width:100%}.sidebar-footer .sidebar-link:hover{background-color:#2c313a;background-color:var(--sidebar-hover-background)}@media (max-width:768px){.sidebar{width:60px}.sidebar-label{display:none}.sidebar-header{justify-content:center}.sidebar-logo{margin-right:0}.sidebar-link{justify-content:center}.sidebar-icon{margin-right:0}}:root{--sidebar-width:250px;--header-height:60px;--header-background:var(--background-elevated,#fff);--header-border-color:var(--border-color-light,#e0e0e0);--header-icon-size:1.3rem;--content-padding:20px}.app-container-with-sidebar{display:flex;height:100vh;overflow:hidden}.main-content-area{background-color:#f4f7fa;background-color:var(--background-primary,#f4f7fa);display:flex;flex-direction:column;flex-grow:1;height:100vh;margin-left:250px;margin-left:var(--sidebar-width);overflow-y:auto}.main-header{background-color:#fff;background-color:var(--header-background);border-bottom:1px solid #e0e0e0;border-bottom:1px solid var(--header-border-color);box-shadow:var(--shadow-soft);height:60px;height:var(--header-height);justify-content:space-between;padding:0 20px;padding:0 var(--content-padding);position:-webkit-sticky;position:sticky;top:0;z-index:900}.header-left,.main-header{align-items:center;display:flex}.header-logo-link{align-items:center;display:inline-flex}.header-logo{height:32px;height:calc(var(--header-height) - 28px);max-height:35px}.header-page-title{color:var(--text-primary);font-size:1.2rem;font-weight:500}.header-action-button,.header-right{align-items:center;display:flex}.header-action-button{background:none;border:none;border-radius:var(--border-radius-standard);color:var(--text-secondary);cursor:pointer;gap:8px;padding:8px;transition:background-color .2s ease,color .2s ease}.header-action-button:hover{background-color:var(--background-medium-light);color:var(--text-primary)}.header-logout-button svg{height:1.3rem;height:var(--header-icon-size);width:1.3rem;width:var(--header-icon-size)}.logout-text{font-size:.9rem}.page-content{flex-grow:1}.content-container{padding:20px;padding:var(--content-padding)}.app-container-no-sidebar{display:flex;flex-direction:column;height:100vh}.main-content-full-width{background-color:#f4f7fa;background-color:var(--background-primary,#f4f7fa);display:flex;flex-direction:column;flex-grow:1;overflow-y:auto}@media (max-width:768px){.logout-text{display:none}.header-action-button{padding:8px}}@media (max-width:639px){.main-header{padding:0 15px}.content-container{padding:20px}.header-logo{height:calc(var(--header-logo-height)*.9)}}.tree-test-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.test-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;margin-bottom:30px;padding:20px;text-align:center}.test-header h1{font-size:2.5rem;margin:0 0 10px}.test-header p{font-size:1.1rem;margin:0;opacity:.9}.test-controls{grid-gap:20px;background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-bottom:20px;padding:20px}.search-control{align-items:center;display:flex;gap:10px}.search-control label{color:#495057;font-weight:600}.search-control input{border:1px solid #ced4da;border-radius:4px;flex:1 1;font-size:14px;padding:8px 12px}.search-control input:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.selection-info{background:#fff;border:1px solid #dee2e6;border-radius:6px;padding:15px}.selection-info p{color:#495057;font-weight:600;margin:0 0 10px}.selection-info ul{list-style-type:disc;margin:0;padding-left:20px}.selection-info li{color:#6c757d;font-family:Courier New,monospace;font-size:13px;margin:5px 0}.test-instructions{background:#e7f3ff;border-left:4px solid #007bff;border-radius:8px;margin-bottom:20px;padding:20px}.test-instructions h3{color:#0056b3;margin:0 0 15px}.test-instructions ul{margin:0;padding-left:20px}.test-instructions li{line-height:1.5;margin:8px 0}.test-instructions strong{color:#0056b3}.tree-container{background:#fff;border:2px solid #e9ecef;box-shadow:0 2px 4px #0000001a;margin:20px 0;min-height:400px}.debug-info,.tree-container{border-radius:8px;padding:20px}.debug-info{background:#f8f9fa;border:1px solid #e9ecef;margin-top:30px}.debug-info h3{color:#495057;margin:0 0 15px}.debug-info p{color:#6c757d;margin:0 0 15px}.debug-info details{margin-top:15px}.debug-info summary{color:#495057;cursor:pointer;font-weight:600;padding:5px 0}.debug-info summary:hover{color:#007bff}.debug-info pre{background:#2d3748;border-radius:4px;color:#e2e8f0;font-size:12px;margin:10px 0 0;max-height:300px;overflow-x:auto;overflow-y:auto;padding:15px}@media (max-width:768px){.tree-test-page{padding:10px}.test-header h1{font-size:2rem}.test-controls{gap:15px;grid-template-columns:1fr}.tree-container{padding:15px}}.tree-container.loading{opacity:.6;pointer-events:none}.tree-container.loading:after{background:#ffffffe6;border-radius:4px;color:#495057;content:"Processing...";font-weight:600;left:50%;padding:10px 20px;position:absolute;top:50%;transform:translate(-50%,-50%)}
/*# sourceMappingURL=main.7c402868.css.map*/