/* Admin Panel - Shared styles with Users page */ /* Admin Panel Root */ .admin-panel-root { max-width: 100%; } .admin-panel-root .page-header h1 { margin: 0; } .admin-panel-root .page-subtitle { margin: var(--space-2) 0 0; color: var(--color-text-secondary); font-size: 0.95rem; } /* admin-tab-content padding is now managed by Layout.css */ /* Badge styles - ensure they're defined */ .badge { display: inline-flex; align-items: center; padding: var(--badge-padding); border-radius: var(--radius-md); font-size: var(--badge-font-size); font-weight: 500; white-space: nowrap; } .badge-success { background: rgba(34, 197, 94, 0.1); color: #16a34a; border: 1px solid rgba(34, 197, 94, 0.2); } .badge-neutral { background: var(--color-bg-elevated); color: var(--color-text-secondary); border: 1px solid var(--color-border); } .badge-muted { background: rgba(156, 163, 175, 0.1); color: #6b7280; border: 1px solid rgba(156, 163, 175, 0.2); } .badge-accent { background: rgba(var(--color-accent-rgb), 0.1); color: var(--color-accent); border: 1px solid rgba(var(--color-accent-rgb), 0.2); } /* Toolbar - single row with search left, badges+button right */ .admin-panel-root .users-toolbar, .users-root .users-toolbar { display: flex; align-items: center; justify-content: space-between; gap: var(--toolbar-gap); margin-bottom: var(--section-gap-sm); flex-wrap: wrap; } .toolbar-right { display: flex; align-items: center; gap: var(--element-gap-lg); } /* Primary Button */ .btn-primary { display: inline-flex; align-items: center; gap: 0.5rem; padding: var(--btn-padding-md); background: var(--color-accent); color: white; border: none; border-radius: var(--radius-md); font-weight: 600; font-size: var(--btn-font-size); cursor: pointer; transition: all 0.2s ease; } .btn-primary:hover { background: var(--color-accent-hover); opacity: 0.95; } .btn-primary .material-symbols-outlined { font-size: var(--icon-md); } /* Small button variant */ .btn-sm { padding: var(--btn-padding-sm) !important; font-size: var(--btn-font-size-sm) !important; height: auto !important; } .btn-sm .material-symbols-outlined { font-size: var(--icon-sm); } .admin-panel-root .input-group, .users-root .input-group { display: flex; align-items: center; gap: var(--element-gap); padding: var(--input-padding); background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); min-width: 260px; } .admin-panel-root .input-group input, .users-root .input-group input { border: none; outline: none; background: transparent; color: var(--color-text-primary); width: 100%; } .admin-panel-root .users-badges, .users-root .users-badges { display: flex; gap: var(--element-gap); flex-wrap: wrap; } .admin-panel-root .users-card, .users-root .users-card { background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; } /* Table wrapper for horizontal scroll */ .admin-panel-root .users-table-wrapper, .users-root .users-table-wrapper { overflow-x: auto; -webkit-overflow-scrolling: touch; position: relative; } /* Scroll hint shadow on narrow screens */ @media (max-width: 1200px) { .admin-panel-root .users-table-wrapper, .users-root .users-table-wrapper { background: linear-gradient(to right, var(--color-bg-card) 30%, rgba(255, 255, 255, 0)), linear-gradient(to left, var(--color-bg-card) 30%, rgba(255, 255, 255, 0)), linear-gradient(to right, rgba(0, 0, 0, .15), rgba(255, 255, 255, 0)), linear-gradient(to left, rgba(0, 0, 0, .15), rgba(255, 255, 255, 0)); background-position: left center, right center, left center, right center; background-repeat: no-repeat; background-color: var(--color-bg-card); background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%; background-attachment: local, local, scroll, scroll; } } /* Users Settings Card */ .users-setting-card { background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--space-6); margin-top: var(--section-gap); display: flex; align-items: center; justify-content: space-between; gap: var(--section-gap); } .users-setting-card .setting-info { display: flex; align-items: flex-start; gap: var(--space-4); flex: 1; } .users-setting-card .setting-icon { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); flex-shrink: 0; } .users-setting-card .setting-icon .material-symbols-outlined { font-size: 24px; color: var(--color-accent); } .users-setting-card .setting-text { flex: 1; } .users-setting-card .setting-text h4 { margin: 0 0 0.25rem 0; font-size: 1rem; font-weight: 600; color: var(--color-text-primary); } .users-setting-card .setting-text p { margin: 0; font-size: 0.875rem; color: var(--color-text-secondary); line-height: 1.5; } /* General Tab Content */ .general-tab-content { display: flex; flex-direction: column; gap: 3rem; padding: 0 1rem; /* Added side margins */ } .general-section { display: flex; flex-direction: column; } .modules-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; /* Increased gap from var(--card-gap) which is usually small */ } /* Compact setting card for general tab */ .general-tab-content .setting-card-compact { background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--card-padding); display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); min-width: 0; overflow: hidden; min-height: 80px; /* Increased height */ } .general-tab-content .setting-card-compact .setting-info { display: flex; align-items: center; gap: var(--element-gap-lg); flex: 1; min-width: 0; } .general-tab-content .setting-card-compact .setting-icon { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: var(--color-bg-elevated); border-radius: var(--radius-sm); flex-shrink: 0; } .general-tab-content .setting-card-compact .setting-icon .material-symbols-outlined { font-size: 20px; color: var(--color-accent); } .general-tab-content .setting-card-compact .setting-text { flex: 1; min-width: 0; } .general-tab-content .setting-card-compact .setting-text h4 { margin: 0; font-size: 0.9rem; font-weight: 500; color: var(--color-text-primary); } .general-tab-content .setting-card-compact .setting-text p { margin: 0; font-size: 0.8rem; color: var(--color-text-secondary); line-height: 1.4; } .admin-panel-root .users-table, .users-root .users-table { width: 100%; border-collapse: collapse; border-spacing: 0; table-layout: fixed; } .admin-panel-root .users-table th:nth-child(1), .admin-panel-root .users-table td:nth-child(1), .users-root .users-table th:nth-child(1), .users-root .users-table td:nth-child(1) { width: 34%; } .admin-panel-root .users-table th:nth-child(2), .admin-panel-root .users-table td:nth-child(2), .users-root .users-table th:nth-child(2), .users-root .users-table td:nth-child(2) { width: 15%; text-align: center; } .admin-panel-root .users-table th:nth-child(3), .admin-panel-root .users-table td:nth-child(3), .users-root .users-table th:nth-child(3), .users-root .users-table td:nth-child(3) { width: 15%; text-align: center; } .admin-panel-root .users-table th:nth-child(4), .admin-panel-root .users-table td:nth-child(4), .users-root .users-table th:nth-child(4), .users-root .users-table td:nth-child(4) { width: 12%; text-align: center; } .admin-panel-root .users-table th:nth-child(5), .admin-panel-root .users-table td:nth-child(5), .users-root .users-table th:nth-child(5), .users-root .users-table td:nth-child(5) { width: 12%; text-align: center; } .admin-panel-root .users-table th:nth-child(6), .admin-panel-root .users-table td:nth-child(6), .users-root .users-table th:nth-child(6), .users-root .users-table td:nth-child(6) { width: 12%; text-align: center; } .admin-panel-root .users-table th, .admin-panel-root .users-table td, .users-root .users-table th, .users-root .users-table td { padding: var(--table-cell-padding); text-align: left; vertical-align: middle; } .admin-panel-root .users-table tbody tr:not(:last-child), .users-root .users-table tbody tr:not(:last-child) { border-bottom: 1px solid var(--color-border); } .admin-panel-root .users-table th, .users-root .users-table th { font-weight: 700; color: var(--color-text-secondary); background: var(--color-bg-elevated); white-space: nowrap; } /* Flex layout for sortable headers to align icon */ .admin-panel-root .users-table th.sortable, .users-root .users-table th.sortable { cursor: pointer; user-select: none; transition: all 0.2s ease; vertical-align: middle; } .admin-panel-root .users-table th.sortable:hover, .users-root .users-table th.sortable:hover { background: var(--color-bg-hover); color: var(--color-text-primary); } .sort-icon { font-size: 16px !important; /* Force smaller size */ opacity: 0.6; margin-left: 0.5rem; vertical-align: middle; display: inline-block; } .admin-panel-root .users-table tbody tr:hover, .users-root .users-table tbody tr:hover { background: var(--color-bg-elevated); } .admin-panel-root .user-cell, .users-root .user-cell { display: flex; align-items: center; gap: var(--element-gap-lg); } .admin-panel-root .user-avatar, .users-root .user-avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--color-accent); color: white; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 1rem; flex-shrink: 0; } .admin-panel-root .user-meta, .users-root .user-meta { display: flex; flex-direction: column; gap: 0.15rem; } .admin-panel-root .user-name, .users-root .user-name { font-weight: 600; color: var(--color-text-primary); } .admin-panel-root .user-email, .users-root .user-email { font-size: 0.85rem; color: var(--color-text-secondary); } .admin-panel-root .user-date, .users-root .user-date { font-size: 0.9rem; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; } .admin-panel-root .users-alert, .users-root .users-alert { padding: var(--space-4); background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.3); border-radius: var(--radius-md); color: #dc2626; margin-bottom: var(--space-4); } .admin-panel-root .users-empty, .users-root .users-empty { padding: 3rem; text-align: center; color: var(--color-text-secondary); } /* Tab Navigation */ .admin-tabs { display: flex; gap: var(--element-gap); border-bottom: 2px solid var(--color-border); margin: var(--space-4) 0 0; } .admin-tab { display: flex; align-items: center; gap: var(--element-gap); padding: 0.5rem 0.75rem; background: transparent; border: none; outline: none; border-bottom: 3px solid transparent; color: var(--color-text-secondary); cursor: pointer; transition: all 0.2s ease; font-size: var(--tab-font-size); font-weight: 500; margin-bottom: -2px; } .admin-tab .material-symbols-outlined { font-size: 20px; } .admin-tab:hover { color: var(--color-text-primary); background: var(--color-bg-elevated); } .admin-tab.active { color: var(--color-accent); border-bottom-color: var(--color-accent); } /* admin-tab-content padding managed by Layout.css */ /* Modern Icon-Only Action Buttons */ .users-actions-icons { display: flex; gap: var(--element-gap); justify-content: center; } .btn-icon-action { display: flex; align-items: center; justify-content: center; width: var(--btn-icon-md); height: var(--btn-icon-md); background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; padding: 0; } .btn-icon-action .material-symbols-outlined { font-size: 18px; color: var(--color-text-primary); } .btn-icon-action:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .btn-icon-action.btn-edit { color: var(--color-text-primary); } .btn-icon-action.btn-edit:hover { background: var(--color-accent); border-color: var(--color-accent); } .btn-icon-action.btn-edit:hover .material-symbols-outlined { color: white; } .btn-icon-action.btn-delete { color: var(--color-text-primary); } .btn-icon-action.btn-delete:hover { background: #ef4444; border-color: #ef4444; } .btn-icon-action.btn-delete:hover .material-symbols-outlined { color: white; } .btn-icon-action:disabled { opacity: 0.4; cursor: not-allowed; transform: none; } .btn-icon-action:disabled:hover { background: var(--color-bg-elevated); border-color: var(--color-border); box-shadow: none; } .btn-icon-action:disabled:hover .material-symbols-outlined { color: var(--color-text-secondary); } /* Hide mobile cards on desktop by default */ .mobile-user-card { display: none; } /* Admin Tab Tooltip - Hidden by default on desktop */ .admin-tab-tooltip { display: none; } /* Tablet Responsive */ @media (max-width: 1024px) { .modules-grid { grid-template-columns: repeat(2, 1fr); } } /* Mobile Responsive */ @media (max-width: 768px) { .admin-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; } .admin-tab { white-space: nowrap; } .admin-panel-root .users-toolbar, .users-root .users-toolbar { flex-direction: column; align-items: stretch; } .toolbar-right { flex-direction: row; justify-content: space-between; } /* Hide desktop table on mobile */ .admin-panel-root .users-card, .users-root .users-card { display: none; } .mobile-users-list { display: flex; flex-direction: column; gap: 0.5rem; } .mobile-users-divider { height: 1px; background: var(--color-border); margin: 0.125rem 0; opacity: 0.5; } .mobile-user-card { display: flex; flex-direction: column; gap: 0.5rem; background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 0.75rem; box-shadow: var(--shadow-sm); } .mobile-user-header { display: flex; align-items: center; gap: 0.5rem; } .mobile-user-info { flex: 1; min-width: 0; } .mobile-user-name { font-weight: 600; color: var(--color-text-primary); font-size: 0.95rem; } .mobile-user-email { font-size: 0.8rem; color: var(--color-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .mobile-user-actions { display: flex; gap: 0.375rem; flex-shrink: 0; } .mobile-user-actions .btn-icon-action { width: var(--btn-icon-sm); height: var(--btn-icon-sm); } .mobile-user-actions .btn-icon-action .material-symbols-outlined { font-size: var(--icon-sm); } .mobile-user-footer { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding-top: 0.5rem; border-top: 1px solid var(--color-border); } .mobile-badges-row { display: flex; gap: 0.5rem; } .mobile-dates { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.8rem; color: var(--color-text-secondary); } .mobile-date-item { display: flex; align-items: center; gap: 0.375rem; } .mobile-date-item .material-symbols-outlined { font-size: 14px; opacity: 0.7; } } /* Tablets and smaller screens - enable horizontal scroll */ @media (max-width: 1200px) { .admin-panel-root .users-table, .users-root .users-table { min-width: 900px; } .admin-panel-root .users-table th, .admin-panel-root .users-table td, .users-root .users-table th, .users-root .users-table td { padding: 0.75rem 0.75rem; font-size: 0.9rem; } .admin-panel-root .user-avatar, .users-root .user-avatar { width: 36px; height: 36px; font-size: 0.9rem; } .admin-panel-root .user-name, .users-root .user-name { font-size: 0.95rem; } .admin-panel-root .user-email, .users-root .user-email { font-size: 0.8rem; } .admin-panel-root .user-date, .users-root .user-date { font-size: 0.85rem; } .btn-icon-action { width: var(--btn-icon-sm); height: var(--btn-icon-sm); } .btn-icon-action .material-symbols-outlined { font-size: var(--icon-xs); } } /* Admin Panel Root */ .admin-panel-root { max-width: 100%; } .admin-panel-root .page-header h1 { margin: 0; } .admin-panel-root .page-subtitle { margin: var(--space-2) 0 0; color: var(--color-text-secondary); font-size: 0.95rem; } /* Tab Navigation */ .admin-tabs { display: flex; gap: var(--element-gap); border-bottom: 2px solid var(--color-border); margin: var(--space-4) 0 0; } .admin-tab { display: flex; align-items: center; gap: var(--element-gap); padding: 0.5rem 0.75rem; background: transparent; border: none; border-bottom: 3px solid transparent; color: var(--color-text-secondary); cursor: pointer; transition: all 0.2s ease; font-size: var(--tab-font-size); font-weight: 500; margin-bottom: -2px; } .admin-tab .material-symbols-outlined { font-size: 20px; } .admin-tab:hover { color: var(--color-text-primary); background: var(--color-bg-elevated); } .admin-tab.active { color: var(--color-accent); border-bottom-color: var(--color-accent); } /* admin-tab-content padding managed by Layout.css */ /* Modern Icon-Only Action Buttons */ .users-actions-icons { display: flex; gap: var(--element-gap); justify-content: center; } .btn-icon-action { display: flex; align-items: center; justify-content: center; width: var(--btn-icon-md); height: var(--btn-icon-md); background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; padding: 0; } .btn-icon-action .material-symbols-outlined { font-size: 18px; color: var(--color-text-primary); } .btn-icon-action:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .btn-icon-action.btn-edit { color: var(--color-text-primary); } .btn-icon-action.btn-edit:hover { background: var(--color-accent); border-color: var(--color-accent); } .btn-icon-action.btn-edit:hover .material-symbols-outlined { color: white; } .btn-icon-action.btn-delete { color: var(--color-text-primary); } .btn-icon-action.btn-delete:hover { background: #ef4444; border-color: #ef4444; } .btn-icon-action.btn-delete:hover .material-symbols-outlined { color: white; } .btn-icon-action:disabled { opacity: 0.4; cursor: not-allowed; transform: none; } .btn-icon-action:disabled:hover { background: var(--color-bg-elevated); border-color: var(--color-border); box-shadow: none; } .btn-icon-action:disabled:hover .material-symbols-outlined { color: var(--color-text-secondary); } /* Mobile Responsive */ @media (max-width: 768px) { .admin-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; } .admin-tab { white-space: nowrap; } } /* Modern Toolbar */ .tab-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.5rem; flex-wrap: wrap; } .toolbar-actions { display: flex; gap: 1rem; align-items: center; } .input-group-modern { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1.25rem; background: var(--color-bg-card); border: 2px solid var(--color-border); border-radius: var(--radius-lg); min-width: 300px; transition: all 0.2s ease; } .input-group-modern:focus-within { border-color: var(--color-accent); box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.1); } .input-group-modern .material-symbols-outlined { color: var(--color-text-secondary); font-size: 20px; } .input-group-modern input { border: none; outline: none; background: transparent; color: var(--color-text-primary); width: 100%; font-size: 0.95rem; } /* Modern Buttons */ .btn-primary-modern { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.5rem; background: var(--color-accent); color: white; border: none; border-radius: var(--radius-md); font-weight: 600; font-size: 0.95rem; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); } .btn-primary-modern:hover { background: var(--color-accent-hover); transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); } .btn-primary-modern .material-symbols-outlined { font-size: 18px; } .btn-ghost-modern { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.5rem; background: var(--color-bg-elevated); color: var(--color-text-primary); border: 1px solid var(--color-border); border-radius: var(--radius-md); font-weight: 500; font-size: 0.95rem; cursor: pointer; transition: all 0.2s ease; } .btn-ghost-modern:hover { background: var(--color-bg-card); border-color: var(--color-accent); } /* Modern Icon Buttons */ .action-buttons { display: flex; gap: 0.5rem; } .btn-icon-modern { display: flex; align-items: center; justify-content: center; width: var(--btn-icon-md); height: var(--btn-icon-md); background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; } .btn-icon-modern .material-symbols-outlined { font-size: var(--icon-sm); color: var(--color-text-secondary); } .btn-icon-modern:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } .btn-icon-modern.btn-edit:hover { background: var(--color-accent); border-color: var(--color-accent); } .btn-icon-modern.btn-edit:hover .material-symbols-outlined { color: white; } .btn-icon-modern.btn-delete:hover { background: #ef4444; border-color: #ef4444; } .btn-icon-modern.btn-delete:hover .material-symbols-outlined { color: white; } .btn-icon-modern:disabled { opacity: 0.4; cursor: not-allowed; transform: none; } /* Modern Table */ .users-table-container { background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-sm); } .modern-table { width: 100%; border-collapse: collapse; } .modern-table th { padding: 1rem 1.5rem; text-align: left; font-weight: 600; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.5px; color: var(--color-text-secondary); background: var(--color-bg-elevated); border-bottom: 2px solid var(--color-border); } .modern-table th.actions-col { width: 120px; text-align: center; } .modern-table td { padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--color-border); vertical-align: middle; } .modern-table tbody tr:last-child td { border-bottom: none; } .modern-table tbody tr:hover { background: var(--color-bg-elevated); } .modern-table .user-info { display: flex; align-items: center; gap: 1rem; } .modern-table .user-avatar-modern { width: 42px; height: 42px; border-radius: 50%; background: linear-gradient(135deg, var(--color-accent), var(--color-accent-hover)); color: white; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 1rem; flex-shrink: 0; } .modern-table .user-details { display: flex; flex-direction: column; gap: 0.25rem; } .modern-table .user-name-modern { font-weight: 600; color: var(--color-text-primary); font-size: 0.95rem; } .modern-table .user-email-modern { font-size: 0.85rem; color: var(--color-text-secondary); } /* Modern Alerts */ .alert-modern { padding: 1rem 1.5rem; border-radius: var(--radius-md); margin-bottom: 1.5rem; display: flex; align-items: center; gap: 0.75rem; } .alert-modern.alert-error { background: rgba(239, 68, 68, 0.1); border: 1px solid rgba(239, 68, 68, 0.3); color: #dc2626; } /* Modern Modal */ .modal-backdrop { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 1rem; animation: fadeIn 0.2s ease; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .modal-modern { background: var(--color-bg-card); border-radius: var(--radius-lg); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); max-width: 500px; width: 100%; max-height: 90vh; overflow-y: auto; animation: slideUp 0.3s ease; } @keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .modal-header-modern { display: flex; justify-content: space-between; align-items: center; padding: 1.5rem 2rem; border-bottom: 1px solid var(--color-border); } .modal-header-modern h2 { margin: 0; font-size: 1.25rem; } .btn-close-modern { width: var(--btn-icon-sm); height: var(--btn-icon-sm); display: flex; align-items: center; justify-content: center; background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; } .btn-close-modern:hover { background: #ef4444; border-color: #ef4444; color: white; } .modal-form { padding: 2rem; } .form-field { margin-bottom: 1.5rem; } .form-field label { display: block; margin-bottom: 0.5rem; font-weight: 600; color: var(--color-text-primary); font-size: 0.9rem; } .form-field .helper-text { font-weight: 400; color: var(--color-text-secondary); font-size: 0.85rem; } .form-field input { width: 100%; padding: 0.75rem 1rem; background: var(--color-bg-elevated); border: 2px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text-primary); font-size: 0.95rem; transition: all 0.2s ease; } .form-field input:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.1); } .form-grid-checks { display: flex; gap: 1.5rem; margin-bottom: 1.5rem; } .checkbox-modern { display: flex; align-items: center; gap: 0.75rem; cursor: pointer; } .checkbox-modern input { width: 18px; height: 18px; cursor: pointer; } .checkbox-modern span { font-size: 0.95rem; color: var(--color-text-primary); } .modal-actions-modern { display: flex; justify-content: flex-end; gap: 1rem; padding-top: 1.5rem; border-top: 1px solid var(--color-border); } /* Empty State */ .empty-state { text-align: center; padding: 4rem 2rem; color: var(--color-text-secondary); } .empty-state .material-symbols-outlined { font-size: 64px; opacity: 0.3; margin-bottom: 1rem; } .empty-state p { font-size: 1.1rem; margin: 0; } /* Settings Tab */ .settings-tab-content { max-width: 800px; } .settings-section-modern { background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2rem; box-shadow: var(--shadow-sm); } .settings-section- .mobile-user-card { display: block; background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 1rem; box-shadow: var(--shadow-sm); } /* Section title uses standard .section-title from Layout.css */ .setting-item-modern { display: flex; justify-content: space-between; align-items: center; gap: 2rem; padding: 1.5rem 0; border-bottom: 1px solid var(--color-border); } .setting-item-modern:last-child { border-bottom: none; } .setting-info-modern h4 { margin: 0 0 0.5rem; font-size: 1rem; font-weight: 600; color: var(--color-text-primary); } .setting-info-modern p { margin: 0; font-size: 0.9rem; color: var(--color-text-secondary); line-height: 1.5; } /* Modern Toggle */ .toggle-modern { position: relative; display: inline-block; width: 52px; height: 28px; flex-shrink: 0; } .toggle-modern input { opacity: 0; width: 0; height: 0; } .toggle-slider-modern { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--color-border); transition: 0.3s ease; border-radius: 28px; } .toggle-slider-modern:before { position: absolute; content: ""; height: 20px; width: 20px; left: 4px; bottom: 4px; background-color: white; transition: 0.3s ease; border-radius: 50%; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .toggle-modern input:checked+.toggle-slider-modern { background-color: var(--color-accent); } .toggle-modern input:focus+.toggle-slider-modern { box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.2); } .toggle-modern input:checked+.toggle-slider-modern:before { transform: translateX(24px); } .toggle-modern input:disabled+.toggle-slider-modern { opacity: 0.5; cursor: not-allowed; } /* Dark mode override for toggle knob to be less bright when off */ [data-theme='dark'] .toggle-slider-modern:before { background-color: var(--color-text-secondary); } [data-theme='dark'] .toggle-modern input:checked+.toggle-slider-modern:before { background-color: white; } /* Modal Backdrop */ /* Modal Backdrop */ .users-modal-backdrop { position: fixed !important; inset: 0 !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; background: rgba(0, 0, 0, 0.5); display: flex !important; align-items: center !important; justify-content: center !important; z-index: 2000 !important; padding: 1rem; backdrop-filter: blur(2px); animation: fadeIn 0.2s ease-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* Modal */ /* Modal */ .users-modal { background: var(--color-bg-card); border-radius: var(--radius-lg); border: 1px solid var(--color-border); box-shadow: var(--shadow-2xl); width: 100%; max-width: 580px; max-height: 90vh; overflow-y: auto; transform: translateY(0); position: relative; z-index: 2010; animation: slideUp 0.2s ease-out; display: flex; flex-direction: column; } @keyframes slideUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .users-modal .modal-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.75rem 2rem 1rem; border-bottom: 1px solid var(--color-border); flex-shrink: 0; } .users-modal .modal-header h2 { margin: 0; font-size: 1.35rem; font-weight: 600; color: var(--color-text-primary); } .users-modal .btn-close-modal { background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text-primary); cursor: pointer; padding: 0.5rem; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; width: var(--btn-icon-md); height: var(--btn-icon-md); } .users-modal .btn-close-modal:hover { background: var(--color-bg-hover); border-color: var(--color-text-secondary); } .users-modal .btn-close-modal .material-symbols-outlined { font-size: var(--icon-md); } /* Form Container */ .users-modal .users-form { display: flex; flex-direction: column; gap: 1.25rem; padding: 1.5rem 2rem; flex: 1; overflow-y: auto; } .users-modal .form-row { display: flex; flex-direction: column; gap: 0.5rem; } .users-modal .form-row label { font-weight: 500; color: var(--color-text-primary); font-size: 0.95rem; } .users-modal .form-row input { padding: 0.75rem 0.875rem; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-bg-main); color: var(--color-text-primary); font-size: 0.95rem; transition: all 0.2s ease; } .users-modal .form-row input:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } /* Form Section with Title */ .users-modal .form-section { margin-top: 0.5rem; padding-top: 0.75rem; } .users-modal .form-section-header { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 0.5rem; } .users-modal .form-section-title { display: block; font-weight: 600; color: var(--color-text-primary); font-size: 0.9rem; margin: 0; } /* Inline Toggle for Custom Permissions */ .users-modal .toggle-inline { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; } .users-modal .toggle-inline input { display: none; } .users-modal .toggle-slider-sm { position: relative; width: 36px; height: 20px; background: var(--color-border); border-radius: 20px; transition: all 0.2s ease; } .users-modal .toggle-slider-sm::before { content: ''; position: absolute; width: 14px; height: 14px; left: 3px; top: 3px; background: white; border-radius: 50%; transition: all 0.2s ease; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); } .users-modal .toggle-inline input:checked+.toggle-slider-sm { background: var(--color-accent); } .users-modal .toggle-inline input:checked+.toggle-slider-sm::before { transform: translateX(16px); } .users-modal .toggle-label { font-size: 0.8rem; font-weight: 500; color: var(--color-text-secondary); } /* Permissions Default Hint */ .users-modal .permissions-default-hint { padding: 0.75rem 1rem; background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); font-size: 0.85rem; color: var(--color-text-secondary); text-align: center; } .users-modal .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; padding: 0.75rem 1rem; background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); } .users-modal .checkbox-row { display: flex; align-items: center; gap: 0.5rem; cursor: pointer; padding: 0.5rem 0.75rem; border-radius: var(--radius-md); transition: all 0.2s ease; background: var(--color-bg-card); border: 1px solid transparent; } .users-modal .checkbox-row:hover:not(.disabled) { border-color: var(--color-accent); background: rgba(var(--color-accent-rgb), 0.05); } /* Custom Checkbox with Accent Color */ .users-modal .checkbox-row input[type="checkbox"] { -webkit-appearance: none; appearance: none; width: 18px; height: 18px; min-width: 18px; border: 2px solid var(--color-border); border-radius: 4px; background: var(--color-bg-card); cursor: pointer; margin: 0; position: relative; transition: all 0.2s ease; } .users-modal .checkbox-row input[type="checkbox"]:checked { background: var(--color-accent); border-color: var(--color-accent); } .users-modal .checkbox-row input[type="checkbox"]:checked::after { content: ''; position: absolute; left: 5px; top: 2px; width: 4px; height: 8px; border: solid white; border-width: 0 2px 2px 0; transform: rotate(45deg); } .users-modal .checkbox-row input[type="checkbox"]:disabled { opacity: 0.5; cursor: not-allowed; } .users-modal .checkbox-row input[type="checkbox"]:focus { outline: none; box-shadow: 0 0 0 3px rgba(var(--color-accent-rgb), 0.2); } .users-modal .checkbox-row span:not(.material-symbols-outlined):not(.badge) { font-weight: 500; color: var(--color-text-primary); font-size: 0.9rem; } .users-modal .helper-text { color: var(--color-text-secondary); font-weight: 400; font-size: 0.875rem; margin-top: 0.25rem; } /* Permissions Grid */ .users-modal .permissions-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; padding: 0.75rem; background: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-md); } .users-modal .permissions-grid .checkbox-row { flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 0.75rem 0.5rem; gap: 0.375rem; min-height: 80px; } .users-modal .permissions-grid .checkbox-row .material-symbols-outlined { font-size: 24px; color: var(--color-accent); } .users-modal .permissions-grid .checkbox-row.disabled { opacity: 0.5; cursor: not-allowed; } .users-modal .permissions-grid .checkbox-row.disabled .material-symbols-outlined { color: var(--color-text-secondary); } .users-modal .permissions-grid .checkbox-row span:not(.material-symbols-outlined):not(.badge) { font-size: 0.8rem; } .users-modal .permissions-grid .badge-sm { font-size: 0.6rem; padding: 0.1rem 0.35rem; position: absolute; top: 4px; right: 4px; } .users-modal .permissions-grid .checkbox-row { position: relative; } /* Modal Actions */ .users-modal .modal-actions { display: flex; justify-content: flex-end; gap: 0.75rem; padding: 1.25rem 2rem; border-top: 1px solid var(--color-border); background: var(--color-bg-card); flex-shrink: 0; } .users-modal .modal-actions .btn-secondary, .users-modal .modal-actions .btn-primary { min-width: 100px; font-weight: 500; } .users-modal .btn-secondary { background: var(--color-bg-elevated); color: var(--color-text-primary); border: 1px solid var(--color-border); padding: 0.625rem 1.25rem; border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; } .users-modal .btn-secondary:hover { background: var(--color-bg-hover); border-color: var(--color-text-secondary); } .users-modal .btn-primary { background: var(--color-accent); color: white; border: none; padding: 0.625rem 1.25rem; border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; } .users-modal .btn-primary:hover { opacity: 0.9; } /* Mobile Responsive */ @media (max-width: 768px) { .tab-toolbar { flex-direction: column; align-items: stretch; } .toolbar-actions { flex-direction: column; } .input-group-modern { min-width: 100%; } .admin-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; } .admin-tab { white-space: nowrap; } .modern-table { display: none; } .setting-item-modern { flex-direction: column; align-items: flex-start; gap: 1rem; } .modal-modern { margin: 0; max-height: 100vh; border-radius: 0; } .form-grid-checks { flex-direction: column; gap: 1rem; } /* Users Settings Card Mobile */ .users-setting-card { padding: 1rem; gap: 1rem; } .users-setting-card .setting-info { gap: 0.75rem; } .users-setting-card .setting-icon { width: 40px; height: 40px; } .users-setting-card .setting-icon .material-symbols-outlined { font-size: 20px; } .users-setting-card .setting-text h4 { font-size: 0.9rem; } .users-setting-card .setting-text p { font-size: 0.8rem; } /* General Tab Mobile */ .modules-grid { grid-template-columns: 1fr; } .general-tab-content .setting-card-compact { padding: 0.875rem 1rem; } .general-tab-content .setting-card-compact .setting-icon { width: 32px; height: 32px; } .general-tab-content .setting-card-compact .setting-icon .material-symbols-outlined { font-size: 18px; } /* Users Modal Mobile */ .users-modal { max-width: 100%; width: calc(100% - 1.5rem); max-height: 95vh; } .users-modal .modal-header { padding: 1.25rem 1.25rem 1rem; } .users-modal .modal-header h2 { font-size: 1.2rem; } .users-modal .users-form { padding: 1.25rem; } .users-modal .form-grid { grid-template-columns: 1fr; gap: 0.75rem; } .users-modal .permissions-grid { grid-template-columns: repeat(2, 1fr); gap: 0.5rem; } .users-modal .modal-actions { padding: 1rem 1.25rem; flex-direction: column-reverse; gap: 0.5rem; } .users-modal .modal-actions .btn-secondary, .users-modal .modal-actions .btn-primary { width: 100%; min-width: auto; } /* Ensure button text colors are consistent in mobile */ .users-modal .btn-secondary { color: var(--color-text-primary); } .users-modal .btn-primary { color: white; } } /* Admin tabs styles are now in Layout.css */ /* Mobile Sidebar Toggle Button */ .mobile-sidebar-toggle { display: none; align-items: center; justify-content: center; width: var(--btn-icon-md); height: var(--btn-icon-md); border: none; background: transparent; color: var(--color-text-primary); border-radius: var(--radius-md); cursor: pointer; margin-right: 4px; } @media (max-width: 768px) { .mobile-sidebar-toggle { display: flex; } } /* Admin title, divider, and tab button styles are now in Layout.css */ /* Tab content placeholder and animations are now in Layout.css */ /* Sidebar Mode Setting */ .sidebar-mode-setting { flex-direction: column; align-items: flex-start !important; gap: 0.75rem !important; } .sidebar-mode-setting .setting-info { width: 100%; } .sidebar-mode-options { display: flex; gap: 0.5rem; width: 100%; } .sidebar-mode-option { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.25rem; flex: 1; padding: 0.75rem 0.5rem; background: var(--color-bg-elevated); border: 2px solid var(--color-border); border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; } .sidebar-mode-option input { display: none; } .sidebar-mode-option .material-symbols-outlined { font-size: 20px; color: var(--color-text-secondary); } .sidebar-mode-option span:last-child { font-size: 0.75rem; color: var(--color-text-secondary); font-weight: 500; text-align: center; } .sidebar-mode-option:hover { border-color: var(--color-accent); background: rgba(var(--color-accent-rgb), 0.05); } .sidebar-mode-option.active { border-color: var(--color-accent); background: rgba(var(--color-accent-rgb), 0.1); } .sidebar-mode-option.active .material-symbols-outlined { color: var(--color-accent); } .sidebar-mode-option.active span:last-child { color: var(--color-accent); } @media (max-width: 768px) { .sidebar-mode-options { flex-direction: column; } .sidebar-mode-option { flex-direction: row; gap: 0.5rem; padding: 0.75rem 1rem; } .sidebar-mode-option span:last-child { font-size: 0.85rem; } } /* Feature Header - Clean style for feature toggles */ .feature-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--color-border); } .feature-header-info { display: flex; flex-direction: column; gap: 0.5rem; } .feature-header-info h2 { margin: 0; font-size: 1.25rem; font-weight: 600; color: var(--color-text-primary); } .feature-header-info p { margin: 0; color: var(--color-text-secondary); font-size: 0.95rem; line-height: 1.5; } .feature-header-actions { display: flex; align-items: center; gap: 1rem; padding-top: 0.25rem; /* Align with text top */ } /* Status badge in header */ .feature-status-badge { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.25rem 0.75rem; border-radius: var(--radius-full); font-size: 0.85rem; font-weight: 500; background: var(--color-bg-elevated); color: var(--color-text-secondary); border: 1px solid var(--color-border); } .feature-status-badge.active { background: rgba(var(--color-accent-rgb), 0.1); color: var(--color-accent); border-color: rgba(var(--color-accent-rgb), 0.2); } .feature-status-badge::before { content: ''; display: block; width: 6px; height: 6px; border-radius: 50%; background: currentColor; } /* Feature Toggles - Dual Role */ .toggle-group { display: flex; align-items: center; gap: 0.75rem; } .toggle-label { font-size: 0.85rem; color: var(--color-text-secondary); font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; } .toggle-modern.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } .toggle-modern.disabled .toggle-slider-modern { background: var(--color-bg-elevated); } /* Feature Header Mobile - Stack description above toggles */ @media (max-width: 768px) { .feature-header { flex-direction: column; align-items: stretch; gap: 1.25rem; padding-bottom: 1.25rem; margin-bottom: 1.5rem; } .feature-header-info { width: 100%; text-align: center; } .feature-header-info h2 { font-size: 1.1rem; } .feature-header-info p { font-size: 0.9rem; } .feature-header-actions { width: 100%; justify-content: center; border-top: 1px solid var(--color-border); padding-top: 1rem; } .feature-header-actions .toggle-group { justify-content: center; } /* Admin Tab Tooltip - Mobile Only */ .admin-tab-tooltip { display: block; position: fixed; top: calc(var(--tabs-height, 56px) + 8px); transform: translateX(-50%); background: var(--color-bg-elevated); color: var(--color-text-primary); padding: 6px 12px; border-radius: var(--radius-sm); font-size: 0.8rem; white-space: nowrap; z-index: 1000; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); border: 1px solid var(--color-border); pointer-events: none; } } /* ========== DARK THEME + AUTO ACCENT OVERRIDES ========== */ /* Primary buttons with auto accent in dark mode: use off-white background with dark text */ [data-theme='dark'][data-accent='auto'] .btn-primary, [data-theme='dark'][data-accent='auto'] .btn-primary-modern { background: #e5e7eb; color: #111827; box-shadow: 0 0 16px 1px rgba(229, 231, 235, 0.35); } [data-theme='dark'][data-accent='auto'] .btn-primary:hover, [data-theme='dark'][data-accent='auto'] .btn-primary-modern:hover { background: #f3f4f6; color: #111827; box-shadow: 0 0 24px 3px rgba(229, 231, 235, 0.5); } /* Icon action buttons (edit) hover state with auto accent in dark mode */ [data-theme='dark'][data-accent='auto'] .btn-icon-action.btn-edit:hover, [data-theme='dark'][data-accent='auto'] .btn-icon-modern.btn-edit:hover { background: #e5e7eb; border-color: #e5e7eb; } [data-theme='dark'][data-accent='auto'] .btn-icon-action.btn-edit:hover .material-symbols-outlined, [data-theme='dark'][data-accent='auto'] .btn-icon-modern.btn-edit:hover .material-symbols-outlined { color: #111827; } /* Toggle switch checked state */ [data-theme='dark'][data-accent='auto'] .toggle-modern input:checked+.toggle-slider-modern { background: #e5e7eb; } [data-theme='dark'][data-accent='auto'] .toggle-modern input:checked+.toggle-slider-modern:before { background: #111827; } /* Badge accent */ [data-theme='dark'][data-accent='auto'] .badge-accent { background: rgba(229, 231, 235, 0.15); color: #e5e7eb; border-color: rgba(229, 231, 235, 0.3); } /* User avatar gradient */ [data-theme='dark'][data-accent='auto'] .modern-table .user-avatar-modern { background: linear-gradient(135deg, #d1d5db, #e5e7eb); color: #111827; } /* Sidebar mode option active state */ [data-theme='dark'][data-accent='auto'] .sidebar-mode-option.active { border-color: #e5e7eb; background: rgba(229, 231, 235, 0.1); } [data-theme='dark'][data-accent='auto'] .sidebar-mode-option.active .material-symbols-outlined, [data-theme='dark'][data-accent='auto'] .sidebar-mode-option.active span:last-child { color: #e5e7eb; } /* Feature status badge active */ [data-theme='dark'][data-accent='auto'] .feature-status-badge.active { background: rgba(229, 231, 235, 0.1); color: #e5e7eb; border-color: rgba(229, 231, 235, 0.2); } /* Focus states */ [data-theme='dark'][data-accent='auto'] .input-group-modern:focus-within { border-color: #e5e7eb; box-shadow: 0 0 0 3px rgba(229, 231, 235, 0.15); } [data-theme='dark'][data-accent='auto'] .form-field input:focus { border-color: #e5e7eb; box-shadow: 0 0 0 3px rgba(229, 231, 235, 0.1); } /* Checkbox checked state in modals */ [data-theme='dark'][data-accent='auto'] .users-modal .checkbox-row input[type="checkbox"]:checked { background: #e5e7eb; border-color: #e5e7eb; } [data-theme='dark'][data-accent='auto'] .users-modal .checkbox-row input[type="checkbox"]:checked::after { border-color: #111827; } /* Modal toggle checked */ [data-theme='dark'][data-accent='auto'] .users-modal .toggle-inline input:checked+.toggle-slider-sm { background: #e5e7eb; } [data-theme='dark'][data-accent='auto'] .users-modal .toggle-inline input:checked+.toggle-slider-sm::before { background: #111827; }