/* Оверлей для комментариев */ .comments-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: flex-end; justify-content: center; z-index: 1000; animation: fadeIn 0.2s; padding-bottom: env(safe-area-inset-bottom, 0px); overflow: hidden; } .comments-modal { width: 100%; max-width: 600px; height: 60dvh; /* dvh не меняется при клавиатуре */ max-height: 60vh; /* fallback для старых браузеров */ display: flex; flex-direction: column; border-radius: 16px 16px 0 0; background: var(--bg-secondary); animation: slideUp 0.3s ease-out; position: fixed; bottom: 80px; /* Над навигацией */ left: 0; right: 0; } /* Хедер модалки */ .comments-modal .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 16px; border-bottom: 1px solid var(--divider-color); background: var(--bg-secondary); flex-shrink: 0; } .comments-modal .modal-header h2 { font-size: 18px; font-weight: 600; color: var(--text-primary); } .comments-modal .close-btn { width: 32px; height: 32px; border-radius: 50%; background: transparent; color: var(--text-primary); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .comments-modal .close-btn svg { stroke: currentColor; } .comments-modal .close-btn:active { background: var(--bg-primary); } /* Список комментариев */ .comments-list { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 16px; } .empty-comments { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px 20px; gap: 8px; } .empty-comments p { color: var(--text-primary); font-size: 16px; font-weight: 500; } .empty-comments span { color: var(--text-secondary); font-size: 14px; } /* Комментарий */ .comment-item { display: flex; gap: 12px; } .comment-avatar { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex-shrink: 0; } .comment-content { flex: 1; display: flex; flex-direction: column; gap: 4px; } .comment-header { display: flex; align-items: center; gap: 8px; } .comment-author { font-size: 14px; font-weight: 600; color: var(--text-primary); } .comment-time { font-size: 12px; color: var(--text-secondary); } .comment-text { font-size: 14px; line-height: 1.5; color: var(--text-primary); word-wrap: break-word; } /* Форма ввода комментария */ .comment-form { display: flex; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--divider-color); background: var(--bg-secondary); flex-shrink: 0; border-radius: 0 0 16px 16px; position: sticky; bottom: 0; } /* Фикс для iOS - предотвращение прыжков */ .comment-form input:focus { transform: translateZ(0); -webkit-transform: translateZ(0); } .comment-form input { flex: 1; padding: 10px 16px; border-radius: 20px; background: var(--bg-primary); color: var(--text-primary); font-size: 15px; } .send-btn { width: 40px; height: 40px; border-radius: 50%; background: var(--button-accent); color: white; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .send-btn svg { stroke: white; } .send-btn:disabled { opacity: 0.5; }