diff --git a/src/views/admin/AdminReportDetail.vue b/src/views/admin/AdminReportDetail.vue index f9a7fa6..2759fdb 100644 --- a/src/views/admin/AdminReportDetail.vue +++ b/src/views/admin/AdminReportDetail.vue @@ -91,7 +91,7 @@ - +
vs @@ -843,677 +843,202 @@ h2 { transform: none; } -/* Модальные окна */ +/* Полностью обновленные стили модального окна */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; - background: rgba(0, 0, 0, 0.5); + background-color: rgba(0, 0, 0, 0.7); display: flex; - align-items: center; justify-content: center; - z-index: 1000; - padding: 1rem; + align-items: center; + z-index: 10000; /* Очень высокий z-index для перекрытия всех элементов */ + padding: env(safe-area-inset-top, 16px) env(safe-area-inset-right, 16px) env(safe-area-inset-bottom, 16px) env(safe-area-inset-left, 16px); } .modal { - background: white; - border-radius: 0.75rem; - padding: 1.5rem; + position: relative; + width: calc(100% - 32px); max-width: 500px; - width: 100%; - max-height: 90vh; + background-color: #fff; + border-radius: 12px; + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.25); + padding: 20px; + max-height: 80vh; overflow-y: auto; - box-sizing: border-box; + z-index: 10001; /* Чуть выше, чем у оверлея */ + animation: modal-appear 0.2s ease-out; +} + +@keyframes modal-appear { + from { opacity: 0; transform: scale(0.9); } + to { opacity: 1; transform: scale(1); } } .modal-header { display: flex; justify-content: space-between; align-items: center; - margin-bottom: 1rem; + border-bottom: 1px solid #e9ecef; + padding-bottom: 15px; + margin-bottom: 15px; } .modal-header h3 { margin: 0; + font-size: 1.25rem; color: #333; - font-size: 1.2rem; + font-weight: 600; } .modal-close { background: transparent; border: none; - cursor: pointer; - font-size: 1.25rem; - color: #6c757d; - padding: 0.25rem; - min-width: 32px; - min-height: 32px; + width: 36px; + height: 36px; + border-radius: 50%; display: flex; align-items: center; justify-content: center; + cursor: pointer; + color: #6c757d; + font-size: 20px; + transition: background-color 0.2s; } .modal-close:hover { + background-color: #f0f0f0; color: #333; - background: #f8f9fa; - border-radius: 0.25rem; +} + +.modal-content { + margin-bottom: 20px; +} + +.modal-content p { + margin-top: 0; + color: #495057; } .form-group { - margin: 1rem 0; + margin-top: 20px; } .form-group label { display: block; - font-weight: 600; + font-weight: 500; + margin-bottom: 8px; color: #495057; - margin-bottom: 0.5rem; } .form-group textarea { width: 100%; - min-height: 100px; - padding: 0.75rem; + padding: 12px; border: 1px solid #ced4da; - border-radius: 0.375rem; + border-radius: 8px; + min-height: 100px; font-family: inherit; + font-size: 14px; resize: vertical; box-sizing: border-box; } .modal-actions { display: flex; - gap: 1rem; justify-content: flex-end; - margin-top: 1.5rem; flex-wrap: wrap; + gap: 10px; + margin-top: 20px; } -/* Пользовательские карточки в секции участников */ +/* Исправления для корректного отображения блока "Участники" */ .users-grid { display: grid; grid-template-columns: 1fr auto 1fr; - gap: 1rem; + gap: 15px; align-items: center; width: 100%; +} + +.user-card { + background: white; + border: 1px solid #e9ecef; + border-radius: 8px; + padding: 15px; + box-shadow: 0 2px 4px rgba(0,0,0,0.05); + display: flex; + flex-direction: column; + height: 100%; box-sizing: border-box; } -/* На мобильных устройствах меняем сетку на вертикальную */ +.user-details { + display: flex; + flex-direction: column; + gap: 8px; +} + +.user-name, .user-email { + word-break: break-word; + overflow-wrap: break-word; +} + +.arrow-divider { + display: flex; + justify-content: center; + align-items: center; + color: #6c757d; +} + +.arrow-icon { + font-size: 20px; +} + +.vs-text { + display: none; + font-weight: 600; + font-size: 14px; + color: #495057; +} + +/* Адаптивные стили для мобильных устройств */ @media (max-width: 767px) { .users-grid { grid-template-columns: 1fr; grid-template-rows: auto auto auto; - gap: 0.75rem; + gap: 10px; } - + .arrow-divider { - transform: rotate(90deg); - margin: 0.5rem 0; + display: flex; + justify-content: center; + height: 40px; } - - .vs-text { - display: block; - } - + .arrow-icon { - display: none; + transform: rotate(90deg); } -} -/* Адаптивные стили для разных экранов */ - -/* Очень маленькие экраны (до 360px) */ -@media (max-width: 360px) { - .admin-report-detail { - padding: 1rem 0.5rem calc(60px + env(safe-area-inset-bottom, 0px)) 0.5rem; - } - - h2 { - font-size: 1.3rem; - } - - .page-header { - flex-direction: column; - align-items: flex-start; - gap: 0.75rem; - } - - .report-header { - padding: 0.75rem; - flex-direction: column; - align-items: flex-start; - gap: 0.75rem; - min-height: auto; - } - - .report-info { - width: 100%; - gap: 0.5rem; - } - - .report-id-section { - gap: 0.5rem; - } - - .report-icon { - font-size: 1.25rem; - } - - .report-title { - font-size: 1.1rem; - margin-bottom: 0.25rem; - } - - .full-id-container { - flex-direction: column; - gap: 0.125rem; - align-items: flex-start; - } - - .id-label { - font-size: 0.75rem; - } - - .full-id { - font-size: 0.75rem; - padding: 0.0625rem 0.125rem; - width: 100%; - word-break: break-all; - } - - .report-date { - width: 100%; - gap: 0.375rem; - text-align: left; - align-self: flex-start; - } - - .date-icon { - font-size: 1rem; - } - - .date-info { - text-align: left; - gap: 0.0625rem; - } - - .date-label { - font-size: 0.7rem; - } - - .date-value { - font-size: 0.8rem; - white-space: normal; - } -} - -/* Маленькие экраны (361px - 480px) */ -@media (min-width: 361px) and (max-width: 480px) { - .admin-report-detail { - padding: 1rem 0.75rem calc(60px + env(safe-area-inset-bottom, 0px)) 0.75rem; - } - - .report-header { - padding: 1rem; - flex-direction: column; - align-items: flex-start; - gap: 1rem; - min-height: auto; - } - - .report-info { - width: 100%; - } - - .report-date { - width: 100%; - text-align: left; - align-self: flex-start; - } - - .date-info { - text-align: left; - } - - .full-id { - font-size: 0.8rem; - } - - .date-value { - white-space: normal; - } -} - -/* Средние экраны (481px - 767px) */ -@media (min-width: 481px) and (max-width: 767px) { - .admin-report-detail { - padding: 1.25rem calc(60px + env(safe-area-inset-bottom, 0px)) 1.25rem; - } - - .report-header { - padding: 1.25rem; - flex-direction: row; - align-items: flex-start; - flex-wrap: wrap; - gap: 1rem; - } - - .report-info { - flex: 1; - min-width: 250px; - } - - .report-date { - flex-shrink: 0; - min-width: 150px; - } - - .date-value { - white-space: nowrap; - } -} - -/* Большие экраны (768px - 991px) */ -@media (min-width: 768px) and (max-width: 991px) { - .admin-report-detail { - padding: 1.5rem 1.25rem calc(60px + env(safe-area-inset-bottom, 0px)) 1.25rem; - } - - .report-header { - padding: 1.5rem; - flex-direction: row; - align-items: flex-start; - gap: 1.25rem; - } - - .report-info { - flex: 1; - max-width: calc(100% - 200px); - } - - .report-date { - flex-shrink: 0; - min-width: 180px; - } -} - -/* Очень большие экраны (992px - 1199px) */ -@media (min-width: 992px) and (max-width: 1199px) { - .admin-report-detail { - padding: 2rem 1.5rem calc(60px + env(safe-area-inset-bottom, 0px)) 1.5rem; - } - - .report-header { - padding: 1.75rem; - gap: 1.5rem; - } - - .report-info { - max-width: calc(100% - 220px); - } - - .report-date { - min-width: 200px; - } -} - -/* Десктопные экраны (1200px+) */ -@media (min-width: 1200px) { - .admin-report-detail { - padding: 2rem calc(60px + env(safe-area-inset-bottom, 0px)) 2rem; - max-width: 1200px; - margin: 0 auto; - } - - .report-header { - padding: 2rem; - gap: 2rem; - } - - .report-info { - max-width: calc(100% - 250px); - } - - .report-date { - min-width: 230px; - } - - .report-title { - font-size: 1.4rem; - } - - .full-id { - font-size: 0.9rem; - } - - .date-value { - font-size: 1rem; - } -} - -/* Ландшафтная ориентация на мобильных */ -@media (max-height: 450px) and (orientation: landscape) { - .admin-report-detail { - padding: 1rem calc(50px + env(safe-area-inset-bottom, 0px)) 1rem; - } - - .header-controls { - margin-bottom: 1rem; - } - - .page-header { - margin-bottom: 1rem; - } - - .report-content, - .info-section, - .report-actions { - padding: 1rem; - } - - .info-grid { - gap: 1rem; + .vs-text { + display: inline; + margin-left: 8px; } .modal { + width: calc(100% - 16px); + padding: 16px; max-height: 85vh; } -} - -/* Высокие экраны */ -@media (min-height: 800px) { - .admin-report-detail { - min-height: calc(100vh - 120px); - } -} - -/* Устройства с вырезом (notch) */ -@supports (padding: env(safe-area-inset-bottom)) { - .admin-report-detail { - padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px)); - } -} - -/* Ретина экраны с высокой плотностью пикселей */ -@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { - .loading-spinner { - border-width: 2px; + + .modal-header { + padding-bottom: 12px; + margin-bottom: 12px; } - .user-card { - border-width: 0.5px; - } -} - -/* Темная тема (если поддерживается) */ -@media (prefers-color-scheme: dark) { - /* Оставляем светлую тему для админ панели */ -} - -/* Уменьшенная анимация для пользователей с проблемами вестибулярного аппарата */ -@media (prefers-reduced-motion: reduce) { - .loading-spinner { - animation: none; - } - - .btn, - .back-btn, - .view-user-btn, - .user-card { - transition: none; - } - - .btn:hover, - .back-btn:hover, - .view-user-btn:hover { - transform: none; - } -} - -/* Адаптивные стили для блока header жалобы на разных экранах */ - -/* Очень маленькие экраны (до 360px) - адаптация header */ -@media (max-width: 360px) { - .report-header { - padding: 0.75rem; - flex-direction: column; - align-items: flex-start; - gap: 0.75rem; - min-height: auto; - } - - .report-info { - width: 100%; - gap: 0.5rem; - } - - .report-id-section { - gap: 0.5rem; - } - - .report-icon { - font-size: 1.25rem; - } - - .report-title { + .modal-header h3 { font-size: 1.1rem; - margin-bottom: 0.25rem; - } - - .full-id-container { - flex-direction: column; - gap: 0.125rem; - align-items: flex-start; - } - - .id-label { - font-size: 0.75rem; - } - - .full-id { - font-size: 0.75rem; - padding: 0.0625rem 0.125rem; - width: 100%; - word-break: break-all; - } - - .report-date { - width: 100%; - gap: 0.375rem; - text-align: left; - align-self: flex-start; - } - - .date-icon { - font-size: 1rem; - } - - .date-info { - text-align: left; - gap: 0.0625rem; - } - - .date-label { - font-size: 0.7rem; - } - - .date-value { - font-size: 0.8rem; - white-space: normal; - } -} - -/* Маленькие экраны (361px - 480px) - адаптация header */ -@media (min-width: 361px) and (max-width: 480px) { - .report-header { - padding: 1rem; - flex-direction: column; - align-items: flex-start; - gap: 1rem; - min-height: auto; - } - - .report-info { - width: 100%; - } - - .report-date { - width: 100%; - text-align: left; - align-self: flex-start; - } - - .date-info { - text-align: left; - } - - .full-id { - font-size: 0.8rem; - } - - .date-value { - white-space: normal; - } -} - -/* Средние экраны (481px - 767px) - адаптация header */ -@media (min-width: 481px) and (max-width: 767px) { - .report-header { - padding: 1.25rem; - flex-direction: row; - align-items: flex-start; - flex-wrap: wrap; - gap: 1rem; - } - - .report-info { - flex: 1; - min-width: 250px; - } - - .report-date { - flex-shrink: 0; - min-width: 150px; - } - - .date-value { - white-space: nowrap; - } -} - -/* Большие экраны (768px - 991px) - адаптация header */ -@media (min-width: 768px) and (max-width: 991px) { - .report-header { - padding: 1.5rem; - flex-direction: row; - align-items: flex-start; - gap: 1.25rem; - } - - .report-info { - flex: 1; - max-width: calc(100% - 200px); - } - - .report-date { - flex-shrink: 0; - min-width: 180px; - } -} - -/* Очень большие экраны (992px - 1199px) - адаптация header */ -@media (min-width: 992px) and (max-width: 1199px) { - .report-header { - padding: 1.75rem; - gap: 1.5rem; - } - - .report-info { - max-width: calc(100% - 220px); - } - - .report-date { - min-width: 200px; - } -} - -/* Десктопные экраны (1200px+) - адаптация header */ -@media (min-width: 1200px) { - .report-header { - padding: 2rem; - gap: 2rem; - } - - .report-info { - max-width: calc(100% - 250px); - } - - .report-date { - min-width: 230px; - } - - .report-title { - font-size: 1.4rem; - } - - .full-id { - font-size: 0.9rem; - } - - .date-value { - font-size: 1rem; - } -} - -/* Ландшафтная ориентация на мобильных - адаптация header */ -@media (max-height: 450px) and (orientation: landscape) { - .report-header { - padding: 0.75rem 1rem; - flex-direction: row; - align-items: center; - gap: 1rem; - min-height: auto; - } - - .report-info { - flex: 1; - } - - .report-title { - font-size: 1.1rem; - margin-bottom: 0.25rem; - } - - .full-id-container { - flex-direction: row; - flex-wrap: wrap; - gap: 0.25rem; - } - - .full-id { - font-size: 0.75rem; - max-width: 200px; - } - - .report-date { - flex-shrink: 0; - gap: 0.375rem; - } - - .date-info { - gap: 0.0625rem; - } - - .date-label { - font-size: 0.7rem; - } - - .date-value { - font-size: 0.8rem; } } \ No newline at end of file