<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
<defs>
<filter id="glow">
<feGaussianBlur stdDeviation="3" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="blur"/>
</feMerge>
</filter>
<linearGradient id="grillGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:rgb(255,255,255);stop-opacity:0.5" />
<stop offset="100%" style="stop-color:rgb(0,0,0);stop-opacity:0.5" />
</linearGradient>
</defs>
<g id="truck" transform="translate(0, 40)">
<rect x="50" y="20" width="100" height="40" fill="blue" />
<rect x="70" y="10" width="60" height="20" fill="gray" />
<rect x="90" y="30" width="20" height="10" fill="black" filter="url(#glow)" class="headlight" />
<rect x="70" y="30" width="20" height="10" fill="black" filter="url(#glow)" class="headlight" />
<rect x="50" y="20" width="100" height="10" fill="url(#grillGradient)" class="grill" />
<circle cx="70" cy="70" r="10" fill="black" />
<circle cx="130" cy="70" r="10" fill="black" />
<path d="M120,20 Q130,10 140,20" fill="none" stroke="gray" />
<path d="M120,30 Q130,20 140,30" fill="none" stroke="gray" />
<path d="M150,50 Q160,40 170,50" fill="none" stroke="gray" class="smoke" />
</g>
<animateTransform attributeName="transform" attributeType="XML" type="translate" from="0 0" to="0 5" dur="0.5s" begin="0s" repeatCount="indefinite" additive="sum" />
<animate attributeName="opacity" values="1;0.5;1" dur="0.5s" begin="0s" repeatCount="indefinite" class="headlight" />
<animate attributeName="fill" values="gray;lightgray;gray" dur="1s" begin="0s" repeatCount="indefinite" class="grill" />
<animate attributeName="d" values="M150,50 Q160,40 170,50; M150,50 Q160,30 170,50; M150,50 Q160,40 170,50" dur="0.5s" begin="0s" repeatCount="indefinite" class="smoke" />
</svg>