/
oliivanov
/
mentacle
Обзор
Документация
Войти
/
oliivanov
/
mentacle
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/shared/ui/theme/global.css
301 строка
6 KB
Олег Иванов
Таблицы, ч. 1
12 фев 2026, 11:31
12 фев 2026, 11:31
6e0ccf5
Код
Авторство
О чём код?
/* Глобальные стили приложения с серо-зелёной палитрой */ :root { --gradient-sage: linear-gradient( 135deg, #87b495 0%, #5d8e6b 50%, #426849 100% ); --gradient-coral: linear-gradient( 135deg, #ff8267 0%, #ff6341 50%, #f95335 100% ); --gradient-purple: linear-gradient( 135deg, #ba68c8 0%, #9c27b0 50%, #7b1fa2 100% ); --gradient-sky: linear-gradient( 135deg, #4fc3f7 0%, #03a9f4 50%, #0288d1 100% ); --gradient-golden: linear-gradient( 135deg, #fff176 0%, #ffeb3b 50%, #fdd835 100% ); --gradient-mesh: radial-gradient(at 40% 20%, rgba(135, 180, 149, 0.3) 0px, transparent 50%), radial-gradient(at 80% 0%, rgba(255, 130, 103, 0.2) 0px, transparent 50%), radial-gradient(at 0% 50%, rgba(186, 104, 200, 0.2) 0px, transparent 50%), radial-gradient(at 80% 50%, rgba(79, 195, 247, 0.2) 0px, transparent 50%), radial-gradient(at 0% 100%, rgba(255, 235, 59, 0.15) 0px, transparent 50%); --gradient-animated: linear-gradient( -45deg, #87b495, #ff8267, #ba68c8, #4fc3f7, #ffeb3b ); --shadow-soft: 0 4px 20px rgba(67, 139, 107, 0.15); --shadow-glow: 0 0 30px rgba(135, 180, 149, 0.4); --shadow-card: 0 8px 32px rgba(0, 0, 0, 0.08); } * { box-sizing: border-box; } body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; background: var(--gradient-mesh); background-attachment: fixed; background-size: 100% 100%; min-height: 100vh; } /* Анимированный фон */ @keyframes gradient-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .animated-gradient { background: var(--gradient-animated); background-size: 400% 400%; animation: gradient-shift 15s ease infinite; } /* Карточки с эффектом стекла */ .glass-card { background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.5); border-radius: 16px; box-shadow: var(--shadow-card); } /* Эффект свечения */ .glow-effect { box-shadow: var(--shadow-glow); transition: box-shadow 0.3s ease; } .glow-effect:hover { box-shadow: 0 0 50px rgba(135, 180, 149, 0.6); } /* Плавные переходы */ .smooth-transition { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Кнопка с градиентом */ .gradient-button { background: var(--gradient-sage); border: none; color: white; padding: 12px 24px; border-radius: 12px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: var(--shadow-soft); } .gradient-button:hover { transform: translateY(-2px); box-shadow: 0 8px 25px rgba(67, 139, 107, 0.25); } .gradient-button:active { transform: translateY(0); } /* Заголовки с градиентом */ .gradient-text { background: var(--gradient-sage); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Плавающий эффект */ .floating { animation: floating 3s ease-in-out infinite; } @keyframes floating { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } /* Пульсирующий эффект */ .pulsing { animation: pulsing 2s ease-in-out infinite; } @keyframes pulsing { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } /* Стилизация скроллбара */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: #f0f4f1; border-radius: 10px; } ::-webkit-scrollbar-thumb { background: var(--gradient-sage); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: #5d8e6b; } /* Стилизация для Mantine компонентов */ .mantine-AppShell-header { background: rgba(255, 255, 255, 0.85) !important; backdrop-filter: blur(20px) !important; -webkit-backdrop-filter: blur(20px) !important; border-bottom: 1px solid rgba(135, 180, 149, 0.2) !important; } .mantine-AppShell-navbar { background: rgba(255, 255, 255, 0.75) !important; backdrop-filter: blur(20px) !important; -webkit-backdrop-filter: blur(20px) !important; border-right: 1px solid rgba(135, 180, 149, 0.2) !important; } .mantine-NavLink-root { border-radius: 12px !important; margin: 4px 8px !important; transition: all 0.3s ease !important; } .mantine-NavLink-root[data-active="true"] { background: var(--gradient-sage) !important; color: white !important; box-shadow: var(--shadow-soft) !important; } .mantine-NavLink-root:hover:not([data-active="true"]) { background: rgba(135, 180, 149, 0.15) !important; } .mantine-Button-root { border-radius: 12px !important; transition: all 0.3s ease !important; } .mantine-Button-root:hover { transform: translateY(-2px) !important; } .mantine-Paper-root { border-radius: 16px !important; } .mantine-TextInput-root, .mantine-PasswordInput-root { transition: all 0.3s ease !important; } .mantine-TextInput-root:focus-within, .mantine-PasswordInput-root:focus-within { transform: scale(1.01); } /* Анимация появления */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .fade-in-up { animation: fadeInUp 0.6s ease forwards; } /* Задержки для каскадной анимации */ .delay-1 { animation-delay: 0.1s; } .delay-2 { animation-delay: 0.2s; } .delay-3 { animation-delay: 0.3s; } .delay-4 { animation-delay: 0.4s; } .delay-5 { animation-delay: 0.5s; } /* Стили для react-virtualized */ .ReactVirtualized__Grid { outline: none; } .ReactVirtualized__Grid__innerScrollContainer { position: relative; } .ReactVirtualized__Grid__cell { box-sizing: border-box; } /* Оптимизация производительности таблицы */ .ReactVirtualized__Grid__cell:focus { outline: none; } .ReactVirtualized__Grid__cell:focus-visible { outline: 2px solid var(--primary-color); outline-offset: -2px; }