* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #333; overflow: hidden; } .game-container { height: 100vh; display: flex; flex-direction: column; } /* Шапка игры */ .game-header { background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%); color: white; padding: 15px 30px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 4px 6px rgba(0,0,0,0.1); z-index: 10; } .header-left h1 { font-size: 28px; margin-bottom: 5px; } .game-subtitle { font-size: 14px; opacity: 0.8; } .current-player { background: rgba(255,255,255,0.15); padding: 10px 20px; border-radius: 10px; display: flex; align-items: center; gap: 10px; } .player-label { opacity: 0.9; } .player-name { font-size: 20px; font-weight: bold; } /* Основная область */ .game-main { flex: 1; display: flex; gap: 20px; padding: 20px; overflow: hidden; } /* Карта */ .map-container { flex: 1; background: #ffffff; border-radius: 15px; box-shadow: 0 10px 30px rgba(0,0,0,0.2); position: relative; overflow: hidden; } #worldMap { width: 100%; height: 100%; cursor: pointer; } .map-legend { position: absolute; top: 20px; left: 20px; background: rgba(255, 255, 255, 0.95); padding: 15px; border-radius: 10px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .map-legend h4 { margin-bottom: 10px; color: #1e3c72; } .legend-item { display: flex; align-items: center; gap: 8px; margin: 5px 0; font-size: 14px; } .legend-icon { font-size: 18px; } /* Боковая панель */ .sidebar { width: 380px; background: white; border-radius: 15px; box-shadow: 0 10px 30px rgba(0,0,0,0.2); display: flex; flex-direction: column; overflow-y: auto; } .sidebar-header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; } .sidebar-header h2 { font-size: 20px; } .sidebar-section { padding: 20px; border-top: 1px solid #e0e0e0; } .sidebar-section h3 { margin-bottom: 15px; color: #1e3c72; font-size: 16px; } /* Список игроков */ .players-list { padding: 15px; } .player-card { background: #f8f9fa; padding: 15px; margin-bottom: 10px; border-radius: 10px; border-left: 5px solid; transition: all 0.3s; } .player-card.active { background: #e3f2fd; box-shadow: 0 4px 10px rgba(102, 126, 234, 0.3); } .player-card.player-1 { border-left-color: #e74c3c; } .player-card.player-2 { border-left-color: #3498db; } .player-card.player-3 { border-left-color: #2ecc71; } .player-card.player-4 { border-left-color: #f39c12; } .player-info { display: flex; justify-content: space-between; align-items: center; } .player-token { font-size: 24px; margin-right: 10px; } .player-details { flex: 1; } .player-name-display { font-weight: bold; font-size: 16px; color: #1e3c72; } .player-location { font-size: 12px; color: #666; margin-top: 3px; } .player-score { font-size: 20px; font-weight: bold; color: #27ae60; } /* Кости */ .dice-container { display: flex; justify-content: center; gap: 20px; margin-bottom: 15px; } .dice { width: 80px; height: 80px; background: white; border: 3px solid #667eea; border-radius: 15px; display: flex; align-items: center; justify-content: center; font-size: 36px; font-weight: bold; color: #667eea; box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .dice.rolling { animation: diceRoll 0.5s ease-in-out infinite; } @keyframes diceRoll { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(-10deg); } 75% { transform: rotate(10deg); } } .dice-result { text-align: center; padding: 15px; background: #e8f5e9; border-radius: 10px; margin-top: 10px; } .dice-total { font-size: 32px; font-weight: bold; color: #27ae60; } .dice-hint { font-size: 12px; color: #666; margin-top: 5px; } /* Текущее задание */ .current-mission-box { background: #f8f9fa; padding: 15px; border-radius: 10px; min-height: 80px; } .no-mission { text-align: center; color: #999; padding: 20px 0; } .mission-info { font-size: 14px; } .mission-info p { margin: 5px 0; } .mission-route-text { font-weight: bold; color: #1e3c72; font-size: 15px; } .mission-reward-text { color: #27ae60; font-weight: bold; } /* Информационный блок */ .info-box { background: #f8f9fa; padding: 15px; border-radius: 10px; font-size: 14px; } .info-box h4 { color: #1e3c72; margin-bottom: 10px; } .info-box p { margin: 5px 0; color: #666; } /* Кнопки */ .btn-primary, .btn-secondary, .btn-end-turn { border: none; padding: 12px 24px; border-radius: 8px; font-size: 16px; cursor: pointer; transition: all 0.3s; font-weight: 500; } .btn-primary { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; } .btn-primary:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4); } .btn-secondary { background: #95a5a6; color: white; } .btn-secondary:hover { background: #7f8c8d; } .btn-end-turn { background: #27ae60; color: white; } .btn-end-turn:hover:not(:disabled) { background: #229954; } .btn-block { width: 100%; } .btn-large { padding: 15px 30px; font-size: 18px; } button:disabled { opacity: 0.5; cursor: not-allowed; } /* Модальное окно */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.6); animation: fadeIn 0.3s; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .modal-content { background-color: white; margin: 5% auto; padding: 30px; border-radius: 15px; width: 600px; max-width: 90%; max-height: 80vh; overflow-y: auto; box-shadow: 0 10px 40px rgba(0,0,0,0.3); animation: slideIn 0.3s; } @keyframes slideIn { from { transform: translateY(-50px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; cursor: pointer; line-height: 20px; } .close:hover { color: #000; } /* Форма начала игры */ .start-game-form { margin-top: 20px; } .form-group { margin-bottom: 20px; } .form-group label { display: block; margin-bottom: 10px; font-weight: 500; color: #1e3c72; } .player-count-buttons { display: flex; gap: 10px; } .player-count-btn { flex: 1; padding: 15px; border: 2px solid #e0e0e0; background: white; border-radius: 10px; font-size: 20px; font-weight: bold; cursor: pointer; transition: all 0.3s; } .player-count-btn:hover { border-color: #667eea; } .player-count-btn.active { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-color: #667eea; } .player-name-input { width: 100%; padding: 12px; border: 2px solid #e0e0e0; border-radius: 8px; font-size: 16px; transition: border-color 0.3s; } .player-name-input:focus { outline: none; border-color: #667eea; } /* Сетка заданий */ .missions-grid { display: grid; grid-template-columns: 1fr; gap: 15px; max-height: 500px; overflow-y: auto; } .mission-card { background: #f8f9fa; padding: 15px; border-radius: 10px; cursor: pointer; transition: all 0.3s; border-left: 4px solid #667eea; } .mission-card:hover { background: #e9ecef; transform: translateX(5px); box-shadow: 0 4px 10px rgba(0,0,0,0.1); } .mission-card-header { font-weight: bold; color: #1e3c72; margin-bottom: 10px; font-size: 16px; } .mission-card-details { font-size: 14px; color: #666; } .mission-card-reward { margin-top: 10px; padding-top: 10px; border-top: 1px solid #e0e0e0; color: #27ae60; font-weight: bold; font-size: 16px; } .mission-card-disabled { opacity: 0.5; cursor: not-allowed !important; background: #f5f5f5; } .mission-card-disabled:hover { transform: none !important; background: #f5f5f5 !important; } .active-mission { background: #f8f9fa; padding: 8px; margin: 5px 0; border-radius: 5px; border-left: 3px solid #667eea; } .mission-at-destination { background: #e8f5e9; border-left-color: #27ae60; } /* Скроллбар */ .sidebar::-webkit-scrollbar, .modal-content::-webkit-scrollbar, .missions-grid::-webkit-scrollbar { width: 8px; } .sidebar::-webkit-scrollbar-track, .modal-content::-webkit-scrollbar-track, .missions-grid::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } .sidebar::-webkit-scrollbar-thumb, .modal-content::-webkit-scrollbar-thumb, .missions-grid::-webkit-scrollbar-thumb { background: #888; border-radius: 10px; } .sidebar::-webkit-scrollbar-thumb:hover, .modal-content::-webkit-scrollbar-thumb:hover, .missions-grid::-webkit-scrollbar-thumb:hover { background: #555; } /* Вспомогательные классы */ .text-success { color: #27ae60; } .text-danger { color: #e74c3c; } .mt-2 { margin-top: 10px; }