/
varsl
/
HTML-CSS
Обзор
Документация
Войти
/
varsl
/
HTML-CSS
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
frontend/css/dashboard.css
795 строк
15 KB
varsl
Добавление дополнительных файлов стилей
21 дек 2025, 23:13
21 дек 2025, 23:13
bc07692
Код
Авторство
О чём код?
.dashboard-container { display: flex; min-height: calc(100vh - 70px); } .dashboard-sidebar { width: 250px; background: linear-gradient(180deg, var(--primary-dark), var(--primary-color)); color: var(--white); padding: 2rem 0; position: sticky; top: 70px; height: calc(100vh - 70px); overflow-y: auto; } .sidebar-header { padding: 0 1.5rem 2rem; text-align: center; border-bottom: 1px solid rgba(255, 255, 255, 0.1); } .user-avatar { width: 80px; height: 80px; border-radius: 50%; background: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; font-size: 2rem; } .user-name { font-size: 1.2rem; font-weight: 600; margin-bottom: 0.5rem; } .user-email { opacity: 0.8; font-size: 0.9rem; } .sidebar-menu { padding: 1.5rem 0; } .menu-item { display: flex; align-items: center; gap: 12px; padding: 1rem 1.5rem; color: rgba(255, 255, 255, 0.8); text-decoration: none; transition: all 0.3s ease; border-left: 4px solid transparent; cursor: pointer; } .menu-item:hover { background: rgba(255, 255, 255, 0.1); color: var(--white); border-left-color: var(--secondary-color); } .menu-item.active { background: rgba(255, 255, 255, 0.15); color: var(--white); border-left-color: var(--secondary-color); } .menu-item i { width: 20px; text-align: center; } .dashboard-content { flex: 1; padding: 2rem; background-color: var(--bg-color); overflow-y: auto; } .dashboard-header { margin-bottom: 2rem; } .dashboard-title { font-size: 2rem; color: var(--primary-dark); margin-bottom: 0.5rem; } .dashboard-subtitle { color: var(--text-light); } .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; } .stat-card { background: var(--white); border-radius: var(--border-radius); padding: 1.5rem; box-shadow: var(--shadow); display: flex; align-items: center; gap: 1rem; transition: var(--transition); } .stat-card:hover { transform: translateY(-5px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); } .stat-icon { width: 60px; height: 60px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; color: var(--white); } .stat-icon.tickets { background: linear-gradient(135deg, #667eea, #764ba2); } .stat-icon.visits { background: linear-gradient(135deg, #f093fb, #f5576c); } .stat-icon.favorites { background: linear-gradient(135deg, #4facfe, #00f2fe); } .stat-icon.reviews { background: linear-gradient(135deg, #43e97b, #38f9d7); } .stat-content h3 { font-size: 2rem; font-weight: 700; color: var(--text-color); margin-bottom: 0.25rem; } .stat-content p { color: var(--text-light); font-size: 0.9rem; } .charts-section { background: var(--white); border-radius: var(--border-radius); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow); } .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; } .section-header h2 { font-size: 1.5rem; color: var(--text-color); } .chart-container { height: 300px; position: relative; margin: 1rem 0; } .charts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; } .chart-card { background: var(--white); border-radius: var(--border-radius); padding: 1.5rem; box-shadow: var(--shadow); } .chart-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem; } .chart-header h3 { font-size: 1.2rem; color: var(--text-color); } .chart-container-sm { height: 250px; position: relative; } .recent-activity { background: var(--white); border-radius: var(--border-radius); padding: 2rem; box-shadow: var(--shadow); margin-bottom: 2rem; } .activity-list { margin-top: 1rem; } .activity-item { display: flex; align-items: center; gap: 1rem; padding: 1rem; border-bottom: 1px solid #eee; transition: var(--transition); } .activity-item:last-child { border-bottom: none; } .activity-item:hover { background-color: #f9f9f9; } .activity-icon { width: 40px; height: 40px; border-radius: 50%; background: var(--bg-color); display: flex; align-items: center; justify-content: center; color: var(--primary-color); } .activity-content { flex: 1; } .activity-title { font-weight: 600; margin-bottom: 0.25rem; } .activity-time { color: var(--text-light); font-size: 0.85rem; } .table-container { background: var(--white); border-radius: var(--border-radius); padding: 2rem; box-shadow: var(--shadow); margin-top: 2rem; overflow-x: auto; } .data-table { width: 100%; border-collapse: collapse; margin-top: 1rem; } .data-table th { background-color: #f8f9fa; padding: 1rem; text-align: left; font-weight: 600; color: var(--text-color); border-bottom: 2px solid #dee2e6; cursor: pointer; user-select: none; } .data-table th:hover { background-color: #e9ecef; } .data-table th i { margin-left: 0.5rem; opacity: 0.5; } .data-table td { padding: 1rem; border-bottom: 1px solid #dee2e6; color: var(--text-color); } .data-table tr:hover { background-color: #f8f9fa; } .table-actions { display: flex; gap: 0.5rem; } .btn-icon { width: 36px; height: 36px; border-radius: 6px; display: flex; align-items: center; justify-content: center; background: none; border: 1px solid #dee2e6; color: var(--text-color); cursor: pointer; transition: var(--transition); } .btn-icon:hover { background-color: var(--primary-color); color: var(--white); border-color: var(--primary-color); } .filter-section { display: flex; gap: 1rem; margin-bottom: 1rem; flex-wrap: wrap; } .filter-input { flex: 1; min-width: 200px; padding: 0.75rem; border: 1px solid #dee2e6; border-radius: var(--border-radius); font-size: 1rem; } .filter-select { padding: 0.75rem; border: 1px solid #dee2e6; border-radius: var(--border-radius); background-color: var(--white); font-size: 1rem; } .quick-actions { background: var(--white); border-radius: var(--border-radius); padding: 2rem; box-shadow: var(--shadow); margin-top: 2rem; } .actions-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; margin-top: 1.5rem; } .action-card { background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%); border: 2px solid #e9ecef; border-radius: var(--border-radius); padding: 1.5rem; text-align: center; cursor: pointer; transition: all 0.3s ease; display: flex; flex-direction: column; align-items: center; gap: 1rem; } .action-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); border-color: var(--primary-color); background: linear-gradient(135deg, #f1f8e9 0%, #e8f5e9 100%); } .action-icon { width: 60px; height: 60px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.5rem; } .action-card h3 { font-size: 1.1rem; color: var(--text-color); margin: 0; } .action-card p { color: var(--text-light); font-size: 0.9rem; margin: 0; } .chart-controls { display: flex; gap: 0.5rem; align-items: center; } .btn-small { padding: 0.5rem 1rem; font-size: 0.85rem; } .btn-outline { background: transparent; border: 2px solid var(--primary-color); color: var(--primary-color); } .btn-outline:hover { background: var(--primary-color); color: white; } .btn-outline.active { background: var(--primary-color); color: white; } /* Достижения */ .achievements-section { background: var(--white); border-radius: var(--border-radius); padding: 2rem; box-shadow: var(--shadow); margin-bottom: 2rem; } .achievements-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1.5rem; margin-top: 1.5rem; } .achievement-card { display: flex; align-items: center; gap: 1rem; padding: 1.5rem; background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); border-radius: var(--border-radius); border: 2px solid #dee2e6; transition: all 0.3s ease; } .achievement-card:hover { transform: translateY(-5px); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); border-color: var(--primary-color); } .achievement-icon { width: 50px; height: 50px; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--primary-color), var(--primary-dark)); border-radius: 50%; color: white; font-size: 1.2rem; } .achievement-content h4 { margin: 0 0 0.25rem 0; color: var(--text-color); font-size: 1rem; } .achievement-content p { margin: 0; color: var(--text-light); font-size: 0.85rem; line-height: 1.4; } /* Статусы */ .status-badge { display: inline-block; padding: 0.25rem 0.75rem; border-radius: 20px; font-size: 0.85rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; } .status-badge.active { background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%); color: #2E7D32; border: 1px solid #a5d6a7; } .status-badge.used { background: linear-gradient(135deg, #f5f5f5 0%, #eeeeee 100%); color: #757575; border: 1px solid #bdbdbd; } .status-badge.cancelled { background: linear-gradient(135deg, #ffebee 0%, #ffcdd2 100%); color: #c62828; border: 1px solid #ef9a9a; } /* Алёрты */ .alert { position: relative; padding: 1rem 1.5rem; margin-bottom: 1.5rem; border-radius: var(--border-radius); display: flex; align-items: center; opacity: 0; transform: translateY(-10px); transition: all 0.3s ease; } .alert.show { opacity: 1; transform: translateY(0); } .alert-error { background: linear-gradient(135deg, #ffebee 0%, #ffcdd2 100%); border-left: 4px solid #f44336; color: #c62828; } .alert-success { background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%); border-left: 4px solid #4CAF50; color: #2E7D32; } .alert i { margin-right: 0.75rem; font-size: 1.2rem; } .alert-close { margin-left: auto; background: none; border: none; color: inherit; cursor: pointer; font-size: 1rem; opacity: 0.7; transition: opacity 0.2s; } .alert-close:hover { opacity: 1; } /* Анимация вращения */ @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .rotate-animation { animation: rotate 1s linear infinite; } /* Модальное окно */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5); z-index: 1000; align-items: center; justify-content: center; } .modal.show { display: flex; } .modal-content { background: white; border-radius: var(--border-radius); width: 90%; max-width: 500px; max-height: 90vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); } .modal-header { padding: 1.5rem; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center; } .modal-header h3 { margin: 0; color: var(--text-color); } .modal-close { background: none; border: none; font-size: 1.2rem; cursor: pointer; color: var(--text-light); padding: 0; } .modal-close:hover { color: var(--text-color); } .modal-body { padding: 1.5rem; } .date-range-picker { display: flex; gap: 1rem; align-items: center; } .date-input { flex: 1; } .date-input label { display: block; margin-bottom: 0.5rem; color: var(--text-color); font-weight: 500; } .date-input input { width: 100%; padding: 0.75rem; border: 1px solid #dee2e6; border-radius: var(--border-radius); font-size: 1rem; } .modal-footer { padding: 1.5rem; border-top: 1px solid #eee; display: flex; justify-content: flex-end; gap: 1rem; } /* Адаптивность */ @media (max-width: 1024px) { .dashboard-sidebar { width: 200px; } } @media (max-width: 768px) { .dashboard-container { flex-direction: column; } .dashboard-sidebar { width: 100%; height: auto; position: static; padding: 1rem 0; } .sidebar-menu { display: flex; overflow-x: auto; padding: 0 1rem; gap: 0.5rem; } .menu-item { flex-direction: column; padding: 0.5rem 1rem; min-width: 80px; border-left: none; border-bottom: 3px solid transparent; white-space: nowrap; } .menu-item.active { border-left: none; border-bottom-color: var(--secondary-color); } .menu-item span { font-size: 0.8rem; text-align: center; } .stats-grid { grid-template-columns: repeat(2, 1fr); } .chart-container { height: 250px; } .charts-grid { grid-template-columns: 1fr; } .achievements-grid { grid-template-columns: repeat(2, 1fr); } .actions-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .stats-grid { grid-template-columns: 1fr; } .section-header { flex-direction: column; gap: 1rem; align-items: flex-start; } .filter-section { flex-direction: column; width: 100%; } .filter-input, .filter-select { width: 100%; min-width: unset; } .achievements-grid { grid-template-columns: 1fr; } .actions-grid { grid-template-columns: 1fr; } .date-range-picker { flex-direction: column; } .date-input { width: 100%; } }