#mm-overlay { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; background: rgba(5, 5, 15, 0.96); opacity: 0; pointer-events: none; transition: opacity 0.4s ease; } #mm-overlay.mm-visible { opacity: 1; pointer-events: all; } #mm-pixi { position: absolute; inset: 0; z-index: 0; pointer-events: none; } #mm-content { position: relative; z-index: 1; text-align: center; width: 100%; max-width: 680px; padding: 0 24px; } .mm-phase { display: none; } .mm-phase.mm-active { display: block; } /* scanning radar ring */ .mm-radar { width: 160px; height: 160px; border-radius: 50%; border: 2px solid rgba(108,92,231,0.3); margin: 0 auto; position: relative; display: flex; align-items: center; justify-content: center; } .mm-radar::before, .mm-radar::after { content: ''; position: absolute; border-radius: 50%; border: 1px solid rgba(108,92,231,0.25); } .mm-radar::before { width: 110px; height: 110px; } .mm-radar::after { width: 60px; height: 60px; border-color: rgba(0,206,201,0.3); } .mm-radar-sweep { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 0deg, rgba(108,92,231,0) 60%, rgba(108,92,231,0.6) 100%); animation: radarSpin 1.8s linear infinite; } @keyframes radarSpin { to { transform: rotate(360deg); } } .mm-radar-dot { width: 10px; height: 10px; border-radius: 50%; background: #6c5ce7; box-shadow: 0 0 12px #6c5ce7; animation: dotPing 1.8s ease-in-out infinite; } @keyframes dotPing { 0%,100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.6); opacity: 0.6; } } /* scanning text dots */ .mm-dots::after { content: ''; animation: dotsDot 1.5s steps(4, end) infinite; } @keyframes dotsDot { 0% { content: ''; } 25% { content: '.'; } 50% { content: '..'; } 75% { content: '...'; } } /* VS arena */ .mm-arena { display: flex; align-items: center; justify-content: center; gap: 24px; } .mm-player { display: flex; flex-direction: column; align-items: center; gap: 12px; animation: playerIn 0.5s cubic-bezier(0.22,1,0.36,1) both; } .mm-player.mm-right { animation-name: playerInRight; } @keyframes playerIn { from { opacity:0; transform: translateX(-50px); } to { opacity:1; transform: none; } } @keyframes playerInRight { from { opacity:0; transform: translateX( 50px); } to { opacity:1; transform: none; } } .mm-avatar { width: 96px; height: 96px; border-radius: 50%; display: flex; align-items: center; justify-content: center; position: relative; } .mm-avatar::after { content: ''; position: absolute; inset: -4px; border-radius: 50%; background: linear-gradient(135deg, #6c5ce7, #00cec9); z-index: -1; animation: avatarGlow 2s ease-in-out infinite; } .mm-avatar.mm-enemy::after { background: linear-gradient(135deg, #fd79a8, #e17055); } @keyframes avatarGlow { 0%,100% { opacity: 0.7; transform: scale(1); } 50% { opacity: 1; transform: scale(1.05); } } .mm-vs { font-family: 'Orbitron', sans-serif; font-size: 2.5rem; font-weight: 900; background: linear-gradient(135deg, #6c5ce7, #fd79a8); -webkit-background-clip: text; -webkit-text-fill-color: transparent; animation: vsFlash 0.4s ease; } @keyframes vsFlash { 0% { transform: scale(0.5); opacity: 0; } 70% { transform: scale(1.2); } 100% { transform: scale(1); opacity: 1; } } /* found flash overlay */ .mm-found-flash { position: absolute; inset: 0; background: radial-gradient(ellipse at center, rgba(108,92,231,0.35) 0%, transparent 70%); animation: foundFlash 0.6s ease both; pointer-events: none; } @keyframes foundFlash { 0% { opacity: 0; transform: scale(0.6); } 50% { opacity: 1; } 100% { opacity: 0; } } /* match starting countdown */ .mm-countdown { font-family: 'Orbitron', sans-serif; font-size: 5rem; font-weight: 900; color: #fff; text-shadow: 0 0 40px rgba(108,92,231,0.8); line-height: 1; } .mm-starting-bar { height: 4px; border-radius: 2px; background: linear-gradient(90deg, #6c5ce7, #00cec9); width: 0%; transition: width 0.9s linear; margin: 16px auto 0; max-width: 300px; } /* cancel button */ .mm-cancel { margin-top: 32px; display: inline-flex; align-items: center; gap-8px; padding: 10px 24px; border-radius: 8px; border: 1px solid rgba(255,255,255,0.15); color: #888; font-size: 0.875rem; background: transparent; transition: all 0.2s ease; } .mm-cancel:hover { border-color: #fd79a8; color: #fd79a8; } /* game card clickable */ .game-card.playable { cursor: pointer; }
Поиск соперника
СОПЕРНИК НАЙДЕН!
Матч начинается
Мгновенный матчмейкинг, молниеносные раунды и чистый азарт. Найди соперника за 3 секунды и докажи, что ты лучший.
Быстрые игры на любой вкус. Каждая партия — новый вызов.
1 на 1. Реакция, стратегия, и немного удачи. Кто быстрее — тот победит.
Стратегия в реальном времени. Захватывай башни противника быстрее, чем он твои.
Покажи снайперскую точность. Каждый промах — очко сопернику.
Решай быстрее соперника. Логика, скорость, эпичные камбеки.
Уворачивайся от астероидов и обгоняй соперников на орбите.
Новые игры уже в разработке.
Следи за обновлениями!
Создано для тех, кто ценит скорость, стиль и эпичность.
Никаких загрузок и установок. Открыл — играешь. Всё в браузере.
Алгоритм подберёт равного соперника за секунды. Честные бои.
Побеждай, поднимайся в рейтинге и становись легендой EPICH.
ПК, телефон, планшет — играй откуда угодно с кем угодно.
Быстрые дуэли, стратегии, головоломки — бери что нравится.
Матчмейкинг за 3 секунды. Без ожидания, без скуки.
Покажи класс, заработай рейтинг и попади в топ.
Тысячи игроков уже сражаются. Твоя очередь.