diff --git a/public/styles/global.css b/public/styles/global.css index 3bd2a6d..e02b98e 100644 --- a/public/styles/global.css +++ b/public/styles/global.css @@ -23,11 +23,13 @@ /* Базовые стили */ html { scroll-behavior: smooth; + background: linear-gradient(135deg, #111827, #1f2937, #111827); + min-height: 100vh; } body { - background-color: #f7f7f7; - color: #2c2c2c; + background: linear-gradient(135deg, #111827, #1f2937, #111827); + color: #ffffff; } /* Отступы от фиксированного хедера */ @@ -303,3 +305,354 @@ body { font-size: 1.125rem; } } + +/* Стили для загрузчика страницы */ +#page-loader { + transition: opacity 0.5s ease-out, transform 0.5s ease-out; +} + +/* Стили для контента страницы */ +#page-content { + opacity: 1; + transition: opacity 0.3s ease-in; +} + +/* Предотвращение белого фона во время загрузки */ +html, body { + min-height: 100vh; + background: linear-gradient(135deg, #111827, #1f2937, #111827); +} + +/* Анимация появления для загрузчика */ +@keyframes fade-in { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.animate-fade-in { + animation: fade-in 0.8s ease-out; +} + +/* Улучшенная анимация bounce для точек загрузки */ +@keyframes enhanced-bounce { + 0%, 20%, 53%, 80%, 100% { + transform: translateY(0); + } + 40%, 43% { + transform: translateY(-15px); + } + 70% { + transform: translateY(-7px); + } + 90% { + transform: translateY(-3px); + } +} + +.animate-enhanced-bounce { + animation: enhanced-bounce 1.4s ease-in-out infinite; +} + +/* Анимация пульсации для логотипа */ +@keyframes logo-pulse { + 0%, 100% { + opacity: 1; + transform: scale(1); + } + 50% { + opacity: 0.8; + transform: scale(1.05); + } +} + +.animate-logo-pulse { + animation: logo-pulse 2s ease-in-out infinite; +} + +/* Градиентная анимация для прогресс-бара */ +@keyframes progress-shimmer { + 0% { + background-position: -200px 0; + } + 100% { + background-position: calc(200px + 100%) 0; + } +} + +.progress-shimmer { + background: linear-gradient( + 90deg, + #fbbf24 25%, + #f59e0b 50%, + #fbbf24 75% + ); + background-size: 200px 100%; + animation: progress-shimmer 2s infinite; +} + +/* Адаптивные стили для загрузчика */ + +/* Очень маленькие экраны (до 320px) */ +@media (max-width: 319px) { + #page-loader .text-center { + padding: 0.5rem; + } + + #page-loader h1 { + font-size: 1.25rem !important; + margin-bottom: 1rem !important; + } + + #page-loader p { + font-size: 0.75rem !important; + } + + #page-loader .w-64 { + width: 12rem !important; + } + + #page-loader img { + height: 3rem !important; + } + + #page-loader .w-3 { + width: 0.5rem !important; + height: 0.5rem !important; + } +} + +/* Маленькие экраны (320px - 479px) */ +@media (min-width: 320px) and (max-width: 479px) { + #page-loader .text-center { + padding: 0.75rem; + } + + #page-loader h1 { + font-size: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + #page-loader p { + font-size: 0.875rem !important; + } + + #page-loader .w-64 { + width: 14rem !important; + } + + #page-loader img { + height: 4rem !important; + } +} + +/* Средние экраны (480px - 767px) */ +@media (min-width: 480px) and (max-width: 767px) { + #page-loader .text-center { + padding: 1rem; + } + + #page-loader h1 { + font-size: 2rem !important; + margin-bottom: 1.5rem !important; + } + + #page-loader p { + font-size: 1rem !important; + } + + #page-loader .w-64 { + width: 18rem !important; + } + + #page-loader img { + height: 5rem !important; + } +} + +/* Планшеты (768px - 1027px) */ +@media (min-width: 768px) and (max-width: 1027px) { + #page-loader .text-center { + padding: 1.5rem; + } + + #page-loader h1 { + font-size: 2.5rem !important; + margin-bottom: 2rem !important; + } + + #page-loader p { + font-size: 1.125rem !important; + } + + #page-loader .w-64 { + width: 24rem !important; + } + + #page-loader img { + height: 6rem !important; + } + + #page-loader .w-3 { + width: 1rem !important; + height: 1rem !important; + } +} + +/* Ноутбуки (1028px - 1439px) */ +@media (min-width: 1028px) and (max-width: 1439px) { + #page-loader .text-center { + padding: 2rem; + } + + #page-loader h1 { + font-size: 3rem !important; + margin-bottom: 2rem !important; + } + + #page-loader p { + font-size: 1.25rem !important; + } + + #page-loader .w-64 { + width: 28rem !important; + } + + #page-loader img { + height: 7rem !important; + } + + #page-loader .w-3 { + width: 1.25rem !important; + height: 1.25rem !important; + } +} + +/* Большие экраны (1440px+) */ +@media (min-width: 1440px) { + #page-loader .text-center { + padding: 2.5rem; + } + + #page-loader h1 { + font-size: 3.5rem !important; + margin-bottom: 2.5rem !important; + } + + #page-loader p { + font-size: 1.5rem !important; + } + + #page-loader .w-64 { + width: 32rem !important; + } + + #page-loader img { + height: 8rem !important; + } + + #page-loader .w-3 { + width: 1.5rem !important; + height: 1.5rem !important; + } +} + +/* Дополнительные адаптивные стили для декоративных элементов */ +@media (max-width: 479px) { + #page-loader .absolute.top-1\/4 { + width: 4rem !important; + height: 4rem !important; + } + + #page-loader .absolute.bottom-1\/4 { + width: 5rem !important; + height: 5rem !important; + } + + #page-loader .absolute.top-1\/2 { + width: 3rem !important; + height: 3rem !important; + } +} + +@media (min-width: 480px) and (max-width: 767px) { + #page-loader .absolute.top-1\/4 { + width: 6rem !important; + height: 6rem !important; + } + + #page-loader .absolute.bottom-1\/4 { + width: 7rem !important; + height: 7rem !important; + } + + #page-loader .absolute.top-1\/2 { + width: 4rem !important; + height: 4rem !important; + } +} + +/* Адаптивные стили для прогресс-бара */ +@media (max-width: 319px) { + #page-loader .bg-gray-700 { + height: 0.375rem !important; + } +} + +@media (min-width: 320px) and (max-width: 479px) { + #page-loader .bg-gray-700 { + height: 0.5rem !important; + } +} + +@media (min-width: 480px) and (max-width: 767px) { + #page-loader .bg-gray-700 { + height: 0.625rem !important; + } +} + +@media (min-width: 768px) and (max-width: 1027px) { + #page-loader .bg-gray-700 { + height: 0.75rem !important; + } +} + +@media (min-width: 1028px) { + #page-loader .bg-gray-700 { + height: 1rem !important; + } +} + +/* Адаптивные стили для отступов между элементами */ +@media (max-width: 479px) { + #page-loader .mb-8 { + margin-bottom: 1rem !important; + } + + #page-loader .mb-6 { + margin-bottom: 1rem !important; + } + + #page-loader .mt-4 { + margin-top: 0.75rem !important; + } +} + +@media (min-width: 480px) and (max-width: 767px) { + #page-loader .mb-8 { + margin-bottom: 1.5rem !important; + } + + #page-loader .mb-6 { + margin-bottom: 1.25rem !important; + } + + #page-loader .mt-4 { + margin-top: 1rem !important; + } +} diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index f90ad13..bcca181 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -121,10 +121,146 @@ const allKeywords = `${commonKeywords}, ${silverKeywords}, ${goldKeywords}`; -
- - - -