/* User Management Interface Styles */ /* Tables, user forms, and user-related components */ .users-admin-container { display: grid; grid-template-columns: 1fr 2fr; gap: 30px; margin-top: var(--padding-base); width: 100%; box-sizing: border-box; overflow: hidden; } .user-form, .users-list { background: white; border-radius: var(--border-radius); padding: 25px; box-shadow: var(--shadow-sm); border: 1px solid #e0e0e0; width: 100%; box-sizing: border-box; } .users-list { overflow-x: auto; min-width: 0; } .user-form h3, .users-list h3 { margin-bottom: var(--padding-base); color: var(--dark-color); border-bottom: 2px solid var(--primary-color); padding-bottom: 10px; font-size: var(--font-size-xl); } /* Users Cards Layout */ .users-cards-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; margin-top: 10px; } .user-card { background: white; border: 1px solid #e0e0e0; border-radius: var(--border-radius); padding: 10px; box-shadow: var(--shadow-sm); transition: all 0.2s ease; display: flex; flex-direction: column; gap: 4px; } .user-card:hover { box-shadow: var(--shadow-md); border-color: var(--primary-color); } .user-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 6px; } .user-info-primary { flex: 1; min-width: 0; } .user-name { font-size: var(--font-size-lg); font-weight: 600; color: var(--dark-color); margin: 0 0 1px 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .user-email { font-size: var(--font-size-sm); color: #666; margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .user-role-badge { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; } .user-card-body { padding-top: 2px; } .user-details { display: flex; flex-direction: column; gap: 1px; } .user-details-compact { font-size: var(--font-size-sm); color: #666; margin: 0; padding: 0; line-height: 1.3; } .user-phone, .user-created { font-size: var(--font-size-sm); color: #666; margin: 0; padding: 1px 0; display: flex; align-items: center; gap: 4px; line-height: 1.2; } .user-card-footer { padding-top: 2px; } /* User Role Badges */ .user-role { padding: 4px 8px; border-radius: 12px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; display: inline-block; text-align: center; min-width: 45px; line-height: 1.2; } .user-role.admin { background-color: var(--error-color); color: white; } .user-role.user { background-color: var(--success-color); color: white; } .user-role.temp { background-color: var(--warning-color); color: white; } /* User Expiration Information */ .expiration-info { display: inline-block; margin-left: 6px; font-size: 0.75em; color: #666; background: #f5f5f5; padding: 1px 4px; border-radius: 3px; } .expiration-warning { color: #ff5722; font-weight: bold; } .user-card.expires-soon { background-color: #fff3cd; border-left: 4px solid var(--warning-color); } .user-card.expired { background-color: #f8d7da; border-left: 4px solid var(--error-color); opacity: 0.7; } .expires-soon { background-color: #fff3cd; border-left: 4px solid var(--warning-color); } .expired { background-color: #f8d7da; border-left: 4px solid var(--error-color); opacity: 0.7; } /* User Actions - Card Layout */ .user-actions { display: flex; gap: 4px; width: 100%; align-items: center; } .user-communication-actions { display: flex; gap: 3px; } .user-admin-actions { display: flex; gap: 4px; margin-left: auto; } .user-actions .btn { padding: 4px 8px; font-size: var(--font-size-xs); border-radius: var(--border-radius); font-weight: 500; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; transition: all 0.2s ease; } .user-admin-actions .btn { font-size: var(--font-size-xs); padding: 4px 8px; line-height: 1.3; } .user-communication-actions .btn { padding: 4px 8px; font-size: 14px; min-width: 32px; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; } .user-communication-actions .btn-outline-primary { color: var(--primary-color); border: 1px solid var(--primary-color); background: white; } .user-communication-actions .btn-outline-primary:hover { background: var(--primary-color); color: white; } .user-communication-actions .btn-outline-secondary { color: #6c757d; border: 1px solid #6c757d; background: white; } .user-communication-actions .btn-outline-secondary:hover:not(.disabled) { background: #6c757d; color: white; } .user-communication-actions .btn-outline-success { color: var(--success-color); border: 1px solid var(--success-color); background: white; } .user-communication-actions .btn-outline-success:hover:not(.disabled) { background: var(--success-color); color: white; } .user-communication-actions .btn.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* Special styling for delete button with trash icon */ .delete-user-btn { background: #dc3545 !important; color: white !important; border: 1px solid #dc3545 !important; min-width: 28px !important; width: 28px !important; height: 28px !important; display: flex !important; align-items: center !important; justify-content: center !important; font-size: 12px !important; padding: 0 !important; flex-shrink: 0 !important; } .delete-user-btn:hover { background: #c82333 !important; border-color: #bd2130 !important; } /* Users List Header */ .users-list-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--padding-base); padding-bottom: 15px; border-bottom: 2px solid #eee; gap: 20px; flex-wrap: wrap; } .users-list-header h3 { margin: 0; color: var(--dark-color); flex-shrink: 0; } .users-header-actions { display: flex; align-items: flex-start; gap: 15px; flex-wrap: wrap; flex: 1; justify-content: flex-end; } /* Users Search and Filter */ .users-search-container { display: flex; flex-direction: column; gap: 8px; min-width: 280px; } .users-search-input { padding: 8px 12px; border: 1px solid #ddd; border-radius: var(--border-radius); font-size: var(--font-size-sm); width: 100%; box-sizing: border-box; transition: border-color 0.2s ease; } .users-search-input:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(160, 44, 141, 0.1); } .users-filter-container { display: flex; gap: 6px; align-items: center; } .users-filter-select { padding: 6px 10px; border: 1px solid #ddd; border-radius: var(--border-radius); font-size: var(--font-size-xs); background: white; cursor: pointer; flex: 1; } .users-filter-select:focus { outline: none; border-color: var(--primary-color); } #clear-users-search { padding: 6px 8px; font-size: 12px; line-height: 1; min-width: auto; } /* Search Results Info */ .users-search-results { background: #f8f9fa; padding: 10px 15px; border-radius: var(--border-radius); margin-bottom: 15px; border-left: 4px solid var(--primary-color); } .search-results-text { margin: 0; font-size: var(--font-size-sm); color: #666; } /* No results state */ .no-users-found { text-align: center; padding: 40px 20px; color: #666; font-style: italic; } /* Filtered state highlight */ .users-cards-container.filtered { border: 2px dashed #ddd; padding: 10px; border-radius: var(--border-radius); } .user-card.search-highlight { box-shadow: 0 0 0 2px rgba(160, 44, 141, 0.2); } /* Helper Text */ .help-text { font-size: 0.85em; color: #666; margin-top: 4px; display: block; } /* Volunteer Management */ .volunteer-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 15px; background-color: #f8f9fa; border-radius: var(--border-radius); margin-bottom: 8px; } .volunteer-info { flex: 1; } .volunteer-name { font-weight: bold; color: var(--dark-color); } .volunteer-email { font-size: var(--font-size-sm); color: #666; margin-top: 2px; } .volunteer-actions { display: flex; flex-direction: column; gap: 8px; } .volunteer-communication-actions { display: flex; gap: 4px; justify-content: center; } .volunteer-admin-actions { display: flex; gap: 8px; justify-content: center; } .volunteer-communication-actions .btn { padding: 4px 8px; font-size: 14px; min-width: 32px; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; } .volunteer-communication-actions .btn-outline-primary { color: var(--primary-color); border: 1px solid var(--primary-color); background: white; } .volunteer-communication-actions .btn-outline-primary:hover { background: var(--primary-color); color: white; } .volunteer-communication-actions .btn-outline-secondary { color: #6c757d; border: 1px solid #6c757d; background: white; } .volunteer-communication-actions .btn-outline-secondary:hover:not(.disabled) { background: #6c757d; color: white; } .volunteer-communication-actions .btn-outline-success { color: var(--success-color); border: 1px solid var(--success-color); background: white; } .volunteer-communication-actions .btn-outline-success:hover:not(.disabled) { background: var(--success-color); color: white; } .volunteer-communication-actions .btn.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } .no-volunteers { text-align: center; color: #666; font-style: italic; padding: var(--padding-base); background-color: #f8f9fa; border-radius: var(--border-radius); } /* User Select Dropdown */ #user-select { padding: 8px 12px; border: 1px solid #ddd; border-radius: var(--border-radius); font-size: var(--font-size-base); background-color: white; } #user-select:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.1); }