english version update

This commit is contained in:
Georgiy Syralev
2025-12-31 19:59:43 +03:00
parent b799f278a4
commit a2809a705f
57 changed files with 4263 additions and 1333 deletions

View File

@@ -2,6 +2,244 @@
@tailwind components;
@tailwind utilities;
/* ===== МОБИЛЬНАЯ АДАПТАЦИЯ ===== */
/* Улучшенный перенос слов для мобильных устройств */
@media (max-width: 768px) {
.prose {
word-wrap: break-word;
overflow-wrap: break-word;
hyphens: auto;
}
.prose p, .prose li {
word-wrap: break-word;
overflow-wrap: break-word;
}
/* Предотвращение горизонтальной прокрутки */
body {
overflow-x: hidden;
}
/* Адаптация длинных слов в интерфейсе */
.break-word-mobile {
word-break: break-word;
hyphens: auto;
}
/* Усечение текста с троеточием на мобильных */
.truncate-mobile {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
/* Line clamp utilities для совместимости */
.line-clamp-1 {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
}
.line-clamp-2 {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.line-clamp-3 {
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
}
/* ===== ГЛОБАЛЬНЫЕ АНИМАЦИИ ===== */
/* Fade in снизу */
@keyframes fade-in-up {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Fade in сверху */
@keyframes fade-in-down {
from {
opacity: 0;
transform: translateY(-30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Fade in слева */
@keyframes fade-in-left {
from {
opacity: 0;
transform: translateX(-30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Fade in справа */
@keyframes fade-in-right {
from {
opacity: 0;
transform: translateX(30px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Scale in */
@keyframes scale-in {
from {
opacity: 0;
transform: scale(0.9);
}
to {
opacity: 1;
transform: scale(1);
}
}
/* Bounce subtle */
@keyframes bounce-subtle {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-5px);
}
}
/* Float */
@keyframes float {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-10px);
}
}
/* Pulse glow */
@keyframes pulse-glow {
0%, 100% {
box-shadow: 0 0 5px rgba(59, 130, 246, 0.5);
}
50% {
box-shadow: 0 0 20px rgba(59, 130, 246, 0.8);
}
}
/* Slide in from bottom for cards */
@keyframes slide-up {
from {
opacity: 0;
transform: translateY(50px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Классы анимаций */
.animate-fade-in-up {
animation: fade-in-up 0.6s ease-out forwards;
}
.animate-fade-in-down {
animation: fade-in-down 0.6s ease-out forwards;
}
.animate-fade-in-left {
animation: fade-in-left 0.6s ease-out forwards;
}
.animate-fade-in-right {
animation: fade-in-right 0.6s ease-out forwards;
}
.animate-scale-in {
animation: scale-in 0.5s ease-out forwards;
}
.animate-bounce-subtle {
animation: bounce-subtle 2s ease-in-out infinite;
}
.animate-float {
animation: float 3s ease-in-out infinite;
}
.animate-pulse-glow {
animation: pulse-glow 2s ease-in-out infinite;
}
.animate-slide-up {
animation: slide-up 0.6s ease-out forwards;
}
/* Задержки анимаций */
.animation-delay-100 { animation-delay: 0.1s; }
.animation-delay-200 { animation-delay: 0.2s; }
.animation-delay-300 { animation-delay: 0.3s; }
.animation-delay-400 { animation-delay: 0.4s; }
.animation-delay-500 { animation-delay: 0.5s; }
.animation-delay-600 { animation-delay: 0.6s; }
.animation-delay-700 { animation-delay: 0.7s; }
.animation-delay-800 { animation-delay: 0.8s; }
/* Начальное состояние для анимируемых элементов */
.animate-on-scroll {
opacity: 0;
}
/* Hover эффекты для карточек */
.card-hover {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.card-hover:hover {
transform: translateY(-8px);
box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.2);
}
/* Hover эффект для кнопок */
.btn-hover {
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn-hover:hover {
transform: translateY(-2px);
box-shadow: 0 10px 20px -10px rgba(0, 0, 0, 0.3);
}
.btn-hover:active {
transform: translateY(0);
}
/* ===== СУЩЕСТВУЮЩИЕ АНИМАЦИИ ===== */
/* Анимации для модальных окон и уведомлений */
@keyframes modal-enter {
from {