/* modern-tables.css - Professional styling for data tables and related elements */ /* Main container - Reduced max-width from 1100px to 900px */ .data-container { max-width: 900px; margin: 2rem auto; background-color: var(--md-sys-color-surface-container-lowest); border-radius: 1rem; padding: 0.5rem; box-shadow: 0 2px 12px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.05); } /* Panel / Card */ .data-panel { background-color: var(--md-sys-color-surface); border-radius: 0.75rem; box-shadow: 0 2px 8px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.08); overflow: hidden; } /* Header */ .data-header { display: flex; align-items: center; padding: 1.25rem 1.5rem; background-color: var(--md-sys-color-surface-variant); border-bottom: 1px solid var(--md-sys-color-outline-variant); } .data-title { margin: 0; font-size: 1.5rem; font-weight: 600; display: flex; align-items: center; gap: 0.75rem; } .data-icon { display: flex; align-items: center; justify-content: center; width: 2.5rem; height: 2.5rem; background-color: var(--md-sys-color-primary); color: var(--md-sys-color-on-primary); border-radius: 0.5rem; transition: all 0.2s ease; } /* Content area */ .data-body { padding: 1.5rem; background-color: var(--md-sys-color-surface-container-low); border-radius: 0.5rem; } /* Action buttons container */ .data-actions { display: flex; justify-content: center; margin: 1rem 0 1.5rem; gap: 0.75rem; } /* Can add these classes for different alignments */ .data-actions-start { justify-content: flex-start; } .data-actions-end { justify-content: flex-end; } /* Button styling */ .data-btn { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.625rem 1.25rem; border-radius: 0.5rem; font-weight: 500; transition: all 0.2s ease; border: none; cursor: pointer; text-decoration: none; } /* Fixed button colors - normal state has more contrast now */ .data-btn-primary { background-color: var(--md-sys-color-primary); color: var(--md-sys-color-on-primary); } .data-btn-primary:hover { background-color: var(--md-sys-color-primary-container); color: var(--md-sys-color-primary); box-shadow: 0 2px 4px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.1); } .data-btn-secondary { background-color: var(--md-sys-color-secondary); color: var(--md-sys-color-on-secondary); } .data-btn-secondary:hover { background-color: var(--md-sys-color-secondary-container); color: var(--md-sys-color-secondary); box-shadow: 0 2px 4px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.1); } .data-btn-danger { background-color: var(--md-sys-color-error); color: var(--md-sys-color-on-error); } .data-btn-danger:hover { background-color: var(--md-sys-color-error-container); color: var(--md-sys-color-error); box-shadow: 0 2px 4px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.1); } .data-btn-sm { padding: 0.375rem 0.75rem; font-size: 0.875rem; } /* Icon button */ .data-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 2.25rem; height: 2.25rem; border-radius: 0.5rem; border: none; cursor: pointer; transition: all 0.2s ease; background-color: transparent; } /* Fixed icon button colors */ .data-icon-btn-primary { background-color: var(--md-sys-color-primary); color: var(--md-sys-color-on-primary); } .data-icon-btn-primary:hover { background-color: var(--md-sys-color-primary-container); color: var(--md-sys-color-primary); box-shadow: 0 2px 4px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.1); } .data-icon-btn-danger { background-color: var(--md-sys-color-error); color: var(--md-sys-color-on-error); } .data-icon-btn-danger:hover { background-color: var(--md-sys-color-error-container); color: var(--md-sys-color-error); box-shadow: 0 2px 4px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.1); } /* Table styling */ .data-table { width: 100%; border-collapse: separate; border-spacing: 0; } .data-table th { text-align: left; padding: 1rem; background-color: var(--md-sys-color-surface-variant); color: var(--md-sys-color-on-surface-variant); font-weight: 600; position: sticky; top: 0; } .data-table th:first-child { border-top-left-radius: 0.5rem; } .data-table th:last-child { border-top-right-radius: 0.5rem; } .data-table td { padding: 1rem; border-bottom: 1px solid var(--md-sys-color-outline-variant); } .data-table tr:last-child td { border-bottom: none; } .data-table tr:hover { background-color: rgba(var(--md-sys-color-surface-variant-rgb), 0.5); } /* Table action cells */ .data-action-cell { display: flex; align-items: center; gap: 0.5rem; justify-content: flex-start; } .data-action-cell-center { justify-content: center; } .data-action-cell-end { justify-content: flex-end; } /* Status indicators */ .data-status { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.375rem 0.75rem; border-radius: 1rem; font-size: 0.875rem; font-weight: 500; } .data-status-success { background-color: var(--md-sys-color-tertiary-container); color: var(--md-sys-color-tertiary); } .data-status-danger { background-color: var(--md-sys-color-error-container); color: var(--md-sys-color-error); } .data-status-warning { background-color: var(--md-sys-color-secondary-container); color: var(--md-sys-color-secondary); } .data-status-info { background-color: var(--md-sys-color-primary-container); color: var(--md-sys-color-primary); } /* Stats/Info container */ .data-stats { display: flex; gap: 1.5rem; margin-bottom: 1.5rem; flex-wrap: wrap; } .data-stat-card { background-color: var(--md-sys-color-surface-variant); border-radius: 0.5rem; padding: 1.25rem; flex: 1; min-width: 180px; box-shadow: 0 2px 8px rgba(var(--md-sys-color-shadow, 0, 0, 0), 0.05); } .data-stat-label { font-size: 0.875rem; color: var(--md-sys-color-on-surface-variant); margin-bottom: 0.5rem; } .data-stat-value { font-size: 1.75rem; font-weight: 700; color: var(--md-sys-color-on-surface); } /* Section title */ .data-section-title { font-size: 1.25rem; font-weight: 600; margin: 1.5rem 0 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--md-sys-color-outline-variant); } /* Empty state styling */ .data-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3rem; color: var(--md-sys-color-on-surface-variant); } .data-empty-icon { font-size: 4rem; margin-bottom: 1rem; opacity: 0.7; } .data-empty-text { font-size: 1.125rem; margin-bottom: 1.5rem; } /* Modal styling */ .data-modal { border-radius: 0.75rem; overflow: hidden; } .data-modal-header { background-color: var(--md-sys-color-surface-variant); padding: 1.25rem; border-bottom: 1px solid var(--md-sys-color-outline-variant); display: flex; align-items: center; justify-content: space-between; } .data-modal-title { margin: 0; font-size: 1.25rem; font-weight: 600; display: flex; align-items: center; gap: 0.75rem; } /* Modal close button styling */ .data-btn-close { display: flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border-radius: 50%; background-color: var(--md-sys-color-surface-variant); color: var(--md-sys-color-on-surface-variant); border: none; cursor: pointer; transition: all 0.2s ease; padding: 0; margin: 0; } .data-btn-close:hover { background-color: var(--md-sys-color-surface-container-high); color: var(--md-sys-color-on-surface); } .data-btn-close .material-symbols-rounded { font-size: 1.25rem; } .data-modal-body { padding: 1.5rem; } .data-modal-footer { padding: 1rem 1.5rem; border-top: 1px solid var(--md-sys-color-outline-variant); display: flex; justify-content: flex-end; gap: 0.75rem; } /* Form elements */ .data-form-group { margin-bottom: 1.25rem; } .data-form-label { display: block; margin-bottom: 0.5rem; font-weight: 500; } .data-form-control { width: 100%; padding: 0.75rem 1rem; border-radius: 0.5rem; border: 1px solid } .text-overflow { max-width: 100px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }