.ladder-page { min-height: 100vh; background: var(--bg-primary); position: relative; overflow-x: hidden; padding-bottom: 80px; } /* Новогодние снежинки - тонкие, не навязчивые */ .new-year-decorations { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1; opacity: 0.3; } .snowflake { position: absolute; color: var(--text-secondary); font-size: 16px; animation: fall linear infinite; animation-duration: 15s; } .snowflake:nth-child(1) { left: 10%; animation-delay: 0s; animation-duration: 12s; } .snowflake:nth-child(2) { left: 30%; animation-delay: 2s; animation-duration: 18s; } .snowflake:nth-child(3) { left: 50%; animation-delay: 4s; animation-duration: 14s; } .snowflake:nth-child(4) { left: 70%; animation-delay: 1s; animation-duration: 16s; } .snowflake:nth-child(5) { left: 85%; animation-delay: 3s; animation-duration: 17s; } .snowflake:nth-child(6) { left: 20%; animation-delay: 5s; animation-duration: 20s; } @keyframes fall { 0% { transform: translateY(-100vh) rotate(0deg); opacity: 0.3; } 100% { transform: translateY(100vh) rotate(360deg); opacity: 0; } } .ladder-header { position: sticky; top: 0; background: var(--bg-secondary); padding: 16px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--divider-color); z-index: 10; } .ladder-header h1 { font-size: 20px; font-weight: 700; color: var(--text-primary); } .back-btn { width: 44px; height: 44px; border-radius: 50%; background: transparent; color: var(--text-primary); display: flex; align-items: center; justify-content: center; border: none; cursor: pointer; } /* Карточка отсчета - в стиле Nakama с новогодними акцентами */ .countdown-card { margin: 16px; background: var(--bg-secondary); border-radius: 16px; padding: 20px; box-shadow: 0 2px 8px var(--shadow-md); position: relative; overflow: hidden; border: 2px solid transparent; background-image: linear-gradient(var(--bg-secondary), var(--bg-secondary)), linear-gradient(135deg, #FFD700, #FFA500); background-origin: border-box; background-clip: padding-box, border-box; } .countdown-title { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; position: relative; z-index: 1; } .countdown-title h2 { font-size: 20px; font-weight: 700; color: var(--text-primary); } .gift-icon { color: #FF6347; animation: bounce 2s ease-in-out infinite; } @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } } .countdown-timer { display: flex; justify-content: center; align-items: center; gap: 8px; margin: 20px 0; position: relative; z-index: 1; } .countdown-item { display: flex; flex-direction: column; align-items: center; gap: 4px; } .countdown-value { font-size: 32px; font-weight: 700; color: #FFD700; min-width: 60px; text-align: center; } .countdown-label { font-size: 12px; color: var(--text-secondary); text-transform: uppercase; } .countdown-separator { font-size: 24px; color: #FFD700; font-weight: 700; margin: 0 4px; } .countdown-slogan { text-align: center; color: var(--text-secondary); font-size: 14px; font-style: italic; margin-top: 16px; position: relative; z-index: 1; } /* Топ пользователей - в стиле Nakama */ .ladder-top { margin: 16px; background: var(--bg-secondary); border-radius: 16px; padding: 16px; box-shadow: 0 2px 8px var(--shadow-md); } .ladder-top-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 16px; gap: 12px; } .ladder-top-title { flex: 1; } .ladder-top-header h2 { font-size: 20px; font-weight: 700; color: var(--text-primary); margin-bottom: 4px; } .ladder-prizes { font-size: 12px; color: var(--text-secondary); margin: 0; line-height: 1.4; } .info-btn { display: flex; align-items: center; gap: 6px; padding: 8px 12px; background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 20px; color: var(--text-primary); font-size: 13px; cursor: pointer; transition: all 0.2s; } .info-btn:active { transform: scale(0.95); background: var(--divider-color); } .info-btn svg { color: #FFD700; } .top-users-list { display: flex; flex-direction: column; padding: 8px 0; } .top-user-item { display: flex; align-items: center; gap: 12px; padding: 8px 16px; background: transparent; border-bottom: 1px solid rgba(0, 0, 0, 0.03); transition: all 0.2s; min-height: 54px; } [data-theme="dark"] .top-user-item { border-bottom-color: rgba(255, 255, 255, 0.03); } .top-user-item:last-child { border-bottom: none; } .top-user-item.current-user { background: rgba(255, 215, 0, 0.05); } .user-rank { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex-shrink: 0; } .rank-icon { filter: drop-shadow(0 0 4px currentColor); } .rank-icon.gold { color: #FFD700; } .rank-icon.silver { color: #C0C0C0; } .rank-icon.bronze { color: #CD7F32; } .rank-number { font-size: 20px; font-weight: 700; color: var(--text-primary); } .user-avatar { width: 54px; height: 54px; border-radius: 50%; object-fit: cover; border: none; flex-shrink: 0; } .user-info { flex: 1; min-width: 0; display: flex; align-items: center; } .user-name { font-size: 15px; font-weight: 600; color: var(--text-primary); display: flex; align-items: center; gap: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .user-stats { display: flex; align-items: center; gap: 12px; flex-shrink: 0; margin-left: auto; flex-direction: column; align-items: flex-end; gap: 4px; } .user-tickets { font-size: 14px; color: var(--text-primary); font-weight: 500; white-space: nowrap; } .user-prize-info { display: flex; align-items: center; gap: 6px; white-space: nowrap; } .user-rank-text { font-size: 12px; color: var(--text-secondary); font-weight: 500; } .user-prize { font-size: 14px; color: var(--text-primary); font-weight: 600; } .current-badge { color: #FFD700; filter: drop-shadow(0 0 4px #FFD700); animation: twinkle 2s ease-in-out infinite; } @keyframes twinkle { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } /* Карточка текущего пользователя */ .current-user-card { margin: 16px; background: var(--bg-secondary); border-radius: 16px; padding: 16px; box-shadow: 0 2px 8px var(--shadow-md); } .current-user-card h3 { font-size: 18px; font-weight: 600; color: var(--text-primary); margin-bottom: 12px; } .current-user-item { display: flex; align-items: center; gap: 12px; padding: 8px 0; background: transparent; border-bottom: 1px solid rgba(0, 0, 0, 0.03); min-height: 54px; } [data-theme="dark"] .current-user-item { border-bottom-color: rgba(255, 255, 255, 0.03); } /* Модальное окно с информацией */ .info-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 10000; padding: 20px; animation: fadeIn 0.3s; } .info-modal { max-width: 500px; max-height: 80vh; overflow-y: auto; background: var(--bg-secondary); border-radius: 16px; box-shadow: 0 4px 20px var(--shadow-lg); position: relative; z-index: 10001; } .info-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 16px; border-bottom: 1px solid var(--divider-color); position: sticky; top: 0; background: var(--bg-secondary); z-index: 10002; } .info-modal-header h2 { font-size: 20px; font-weight: 700; color: var(--text-primary); } .close-btn { width: 32px; height: 32px; border-radius: 50%; background: var(--bg-primary); color: var(--text-primary); border: none; font-size: 24px; display: flex; align-items: center; justify-content: center; cursor: pointer; line-height: 1; } .info-modal-content { padding: 16px; position: relative; z-index: 1; } .info-section { margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid var(--divider-color); } .info-section:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .info-section h3 { font-size: 16px; font-weight: 600; color: var(--text-primary); margin-bottom: 8px; } .info-section p { font-size: 14px; color: var(--text-primary); line-height: 1.6; margin-bottom: 4px; } .info-limit { color: var(--text-secondary); font-size: 13px; font-style: italic; } .info-section.anti-fraud { background: var(--bg-primary); padding: 12px; border-radius: 8px; border: 1px solid var(--border-color); } .info-section.anti-fraud h3 { color: #FF6347; } .loading-state { display: flex; justify-content: center; align-items: center; padding: 40px; } .spinner { width: 40px; height: 40px; border: 3px solid var(--divider-color); border-top-color: #FFD700; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Темная тема */ [data-theme="dark"] .countdown-card { background-image: linear-gradient(var(--bg-secondary), var(--bg-secondary)), linear-gradient(135deg, #FFD700, #FFA500); } [data-theme="dark"] .snowflake { color: var(--text-secondary); opacity: 0.2; } [data-theme="dark"] .countdown-value { color: #FFD700; } [data-theme="dark"] .countdown-separator { color: #FFD700; } [data-theme="dark"] .user-tickets { color: var(--text-primary); }