*{box-sizing:border-box}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{min-height:100vh}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a2332,#2d4a5f);padding:20px}.login-content{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:40px}.login-form{width:100%;display:flex;flex-direction:column;gap:24px}.form-input{width:100%;padding:14px 16px;background-color:#1a2332cc;border:1px solid #4ade80;border-radius:8px;color:#fff;font-size:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.login-button{width:100%;padding:14px 24px;background-color:#4ade80;color:#1a2332;border:none;border-radius:8px;font-size:16px;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;cursor:pointer;transition:background-color .2s,transform .1s;margin-top:8px}.login-button:hover{background-color:#22c55e;transform:translateY(-1px)}.login-button:active{transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-button:disabled:hover{transform:none}.success-message{padding:12px 16px;background-color:#4ade801a;border:1px solid rgba(74,222,128,.3);border-radius:8px;color:#86efac;font-size:14px;text-align:center}.forgot-password-link{color:#ffffffb3;font-size:14px;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;transition:color .2s}.forgot-password-link:hover{color:#fff}.forgot-success-message,.reset-invalid-message{color:#ffffffe6;font-size:16px;text-align:center;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.register-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a2332,#2d4a5f);padding:20px}.register-content{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:40px}.logo-container{display:flex;flex-direction:column;align-items:center;gap:16px}.logo-icon{width:60px;height:60px}.logo-icon svg{width:100%;height:100%}.logo-text{font-size:28px;font-weight:600;color:#fff;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;letter-spacing:-.5px}.register-form{width:100%;display:flex;flex-direction:column;gap:24px}.form-group{display:flex;flex-direction:column;gap:8px}.form-label{font-size:14px;font-weight:500;color:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.form-input{width:100%;padding:14px 16px;background-color:#1a2332cc;border:1px solid transparent;border-radius:8px;color:#fff;font-size:16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.form-input:focus{border-color:#4ade80;box-shadow:0 0 0 3px #4ade801a}.form-input::placeholder{color:#ffffff80}.register-button{width:100%;padding:14px 24px;background-color:#4ade80;color:#1a2332;border:none;border-radius:8px;font-size:16px;font-weight:600;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;cursor:pointer;transition:background-color .2s,transform .1s;margin-top:8px}.register-button:hover{background-color:#22c55e;transform:translateY(-1px)}.register-button:active{transform:translateY(0)}.register-button:disabled{opacity:.6;cursor:not-allowed}.register-button:disabled:hover{transform:none}.error-message{padding:12px 16px;background-color:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:8px;color:#fca5a5;font-size:14px;text-align:center}.login-link{color:#ffffffb3;font-size:14px;text-decoration:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;transition:color .2s}.login-link:hover{color:#fff}.register-no-token-message{color:#ffffffe6;font-size:16px;text-align:center;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.profiles-container{max-width:1200px;margin:0 auto}.profiles-title{color:#fff;font-size:2.5rem;font-weight:700;margin-bottom:2rem}.invite-section{background:#fffffff2;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.invite-button{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease}.invite-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.invite-form{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid #e0e0e0}.pending-section,.users-section{background:#fffffff2;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.users-list{display:flex;flex-direction:column;gap:1rem}.user-card{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:#f9f9f9;border-radius:8px;border-left:4px solid #667eea;transition:all .3s ease}.user-card:hover{background:#f0f0f0;transform:translate(4px)}.user-card.inactive{opacity:.6;border-left-color:#999}.user-card.pending{border-left-color:#f39c12}.user-info{flex:1}.user-name{font-size:1.1rem;font-weight:600;color:#333;margin-bottom:.25rem}.user-email{font-size:.9rem;color:#666;margin-bottom:.5rem}.user-meta{display:flex;gap:1rem;flex-wrap:wrap;align-items:center}.user-role{padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:500}.role-root{background:#e74c3c;color:#fff}.role-admin{background:#3498db;color:#fff}.role-user{background:#95a5a6;color:#fff}.user-status{padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:500}.user-status.active{background:#2ecc71;color:#fff}.user-status.inactive{background:#e74c3c;color:#fff}.user-status.pending{background:#f39c12;color:#fff}.user-date{font-size:.85rem;color:#999}.user-actions{display:flex;gap:1rem;align-items:center}.toggle-button{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s ease}.toggle-button.active{background:#e74c3c;color:#fff}.toggle-button.inactive{background:#2ecc71;color:#fff}.toggle-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 2px 8px #0003}.toggle-button:disabled{opacity:.5;cursor:not-allowed}.role-select{padding:.5rem 1rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;background:#fff;cursor:pointer;transition:all .3s ease}.role-select:hover:not(:disabled){border-color:#667eea}.role-select:disabled{opacity:.5;cursor:not-allowed}.loading-message,.empty-message{text-align:center;padding:2rem;color:#666;font-size:1.1rem}.error-message{background:#fee;color:#c33;padding:1rem;border-radius:8px;margin-bottom:1rem;border-left:4px solid #c33}.success-message{background:#efe;color:#3c3;padding:1rem;border-radius:8px;margin-bottom:1rem;border-left:4px solid #3c3}.form-group{margin-bottom:1rem}.form-label{display:block;margin-bottom:.5rem;color:#333;font-weight:500}.form-input{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;transition:border-color .3s ease}.submit-button{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease}.submit-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.gmail-section{background:#fffffff2;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.gmail-description{color:#666;margin-bottom:1.5rem;font-size:.95rem}.gmail-connected{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem}.gmail-status{display:flex;align-items:center;gap:.5rem;font-size:1rem;color:#333}.gmail-icon{color:#2ecc71;font-weight:700}.gmail-icon.gmail-expired{color:#e74c3c}.gmail-expired-msg{color:#e74c3c;font-size:.9rem}.connect-gmail-button{padding:.75rem 1.5rem;background:#db4437;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease}.connect-gmail-button:hover:not(:disabled){background:#c53929;transform:translateY(-2px);box-shadow:0 4px 12px #db443766}.connect-gmail-button:disabled{opacity:.6;cursor:not-allowed}.disconnect-button{padding:.5rem 1rem;background:#999;color:#fff;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s ease}.disconnect-button:hover:not(:disabled){background:#777}.disconnect-button:disabled{opacity:.6;cursor:not-allowed}.bank-emails-container{max-width:1200px;margin:0 auto}.bank-emails-title{color:#fff;font-size:2.5rem;font-weight:700;margin-bottom:.5rem}.bank-emails-description{color:#fffc;font-size:1rem;margin-bottom:2rem}.bank-emails-actions{margin-bottom:1.5rem}.add-button{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease}.add-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.bank-email-form{background:#fffffff2;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.bank-email-form .form-section-title{margin-top:0;margin-bottom:1.5rem}.form-textarea{resize:vertical;min-height:120px}.form-actions{display:flex;gap:1rem;margin-top:1.5rem}.bank-configs-section{background:#fffffff2;border-radius:12px;padding:1.5rem;margin-bottom:2rem;box-shadow:0 4px 6px #0000001a}.section-title{color:#333;font-size:1.5rem;font-weight:600;margin-bottom:1.5rem}.bank-configs-list{display:flex;flex-direction:column;gap:1rem}.bank-config-card{display:flex;justify-content:space-between;align-items:flex-start;padding:1.5rem;background:#f9f9f9;border-radius:8px;border-left:4px solid #667eea}.bank-config-info{flex:1;min-width:0}.bank-config-name{font-size:1.1rem;font-weight:600;color:#333;margin-bottom:.25rem}.bank-config-patterns{font-size:.9rem;color:#666;margin-bottom:.25rem;word-break:break-all}.bank-config-image-link{font-size:.85rem;color:#667eea;text-decoration:none}.bank-config-image-link:hover{text-decoration:underline}.bank-config-actions{display:flex;gap:.5rem;flex-shrink:0}.bank-config-actions .edit-button,.bank-config-actions .delete-button{padding:.5rem 1rem;border:none;border-radius:6px;font-size:.9rem;cursor:pointer}.bank-config-actions .edit-button{background:#667eea;color:#fff}.bank-config-actions .edit-button:hover:not(:disabled){background:#5a6fd6}.bank-config-actions .delete-button{background:#e74c3c;color:#fff}.bank-config-actions .delete-button:hover:not(:disabled){background:#c0392b}.bank-config-actions button:disabled{opacity:.6;cursor:not-allowed}.dashboard-container{min-height:100vh;display:flex;background:linear-gradient(135deg,#667eea,#764ba2)}.sidebar{width:250px;background:#1a2332f2;display:flex;flex-direction:column;padding:2rem 1rem;box-shadow:2px 0 10px #0000001a}.sidebar-logo{display:flex;justify-content:center;margin-bottom:3rem}.sidebar-logo svg{width:50px;height:50px}.sidebar-nav{display:flex;flex-direction:column;gap:.5rem;flex:1}.nav-link-logout{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding-top:1rem}.nav-link-logout:hover{background:#e74c3c33;color:#e74c3c}.nav-link{display:flex;align-items:center;gap:1rem;padding:1rem;background:transparent;border:none;border-radius:8px;color:#ffffffb3;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease;text-align:left}.nav-link:hover{background:#ffffff1a;color:#fff}.nav-link.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.nav-link svg{flex-shrink:0}.dashboard-main{flex:1;padding:2rem;overflow-y:auto}.dashboard-content{max-width:1200px;margin:0 auto}.dashboard-title{color:#fff;font-size:2.5rem;font-weight:700;margin-bottom:2rem}.dashboard-tabs{display:flex;gap:1rem;margin-bottom:2rem}.tab-button{padding:.75rem 1.5rem;background:#ffffff1a;border:none;border-radius:8px;color:#fff;font-size:1rem;cursor:pointer;transition:all .3s ease}.tab-button:hover{background:#fff3}.tab-button.active{background:#fff;color:#667eea;font-weight:600}.transaction-form-container{background:#fff;border-radius:16px;padding:2rem;box-shadow:0 10px 40px #0000001a}.form-section-title{color:#333;font-size:1.5rem;font-weight:600;margin-bottom:1.5rem}.transaction-type-selector{display:flex;gap:1rem;margin-bottom:1.5rem;padding:.5rem;background:#f5f5f5;border-radius:8px}.type-button{flex:1;padding:.75rem 1rem;background:#fff;border:2px solid transparent;border-radius:6px;color:#666;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s ease}.type-button:hover{background:#f0f0f0}.type-button.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:transparent;font-weight:600}.transaction-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-label{color:#555;font-size:.95rem;font-weight:500}.form-input{padding:.75rem 1rem;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;transition:border-color .3s ease}.form-input:focus{outline:none;border-color:#667eea}.form-input::placeholder{color:#999}.form-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23333' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}.form-select:focus{outline:none;border-color:#667eea}.form-group-switch{padding:.75rem 0;border-top:1px solid #eee;border-bottom:1px solid #eee}.form-switch-label{display:flex;align-items:center;gap:.75rem;cursor:pointer}.form-switch{width:2.5rem;height:1.25rem;accent-color:#667eea;cursor:pointer}.form-switch-text{font-weight:500}.form-group-inline{margin-top:.75rem;padding-left:0}.form-input-small{max-width:5rem}.form-hint{display:block;font-size:.8rem;color:#888;margin-top:.25rem}.error-message{padding:1rem;background:#fee;border:1px solid #fcc;border-radius:8px;color:#c33;font-size:.95rem}.success-message{padding:1rem;background:#efe;border:1px solid #cfc;border-radius:8px;color:#3c3;font-size:.95rem}.submit-button{padding:1rem 2rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.submit-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 20px #667eea66}.submit-button:disabled{opacity:.6;cursor:not-allowed}.records-container{background:#fff;border-radius:16px;padding:2rem;box-shadow:0 10px 40px #0000001a}.records-selection-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-top:1.5rem;padding-bottom:.5rem}.records-selection-links{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#666}.link-button{background:none;border:none;color:#667eea;cursor:pointer;padding:0;font-size:inherit}.link-button:hover{text-decoration:underline}.separator{color:#ccc}.delete-selected-button{padding:.5rem 1rem;background:#dc3545;color:#fff;border:none;border-radius:8px;font-size:.9rem;font-weight:500;cursor:pointer}.delete-selected-button:hover:not(:disabled){background:#c82333}.delete-selected-button:disabled{opacity:.6;cursor:not-allowed}.record-checkbox{display:flex;align-items:center;cursor:pointer;flex-shrink:0}.record-item-selected{background:#e7f0ff;border:1px solid #667eea}.records-list{display:flex;flex-direction:column;gap:1rem;margin-top:1.5rem}.record-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:8px;transition:background .2s ease}.record-item:hover{background:#e9ecef}.record-actions{display:flex;gap:.5rem;flex-shrink:0}.action-button{padding:.5rem;border:none;border-radius:6px;background:transparent;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;color:#666}.action-button:hover:not(:disabled){background:#0000000d;transform:scale(1.1)}.action-button:disabled{opacity:.5;cursor:not-allowed}.edit-button:hover:not(:disabled){color:#667eea}.delete-button:hover:not(:disabled){color:#dc3545}.record-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;color:#fff;flex-shrink:0}.record-details{flex:1;min-width:0;display:flex;flex-direction:column;gap:.25rem}.record-merchant{font-weight:600;color:#333;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-meta{display:flex;gap:1rem;font-size:.875rem;color:#666;flex-wrap:nowrap}.record-category{font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-date{color:#999;white-space:nowrap;flex-shrink:0}.record-amount{font-size:1.25rem;font-weight:700;flex-shrink:0}.record-amount.expense{color:#dc3545}.record-amount.income{color:#28a745}.loading-message,.empty-message{text-align:center;padding:3rem;color:#666;font-size:1.1rem}.filters-container{display:flex;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.5rem;flex:1;min-width:150px}.summary-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.summary-card{background:#f8f9fa;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;transition:transform .2s ease,box-shadow .2s ease}.summary-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.summary-card.positive{background:linear-gradient(135deg,#e8f5e9,#c8e6c9)}.summary-card.negative{background:linear-gradient(135deg,#ffebee,#ffcdd2)}.summary-card-label{font-size:.9rem;color:#666;font-weight:500;margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.5px}.summary-card-amount{font-size:1.75rem;font-weight:700}.summary-card-amount.positive{color:#28a745}.summary-card-amount.negative{color:#dc3545}.summary-chart-section{margin-top:2rem;background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 10px 40px #00000014}.summary-chart-title{color:#333;font-size:1.25rem;font-weight:600;margin-bottom:1rem}.summary-chart-wrapper{min-height:320px}.summary-chart-empty{padding:3rem;text-align:center;color:#888;font-size:1rem;background:#f8f9fa;border-radius:12px}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:2rem}.modal-content{background:#fff;border-radius:16px;padding:2rem;box-shadow:0 10px 40px #0003;max-width:500px;width:100%;max-height:90vh;overflow-y:auto}.modal-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}.cancel-button{padding:.75rem 1.5rem;background:#f5f5f5;color:#333;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s ease}.cancel-button:hover:not(:disabled){background:#e0e0e0}.cancel-button:disabled{opacity:.6;cursor:not-allowed}.hamburger-button{display:none;position:fixed;top:1rem;left:1rem;z-index:1002;width:48px;height:48px;padding:0;border:none;border-radius:12px;background:#1a2332f2;color:#fff;cursor:pointer;align-items:center;justify-content:center;box-shadow:0 4px 12px #0003;transition:background .2s ease,transform .2s ease}.hamburger-button:hover{background:#283246f2}.hamburger-button:active{transform:scale(.96)}.sidebar-backdrop{display:none;position:fixed;inset:0;z-index:1000;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media(max-width:768px){.hamburger-button{display:flex}.sidebar-backdrop{display:block}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:1001;width:280px;max-width:85vw;transform:translate(-100%);transition:transform .3s ease}.sidebar.sidebar-open{transform:translate(0)}.dashboard-main{padding:4.5rem 1rem 1rem}.dashboard-title{font-size:1.75rem}.records-container{padding:1rem}.record-item{gap:.75rem;padding:.75rem}.record-icon{width:36px;height:36px}.record-icon svg{width:20px;height:20px}.record-merchant{font-size:.9375rem}.record-meta{font-size:.8125rem;gap:.5rem}.record-amount{font-size:1.0625rem}.record-actions{gap:.25rem}.action-button{padding:.4rem}.action-button svg{width:14px;height:14px}}
