| 
					
				 | 
			
			
				@@ -0,0 +1,226 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div class="tools" :style="{ transform: `scale(${scaleVal})` }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_bottom" src="@/assets/images/bg_tools/bottom.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_main" src="@/assets/images/bg_tools/main.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_line1" src="@/assets/images/bg_tools/line1.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_line2" src="@/assets/images/bg_tools/line2.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_item1" src="@/assets/images/bg_tools/item1.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_item2" src="@/assets/images/bg_tools/item2.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_item3" src="@/assets/images/bg_tools/item3.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_item4" src="@/assets/images/bg_tools/item4.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_gear" src="@/assets/images/bg_tools/bg_gear.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <img class="bg_wrench" src="@/assets/images/bg_tools/bg_wrench.png" alt="" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ref, watch } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { useWindowSize } from '@vueuse/core' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const { width } = useWindowSize() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const scaleVal = ref(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+watch( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (value) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    scaleVal.value = value / 1900 < 0.32 ? 0.32 : value / 1900 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    immediate: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss" scoped> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.tools { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 1124px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  height: 1080px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  position: relative; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_123 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_main { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 264px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 160px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: slide-top-down 12s cubic-bezier(0.25, 0.46, 0.45, 0.94) alternate infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_bottom { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 189px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 366px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: scale_bottom 8s linear infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // animation: heartBeat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // animation-duration: 6s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_line1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 210px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 320px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: slide-top-down2 4s cubic-bezier(0.25, 0.46, 0.45, 0.94) -4s alternate infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(4px -4px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_line2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 530px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 243px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: slide-top-down3 4s cubic-bezier(0.25, 0.46, 0.45, 0.94) -4s alternate infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(4px -4px 12px rgba(232, 233, 235, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_item1 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 642px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 580px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: bounceInDown; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-duration: 2s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-direction: alternate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-delay: -0.5s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(4px -4px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_item2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 840px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 80px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: bounceInDown; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-duration: 2s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-direction: alternate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-delay: -1s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_item3 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 538px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 752px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: bounceInDown; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-duration: 2s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-direction: alternate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-delay: -1.5s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_item4 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 251px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    top: 124px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: bounceInDown; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-duration: 2s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-direction: alternate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-delay: -2s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_gear { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 28%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 28%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    right: 80px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bottom: 280px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: swing; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-duration: 12s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-direction: alternate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform-origin: 45.5% 44%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .bg_wrench { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    width: 48%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    height: 48%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    position: absolute; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    left: 24px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    bottom: 100px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation: swing; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-duration: 12s; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-iteration-count: infinite; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    animation-direction: alternate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    filter: drop-shadow(0px 0px 12px rgba(18, 108, 242, 0.6)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@keyframes slide-top-down { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  0% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(0px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  50% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(100px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  100% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(0px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@keyframes slide-top-down2 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  0% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(0px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  50% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(80px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  100% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(0px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@keyframes slide-top-down3 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  0% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(0px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  50% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(120px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  100% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: translateY(0px); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@keyframes scale_bottom { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  0% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  14% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(0.85); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  20% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(0.95); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  28% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.08); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  32% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(0.95); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  36% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.05); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  40% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  45% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  50% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  55% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  60% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  65% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  70% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1.05); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  80% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(0.9); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  90% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(0.8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  100% { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    transform: scale(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</style> 
			 |