:root { --primary-color: #4361ee; --secondary-color: #3f37c9; --accent-color: #4895ef; --danger-color: #f72585; --success-color: #4cc9f0; --light-color: #f8f9fa; --dark-color: #212529; } * { margin: 0; padding: 0; box-sizing: border-box; user-select: none; } body { font-family: 'Roboto', sans-serif; background-color: #f5f5f5; color: var(--dark-color); overflow: hidden; touch-action: manipulation; height: 100vh; } .container { width: 100%; max-width: 500px; margin: 0 auto; height: 100vh; display: flex; flex-direction: column; position: relative; background-color: white; box-shadow: 0 0 20px rgba(0,0,0,0.1); } /* Connection Status */ .connection-status { padding: 10px 15px; background-color: var(--danger-color); color: white; text-align: center; font-weight: 500; display: flex; align-items: center; justify-content: center; gap: 8px; transition: all 0.3s ease; } .connection-status.connected { background-color: var(--success-color); } /* Header */ .header { padding: 15px; background-color: var(--primary-color); color: white; display: flex; justify-content: space-between; align-items: center; } .logo { font-weight: 700; font-size: 1.2rem; } .score-display { background-color: rgba(255,255,255,0.2); padding: 5px 15px; border-radius: 20px; font-weight: 500; } /* Game Area */ .game-area { flex: 1; position: relative; overflow: hidden; background: linear-gradient(to bottom, #48c6ef 0%, #6f86d6 100%); } .bubble { position: absolute; border-radius: 50%; background: radial-gradient(circle at 30% 30%, white, #ffcc00); box-shadow: inset 0 -5px 10px rgba(0,0,0,0.2), 0 2px 5px rgba(0,0,0,0.2); cursor: pointer; transition: transform 0.1s; } .bubble:active { transform: scale(0.95); } /* Controls */ .controls { padding: 15px; background-color: white; display: flex; justify-content: space-between; border-top: 1px solid #eee; } .btn { padding: 10px 20px; border: none; border-radius: 5px; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 8px; transition: all 0.2s; } .btn-primary { background-color: var(--primary-color); color: white; } .btn-primary:hover { background-color: var(--secondary-color); } .btn-danger { background-color: var(--danger-color); color: white; } .btn-danger:hover { background-color: #d1145a; } /* Game Over Modal */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.7); display: flex; justify-content: center; align-items: center; z-index: 100; opacity: 0; pointer-events: none; transition: opacity 0.3s; } .modal.active { opacity: 1; pointer-events: all; } .modal-content { background-color: white; padding: 25px; border-radius: 10px; width: 80%; max-width: 350px; text-align: center; transform: translateY(-20px); transition: transform 0.3s; } .modal.active .modal-content { transform: translateY(0); } .modal h2 { margin-bottom: 15px; color: var(--primary-color); } .modal p { margin-bottom: 20px; font-size: 1.1rem; } /* Tutorial */ .tutorial { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: rgba(255,255,255,0.9); padding: 20px; border-radius: 10px; text-align: center; max-width: 80%; box-shadow: 0 5px 15px rgba(0,0,0,0.2); z-index: 10; } .tutorial h3 { margin-bottom: 10px; color: var(--primary-color); } .tutorial p { margin-bottom: 15px; } /* Animations */ @keyframes bubbleFloat { 0% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-10px) rotate(5deg); } 100% { transform: translateY(0) rotate(0deg); } } .bubble-float { animation: bubbleFloat 3s infinite ease-in-out; }