/
direrome
/
project
Обзор
Документация
Войти
/
direrome
/
project
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
static/styles.css
577 строк
11 KB
Ynree
first_commit
02 июн 2025, 10:19
02 июн 2025, 10:19
cb6f647
Код
Авторство
О чём код?
/* Базовые стили для всего приложения */ :root { --bg-primary: #f9fafb; --bg-secondary: #ffffff; --bg-metric: #f3f4f6; --text-primary: #1f2937; --text-secondary: #4b5563; --accent: #3b82f6; --shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } [data-theme="dark"] { --bg-primary: #1f2937; --bg-secondary: #374151; --bg-metric: #4b5563; --text-primary: #f9fafb; --text-secondary: #d1d5db; --accent: #60a5fa; --shadow: 0 2px 8px rgba(0, 0, 0, 0.3); } .bg-primary { background-color: var(--bg-primary); } .bg-secondary { background-color: var(--bg-secondary); } .bg-metric { background-color: var(--bg-metric); } .text-primary { color: var(--text-primary); } .text-secondary { color: var(--text-secondary); } .bg-accent { background-color: var(--accent); } .text-accent { color: var(--accent); } body { min-height: 100vh; display: flex; flex-direction: column; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; background-color: var(--bg-primary); color: var(--text-primary); transition: background-color 0.3s ease, color 0.3s ease; } /* Модальное окно */ #modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; min-height: 100vh; background-color: rgba(0, 0, 0, 0.5); z-index: 1000; opacity: 0; transition: opacity 0.3s ease; display: none; align-items: center; justify-content: center; } #modal:not(.hidden) { opacity: 1; display: flex; } #modal > div { background-color: var(--bg-secondary); padding: 2rem; border-radius: 0.5rem; position: relative; max-width: 32rem; width: 90%; box-shadow: var(--shadow); transform: scale(0.95); transition: transform 0.3s ease; } #modal:not(.hidden) > div { transform: scale(1); } body.modal-open { overflow: hidden; } /* Уведомления */ #notification { position: fixed; top: 1rem; right: 1rem; z-index: 1100; padding: 1rem 1.5rem; border-radius: 0.5rem; color: white; transition: opacity 0.5s ease, transform 0.3s ease; transform: translateY(-20px); } #notification:not(.hidden) { opacity: 1; transform: translateY(0); } /* Стили для header */ header { background-color: var(--bg-secondary); box-shadow: var(--shadow); padding: 1rem 2rem; position: sticky; top: 0; z-index: 10; } /* Стили для навигации на домашней странице */ nav { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; } nav a { color: var(--text-primary); text-decoration: none; font-weight: 500; padding: 0.5rem 1rem; transition: color 0.2s ease; } nav a:hover { color: var(--accent); } /* Стили для hero секции */ .hero { text-align: center; padding: 4rem 2rem; background: linear-gradient(to bottom, #e0f2fe, var(--bg-primary)); margin-bottom: 2rem; } .hero h1 { font-size: 2.5rem; font-weight: 700; color: var(--text-primary); margin-bottom: 1rem; } .hero p { font-size: 1.2rem; color: var(--text-secondary); margin-bottom: 2rem; } .hero button { background-color: var(--accent); color: #ffffff; padding: 0.75rem 2rem; border-radius: 0.5rem; font-weight: 600; font-size: 1.1rem; } /* Стили для секции features */ .features { max-width: 1200px; margin: 0 auto 4rem; padding: 0 2rem; } .features h2 { text-align: center; font-size: 2rem; font-weight: 600; color: var(--text-primary); margin-bottom: 2rem; } .features .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; } .features .bg-white { padding: 2rem; border-radius: 0.5rem; box-shadow: var(--shadow); text-align: center; background-color: var(--bg-secondary); } .features h3 { font-size: 1.5rem; font-weight: 600; color: var(--text-primary); margin-bottom: 1rem; } .features p { color: var(--text-secondary); } /* Стили для footer */ footer { background-color: #1f2937; color: #ffffff; text-align: center; padding: 1.5rem; margin-top: auto; } /* Стили для боковой панели */ aside { background-color: var(--bg-secondary); transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); z-index: 1000; width: 250px; position: fixed; top: 0; bottom: 0; left: 0; height: 100vh; box-shadow: var(--shadow); display: flex; flex-direction: column; transform: translateX(-100%); } aside.open { transform: translateX(0); } aside nav { flex-grow: 1; display: flex; flex-direction: column; padding: 1rem; } aside nav a { padding: 0.5rem 0.75rem; margin: 0.1rem 0; font-size: 0.9rem; display: block; text-decoration: none; color: var(--text-primary); transition: background-color 0.2s ease, color 0.2s ease; } aside nav a:hover { background-color: var(--accent); color: #ffffff; } aside nav a[aria-current="page"] { background-color: var(--accent); color: #ffffff; font-weight: 600; } /* Стили для кнопок боковой панели */ #sidebarToggle, #sidebarClose { padding: 0.5rem; cursor: pointer; font-size: 1.5rem; color: var(--text-primary); transition: color 0.2s ease; } #sidebarToggle:hover, #sidebarClose:hover { color: var(--accent); } #sidebarClose { display: none; } /* Стили для основного контента */ main { padding: 2rem; max-width: 1200px; margin: 0 auto; } /* Стили для секций */ section { background-color: var(--bg-secondary); border-radius: 0.5rem; padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow); } section h2 { font-size: 1.75rem; font-weight: 600; color: var(--text-primary); margin-bottom: 1.5rem; } /* Стили для форм */ form { display: flex; flex-direction: column; gap: 1rem; } input, select, textarea { border: 1px solid #e5e7eb; border-radius: 0.375rem; padding: 0.75rem; background-color: var(--bg-secondary); color: var(--text-primary); transition: border-color 0.2s ease, box-shadow 0.2s ease; } input:focus, select:focus, textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } textarea { resize: vertical; min-height: 100px; } /* Стили для кнопок */ button, a[href="#submit"] { background-color: var(--accent); color: white; padding: 0.75rem 1.5rem; border-radius: 0.375rem; font-weight: 500; transition: background-color 0.3s ease, transform 0.2s ease; box-shadow: none; } button:hover:not(:disabled), a[href="#submit"]:hover { background-color: #2563eb; transform: translateY(-2px); } button:disabled { opacity: 0.6; cursor: not-allowed; } /* Стили для кнопки "Наверх" */ #scrollTopBtn { position: fixed; bottom: 2rem; right: 2rem; background-color: var(--accent); color: white; padding: 0.75rem; border-radius: 50%; transition: opacity 0.3s ease, transform 0.3s ease; opacity: 0; } #scrollTopBtn.visible { opacity: 1; transform: translateY(0); } /* Стили для переключателя темы */ #themeToggle { padding: 0.5rem; cursor: pointer; font-size: 1.25rem; color: var(--text-primary); transition: color 0.2s ease; } #themeToggle:hover { color: var(--accent); } /* Контейнер для слайдера */ .slider { max-width: 800px; margin: 0 auto; position: relative; overflow: hidden; padding: 1rem; } .slide { text-align: center; padding: 2rem; background: var(--bg-secondary); border-radius: 0.5rem; box-shadow: var(--shadow); opacity: 0; transform: translateX(20px); transition: opacity 0.5s ease, transform 0.5s ease; } .slide.active { opacity: 1; transform: translateX(0); } .slide.hidden { display: none; } .prev, .next { cursor: pointer; padding: 0.5rem 1rem; border-radius: 0.25rem; transition: background-color 0.3s ease; font-size: 1.5rem; position: absolute; top: 50%; transform: translateY(-50%); } .prev { left: 1rem; } .next { right: 1rem; } .prev:hover, .next:hover { background-color: rgba(59, 130, 246, 0.1); } .hidden { display: none; } /* Таблицы */ table { width: 100%; border-collapse: separate; border-spacing: 0; background-color: var(--bg-secondary); } th, td { padding: 1rem; text-align: left; border-bottom: 1px solid #e5e7eb; } th { background-color: var(--bg-metric); font-weight: 600; color: var(--text-primary); } tr:hover { background-color: var(--bg-primary); } /* Анимация загрузки */ .animate-spin { display: inline-block; animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } button .animate-spin { margin-left: 0.5rem; display: none; } button.loading .animate-spin { display: inline-block; } button.loading span:not(.animate-spin) { display: none; } .animate-fade-in { animation: fadeIn 0.6s ease-out forwards; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .animate-form-in { animation: scaleIn 0.3s ease-out forwards; } @keyframes scaleIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } /* Адаптивность */ @media (max-width: 768px) { #sidebar { width: 80%; max-width: 280px; transform: translateX(-100%); } #sidebar.open { transform: translateX(0); } #sidebarClose { display: inline-block; } main { padding: 1rem; } .hero h1 { font-size: 2rem; } .hero p { font-size: 1rem; } .features .grid { grid-template-columns: 1fr; } #modal > div { width: 95%; padding: 1.5rem; } } /* Стили для графиков */ #analyticsChart { max-height: 350px; } /* Цвета кнопок */ button.bg-green-500 { background-color: #10b981; } button.bg-red-500 { background-color: #ef4444; } .contacts form { background: var(--bg-secondary); padding: 2rem; border-radius: 0.5rem; box-shadow: var(--shadow); }