html, body { margin: 0; padding: 0; width: 100%; height: 100%; background: #000000; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background: #000000; color: #ffffff; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; height: 100vh; overflow: hidden; } .container { min-height: 100vh; display: flex; flex-direction: column; background: #000000 !important; position: relative; margin: 0; padding: 0; width: 100%; border: none !important; outline: none !important; } .tabs-container { padding: 15px 15px 0 15px; display: flex; justify-content: center; gap: 12px; background: #000000; } .tab { background: #111111; border: 1px solid #444444; border-radius: 20px; padding: 8px 20px; color: #ffffff; cursor: pointer; font-size: 13px; font-weight: 500; transition: all 0.3s ease; user-select: none; position: relative; } .tab:hover { background: #1a1a1a; border-color: #666666; box-shadow: 0 0 10px rgba(255, 255, 255, 0.15); } .tab.active { background: #0f0f0f; border-color: #ffffff; box-shadow: 0 0 15px rgba(255, 255, 255, 0.2); } .editor-container { flex: 1; padding: 20px; background: #000000; } .code-editor { width: 100%; height: 100%; background: #000000; border: 1px solid #333333; border-radius: 12px; padding: 20px; color: #ffffff; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; font-size: 14px; line-height: 1.6; resize: none; outline: none; box-shadow: inset 0 0 30px rgba(255, 255, 255, 0.05); transition: all 0.3s ease; } .code-editor:focus { border-color: #666666; box-shadow: inset 0 0 30px rgba(255, 255, 255, 0.1), 0 0 20px rgba(255, 255, 255, 0.1); } .code-editor::placeholder { color: #666666; font-style: italic; } /* Глянцевые эффекты */ .tab, .code-editor { backdrop-filter: blur(10px); } /* Скроллбар для textarea */ .code-editor::-webkit-scrollbar { width: 8px; } .code-editor::-webkit-scrollbar-track { background: #111111; border-radius: 4px; } .code-editor::-webkit-scrollbar-thumb { background: #333333; border-radius: 4px; transition: background 0.3s ease; } .code-editor::-webkit-scrollbar-thumb:hover { background: #555555; } /* Анимация появления */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .tabs-container { animation: fadeInUp 0.6s ease; } .editor-container { animation: fadeInUp 0.8s ease; } /* Медиа-запросы для мобильных устройств */ @media (max-width: 768px) { .tabs-container { padding: 15px 15px 0 15px; gap: 10px; } .tab { padding: 10px 18px; font-size: 13px; } .editor-container { padding: 15px; } .code-editor { padding: 15px; font-size: 13px; } } .editor-buttons { position: absolute; bottom: 30px; left: 30px; right: 30px; display: flex; gap: 10px; z-index: 10; animation: fadeInUp 1s ease; } .btn { background: #111111; border: 1px solid #444444; border-radius: 20px; padding: 8px 16px; color: #ffffff; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; font-size: 12px; cursor: pointer; transition: all 0.3s ease; backdrop-filter: blur(10px); } .btn:hover { background: #1a1a1a; border-color: #666666; box-shadow: 0 4px 15px rgba(255, 255, 255, 0.1); } .btn-execute { background: #0a4d0a; border-color: #0f5f0f; } .btn-execute:hover { background: #0f5f0f; border-color: #20a020; } .btn-clear { background: #4d0a0a; border-color: #5f0f0f; } .btn-clear:hover { background: #5f0f0f; border-color: #a02020; } .btn-reset { margin-left: auto; } .editor-container { position: relative; } .scripts-view { height: 100%; overflow-y: auto; padding: 20px 0; } .scripts-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 15px; padding: 15px; } /* Games Tab Styles */ .games-tab, #app .container .games-tab, body .games-tab { display: none; position: absolute !important; top: 60px !important; left: 0 !important; right: 0 !important; bottom: 0 !important; padding: 20px !important; overflow-y: auto !important; background: #000000 !important; background-color: #000000 !important; color: #fff !important; animation: fadeIn 0.4s ease-out forwards !important; z-index: 1 !important; } /* Ensure all children inherit black background */ .games-tab *, .games-tab *:before, .games-tab *:after { background-color: inherit !important; background: inherit !important; color: inherit !important; } /* Reset specific elements that might have their own backgrounds */ .games-tab .game-card, .games-tab .games-grid, .games-tab .game-info, .games-tab .loading, .games-tab .error-message, .games-tab .no-games { background: #000000 !important; background-color: #000000 !important; color: #fff !important; } /* Games Grid and Cards */ .games-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; padding: 10px; } .game-card { background: #000000; border: 1px solid #444444; border-radius: 12px; overflow: hidden; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); position: relative; transform: translateY(0); } .game-card:hover { border: 1px solid #e2e2e2; } .game-thumbnail-container { width: 100%; height: 160px; overflow: hidden; } .game-thumbnail { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; } .game-card:hover .game-thumbnail { transform: scale(1.05); } .game-info { padding: 15px; background: #111 !important; color: #fff !important; } .game-info h3 { margin: 0 0 10px 0; font-size: 16px; color: #fff !important; } .game-info .players { margin: 0 0 15px 0; color: #aaa !important; font-size: 14px; } .btn-play { display: inline-block; background: #0f5f0f !important; border: 1px solid #555; border-color: #0f5f0f !important; color: white !important; padding: 8px 16px; border-radius: 4px; text-decoration: none; font-weight: bold; transition: background 0.2s; } .btn-play:hover { background: #0f5f0f !important; border: 1px solid #555; border-color: #0f5f0f !important; } /* Loading and error states */ .loading, .no-games, .error-message { text-align: center; padding: 40px; color: #fff !important; background: #000 !important; font-family: 'Courier New', monospace; } .error-message { color: #ff6b6b !important; } .btn-retry { margin-top: 10px; background: #f44336 !important; color: white !important; border: none; padding: 8px 16px; border-radius: 4px; cursor: pointer; font-family: 'Courier New', monospace; } .btn-retry:hover { background: #e53935 !important; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .games-grid { display: flex !important; flex-direction: column !important; gap: 12px !important; padding: 10px !important; animation: fadeInUp 0.5s ease-out 0.2s both; } .game-card { display: flex; align-items: center; background: #111; border: 1px solid #222; border-radius: 8px; padding: 10px; gap: 15px; transition: background 0.3s ease; } .game-card:hover { background: #1c1c1c; } .game-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #4CAF50, #2196F3); opacity: 0; transition: opacity 0.3s ease; } .game-card:hover::before { opacity: 1; } .game-thumbnail-container { flex-shrink: 0; width: 80px; height: 80px; overflow: hidden; border-radius: 6px; } .game-info { flex-grow: 1; display: flex; flex-direction: column; justify-content: center; padding: 0; color: #fff; } .game-info h3 { margin: 0 0 5px 0; font-size: 15px; font-family: 'Monaco', monospace; } .game-info h3 { margin: 0 0 8px 0; font-size: 15px; color: #fff; font-weight: 500; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; } .game-info .players { font-size: 13px; color: #aaa; font-family: 'Monaco', monospace; } .btn-play { background: #2e7d32; border: none; padding: 6px 12px; border-radius: 6px; color: #fff; font-size: 13px; cursor: pointer; align-self: flex-start; } .btn-play:hover { background: #388e3c; } /* Loading and Error States */ .loading, .no-games, .error-message { text-align: center; padding: 40px 20px; color: #aaa; font-size: 15px; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; animation: fadeIn 0.5s ease-out; } .btn-retry { display: inline-block; background: #f44336; color: white; border: none; padding: 8px 20px; border-radius: 6px; margin-top: 15px; cursor: pointer; font-size: 13px; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace; transition: all 0.2s ease; } .btn-retry:hover { background: #e53935; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(244, 67, 54, 0.3); } /* Responsive Adjustments */ @media (max-width: 768px) { .games-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 15px; padding: 8px; } .game-thumbnail { height: 140px; } .game-info { padding: 12px; } .game-info h3 { font-size: 14px; } .game-info .players { font-size: 12px; } } .btn-play:hover { background: #45a049; } .btn-retry { background: #f44336; margin-top: 10px; } .btn-retry:hover { background: #d32f2f; } .error { color: #ff6b6b; text-align: center; padding: 20px; border: 1px solid #ff6b6b; border-radius: 8px; background: rgba(255, 107, 107, 0.1); } .script-card { background: #000000; border: 1px solid #444444; border-radius: 12px; overflow: hidden; transition: all 0.3s ease; backdrop-filter: blur(10px); animation: fadeInUp 0.6s ease; opacity: 0; animation-fill-mode: forwards; } .script-card:hover { transform: translateY(-5px); border-color: #666666; box-shadow: 0 10px 30px rgba(255, 255, 255, 0.1); } .script-image { width: 100%; height: 120px; background: #0a0a0a; display: flex; align-items: center; justify-content: center; border-bottom: 1px solid #333; } .script-image img { width: 500px; height: 120px; object-fit: cover; border-radius: 6px; } .script-info { padding: 15px; } .script-name { color: #ffffff; font-size: 14px; font-weight: 600; margin-bottom: 10px; text-align: center; } .script-buttons { display: flex; gap: 8px; justify-content: center; } .script-btn { background: #1a1a1a; border: 1px solid #555; border-radius: 15px; padding: 6px 12px; color: #ffffff; font-size: 11px; cursor: pointer; transition: all 0.3s ease; } .script-btn:hover { background: #2a2a2a; border-color: #777; } .script-btn.open { background: #0a4d0a; border-color: #0f5f0f; } .script-btn.execute { background: #4d4d0a; border-color: #5f5f0f; } .script-btn.open:hover { background: #0f5f0f; } .script-btn.execute:hover { background: #5f5f0f; } /* Анимация с задержкой для карточек */ .script-card:nth-child(1) { animation-delay: 0.1s; } .script-card:nth-child(2) { animation-delay: 0.2s; } .script-card:nth-child(3) { animation-delay: 0.3s; } .script-card:nth-child(4) { animation-delay: 0.4s; } .script-card:nth-child(5) { animation-delay: 0.5s; } .script-card:nth-child(6) { animation-delay: 0.6s; } /* Адаптивность для мобильных */ @media (max-width: 768px) { .scripts-grid { grid-template-columns: 1fr; gap: 15px; } } .notifications-container { position: fixed; top: 20px; right: 20px; width: 300px; z-index: 10000; display: flex; flex-direction: column; gap: 10px; } .notification { padding: 12px 16px; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.15); color: #fff; font-family: Arial, sans-serif; opacity: 0; position: relative; transform: translateX(100%); transition: all 0.5s ease; margin-bottom: 10px; max-height: 500px; overflow: hidden; } .notification.show { opacity: 1; transform: translateX(0); } .notification.fade-out { opacity: 0; transform: translateX(100%); max-height: 0; margin: 0; padding: 0 16px; transition: all 0.5s ease; } @keyframes fadeIn { to { opacity: 1; } } @keyframes fadeOut { to { opacity: 0; height: 0; margin: 0; padding: 0 16px; overflow: hidden; } } .notification.notification-green { background-color: #25662775; border: 1px solid #4caf50; } .notification.notification-red { background-color: #a3212191; border: 1px solid #e53935; } .notification-title { font-weight: 700; font-size: 1rem; margin-bottom: 4px; } .notification-description { font-size: 0.875rem; } /* Auth Overlay */ .auth-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: #000; display: flex; justify-content: center; align-items: center; z-index: 1000; } .auth-container { background: #000000; padding: 2rem; border-radius: 8px; text-align: center; max-width: 400px; width: 90%; } #authForm { display: flex; flex-direction: column; gap: 1rem; } #usernameInput { padding: 0.8rem; border: 1px solid #d4d4d4; background: #000000; color: #fff; border-radius: 20px; font-size: 1rem; } #authForm button { padding: 0.8rem; background: #ffffff; color: rgb(0, 0, 0); border: none; border-radius: 20px; cursor: pointer; font-size: 1rem; transition: background 0.3s; } #authForm button:hover { background: #bdd7fd; } .tab.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* Auth Overlay */ .auth-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: #000; display: flex; justify-content: center; align-items: center; z-index: 1000; } .auth-container { background: #000000; padding: 2rem; border-radius: 8px; text-align: center; max-width: 400px; width: 90%; } #authForm { display: flex; flex-direction: column; gap: 1rem; } #usernameInput { padding: 0.8rem; border: 1px solid #d4d4d4; background: #000000; color: #fff; border-radius: 20px; font-size: 1rem; } #authForm button { padding: 0.8rem; background: #ffffff; color: rgb(0, 0, 0); border: none; border-radius: 20px; cursor: pointer; font-size: 1rem; transition: background 0.3s; } #authForm button:hover { background: #bdd7fd; } .tab.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }