/* Remove margins from body and make the map full-screen */ html, body { margin: 0; padding: 0; height: 100%; overflow: hidden; } .joystick { position: absolute; top: 10px; left: 50px; z-index: 1000; display: flex; flex-direction: column; align-items: center; } #map { height: 100vh; width: 100vw; position: absolute; top: 0; left: 0; z-index: 1; } .js { padding: 15px; border-style: none; border-radius: 100px; background-color: white; line-height: 10px; } /* Styles for pulsating marker */ .pulse-icon.colorPURPLE { border-radius: 50%; width: 14px; height: 14px; background: purple; position: relative; } .pulse-icon.colorPURPLE:before { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(128, 0, 128, 0.4); animation: pulse 2s infinite ease-out; } .pulse-icon.colorPURPLE:after { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(128, 0, 128, 0.2); animation: pulse 2s infinite ease-out; animation-delay: 0.5s; } .pulse-icon.colorDARKBLUE { border-radius: 50%; width: 14px; height: 14px; background: navy; position: relative; } .pulse-icon.colorDARKBLUE:before { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(0, 0, 128, 0.4); animation: pulse 2s infinite ease-out; } .pulse-icon.colorDARKBLUE:after { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(0, 0, 128, 0.2); animation: pulse 2s infinite ease-out; animation-delay: 0.5s; } .pulse-icon.colorBLACK { border-radius: 50%; width: 14px; height: 14px; background: black; position: relative; } .pulse-icon.colorBLACK:before { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(0, 0, 0, 0.4); animation: pulse 2s infinite ease-out; } .pulse-icon.colorBLACK:after { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(0, 0, 0, 0.2); animation: pulse 2s infinite ease-out; animation-delay: 0.5s; } .pulse-icon.colorBROWN { border-radius: 50%; width: 14px; height: 14px; background: brown; position: relative; } .pulse-icon.colorBROWN:before { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(165, 42, 42, 0.4); animation: pulse 2s infinite ease-out; } .pulse-icon.colorBROWN:after { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(165, 42, 42, 0.2); animation: pulse 2s infinite ease-out; animation-delay: 0.5s; } .pulse-icon.colorYELLOW { border-radius: 50%; width: 14px; height: 14px; background: rgb(232, 156, 5); position: relative; } .pulse-icon.colorYELLOW:before { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(232, 156, 5, 0.4); animation: pulse 2s infinite ease-out; } .pulse-icon.colorYELLOW:after { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(232, 156, 5, 0.4); animation: pulse 2s infinite ease-out; animation-delay: 0.5s; } .pulse-icon.colorRED { border-radius: 50%; width: 14px; height: 14px; background: red; position: relative; } .pulse-icon.colorRED:before { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(255, 0, 0, 0.4); animation: pulse 2s infinite ease-out; } .pulse-icon.colorRED:after { content: ''; border-radius: 50%; height: 300%; width: 300%; position: absolute; top: -100%; left: -100%; background: rgba(255, 0, 0, 0.2); animation: pulse 2s infinite ease-out; animation-delay: 0.5s; } /* Styles for control panel */ .control-panel { position: absolute; right: 10px; bottom: 10px; background-color: rgba(0, 0, 0, 0.7); color: white; padding: 20px; border-radius: 8px; z-index: 1000; font-family: Arial, sans-serif; } .control-panel label { margin-bottom: 10px; display: block; } .control-panel select { width: 100%; padding: 8px; margin-top: 5px; background-color: #333; color: white; border: none; border-radius: 4px; } @keyframes pulse { 0% { transform: scale(0.1); opacity: 1; } 70% { transform: scale(2); opacity: 0.3; } 100% { transform: scale(3); opacity: 0; } } .marker-container { width: 30px; height: 30px; display: flex; justify-content: center; align-items: center; }