/
NoWhoFU
/
GalTech
Обзор
Документация
Войти
/
NoWhoFU
/
GalTech
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
frontend/src/style.css
1 205 строк
29 KB
VladKost999
визуальные правки для мобилки
03 июн 2026, 09:22
03 июн 2026, 09:22
281fcb4
Код
Авторство
О чём код?
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); /* ========================================================================== МАППИНГ ДИЗАЙН-ТОКЕНОВ PRIMEVUE V4 В CSS ПЕРЕМЕННЫЕ ========================================================================== */ :root { --primary-color: var(--p-primary-color); --text-color: var(--p-text-color); --text-color-secondary: var(--p-text-muted-color, var(--p-text-secondary-color)); --surface-border: var(--p-content-border-color); --surface-ground: var(--p-surface-950); --surface-section: rgba(15, 23, 42, 0.45); --surface-card: var(--p-card-background); --surface-overlay: var(--p-overlay-select-background); --border-radius: var(--p-border-radius-md, 12px); --mood-bg-gradient: linear-gradient(135deg, var(--p-surface-950) 0%, var(--p-surface-900) 100%); } /* ========================================================================== СТРУКТУРНАЯ СЕТКА И КАРКАС ПРИЛОЖЕНИЯ ========================================================================== */ /* Сброс базовых стилей */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', sans-serif; -webkit-font-smoothing: antialiased; } body { background-color: var(--surface-ground); color: var(--text-color); overflow: hidden; height: 100vh; width: 100vw; } /* ========================================================================== СТРУКТУРНАЯ СЕТКА И КАРКАС ПРИЛОЖЕНИЯ ========================================================================== */ .galtech-dashboard { display: flex; height: 100vh; width: 100vw; background: var(--mood-bg-gradient); background-attachment: fixed; transition: background 0.5s ease; } /* Левая навигационная панель */ .sidebar-panel { width: 280px; background: var(--surface-section); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-right: 1px solid var(--surface-border); padding: 30px 20px; display: flex; flex-direction: column; justify-content: space-between; z-index: 10; } .brand-header { margin-bottom: 35px; } .brand-logo { font-size: 24px; font-weight: 800; letter-spacing: -0.5px; background: linear-gradient(135deg, #ffffff 40%, var(--primary-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } .brand-version { display: block; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px; color: var(--text-color-secondary); margin-top: 4px; } .navigation-menu { display: flex; flex-direction: column; gap: 8px; flex-grow: 1; } /* Стабильные и ровные кнопки боковой панели */ .navigation-menu .p-button { width: 100% !important; justify-content: flex-start !important; padding: 12px 16px !important; border-radius: 12px !important; font-weight: 500 !important; font-size: 14px !important; transition: all 0.25s ease !important; border: none !important; } .navigation-menu .p-button-secondary { color: var(--text-color-secondary) !important; background: transparent !important; } .navigation-menu .p-button-secondary:hover { background: rgba(255, 255, 255, 0.04) !important; color: var(--text-color) !important; } /* Активный пункт бокового меню с мягким размытым градиентом */ .navigation-menu .p-button:not(.p-button-secondary) { background: linear-gradient(135deg, var(--primary-color) 0%, #7546e8 100%) !important; color: #ffffff !important; box-shadow: 0 4px 12px rgba(117, 70, 232, 0.2) !important; } body:not(.dark-mode) .navigation-menu .p-button:not(.p-button-secondary) { background: linear-gradient(135deg, var(--primary-color) 0%, #6366f1 100%) !important; box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15) !important; } body:not(.dark-mode) .navigation-menu .p-button-secondary:hover { background: rgba(0, 0, 0, 0.03) !important; color: #1e293b !important; } .sidebar-footer { border-top: 1px solid var(--surface-border); padding-top: 20px; } .user-avatar-area { display: flex; align-items: center; gap: 12px; min-width: 0; } .avatar-premium { flex-shrink: 0 !important; } .user-details { display: flex; flex-direction: column; min-width: 0; flex-grow: 1; } .user-fullname { font-size: 13px; font-weight: 600; color: var(--text-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .user-role { font-size: 11px; color: var(--text-color-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Правая контентная область */ .main-content { flex-grow: 1; display: flex; flex-direction: column; height: 100vh; position: relative; } /* Скролл контента */ .content-scrollable { flex-grow: 1; padding: 35px 35px 120px 35px; overflow-y: auto; } .content-scrollable::-webkit-scrollbar { width: 6px; } .content-scrollable::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.1); border-radius: 3px; } /* Секция Hero */ .section-hero { margin-bottom: 30px; } .hero-title { font-size: 32px; font-weight: 800; letter-spacing: -0.5px; color: var(--text-color); margin-bottom: 6px; } .hero-subtitle { font-size: 14px; color: var(--text-color-secondary); line-height: 1.5; } /* ========================================================================== СОВРЕМЕННЫЙ ФЛЕКСОВЫЙ ДИЗАЙН ПОИСКА С НЕОНОВЫМ ГРАДИЕНТОМ ========================================================================== */ .search-flex-row { display: flex; align-items: center; gap: 12px; width: 100%; margin-bottom: 30px; background: rgba(30, 41, 59, 0.3) !important; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); padding: 8px; border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.08); position: relative; transition: border-color 0.3s; } /* Эффект благородного размытого неонового свечения (очень мягкий) */ .search-flex-row::before { content: ''; position: absolute; top: -1px; left: -1px; right: -1px; bottom: -1px; background: linear-gradient(135deg, var(--primary-color) 0%, #6366f1 100%); border-radius: 16px; z-index: -1; opacity: 0.05; transition: opacity 0.3s ease, box-shadow 0.3s ease; } .search-flex-row:hover::before { opacity: 0.12; } .search-flex-row:focus-within::before { opacity: 0.22; box-shadow: 0 0 30px rgba(99, 102, 241, 0.12); } /* Поле ввода поиска */ .search-field-container { display: flex; align-items: center; flex-grow: 1; background: rgba(15, 23, 42, 0.55) !important; border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.05); padding: 0 16px; height: 48px; transition: border-color 0.25s, box-shadow 0.25s; } body:not(.dark-mode) .search-field-container { background: rgba(255, 255, 255, 0.8) !important; border: 1px solid rgba(0, 0, 0, 0.08); } .search-field-container:focus-within { border-color: var(--primary-color); } .search-field-icon { color: var(--text-color-secondary); font-size: 16px; margin-right: 12px; } .search-input-modern.p-inputtext { background: transparent !important; border: none !important; box-shadow: none !important; padding: 0 !important; height: 100% !important; width: 100% !important; color: var(--text-color) !important; font-size: 14px; } .search-input-modern.p-inputtext:focus { outline: none !important; box-shadow: none !important; } /* Выпадающий список Select v4 */ .dropdown-modern.p-select { height: 48px !important; width: 220px !important; background: rgba(15, 23, 42, 0.55) !important; border: 1px solid rgba(255, 255, 255, 0.05) !important; border-radius: 12px !important; display: flex !important; align-items: center !important; transition: border-color 0.25s; } body:not(.dark-mode) .dropdown-modern.p-select { background: rgba(255, 255, 255, 0.8) !important; border: 1px solid rgba(0, 0, 0, 0.08) !important; } .dropdown-modern.p-select:hover { border-color: var(--primary-color) !important; } /* Кнопка сброса с современным градиентным ховером */ .refresh-button-modern.p-button { height: 48px !important; width: 48px !important; background: rgba(15, 23, 42, 0.55) !important; border: 1px solid rgba(255, 255, 255, 0.05) !important; border-radius: 12px !important; color: var(--text-color) !important; transition: all 0.25s ease; } body:not(.dark-mode) .refresh-button-modern.p-button { background: rgba(255, 255, 255, 0.8) !important; border: 1px solid rgba(0, 0, 0, 0.08) !important; color: #1e293b !important; } .refresh-button-modern.p-button:hover { background: linear-gradient(135deg, var(--primary-color) 0%, #7c3aed 100%) !important; color: #ffffff !important; border-color: transparent !important; box-shadow: 0 4px 12px rgba(124, 58, 237, 0.2); transform: translateY(-1px); } /* ========================================================================== АДАПТИВНОСТЬ ПОД МОБИЛЬНЫЕ УСТРОЙСТВА (FLEX-BASED RESPONSIVENESS) ========================================================================== */ @media (max-width: 768px) { .galtech-dashboard { flex-direction: column; overflow-y: auto; height: 100vh; } /* Левая панель становится роскошным нижним навигационным меню (как в Telegram Mini App) */ .sidebar-panel { position: fixed !important; bottom: 0 !important; left: 0 !important; right: 0 !important; width: 100% !important; height: 65px !important; border-right: none !important; border-top: 1px solid var(--surface-border) !important; border-bottom: none !important; padding: 6px 16px !important; flex-direction: row !important; align-items: center !important; justify-content: space-around !important; background: rgba(15, 23, 42, 0.85) !important; backdrop-filter: blur(25px) !important; -webkit-backdrop-filter: blur(25px) !important; z-index: 1000 !important; border-radius: 16px 16px 0 0 !important; box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.4) !important; } body:not(.dark-mode) .sidebar-panel { background: rgba(255, 255, 255, 0.9) !important; border-top: 1px solid rgba(0, 0, 0, 0.08) !important; box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.08) !important; } .brand-header { display: none !important; } /* Флексовое горизонтальное нижнее меню */ .navigation-menu { flex-direction: row !important; width: 100% !important; justify-content: space-around !important; gap: 4px !important; flex-grow: 1 !important; } /* Кастомный ровный стиль кнопок в нижнем меню */ .navigation-menu .p-button { flex-direction: row !important; background: transparent !important; border: none !important; color: var(--text-color-secondary) !important; padding: 6px 8px !important; font-size: 10px !important; height: 48px !important; gap: 10px !important; box-shadow: none !important; flex-grow: 1 !important; justify-content: center !important; align-items: center !important; border-radius: 12px !important; } .navigation-menu .p-button i, .navigation-menu .p-button span, .navigation-menu .p-button .p-button-icon, .navigation-menu .p-button .p-button-icon-left { font-size: 20px !important; margin-right: 0 !important; margin-left: 0 !important; margin-bottom: 2px !important; } /* Активная кнопка в нижнем меню */ .navigation-menu .p-button:not(.p-button-secondary) { color: var(--primary-color) !important; background: rgba(82, 136, 193, 0.08) !important; font-weight: 700 !important; box-shadow: none !important; } .sidebar-footer { display: none !important; } /* Контент */ .main-content { height: auto !important; } .content-scrollable { padding: 20px 16px 100px 16px !important; overflow-y: visible !important; } /* Разборка современного поиска в адаптивный вертикальный флекс */ .search-flex-row { flex-direction: column !important; background: none !important; border: none !important; padding: 0 !important; gap: 10px !important; } .search-flex-row::before { display: none !important; } .search-field-container, .dropdown-modern.p-select { width: 100% !important; height: 48px !important; border-radius: 12px !important; background: rgba(30, 41, 59, 0.45) !important; border: 1px solid var(--surface-border) !important; } body:not(.dark-mode) .search-field-container, body:not(.dark-mode) .dropdown-modern.p-select { background: rgba(255, 255, 255, 0.85) !important; border: 1px solid rgba(0, 0, 0, 0.08) !important; } .library-info-layout { grid-template-columns: 1fr !important; } /* Нижний плеер становится парящей пилюлей над навигационным баром */ .global-music-bar { bottom: 75px !important; height: 64px !important; margin: 0 16px !important; border-radius: 16px !important; border: 1px solid rgba(255, 255, 255, 0.08) !important; padding: 0 12px !important; background: rgba(15, 23, 42, 0.9) !important; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3) !important; justify-content: space-between !important; width: calc(100% - 32px) !important; } body:not(.dark-mode) .global-music-bar { background: rgba(255, 255, 255, 0.95) !important; border: 1px solid rgba(0, 0, 0, 0.08) !important; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06) !important; } .music-bar-left { width: auto !important; flex-grow: 1 !important; } .music-bar-center { width: auto !important; flex-grow: 0 !important; max-width: none !important; } .music-bar-right { display: none !important; } .playback-progress-container { display: none !important; } .music-track-name { font-size: 12px !important; } .music-track-details { max-width: 140px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; font-size: 10px !important; } /* Скругляем верхние углы выдвижного окна на мобилках */ .sidebar-details-premium.p-drawer-bottom { border-radius: 24px 24px 0 0 !important; border-left: none !important; border-top: 1px solid var(--surface-border) !important; box-shadow: 0 -10px 40px rgba(0, 0, 0, 0.4) !important; } /* Скрываем кнопку закрытия и шапку на мобилках */ .sidebar-details-premium.p-drawer-bottom .p-drawer-close-button, .sidebar-details-premium.p-drawer-bottom .p-drawer-header { display: none !important; } /* Индикатор drag handle для свайпа вниз */ .sidebar-details-premium.p-drawer-bottom::before { content: ''; position: absolute; top: 8px; left: 50%; transform: translateX(-50%); width: 40px; height: 4px; background: rgba(255, 255, 255, 0.15); border-radius: 2px; z-index: 10; } body:not(.dark-mode) .sidebar-details-premium.p-drawer-bottom::before { background: rgba(0, 0, 0, 0.15); } } /* ========================================================================== КОМПОНЕНТЫ И СЕТКА КАТАЛОГА ========================================================================== */ .books-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 25px; } /* Нативная PrimeVue карточка с идеальным выравниванием по сетке */ .book-card-premium.p-card { height: 100%; display: flex; flex-direction: column; background: rgba(30, 41, 59, 0.45) !important; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid var(--surface-border) !important; border-radius: var(--border-radius) !important; overflow: hidden !important; transition: transform 0.2s ease, box-shadow 0.2s ease !important; } body:not(.dark-mode) .book-card-premium.p-card { background: rgba(255, 255, 255, 0.85) !important; border: 1px solid rgba(0, 0, 0, 0.08) !important; } .book-card-premium.p-card:hover { transform: translateY(-4px); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.25) !important; border-color: var(--primary-color) !important; } .book-card-premium.p-card .p-card-body { padding: 20px !important; flex-grow: 1; display: flex; flex-direction: column; justify-content: space-between; } .book-card-premium.p-card .p-card-title { font-size: 19px !important; font-weight: 800 !important; letter-spacing: -0.3px !important; color: #ffffff !important; margin-bottom: 6px !important; padding: 0 !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } body:not(.dark-mode) .book-card-premium.p-card .p-card-title { color: #0f172a !important; } .book-card-premium.p-card .p-card-subtitle { font-size: 13px !important; color: var(--primary-color) !important; font-weight: 600 !important; margin-bottom: 12px !important; padding: 0 !important; } .book-card-premium.p-card .p-card-content { padding: 0 !important; font-size: 13px !important; color: var(--text-color-secondary) !important; line-height: 1.5 !important; margin-bottom: 20px !important; height: 60px !important; /* Строго фиксированная высота для 3 строк описания */ overflow: hidden !important; text-overflow: ellipsis !important; display: -webkit-box !important; -webkit-line-clamp: 3 !important; -webkit-box-orient: vertical !important; } .book-card-premium.p-card .p-card-footer { padding: 12px 0 0 0 !important; border-top: 1px solid var(--surface-border) !important; } .card-cover-container { height: 180px; position: relative; overflow: hidden; background: #0f172a; } .card-cover-image { width: 100%; height: 100%; background-size: cover; background-position: center; } .card-cover-overlay { position: absolute; top: 12px; left: 12px; right: 12px; display: flex; justify-content: space-between; align-items: center; } .genre-tag-premium { background: rgba(15, 23, 42, 0.8) !important; color: #ffffff !important; font-size: 11px !important; padding: 3px 8px !important; } .status-tag-premium { font-size: 10px !important; padding: 3px 8px !important; } .card-footer-actions { display: flex; justify-content: space-between; align-items: center; width: 100%; } /* Интерактивная карточка в стиле Instagram */ .clickable-card { cursor: pointer; user-select: none; } /* Метка избранного в нижнем углу обложки (прозрачная/стеклянная по умолчанию) */ .card-favorite-badge { position: absolute; bottom: 12px; right: 12px; background: rgba(15, 23, 42, 0.5) !important; backdrop-filter: blur(4px) !important; -webkit-backdrop-filter: blur(4px) !important; border: 1px solid rgba(255, 255, 255, 0.25) !important; color: rgba(255, 255, 255, 0.9) !important; width: 28px !important; height: 28px !important; border-radius: 50% !important; display: flex !important; align-items: center !important; justify-content: center !important; z-index: 5 !important; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) !important; } /* Эффект наведения на сердечко */ .card-favorite-badge:hover { transform: scale(1.15) !important; background: rgba(239, 68, 68, 0.8) !important; color: white !important; border-color: transparent !important; box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3) !important; } /* Активное состояние сердечка (в избранном) */ .card-favorite-badge.is-active { background: rgba(239, 68, 68, 0.95) !important; border-color: transparent !important; color: white !important; box-shadow: 0 4px 12px rgba(239, 68, 68, 0.45) !important; } /* Instagram-style всплывающее сердце по двойному тапу */ .heart-overlay-anim { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.25); z-index: 6; pointer-events: none; } .heart-overlay-anim i { font-size: 64px !important; color: #ef4444 !important; text-shadow: 0 0 20px rgba(239, 68, 68, 0.8), 0 0 40px rgba(239, 68, 68, 0.5) !important; animation: heartBeating 0.7s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards !important; } @keyframes heartBeating { 0% { transform: scale(0); opacity: 0; } 15% { transform: scale(1.2); opacity: 0.9; } 30% { transform: scale(0.9); opacity: 0.9; } 45% { transform: scale(1); opacity: 1; } 80% { transform: scale(1); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } } /* ========================================================================== НИЖНИЙ ПЛЕЕР (GLOBAL MUSIC BAR) ========================================================================== */ .global-music-bar { position: fixed; bottom: 0; left: 0; right: 0; height: 85px; background: rgba(15, 23, 42, 0.85); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-top: 1px solid var(--surface-border); display: flex; align-items: center; justify-content: space-between; padding: 0 35px; z-index: 100; transform: translateY(100%); transition: transform 0.4s ease; } .global-music-bar.active { transform: translateY(0); } .music-bar-left { display: flex; align-items: center; gap: 12px; width: 280px; } .music-disc-premium { width: 44px; height: 44px; background: var(--primary-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; animation: spin 8s linear infinite; animation-play-state: paused; } .music-disc-premium.playing { animation-play-state: running; } .music-disc-icon { font-size: 14px; color: white; } .music-track-meta { display: flex; flex-direction: column; } .music-track-name { font-size: 13px; font-weight: 700; color: white; } .music-track-details { font-size: 11px; color: var(--text-color-secondary); } .music-bar-center { display: flex; flex-direction: column; align-items: center; gap: 6px; flex-grow: 1; max-width: 450px; } .playback-controls { display: flex; align-items: center; } .playback-play-btn { background: white !important; color: black !important; width: 32px !important; height: 32px !important; border: none !important; } .playback-progress-container { display: flex; align-items: center; gap: 10px; width: 100%; } .time-label { font-size: 10px; color: var(--text-color-secondary); width: 30px; } .music-bar-right { width: 280px; display: flex; justify-content: flex-end; } /* ========================================================================== БИБЛИОТЕКА И ДЕТАЛЬНАЯ ПАНЕЛЬ ========================================================================== */ .library-info-layout { display: grid; grid-template-columns: 1fr 1.2fr; gap: 25px; } .library-card-info { background: rgba(30, 41, 59, 0.2); border: 1px solid var(--surface-border); border-radius: var(--border-radius); padding: 25px; } .library-subheading { font-size: 18px; font-weight: 700; margin-bottom: 20px; } .info-row-premium { display: flex; gap: 12px; margin-bottom: 16px; } .info-row-icon { font-size: 18px; color: var(--primary-color); } .info-row-title { font-size: 11px; font-weight: 600; text-transform: uppercase; color: var(--text-color-secondary); } .info-row-value { font-size: 14px; color: var(--text-color); margin-top: 2px; } .library-map-container { border-radius: var(--border-radius); overflow: hidden; border: 1px solid var(--surface-border); height: 350px; } .map-mockup-large { width: 100%; height: 100%; background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.7)), url('https://images.unsplash.com/photo-1524995997946-a1c2e315a42f?auto=format&fit=crop&w=800&q=80'); background-size: cover; background-position: center; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; } .map-marker-large { font-size: 40px; color: #ef4444; } .map-address-banner-premium { position: absolute; bottom: 20px; background: rgba(15, 23, 42, 0.9); padding: 8px 16px; border-radius: 10px; font-size: 12px; } /* Детальная панель */ .sidebar-details-premium.p-sidebar, .sidebar-details-premium.p-drawer { background: rgba(15, 23, 42, 0.95) !important; backdrop-filter: blur(25px); -webkit-backdrop-filter: blur(25px); border-left: 1px solid var(--surface-border) !important; } body:not(.dark-mode) .sidebar-details-premium.p-sidebar, body:not(.dark-mode) .sidebar-details-premium.p-drawer { background: rgba(255, 255, 255, 0.96) !important; border-left: 1px solid rgba(0, 0, 0, 0.08) !important; } .sheet-body-scroll { height: 100%; overflow-y: auto; padding: 10px 0; } .sheet-book-banner { height: 200px; border-radius: var(--border-radius); background-size: cover; background-position: center; margin-bottom: 20px; } .sheet-book-title-text { font-size: 20px; font-weight: 800; color: white; } .sheet-book-author-text { font-size: 14px; color: var(--primary-color); font-weight: 600; margin-top: 4px; } .sheet-section { margin-bottom: 20px; } .sheet-section-title-premium { font-size: 12px; font-weight: 700; text-transform: uppercase; color: var(--text-color-secondary); margin-bottom: 8px; } .sheet-description-text { font-size: 13px; line-height: 1.5; color: #cbd5e1; } .locator-box-premium { background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 10px; padding: 12px; display: flex; gap: 10px; } .locator-icon { font-size: 20px; color: var(--primary-color); } .locator-index { font-weight: 700; font-size: 13px; color: white; } .locator-hint { font-size: 11px; color: var(--text-color-secondary); } .music-card-premium { background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: var(--border-radius); padding: 14px; } .music-card-meta { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .music-card-title { font-weight: 700; font-size: 13px; } .music-card-sub { font-size: 11px; color: var(--text-color-secondary); } .music-card-play-btn { width: 32px !important; height: 32px !important; } .music-timings { display: flex; justify-content: space-between; font-size: 10px; color: var(--text-color-secondary); } /* ========================================================================== ЗАСТАВКА И АНИМАЦИИ ========================================================================== */ .splash-screen { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: var(--surface-ground); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 9999; } .splash-logo { font-size: 36px; font-weight: 800; color: white; margin-bottom: 20px; } .splash-loader { width: 32px; height: 32px; border: 2px solid rgba(255, 255, 255, 0.05); border-top-color: var(--primary-color); border-radius: 50%; animation: spin 1s infinite linear; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Фикс для иконок PrimeVue в кнопках */ .p-button-icon-left { margin-right: 8px !important; } /* ========================================================================== СВЕТЛАЯ ТЕМА (LIGHT THEME OVERRIDES) ========================================================================== */ body:not(.dark-mode) { color: #1e293b !important; } body:not(.dark-mode) .brand-logo { background: linear-gradient(135deg, #1e293b 40%, var(--primary-color) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } body:not(.dark-mode) .user-fullname { color: #1e293b !important; } body:not(.dark-mode) .sidebar-panel { background: rgba(255, 255, 255, 0.45) !important; border-right: 1px solid rgba(0, 0, 0, 0.08) !important; } body:not(.dark-mode) .content-scrollable { background: transparent !important; } body:not(.dark-mode) .sheet-book-title-text, body:not(.dark-mode) .sheet-section-title-premium { color: #1e293b !important; } body:not(.dark-mode) .locator-box-premium { background: rgba(0, 0, 0, 0.03) !important; border: 1px solid rgba(0, 0, 0, 0.05) !important; } body:not(.dark-mode) .locator-index { color: #1e293b !important; } body:not(.dark-mode) .hero-title { color: #0f172a !important; } body:not(.dark-mode) .splash-screen { background: #f8fafc !important; } body:not(.dark-mode) .splash-logo { color: #0f172a !important; }