/
AlexeyAndreev
/
arboxing_school
Обзор
Документация
Войти
/
AlexeyAndreev
/
arboxing_school
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
css/components.css
547 строк
10 KB
huseinovi4
init
19 дек 2025, 15:01
19 дек 2025, 15:01
3dbe179
Код
Авторство
О чём код?
/* ========== КОМПОНЕНТЫ ========== */ /* Базовые стили кнопок */ .btn { display: inline-flex; align-items: center; gap: 0.8rem; padding: 1rem 2rem; font-size: 1.1rem; font-weight: 600; text-decoration: none; border-radius: var(--border-radius); transition: var(--transition); border: none; cursor: pointer; position: relative; overflow: hidden; } /* Эффект shimmer (переиспользуемый) */ .shimmer::before { content: ""; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s ease; } .shimmer:hover::before { left: 100%; } /* Варианты кнопок */ .btn--primary { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: var(--white); box-shadow: 0 8px 25px rgba(209, 0, 0, 0.3); } .btn--primary:hover { transform: translateY(-3px); box-shadow: 0 12px 35px rgba(209, 0, 0, 0.4); } .btn--secondary { background: rgba(255, 255, 255, 0.1); color: var(--white); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } .btn--secondary:hover { background: rgba(255, 255, 255, 0.2); transform: translateY(-3px); } .btn--outline { background: transparent; color: var(--primary); border: 2px solid var(--primary); } .btn--outline:hover { background: var(--primary); color: var(--white); transform: translateY(-2px); } /* Иконки в кнопках */ .btn__icon { font-size: 1.2rem; transition: transform 0.3s ease; } .btn:hover .btn__icon { transform: scale(1.1); } /* Кнопка телефона (упрощенная) */ .btn--phone { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: var(--white); box-shadow: 0 4px 15px rgba(209, 0, 0, 0.3); border: 2px solid transparent; } .btn--phone:hover { border-color: rgba(255, 255, 255, 0.3); transform: translateY(-2px); box-shadow: 0 8px 25px rgba(209, 0, 0, 0.5); } /* Карточки (базовые стили) */ .card { background: var(--white); border-radius: var(--border-radius); box-shadow: var(--shadow); transition: var(--transition); border: 1px solid rgba(0, 0, 0, 0.05); } .card:hover { transform: translateY(-5px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15); } /* Модальное окно (упрощенное) */ /* ========== МОДАЛЬНОЕ ОКНО ========== */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.95); display: flex; align-items: center; justify-content: center; z-index: 10000; padding: 1rem; backdrop-filter: blur(5px); } .modal__content { background: var(--white); border-radius: 1rem; padding: 2rem; max-width: 90vw; max-height: 90vh; position: relative; box-shadow: 0 25px 50px rgba(0, 0, 0, 0.5); overflow: auto; } /* Варианты модалки */ .modal--image .modal__content { background: transparent; box-shadow: none; padding: 0; } .modal--small .modal__content { max-width: 400px; } .modal--large .modal__content { max-width: 800px; } /* Модалка расписания */ .modal--schedule .modal__content { max-width: 960px; } .modal-schedule__title { font-size: 1.8rem; margin-bottom: 1rem; color: var(--secondary); font-weight: 500; } .modal-schedule__note { margin-bottom: 2rem; color: var(--text-light); font-size: 0.96rem; } .modal-schedule__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem 2rem; margin-bottom: 2rem; } .modal-schedule__column h4 { font-size: 1.1rem; margin-bottom: 0.75rem; color: var(--secondary); } .modal-schedule__column ul { list-style: none; padding: 0; margin: 0; } .modal-schedule__column li { margin-bottom: 0.4rem; color: var(--text); } .modal-schedule__column li strong { color: var(--primary); } .modal-schedule__actions { text-align: center; } .modal-schedule__actions .btn { justify-content: center; } .modal__close { position: absolute; top: 1rem; right: 1rem; width: 2.5rem; height: 2.5rem; border: none; background: rgba(0, 0, 0, 0.7); color: var(--white); border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: var(--transition); z-index: 1; } .modal__close:hover { background: var(--primary); transform: scale(1.1); } /* Контент для модалки с изображением */ .modal-image { text-align: center; } .modal-image img { max-width: 100%; max-height: 70vh; border-radius: 0.5rem; } .modal-image__title { color: var(--white); margin-top: 1rem; font-size: 1.2rem; } /* ========== ПРЕЛОАДЕР ========== */ .preloader { position: fixed; inset: 0; background: radial-gradient(circle at top, #2b2b2b 0, #000 55%, #000 100%); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 11000; color: #fff; transition: opacity 0.4s ease, visibility 0.4s ease; } .preloader--hidden { opacity: 0; visibility: hidden; pointer-events: none; } .preloader__logo { display: flex; align-items: center; gap: 0.8rem; margin-bottom: 1.5rem; font-family: var(--font-heading); letter-spacing: 1px; } .preloader__logo-icon { width: 48px; height: 48px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); display: flex; align-items: center; justify-content: center; box-shadow: 0 0 25px rgba(209, 0, 0, 0.6); } .preloader__logo-icon i { font-size: 1.4rem; } .preloader__logo-text { display: flex; flex-direction: column; font-size: 1.1rem; } .preloader__logo-title { text-transform: uppercase; } .preloader__logo-subtitle { font-size: 0.9rem; opacity: 0.8; } .preloader__spinner { width: 52px; height: 52px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, 0.15); border-top-color: var(--primary); animation: preloader-spin 0.9s linear infinite; margin-bottom: 1.2rem; } .preloader__text { font-size: 0.95rem; color: var(--text-light); text-align: center; max-width: 260px; } @keyframes preloader-spin { to { transform: rotate(360deg); } } /* ========== СТРАНИЦА 404 ========== */ .body--404 { background: radial-gradient(circle at top, #1c1c1c 0, #000 55%, #000 100%); color: var(--white); } .error-page { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr); gap: 3rem; align-items: center; min-height: calc(100vh - 160px); } .error-page__content { color: var(--white); } .error-page__label { display: inline-block; padding: 0.35rem 1rem; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.25); font-size: 0.9rem; text-transform: uppercase; letter-spacing: 1px; margin-bottom: 1rem; opacity: 0.8; } .error-page__title { font-size: clamp(3.5rem, 6vw, 4.5rem); margin-bottom: 0.8rem; } .error-page__title span { color: var(--primary); text-shadow: 0 0 25px rgba(209, 0, 0, 0.7); } .error-page__subtitle { font-size: 1.1rem; margin-bottom: 0.6rem; } .error-page__text { font-size: 0.98rem; color: var(--text-light); max-width: 460px; margin-bottom: 1.8rem; } .error-page__actions { display: flex; flex-wrap: wrap; gap: 1rem; } .error-page__visual { position: relative; display: flex; align-items: center; justify-content: center; } .error-page__badge { position: absolute; top: 0; right: 12%; width: 64px; height: 64px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); display: flex; align-items: center; justify-content: center; box-shadow: 0 0 30px rgba(209, 0, 0, 0.8); } .error-page__badge i { font-size: 1.6rem; } .error-page__ring { width: 260px; height: 220px; border-radius: 18px; border: 2px solid rgba(255, 255, 255, 0.2); position: relative; background: linear-gradient(to bottom, rgba(255, 255, 255, 0.12), rgba(0, 0, 0, 0.85)); box-shadow: 0 25px 80px rgba(0, 0, 0, 0.9); } .error-page__rope { position: absolute; left: 10%; right: 10%; height: 4px; border-radius: 999px; background: linear-gradient(90deg, rgba(255, 255, 255, 0.15), rgba(209, 0, 0, 0.6)); } .error-page__rope--top { top: 26%; } .error-page__rope--middle { top: 50%; } .error-page__rope--bottom { top: 74%; } .error-page__post { position: absolute; width: 10px; height: 90px; background: linear-gradient(to bottom, #f5f5f5, #888); box-shadow: 0 0 12px rgba(0, 0, 0, 0.7); border-radius: 12px; } .error-page__post--tl { left: 10%; bottom: 8%; } .error-page__post--tr { right: 10%; bottom: 8%; } .error-page__post--bl { left: 10%; bottom: -8%; } .error-page__post--br { right: 10%; bottom: -8%; } @media (max-width: 900px) { .error-page { grid-template-columns: 1fr; text-align: center; } .error-page__content { order: 2; } .error-page__actions { justify-content: center; } .error-page__text { margin-left: auto; margin-right: auto; } } @media (max-width: 480px) { .error-page__ring { width: 220px; height: 220px; } .error-page__badge { width: 56px; height: 56px; } } /* Утилитарные классы */ .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } .mb-1 { margin-bottom: 1rem; } .mb-2 { margin-bottom: 2rem; } .mt-1 { margin-top: 1rem; } .mt-2 { margin-top: 2rem; } .flex { display: flex; } .flex-center { display: flex; align-items: center; justify-content: center; } .flex-between { display: flex; align-items: center; justify-content: space-between; } .grid { display: grid; gap: 1.5rem; } /* Адаптивность */ @media (max-width: 768px) { .btn { padding: 0.875rem 1.5rem; font-size: 1rem; width: 100%; justify-content: center; } .modal__content { padding: 1.5rem; } .modal-schedule__grid { grid-template-columns: 1fr; } }