فهرست منبع

feat: nuxtimg

reaper 1 هفته پیش
والد
کامیت
829d1672b4
53فایلهای تغییر یافته به همراه567 افزوده شده و 231 حذف شده
  1. BIN
      app/assets/images/products/bg2.png
  2. BIN
      app/assets/images/products/icon.png
  3. 29 0
      app/assets/svg/products/acceleration.svg
  4. 30 0
      app/assets/svg/products/lock.svg
  5. 29 0
      app/assets/svg/products/security.svg
  6. 0 25
      app/assets/svg/sV.svg
  7. 0 25
      app/assets/svg/sV2.svg
  8. 0 21
      app/assets/svg/sV3.svg
  9. 0 29
      app/assets/svg/sV4.svg
  10. BIN
      app/assets/video/solutions.mp4
  11. 1 1
      app/components/Header.vue
  12. 1 1
      app/components/HeaderH5.vue
  13. 9 29
      app/components/PlansSection.vue
  14. 10 11
      app/components/home/ProductTabs.vue
  15. 3 3
      app/components/home/StatsSection.vue
  16. 8 8
      app/components/products/Card.vue
  17. 2 2
      app/directives/mouseGlowDirective.js
  18. 54 71
      app/pages/pc/index.vue
  19. 6 4
      app/pages/pc/products.vue
  20. 4 1
      nuxt.config.ts
  21. 1 0
      package.json
  22. 380 0
      pnpm-lock.yaml
  23. BIN
      public/images/home/flowchart.png
  24. 0 0
      public/images/home/home-bg.png
  25. 0 0
      public/images/home/home-bg2.png
  26. 0 0
      public/images/home/home-bg3.png
  27. 0 0
      public/images/home/home-bg4.png
  28. 0 0
      public/images/home/home-d.png
  29. 0 0
      public/images/home/icon.png
  30. 0 0
      public/images/home/icon10.png
  31. 0 0
      public/images/home/icon11.png
  32. 0 0
      public/images/home/icon12.png
  33. 0 0
      public/images/home/icon13.png
  34. 0 0
      public/images/home/icon14.png
  35. 0 0
      public/images/home/icon15.png
  36. 0 0
      public/images/home/icon16.png
  37. 0 0
      public/images/home/icon17.png
  38. 0 0
      public/images/home/icon18.png
  39. 0 0
      public/images/home/icon19.png
  40. 0 0
      public/images/home/icon2.png
  41. 0 0
      public/images/home/icon20.png
  42. 0 0
      public/images/home/icon3.png
  43. 0 0
      public/images/home/icon4.png
  44. 0 0
      public/images/home/icon5.png
  45. 0 0
      public/images/home/icon6.png
  46. 0 0
      public/images/home/icon7.png
  47. 0 0
      public/images/home/icon8.png
  48. 0 0
      public/images/home/icon9.png
  49. 0 0
      public/images/home/server.png
  50. 0 0
      public/images/products/bg.png
  51. BIN
      public/images/products/bg2.jpg
  52. BIN
      public/images/products/flowchart.png
  53. 0 0
      public/images/products/security.png

BIN
app/assets/images/products/bg2.png


BIN
app/assets/images/products/icon.png


+ 29 - 0
app/assets/svg/products/acceleration.svg

@@ -0,0 +1,29 @@
+<svg width="45" height="45" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M19.8737 5.72218L9.24445 8.57028C4.62744 9.80741 2.61214 13.296 3.84864 17.9107L6.69193 28.522C7.93184 33.1494 11.4214 35.163 16.0384 33.9258L26.655 31.0811C31.272 29.844 33.2873 26.3554 32.0508 21.7407L29.2042 11.1167C27.9803 6.49862 24.4907 4.48505 19.8737 5.72218Z" fill="url(#paint0_linear_429_1307)"/>
+<foreignObject x="3.74609" y="3.75" width="45" height="45"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.75px);clip-path:url(#bgblur_0_429_1307_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.5" d="M19.9658 11.7188H32.542C35.1801 11.7188 37.229 12.5033 38.6162 13.8916C40.0034 15.2798 40.7846 17.3275 40.7773 19.9639V32.5352C40.7773 35.1718 39.9927 37.2199 38.6035 38.6084C37.2142 39.997 35.1646 40.7812 32.5264 40.7812H19.9658C17.3276 40.7812 15.2779 39.9967 13.8887 38.6064C12.4996 37.2161 11.7148 35.1639 11.7148 32.5195V19.9648C11.7149 17.3282 12.4994 15.2801 13.8887 13.8916C15.278 12.503 17.3276 11.7188 19.9658 11.7188Z" fill="#8C5BFF" fill-opacity="0.4" stroke="url(#paint1_linear_429_1307)" stroke-width="0.9375"/>
+<g filter="url(#filter1_d_429_1307)">
+<path d="M29.333 20.334H24.333L22.333 28.0007H24.9997L23.6663 33.6673L32.333 24.334H28.333L29.333 20.334Z" fill="white" stroke="white" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M25.9997 22.666L25.333 25.3327" stroke="#8C5BFF" stroke-width="1.33333" stroke-linecap="round"/>
+</g>
+<defs>
+<clipPath id="bgblur_0_429_1307_clip_path" transform="translate(-3.74609 -3.75)"><path d="M19.9658 11.7188H32.542C35.1801 11.7188 37.229 12.5033 38.6162 13.8916C40.0034 15.2798 40.7846 17.3275 40.7773 19.9639V32.5352C40.7773 35.1718 39.9927 37.2199 38.6035 38.6084C37.2142 39.997 35.1646 40.7812 32.5264 40.7812H19.9658C17.3276 40.7812 15.2779 39.9967 13.8887 38.6064C12.4996 37.2161 11.7148 35.1639 11.7148 32.5195V19.9648C11.7149 17.3282 12.4994 15.2801 13.8887 13.8916C15.278 12.503 17.3276 11.7188 19.9658 11.7188Z"/>
+</clipPath><filter id="filter1_d_429_1307" x="15" y="19" width="24" height="24" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="4"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.557853 0 0 0 0 0.144231 0 0 0 0 1 0 0 0 0.25 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_429_1307"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_429_1307" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_429_1307" x1="2" y1="22" x2="18.735" y2="30.6254" gradientUnits="userSpaceOnUse">
+<stop stop-color="#CC73FF"/>
+<stop offset="1" stop-color="#8C5BFF"/>
+</linearGradient>
+<linearGradient id="paint1_linear_429_1307" x1="14.5929" y1="15.4178" x2="39.2358" y2="40.0606" gradientUnits="userSpaceOnUse">
+<stop stop-color="white"/>
+<stop offset="1" stop-color="#8C5BFF" stop-opacity="0.2"/>
+</linearGradient>
+</defs>
+</svg>

+ 30 - 0
app/assets/svg/products/lock.svg

@@ -0,0 +1,30 @@
+<svg width="45" height="45" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M19.8737 5.72218L9.24445 8.57028C4.62744 9.80741 2.61214 13.296 3.84864 17.9107L6.69193 28.522C7.93184 33.1494 11.4214 35.163 16.0384 33.9258L26.655 31.0811C31.272 29.844 33.2873 26.3554 32.0508 21.7407L29.2042 11.1167C27.9803 6.49862 24.4907 4.48505 19.8737 5.72218Z" fill="url(#paint0_linear_429_1314)"/>
+<foreignObject x="3.74609" y="3.75" width="45" height="45"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.75px);clip-path:url(#bgblur_0_429_1314_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.5" d="M19.9658 11.7188H32.542C35.1801 11.7188 37.229 12.5033 38.6162 13.8916C40.0034 15.2798 40.7846 17.3275 40.7773 19.9639V32.5352C40.7773 35.1718 39.9927 37.2199 38.6035 38.6084C37.2142 39.997 35.1646 40.7812 32.5264 40.7812H19.9658C17.3276 40.7812 15.2779 39.9967 13.8887 38.6064C12.4996 37.2161 11.7148 35.1639 11.7148 32.5195V19.9648C11.7149 17.3282 12.4994 15.2801 13.8887 13.8916C15.278 12.503 17.3276 11.7188 19.9658 11.7188Z" fill="#8C5BFF" fill-opacity="0.4" stroke="url(#paint1_linear_429_1314)" stroke-width="0.9375"/>
+<g filter="url(#filter1_d_429_1314)">
+<path d="M31.3333 25.334H20.6667C20.2985 25.334 20 25.6325 20 26.0007V32.0007C20 32.3688 20.2985 32.6673 20.6667 32.6673H31.3333C31.7015 32.6673 32 32.3688 32 32.0007V26.0007C32 25.6325 31.7015 25.334 31.3333 25.334Z" fill="white" stroke="white" stroke-width="1.33333" stroke-linejoin="round"/>
+<path d="M22.667 25.334V22.6673C22.667 20.8264 24.1594 19.334 26.0003 19.334C27.8413 19.334 29.3337 20.8264 29.3337 22.6673V25.334" stroke="white" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M26 28V30" stroke="#8C5BFF" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<defs>
+<clipPath id="bgblur_0_429_1314_clip_path" transform="translate(-3.74609 -3.75)"><path d="M19.9658 11.7188H32.542C35.1801 11.7188 37.229 12.5033 38.6162 13.8916C40.0034 15.2798 40.7846 17.3275 40.7773 19.9639V32.5352C40.7773 35.1718 39.9927 37.2199 38.6035 38.6084C37.2142 39.997 35.1646 40.7812 32.5264 40.7812H19.9658C17.3276 40.7812 15.2779 39.9967 13.8887 38.6064C12.4996 37.2161 11.7148 35.1639 11.7148 32.5195V19.9648C11.7149 17.3282 12.4994 15.2801 13.8887 13.8916C15.278 12.503 17.3276 11.7188 19.9658 11.7188Z"/>
+</clipPath><filter id="filter1_d_429_1314" x="14" y="18" width="24" height="24" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dy="4"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.265995 0 0 0 0 0.0232988 0 0 0 0 0.605769 0 0 0 0.25 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_429_1314"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_429_1314" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_429_1314" x1="4.5" y1="11" x2="18.7221" y2="26.6545" gradientUnits="userSpaceOnUse">
+<stop stop-color="#CC73FF"/>
+<stop offset="1" stop-color="#6726FF"/>
+</linearGradient>
+<linearGradient id="paint1_linear_429_1314" x1="14.5929" y1="15.4178" x2="39.2358" y2="40.0606" gradientUnits="userSpaceOnUse">
+<stop stop-color="white"/>
+<stop offset="1" stop-color="#8C5BFF" stop-opacity="0.2"/>
+</linearGradient>
+</defs>
+</svg>

+ 29 - 0
app/assets/svg/products/security.svg

@@ -0,0 +1,29 @@
+<svg width="45" height="45" viewBox="0 0 45 45" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M19.8737 5.72218L9.24445 8.57028C4.62744 9.80741 2.61214 13.296 3.84864 17.9107L6.69193 28.522C7.93184 33.1494 11.4214 35.163 16.0384 33.9258L26.655 31.0811C31.272 29.844 33.2873 26.3554 32.0508 21.7407L29.2042 11.1167C27.9803 6.49862 24.4907 4.48505 19.8737 5.72218Z" fill="url(#paint0_linear_429_1299)"/>
+<foreignObject x="3.74609" y="3.75" width="45" height="45"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.75px);clip-path:url(#bgblur_0_429_1299_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.5" d="M19.9658 11.7188H32.542C35.1801 11.7188 37.229 12.5033 38.6162 13.8916C40.0034 15.2798 40.7846 17.3275 40.7773 19.9639V32.5352C40.7773 35.1718 39.9927 37.2199 38.6035 38.6084C37.2142 39.997 35.1646 40.7812 32.5264 40.7812H19.9658C17.3276 40.7812 15.2779 39.9967 13.8887 38.6064C12.4996 37.2161 11.7148 35.1639 11.7148 32.5195V19.9648C11.7149 17.3282 12.4994 15.2801 13.8887 13.8916C15.278 12.503 17.3276 11.7188 19.9658 11.7188Z" fill="#8C5BFF" fill-opacity="0.4" stroke="url(#paint1_linear_429_1299)" stroke-width="0.9375"/>
+<g filter="url(#filter1_d_429_1299)">
+<path d="M20.5 21.5859L26.5029 19.834L32.5 21.5859V25.1786C32.5 28.9547 30.0834 32.3071 26.5009 33.5008C22.9174 32.3071 20.5 28.954 20.5 25.1769V21.5859Z" fill="white" stroke="white" stroke-width="1.33333" stroke-linejoin="round"/>
+<path d="M23.5 26.1667L25.8333 28.5L29.8333 24.5" stroke="#8C5BFF" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<defs>
+<clipPath id="bgblur_0_429_1299_clip_path" transform="translate(-3.74609 -3.75)"><path d="M19.9658 11.7188H32.542C35.1801 11.7188 37.229 12.5033 38.6162 13.8916C40.0034 15.2798 40.7846 17.3275 40.7773 19.9639V32.5352C40.7773 35.1718 39.9927 37.2199 38.6035 38.6084C37.2142 39.997 35.1646 40.7812 32.5264 40.7812H19.9658C17.3276 40.7812 15.2779 39.9967 13.8887 38.6064C12.4996 37.2161 11.7148 35.1639 11.7148 32.5195V19.9648C11.7149 17.3282 12.4994 15.2801 13.8887 13.8916C15.278 12.503 17.3276 11.7188 19.9658 11.7188Z"/>
+</clipPath><filter id="filter1_d_429_1299" x="15.5" y="15.5" width="24" height="24" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
+<feFlood flood-opacity="0" result="BackgroundImageFix"/>
+<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
+<feOffset dx="1" dy="1"/>
+<feGaussianBlur stdDeviation="2"/>
+<feComposite in2="hardAlpha" operator="out"/>
+<feColorMatrix type="matrix" values="0 0 0 0 0.375379 0 0 0 0 0.142012 0 0 0 0 0.923077 0 0 0 0.5 0"/>
+<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_429_1299"/>
+<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_429_1299" result="shape"/>
+</filter>
+<linearGradient id="paint0_linear_429_1299" x1="5.5" y1="10.5" x2="20.1895" y2="30.0211" gradientUnits="userSpaceOnUse">
+<stop stop-color="#CC73FF"/>
+<stop offset="1" stop-color="#6726FF"/>
+</linearGradient>
+<linearGradient id="paint1_linear_429_1299" x1="14.5929" y1="15.4178" x2="39.2358" y2="40.0606" gradientUnits="userSpaceOnUse">
+<stop stop-color="white"/>
+<stop offset="1" stop-color="#8C5BFF" stop-opacity="0.2"/>
+</linearGradient>
+</defs>
+</svg>

+ 0 - 25
app/assets/svg/sV.svg

@@ -1,25 +0,0 @@
-<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M79.2695 69.8047C79.2695 56.5625 69.9102 45.3125 56.9883 41.3516C62.0117 38.0469 65.3398 32.3906 65.3398 25.9688C65.3398 15.7812 57.0117 7.5 46.7695 7.5C36.5273 7.5 28.1992 15.7812 28.1992 25.9609C28.1992 32.3828 31.5273 38.0391 36.5508 41.3438C23.6289 45.3125 14.2695 56.5547 14.2695 69.8047C14.2695 71.2933 15.4763 72.5 16.9648 72.5H76.6133C78.0803 72.5 79.2695 71.3108 79.2695 69.8438V69.8047Z" fill="url(#paint0_linear_378_1179)"/>
-<path d="M74.9609 69.8047C74.9609 56.5625 65.6016 45.3125 52.6797 41.3516C57.7031 38.0469 61.0312 32.3906 61.0312 25.9688C61.0312 15.7812 52.7031 7.5 42.4609 7.5C32.2187 7.5 23.8906 15.7812 23.8906 25.9609C23.8906 32.3828 27.2188 38.0391 32.2422 41.3438C19.3203 45.3125 9.96094 56.5547 9.96094 69.8047C9.96094 71.2933 11.1677 72.5 12.6562 72.5H72.3047C73.7717 72.5 74.9609 71.3108 74.9609 69.8438V69.8047Z" fill="url(#paint1_linear_378_1179)"/>
-<foreignObject x="0.484615" y="0.484615" width="79.0308" height="79.0308"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.51px);clip-path:url(#bgblur_0_378_1179_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.01538" d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z" fill="url(#paint2_linear_378_1179)" fill-opacity="0.9"/>
-<path d="M39.8105 42.2744C39.9336 42.2334 40.0664 42.2334 40.1895 42.2744L42.4229 43.0186C42.6553 43.096 42.8173 43.3072 42.832 43.5518L43.7744 59.3828C43.7863 59.5838 43.6972 59.7776 43.5361 59.8984L40.3604 62.2803C40.147 62.4403 39.853 62.4403 39.6396 62.2803L36.4639 59.8984C36.3028 59.7776 36.2137 59.5838 36.2256 59.3828L37.168 43.5518C37.1827 43.3072 37.3447 43.096 37.5771 43.0186L39.8105 42.2744Z" fill="#D7D5FF" stroke="url(#paint3_linear_378_1179)" stroke-width="0.4"/>
-<defs>
-<clipPath id="bgblur_0_378_1179_clip_path" transform="translate(-0.484615 -0.484615)"><path d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z"/>
-</clipPath><linearGradient id="paint0_linear_378_1179" x1="45.7695" y1="-0.6" x2="47.9695" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#4944DD"/>
-<stop offset="1" stop-color="#6C68F0"/>
-</linearGradient>
-<linearGradient id="paint1_linear_378_1179" x1="41.4609" y1="-0.6" x2="43.6609" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#E6E5FF"/>
-<stop offset="1" stop-color="#D8D7FF"/>
-</linearGradient>
-<linearGradient id="paint2_linear_378_1179" x1="39" y1="-0.6" x2="41.2" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#6B65FF"/>
-<stop offset="1" stop-color="#CAC8FF"/>
-</linearGradient>
-<linearGradient id="paint3_linear_378_1179" x1="36.6" y1="43.4" x2="46.2" y2="71.2" gradientUnits="userSpaceOnUse">
-<stop stop-color="#F3F5FF"/>
-<stop offset="1" stop-color="#D8D7FF"/>
-</linearGradient>
-</defs>
-</svg>

+ 0 - 25
app/assets/svg/sV2.svg

@@ -1,25 +0,0 @@
-<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M79.2695 69.8047C79.2695 56.5625 69.9102 45.3125 56.9883 41.3516C62.0117 38.0469 65.3398 32.3906 65.3398 25.9688C65.3398 15.7812 57.0117 7.5 46.7695 7.5C36.5273 7.5 28.1992 15.7812 28.1992 25.9609C28.1992 32.3828 31.5273 38.0391 36.5508 41.3438C23.6289 45.3125 14.2695 56.5547 14.2695 69.8047C14.2695 71.2933 15.4763 72.5 16.9648 72.5H76.6133C78.0803 72.5 79.2695 71.3108 79.2695 69.8438V69.8047Z" fill="url(#paint0_linear_378_1187)"/>
-<path d="M74.9609 69.8047C74.9609 56.5625 65.6016 45.3125 52.6797 41.3516C57.7031 38.0469 61.0312 32.3906 61.0312 25.9688C61.0312 15.7812 52.7031 7.5 42.4609 7.5C32.2187 7.5 23.8906 15.7812 23.8906 25.9609C23.8906 32.3828 27.2188 38.0391 32.2422 41.3438C19.3203 45.3125 9.96094 56.5547 9.96094 69.8047C9.96094 71.2933 11.1677 72.5 12.6562 72.5H72.3047C73.7717 72.5 74.9609 71.3108 74.9609 69.8438V69.8047Z" fill="url(#paint1_linear_378_1187)"/>
-<foreignObject x="0.484615" y="0.484615" width="79.0308" height="79.0308"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.51px);clip-path:url(#bgblur_0_378_1187_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.01538" d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z" fill="url(#paint2_linear_378_1187)" fill-opacity="0.9"/>
-<path d="M39.8105 42.2744C39.9336 42.2334 40.0664 42.2334 40.1895 42.2744L42.4229 43.0186C42.6553 43.096 42.8173 43.3072 42.832 43.5518L43.7744 59.3828C43.7863 59.5838 43.6972 59.7776 43.5361 59.8984L40.3604 62.2803C40.147 62.4403 39.853 62.4403 39.6396 62.2803L36.4639 59.8984C36.3028 59.7776 36.2137 59.5838 36.2256 59.3828L37.168 43.5518C37.1827 43.3072 37.3447 43.096 37.5771 43.0186L39.8105 42.2744Z" fill="#CECECE" stroke="url(#paint3_linear_378_1187)" stroke-width="0.4"/>
-<defs>
-<clipPath id="bgblur_0_378_1187_clip_path" transform="translate(-0.484615 -0.484615)"><path d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z"/>
-</clipPath><linearGradient id="paint0_linear_378_1187" x1="45.7695" y1="-0.6" x2="47.9695" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#727272"/>
-<stop offset="1" stop-color="#848484"/>
-</linearGradient>
-<linearGradient id="paint1_linear_378_1187" x1="41.4609" y1="-0.6" x2="43.6609" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#D3D3D3"/>
-<stop offset="1" stop-color="#D8D8D8"/>
-</linearGradient>
-<linearGradient id="paint2_linear_378_1187" x1="39" y1="-0.6" x2="41.2" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#525252"/>
-<stop offset="1" stop-color="#A7A7A7"/>
-</linearGradient>
-<linearGradient id="paint3_linear_378_1187" x1="36.6" y1="43.4" x2="46.2" y2="71.2" gradientUnits="userSpaceOnUse">
-<stop stop-color="#E6E6E6"/>
-<stop offset="1" stop-color="#D2D2D2"/>
-</linearGradient>
-</defs>
-</svg>

+ 0 - 21
app/assets/svg/sV3.svg

@@ -1,21 +0,0 @@
-<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M79.2695 69.8047C79.2695 56.5625 69.9102 45.3125 56.9883 41.3516C62.0117 38.0469 65.3398 32.3906 65.3398 25.9688C65.3398 15.7812 57.0117 7.5 46.7695 7.5C36.5273 7.5 28.1992 15.7812 28.1992 25.9609C28.1992 32.3828 31.5273 38.0391 36.5508 41.3438C23.6289 45.3125 14.2695 56.5547 14.2695 69.8047C14.2695 71.2933 15.4763 72.5 16.9648 72.5H76.6133C78.0803 72.5 79.2695 71.3108 79.2695 69.8438V69.8047Z" fill="#ADADAD"/>
-<path d="M74.9609 69.8047C74.9609 56.5625 65.6016 45.3125 52.6797 41.3516C57.7031 38.0469 61.0312 32.3906 61.0312 25.9688C61.0312 15.7812 52.7031 7.5 42.4609 7.5C32.2187 7.5 23.8906 15.7812 23.8906 25.9609C23.8906 32.3828 27.2188 38.0391 32.2422 41.3438C19.3203 45.3125 9.96094 56.5547 9.96094 69.8047C9.96094 71.2933 11.1677 72.5 12.6562 72.5H72.3047C73.7717 72.5 74.9609 71.3108 74.9609 69.8438V69.8047Z" fill="url(#paint0_linear_378_1203)"/>
-<foreignObject x="0.484615" y="0.484615" width="79.0308" height="79.0308"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.51px);clip-path:url(#bgblur_0_378_1203_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.01538" d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z" fill="url(#paint1_linear_378_1203)" fill-opacity="0.9"/>
-<path d="M39.8105 42.2744C39.9336 42.2334 40.0664 42.2334 40.1895 42.2744L42.4229 43.0186C42.6553 43.096 42.8173 43.3072 42.832 43.5518L43.7744 59.3828C43.7863 59.5838 43.6972 59.7776 43.5361 59.8984L40.3604 62.2803C40.147 62.4403 39.853 62.4403 39.6396 62.2803L36.4639 59.8984C36.3028 59.7776 36.2137 59.5838 36.2256 59.3828L37.168 43.5518C37.1827 43.3072 37.3447 43.096 37.5771 43.0186L39.8105 42.2744Z" fill="#F2F2F2" stroke="url(#paint2_linear_378_1203)" stroke-width="0.4"/>
-<defs>
-<clipPath id="bgblur_0_378_1203_clip_path" transform="translate(-0.484615 -0.484615)"><path d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z"/>
-</clipPath><linearGradient id="paint0_linear_378_1203" x1="41.4609" y1="-0.6" x2="43.6609" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#DDDDDD"/>
-<stop offset="1" stop-color="white"/>
-</linearGradient>
-<linearGradient id="paint1_linear_378_1203" x1="39" y1="-0.6" x2="41.2" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#C4C4C4"/>
-<stop offset="1" stop-color="#E5E5E5"/>
-</linearGradient>
-<linearGradient id="paint2_linear_378_1203" x1="36.6" y1="43.4" x2="46.2" y2="71.2" gradientUnits="userSpaceOnUse">
-<stop stop-color="white"/>
-<stop offset="1" stop-color="white"/>
-</linearGradient>
-</defs>
-</svg>

+ 0 - 29
app/assets/svg/sV4.svg

@@ -1,29 +0,0 @@
-<svg width="80" height="80" viewBox="0 0 80 80" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M79.2695 69.8047C79.2695 56.5625 69.9102 45.3125 56.9883 41.3516C62.0117 38.0469 65.3398 32.3906 65.3398 25.9688C65.3398 15.7812 57.0117 7.5 46.7695 7.5C36.5273 7.5 28.1992 15.7812 28.1992 25.9609C28.1992 32.3828 31.5273 38.0391 36.5508 41.3438C23.6289 45.3125 14.2695 56.5547 14.2695 69.8047C14.2695 71.2933 15.4763 72.5 16.9648 72.5H76.6133C78.0803 72.5 79.2695 71.3108 79.2695 69.8438V69.8047Z" fill="url(#paint0_linear_378_1195)"/>
-<path d="M74.9609 69.8047C74.9609 56.5625 65.6016 45.3125 52.6797 41.3516C57.7031 38.0469 61.0312 32.3906 61.0312 25.9688C61.0312 15.7813 52.7031 7.5 42.4609 7.5C32.2188 7.5 23.8906 15.7812 23.8906 25.9609C23.8906 32.3828 27.2188 38.0391 32.2422 41.3438C19.3203 45.3125 9.96094 56.5547 9.96094 69.8047C9.96094 71.2933 11.1677 72.5 12.6562 72.5H72.3047C73.7717 72.5 74.9609 71.3108 74.9609 69.8438V69.8047Z" fill="url(#paint1_linear_378_1195)"/>
-<foreignObject x="0.484615" y="0.484615" width="79.0308" height="79.0308"><div xmlns="http://www.w3.org/1999/xhtml" style="backdrop-filter:blur(3.51px);clip-path:url(#bgblur_0_378_1195_clip_path);height:100%;width:100%"></div></foreignObject><path data-figma-bg-blur-radius="7.01538" d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z" fill="url(#paint2_linear_378_1195)" fill-opacity="0.9"/>
-<path d="M39.8105 42.2744C39.9336 42.2334 40.0664 42.2334 40.1895 42.2744L42.4229 43.0186C42.6553 43.096 42.8173 43.3072 42.832 43.5518L43.7744 59.3828C43.7863 59.5838 43.6972 59.7776 43.5361 59.8984L40.3604 62.2803C40.147 62.4403 39.853 62.4403 39.6396 62.2803L36.4639 59.8984C36.3028 59.7776 36.2137 59.5838 36.2256 59.3828L37.168 43.5518C37.1827 43.3072 37.3447 43.096 37.5771 43.0186L39.8105 42.2744Z" fill="url(#paint3_linear_378_1195)" stroke="url(#paint4_linear_378_1195)" stroke-width="0.4"/>
-<defs>
-<clipPath id="bgblur_0_378_1195_clip_path" transform="translate(-0.484615 -0.484615)"><path d="M72.5 69.8047C72.5 56.5625 63.1406 45.3125 50.2188 41.3516C55.2422 38.0469 58.5703 32.3906 58.5703 25.9688C58.5703 15.7813 50.2422 7.5 40 7.5C29.7578 7.5 21.4297 15.7812 21.4297 25.9609C21.4297 32.3828 24.7578 38.0391 29.7813 41.3438C16.8594 45.3125 7.5 56.5547 7.5 69.8047C7.5 71.2933 8.70673 72.5 10.1953 72.5H69.8438C71.3108 72.5 72.5 71.3108 72.5 69.8438V69.8047Z"/>
-</clipPath><linearGradient id="paint0_linear_378_1195" x1="45.7695" y1="-0.6" x2="47.9695" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#E04545"/>
-<stop offset="1" stop-color="#E36363"/>
-</linearGradient>
-<linearGradient id="paint1_linear_378_1195" x1="41.4609" y1="-0.6" x2="43.6609" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#FFC4C5"/>
-<stop offset="1" stop-color="#FFBFC0"/>
-</linearGradient>
-<linearGradient id="paint2_linear_378_1195" x1="39" y1="-0.6" x2="41.2" y2="79.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#FF5852"/>
-<stop offset="1" stop-color="#FF9E9E"/>
-</linearGradient>
-<linearGradient id="paint3_linear_378_1195" x1="40" y1="42" x2="40" y2="62.8" gradientUnits="userSpaceOnUse">
-<stop stop-color="#FFCECE"/>
-<stop offset="1" stop-color="#FF8B8B"/>
-</linearGradient>
-<linearGradient id="paint4_linear_378_1195" x1="36.6" y1="43.4" x2="46.2" y2="71.2" gradientUnits="userSpaceOnUse">
-<stop stop-color="#FFEEEE"/>
-<stop offset="1" stop-color="#FFE9E9"/>
-</linearGradient>
-</defs>
-</svg>

BIN
app/assets/video/solutions.mp4


+ 1 - 1
app/components/Header.vue

@@ -2,7 +2,7 @@
   <header class="header" :class="{ 'header-hidden': isHidden }" role="banner">
     <div class="header-left">
       <a href="/" class="brand" aria-label="Home">
-        <img src="/logo.png" alt="DDAC logo" class="brand-logo" width="34" height="34" />
+        <NuxtPicture src="/logo.png" alt="DDAC logo" class="brand-logo" width="34" height="34"></NuxtPicture>
         <h1 class="brand-title">DDAC</h1>
       </a>
     </div>

+ 1 - 1
app/components/HeaderH5.vue

@@ -2,7 +2,7 @@
   <header class="h5-header">
     <div class="h5-header-container">
       <a href="/" class="brand">
-        <img src="/logo.png" alt="DDAC logo" class="brand-logo" width="24" height="24" />
+        <NuxtPicture src="/logo.png" alt="DDAC logo" class="brand-logo" width="24" height="24"></NuxtPicture>
         <h1 class="brand-title">DDAC</h1>
       </a>
       <button class="menu-button" @click="toggleMenu">

+ 9 - 29
app/components/PlansSection.vue

@@ -86,6 +86,7 @@
   display: flex;
   flex-direction: column;
   gap: 40px;
+  z-index: 1;
 
 
   .plans-cards {
@@ -97,13 +98,11 @@
   .plan-card {
     border-radius: 20px;
     background: rgba(255, 255, 255, 0.08);
-    border: 1px solid rgba(178, 161, 255, 0.8);
-    padding: 28px 24px;
+    padding: 45px 24px ;
     box-sizing: border-box;
     display: flex;
     flex-direction: column;
-    gap: 14px;
-    min-height: 380px;
+    height: 608px;
 
     &:hover {
       border: 2px solid rgba(178, 161, 255, 0.9);
@@ -115,9 +114,6 @@
       }
     }
 
-    // &.highlight {
-
-    // }
 
     .plan-name {
       text-align: center;
@@ -129,6 +125,7 @@
     }
 
     .plan-desc {
+      margin-top: 40px;
       text-align: center;
       font-family: 'Source Han Sans CN', sans-serif;
       font-size: 20px;
@@ -138,6 +135,7 @@
     }
 
     .old-price {
+      margin-top: 20px;
       display: flex;
       justify-content: center;
       align-items: center;
@@ -165,6 +163,7 @@
     }
 
     .plan-price {
+      padding: 42px;
       font-family: 'Roboto', sans-serif;
       text-align: center;
       font-size: 65px;
@@ -181,7 +180,7 @@
 
       .btn-primary {
         flex: 1;
-        height: 44px;
+        height: 64px;
         border-radius: 50px;
         background: linear-gradient(91deg, rgba(163, 157, 255, 0.20) 1.24%, rgba(125, 70, 255, 0.20) 122.93%);
         border: none;
@@ -190,30 +189,11 @@
         font-size: 24px;
         cursor: pointer;
         transition: opacity 0.3s ease;
-
         &:hover {
-
           opacity: 0.85;
         }
-
-      }
-
-      .btn-link {
-        flex: 1;
-        height: 44px;
-        border-radius: 10px;
-        border: 1px solid rgba(255, 255, 255, 0.5);
-        background: transparent;
-        color: #fff;
-        font-family: 'Source Han Sans CN', sans-serif;
-        font-size: 16px;
-        cursor: pointer;
-        transition: opacity 0.3s ease;
-
-        &:hover {
-          opacity: 0.8;
-        }
       }
+     
     }
 
     .plan-title {
@@ -231,7 +211,7 @@
         padding: 0;
         display: grid;
         grid-template-columns: repeat(2, 1fr);
-        gap: 8px;
+        gap: 15px;
 
         li {
           position: relative;

+ 10 - 11
app/components/home/ProductTabs.vue

@@ -1,13 +1,8 @@
 <template>
   <div class="product-tabs-container">
     <section class="product-tabs">
-      <div 
-        v-for="(tab, index) in tabs" 
-        :key="index"
-        class="tab-item"
-        :class="{ active: activeTab === index }"
-        @click="activeTab = index"
-      >
+      <div v-for="(tab, index) in tabs" :key="index" class="tab-item" :class="{ active: activeTab === index }"
+        @click="activeTab = index">
         {{ tab }}
       </div>
     </section>
@@ -21,7 +16,8 @@
               {{ currentCards[0].description }}
             </p>
             <div class="card-features">
-              <span v-for="(feature, idx) in currentCards[0].features" :key="idx" class="feature-tag">{{ feature }}</span>
+              <span v-for="(feature, idx) in currentCards[0].features" :key="idx" class="feature-tag">{{ feature
+              }}</span>
             </div>
             <div class="card-actions">
               <button class="btn-primary">更多详情</button>
@@ -37,7 +33,8 @@
               {{ currentCards[1].description }}
             </p>
             <div class="card-features">
-              <span v-for="(feature, idx) in currentCards[1].features" :key="idx" class="feature-tag">{{ feature }}</span>
+              <span v-for="(feature, idx) in currentCards[1].features" :key="idx" class="feature-tag">{{ feature
+              }}</span>
             </div>
             <div class="card-actions">
               <button class="btn-primary">更多详情</button>
@@ -53,7 +50,8 @@
               {{ currentCards[2].description }}
             </p>
             <div class="card-features">
-              <span v-for="(feature, idx) in currentCards[2].features" :key="idx" class="feature-tag">{{ feature }}</span>
+              <span v-for="(feature, idx) in currentCards[2].features" :key="idx" class="feature-tag">{{ feature
+              }}</span>
             </div>
             <div class="card-actions">
               <button class="btn-primary">更多详情</button>
@@ -201,7 +199,8 @@ const currentCards = computed(() => cardData[activeTab.value])
   height: 100px;
   margin: 0 auto;
   border-radius: 150px;
-  background: linear-gradient(7.88deg, rgba(165, 101, 255, 0.3) 0%, rgba(3, 0, 20, 0.3) 100%);
+  background: linear-gradient(177deg, rgba(165, 101, 255, 0.30) -20.47%, rgba(3, 0, 20, 0.30) 134.25%);
+  backdrop-filter: blur(20px);
   display: flex;
   align-items: center;
   gap: 60px;

+ 3 - 3
app/components/home/StatsSection.vue

@@ -1,6 +1,6 @@
 <template>
   <section class="stats-section" :style="{ backgroundImage: `url(${homeBg})` }">
-    <img class="stats-figure" :src="homeD" alt="游戏盾" />
+    <NuxtPicture  class="stats-figure" :src="homeD" alt="游戏盾" ></NuxtPicture>
     <div class="stat-item">
       <div class="stat-label">今日&nbsp;CC&nbsp;攻击次数</div>
       <div class="stat-value">{{ formatNumber(stats.ccAttacks) }}</div>
@@ -19,8 +19,8 @@
 <script setup>
 import { onMounted, onUnmounted } from 'vue'
 import { storeToRefs } from 'pinia'
-import homeBg from '~/assets/images/home/home-bg.png'
-import homeD from '~/assets/images/home/home-d.png'
+const homeBg = '/images/home/home-bg.png'
+const homeD = '/images/home/home-d.png'
 
 const statsStore = useStatsStore()
 const { stats } = storeToRefs(statsStore)

+ 8 - 8
app/components/products/Card.vue

@@ -1,11 +1,11 @@
 <template>
   <section class="card-container">
-    <img class="card-bg-img" :src="bg2" alt="背景图">
+    <NuxtImg class="card-bg-img" src="/images/products/bg2.jpg" alt="背景图" />
     <div class="card-box">
       <div v-mouse-glow class="card-item card1">
         <div class="card-title">
           <div class="title-wrapper">
-            <img :src="icon" alt="加密锁">
+            <NuxtImg :src="icon" alt="加密锁" />
             <h3>全链加密</h3>
           </div>
           <div class="stat-text">
@@ -26,7 +26,7 @@
       <div v-mouse-glow class="card-item card2">
         <div class="card-title">
           <div class="title-wrapper">
-            <img :src="icon" alt="加密锁">
+            <NuxtImg :src="icon2" alt="加密锁" />
             <h3>DDoS 防护</h3>
           </div>
           <div class="stat-text">
@@ -37,7 +37,7 @@
       <div v-mouse-glow class="card-item card3">
         <div class="card-title">
           <div class="title-wrapper">
-            <img :src="icon" alt="加密锁">
+            <NuxtImg :src="icon3" alt="加密锁" />
             <h3>智能加速</h3>
           </div>
           <div class="stat-text">
@@ -54,7 +54,7 @@
           </div>
         </div>
         <div class="card4-img">
-          <img :src="icon2" alt="云安全">
+          <NuxtImg width="198" height="198" src="/images/products/security.png" alt="云安全" />
           <div class="img-btn">Unlimited Scaling</div>
           <div class="img-btn">Advanced Security</div>
           <div class="img-btn">Advanced Security</div>
@@ -64,9 +64,9 @@
   </section>
 </template>
 <script setup>
-import bg2 from '~/assets/images/products/bg2.png'
-import icon from '~/assets/images/products/icon.png'
-import icon2 from '~/assets/images/products/icon2.png'
+  import icon from '~/assets/svg/products/lock.svg'
+  import icon2 from '~/assets/svg/products/security.svg'
+  import icon3 from '~/assets/svg/products/acceleration.svg'
 </script>
 <style lang="scss" scoped>
 .card-container {

+ 2 - 2
app/directives/mouseGlowDirective.js

@@ -1,9 +1,9 @@
 const defaultOptions = {
-  size: 400,
+  size: 300,
   color1: 'rgba(128, 119, 255, 0.5)',
   color2: 'rgba(231, 76, 255, 0.5)',
   angle: 148,
-  opacity: 0.8,
+  opacity: 0.5,
   blur: 50,
   duration: 0.15
 }

+ 54 - 71
app/pages/pc/index.vue

@@ -4,7 +4,7 @@
       <!-- 标题区域和视频背景 -->
       <section class="hero-section">
         <!-- 视频背景 -->
-        <video ref="videoRef" class="hero-video-bg" :src="videoSrc" autoplay loop muted playsinline
+        <video ref="videoRef" class="hero-video-bg" src="~/assets/video/home.webm" autoplay loop muted playsinline
           @loadedmetadata="onVideoLoaded"></video>
         <!-- Canvas动画组件 -->
         <ParticlesCanvas class="canvas-overlay" />
@@ -34,7 +34,7 @@
 
       <!-- 安全漏洞 / 全景技术架构上方模块 -->
       <section class="security-arch-section">
-        <img alt="安全架构" :src="homeBg2" width="1" height="1" class="security-arch-img" />
+        <NuxtImg alt="安全架构" src="/images/home/home-bg2.png" class="security-arch-img" />
         <div class="security-arch-animate">
           <SecurityParticles />
         </div>
@@ -43,16 +43,24 @@
             全景技术架构,让技术成为增长引擎
           </h3>
           <div class="security-arch-subtitle">
-            从基础设施、数据引擎、服务中台到业务应用,层层协同,将算力、数据与能力统一管理,
-            保证系统在高并发、高复杂度场景下依然稳定运行。
+            <p>
+              从基础设施、数据引擎、服务中台到业务应用,层层协同,将算力、数据与能力统一管理,
+            </p>
+            <p>
+              保证系统在高并发、高复杂度场景下依然稳定运行。
+            </p>
           </div>
         </div>
       </section>
       <!-- TODO 正常访客等... -->
 
+      <section class="security-flowchart">
+        <NuxtPicture src="/images/home/flowchart.png" alt="流程" />
+      </section>
+
       <!-- 助力各行业客户成功 -->
       <section class="cain-section">
-        <img alt="助力各行业客户成功" :src="homeBg3" width="1" height="1" class="cain-section-img" />
+        <NuxtImg alt="助力各行业客户成功" src="/images/home/home-bg3.png" class="cain-section-img" />
         <div class="cain-section-animate">
           <SecurityParticles />
         </div>
@@ -66,75 +74,75 @@
         <div class="industry-content">
           <div class="industry-item">
             <div class="industry-text">金融</div>
-            <img :src="icon" alt="金融" class="industry-icon" />
+            <NuxtImg src="/images/home/icon.png" alt="金融" class="industry-icon" />
           </div>
           <div class="industry-item">
             <div class="industry-text">互联网</div>
-            <img :src="icon2" alt="互联网" class="industry-icon" />
+            <NuxtImg src="/images/home/icon2.png" alt="互联网" class="industry-icon" />
           </div>
           <div class="industry-item">
             <div class="industry-text">医疗健康</div>
-            <img :src="icon3" alt="医疗健康" class="industry-icon" />
+            <NuxtImg src="/images/home/icon3.png" alt="医疗健康" class="industry-icon" />
           </div>
           <div class="industry-item">
             <div class="industry-text">制造</div>
-            <img :src="icon4" alt="制造" class="industry-icon" />
+            <NuxtImg src="/images/home/icon4.png" alt="制造" class="industry-icon" />
           </div>
           <div class="industry-item">
             <div class="industry-text">教育</div>
-            <img :src="icon5" alt="教育" class="industry-icon" />
+            <NuxtImg src="/images/home/icon5.png" alt="教育" class="industry-icon" />
           </div>
         </div>
         <div class="industry-other">
           <div class="other-item">
-            <img :src="icon6" alt="卓越教育">
+            <NuxtPicture src="/images/home/icon6.png" alt="卓越教育" />
           </div>
           <div class="other-item">
-            <img :src="icon7" alt="华福证券">
+            <NuxtPicture src="/images/home/icon7.png" alt="华福证券" />
           </div>
           <div class="other-item">
-            <img :src="icon8" alt="汉王">
+            <NuxtPicture src="/images/home/icon8.png" alt="汉王" />
           </div>
           <div class="other-item">
-            <img :src="icon9" alt="隧道股份">
+            <NuxtPicture src="/images/home/icon9.png" alt="隧道股份" />
           </div>
           <div class="other-item">
-            <img :src="icon10" alt="岳阳医院">
+            <NuxtPicture src="/images/home/icon10.png" alt="岳阳医院" />
           </div>
           <div class="other-item">
-            <img :src="icon11" alt="杉德">
+            <NuxtPicture src="/images/home/icon11.png" alt="杉德" />
           </div>
           <div class="other-item">
-            <img :src="icon12" alt="易班">
+            <NuxtPicture src="/images/home/icon12.png" alt="易班" />
           </div>
           <div class="other-item">
-            <img :src="icon13" alt="银联商务">
+            <NuxtPicture src="/images/home/icon13.png" alt="银联商务" />
           </div>
           <div class="other-item">
-            <img :src="icon14" alt="长海医院">
+            <NuxtPicture src="/images/home/icon14.png" alt="长海医院" />
           </div>
           <div class="other-item">
-            <img :src="icon15" alt="斗象科技">
+            <NuxtPicture src="/images/home/icon15.png" alt="斗象科技" />
           </div>
           <div class="other-item">
-            <img :src="icon16" alt="瑞金">
+            <NuxtPicture src="/images/home/icon16.png" alt="瑞金" />
           </div>
           <div class="other-item">
-            <img :src="icon17" alt="3L">
+            <NuxtPicture src="/images/home/icon17.png" alt="3L" />
           </div>
           <div class="other-item">
-            <img :src="icon18" alt="宝付">
+            <NuxtPicture src="/images/home/icon18.png" alt="宝付" />
           </div>
           <div class="other-item">
-            <img :src="icon19" alt="新华医院">
+            <NuxtPicture src="/images/home/icon19.png" alt="新华医院" />
           </div>
           <div class="other-item">
-            <img :src="icon20" alt="中船重工物贸集团">
+            <NuxtPicture src="/images/home/icon20.png" alt="中船重工物贸集团" />
           </div>
         </div>
         <div class="industry-box">
           <div class="industry-radar">
-            <img :src="homeBg4" alt="radar" class="radar-bg-img" />
+            <NuxtImg src="/images/home/home-bg4.png" alt="radar" class="radar-bg-img" />
             <div class="radar-dots">
               <span class="radar-dot radar-dot-1" />
               <span class="radar-dot radar-dot-2" />
@@ -150,7 +158,7 @@
       </section>
       <section class="hero-section">
         <!-- 视频背景 -->
-        <video ref="videoRef" class="hero-video-bg" :src="videoSrc" autoplay loop muted playsinline
+        <video ref="videoRef" class="hero-video-bg" src="~/assets/video/home.webm" autoplay loop muted playsinline
           @loadedmetadata="onVideoLoaded"></video>
         <!-- Canvas动画组件 -->
         <ParticlesCanvas class="canvas-overlay" />
@@ -168,32 +176,11 @@ import { ref } from 'vue'
 import StatsSection from '~/components/home/StatsSection.vue'
 import ProductTabs from '~/components/home/ProductTabs.vue'
 import PlansSection from '~/components/PlansSection.vue'
-import videoSrc from '~/assets/video/home.webm'
 import ParticlesCanvas from '~/components/ParticlesCanvas.vue'
 import SecurityParticles from '~/components/SecurityParticles.vue'
-import homeBg2 from '~/assets/images/home/home-bg2.png'
-import homeBg3 from '~/assets/images/home/home-bg3.png'
-import homeBg4 from '~/assets/images/home/home-bg4.png'
-import icon from '~/assets/images/home/icon.png'
-import icon2 from '~/assets/images/home/icon2.png'
-import icon3 from '~/assets/images/home/icon3.png'
-import icon4 from '~/assets/images/home/icon4.png'
-import icon5 from '~/assets/images/home/icon5.png'
-import icon6 from '~/assets/images/home/icon6.png'
-import icon7 from '~/assets/images/home/icon7.png'
-import icon8 from '~/assets/images/home/icon8.png'
-import icon9 from '~/assets/images/home/icon9.png'
-import icon10 from '~/assets/images/home/icon10.png'
-import icon11 from '~/assets/images/home/icon11.png'
-import icon12 from '~/assets/images/home/icon12.png'
-import icon13 from '~/assets/images/home/icon13.png'
-import icon14 from '~/assets/images/home/icon14.png'
-import icon15 from '~/assets/images/home/icon15.png'
-import icon16 from '~/assets/images/home/icon16.png'
-import icon17 from '~/assets/images/home/icon17.png'
-import icon18 from '~/assets/images/home/icon18.png'
-import icon19 from '~/assets/images/home/icon19.png'
-import icon20 from '~/assets/images/home/icon20.png'
+
+
+
 
 const videoRef = ref(null)
 const onVideoLoaded = () => {
@@ -205,7 +192,7 @@ const onVideoLoaded = () => {
 }
 
 useHead(() => ({
-  title:'DDAC',
+  title: 'DDAC',
   meta: [
     { name: 'viewport', content: 'width=device-width, initial-scale=1' },
     { name: 'description', content: 'DDAC - 游戏盾防御' },
@@ -223,8 +210,8 @@ useHead(() => ({
 <style scoped lang="scss">
 .container {
   width: 100%;
-  min-height: 100vh;
-  overflow-x: hidden;
+  height: 100%;
+  overflow: hidden;
   box-sizing: border-box;
 }
 
@@ -376,7 +363,7 @@ useHead(() => ({
     position: absolute;
     top: 234px;
     transform: translate(-50%);
-    width: 936px;
+    width: 750px;
     opacity: .7;
     pointer-events: none;
   }
@@ -387,9 +374,6 @@ useHead(() => ({
     left: 50%;
     top: 500px;
     transform: translate(-50%, -50%);
-    /* 限制宽度并居中:保证 title 与 subtitle 两端对齐 */
-    width: min(760px, 90%);
-    text-align: justify;
 
     .security-arch-title {
       font-size: 40px;
@@ -397,16 +381,9 @@ useHead(() => ({
       font-weight: 400;
       line-height: 40px;
       margin: 0 auto;
-      /* 通过伪元素强制单行也两端对齐 */
-      text-align: justify;
-      display: block;
-
-      &::after {
-        content: "";
-        display: inline-block;
-        width: 100%;
-        height: 0;
-      }
+      text-align: center;
+
+
     }
 
     .security-arch-subtitle {
@@ -418,12 +395,18 @@ useHead(() => ({
       line-height: 24px;
       white-space: normal;
       word-break: break-word;
-      text-align: justify;
-      /* 两端对齐并自动换行 */
+      text-align: center;
     }
   }
 }
 
+.security-flowchart {
+  position: relative;
+  display: flex;
+  justify-content: center;
+  margin-top: 40px;
+}
+
 //彩虹部分
 .cain-section {
   position: relative;
@@ -447,7 +430,7 @@ useHead(() => ({
     position: absolute;
     top: 128px;
     transform: translate(-50%);
-    width: 936px;
+    width: 750px;
     opacity: .7;
     pointer-events: none;
   }

+ 6 - 4
app/pages/pc/products.vue

@@ -2,7 +2,7 @@
   <section class="container">
     <section class="video-section">
       <div class="left-bg"></div>
-      <video ref="videoRef" class="video-bg" :src="videoSrc" autoplay loop muted playsinline
+      <video ref="videoRef" class="video-bg" src="~/assets/video/products.mp4" autoplay loop muted playsinline
         @loadedmetadata="onVideoLoaded"></video>
       <div class="video-title">
         <h1>DDAC游戏盾——让APP自带</h1>
@@ -26,6 +26,7 @@
     </section>
     <section class="products-sdk">
       <h2>安全加速SDK防护架构</h2>
+      <NuxtPicture src="/images/products/flowchart.png" alt="安全加速SDK防护架构"  />
     </section>
   </section>
 </template>
@@ -35,7 +36,6 @@ definePageMeta({
   layout: 'pc'
 })
 import { ref } from 'vue'
-import videoSrc from '~/assets/video/products.mp4'
 import Introduction from '~/components/products/Introduction.vue'
 import Card from '~/components/products/Card.vue'
 const videoRef = ref(null)
@@ -60,7 +60,7 @@ useHead(() => ({
 <style scoped lang="scss">
 .container {
   width: 100%;
-  min-height: 100vh;
+  height: 100%;
   overflow: hidden;
   box-sizing: border-box;
 }
@@ -78,7 +78,7 @@ useHead(() => ({
     width: 927px;
     height: auto;
     aspect-ratio: 103/62;
-    background-image: url('~/assets/images/products/bg.png');
+    background-image: url('/images/products/bg.png');
     background-size: contain;
     background-position: center;
     background-repeat: no-repeat;
@@ -195,6 +195,7 @@ useHead(() => ({
     border-radius: 50%;
     background: linear-gradient(189deg, #7A41FF 6.39%, rgba(3, 0, 20, 0.20) 30.53%);
     filter: blur(50px);
+    z-index: 0;
   }
 }
 
@@ -202,6 +203,7 @@ useHead(() => ({
   display: flex;
   flex-direction: column;
   align-items: center;
+  gap: 50px;
   h2 {
     font-family: "Source Han Sans CN";
     font-size: 62px;

+ 4 - 1
nuxt.config.ts

@@ -1,12 +1,15 @@
 // https://nuxt.com/docs/api/configuration/nuxt-config
 export default defineNuxtConfig({
-  modules: ['@vueuse/nuxt', '@pinia/nuxt', '@nuxt/icon'],
+  modules: ['@vueuse/nuxt', '@pinia/nuxt', '@nuxt/icon', '@nuxt/image'],
   compatibilityDate: '2025-07-15',
   // devtools: { enabled: true },
   css: ['~/assets/scss/main.scss'], // 全局样式文件
   plugins: ['~/plugins/index.js'],
   icon: {
     localApiEndpoint: '/nuxt-icon'
+  },
+  image: {
+    format: ['avif', 'webp', 'png']
   }
   // vite: {
   //   css: {

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
   },
   "dependencies": {
     "@nuxt/icon": "2.2.1",
+    "@nuxt/image": "2.0.0",
     "@pinia/nuxt": "^0.5.5",
     "@vueuse/nuxt": "^14.1.0",
     "nuxt": "^4.2.2",

+ 380 - 0
pnpm-lock.yaml

@@ -11,6 +11,9 @@ importers:
       '@nuxt/icon':
         specifier: 2.2.1
         version: 2.2.1(magicast@0.5.1)(vite@7.3.1(@types/node@25.0.7)(jiti@2.6.1)(sass@1.97.2)(terser@5.44.1)(yaml@2.8.2))(vue@3.5.26)
+      '@nuxt/image':
+        specifier: 2.0.0
+        version: 2.0.0(db0@0.3.4)(ioredis@5.9.1)(magicast@0.5.1)
       '@pinia/nuxt':
         specifier: ^0.5.5
         version: 0.5.5(magicast@0.5.1)(vue@3.5.26)
@@ -364,6 +367,9 @@ packages:
     cpu: [x64]
     os: [win32]
 
+  '@fastify/accept-negotiator@2.0.1':
+    resolution: {integrity: sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==}
+
   '@floating-ui/core@1.7.3':
     resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
 
@@ -387,6 +393,143 @@ packages:
     peerDependencies:
       vue: '>=3'
 
+  '@img/colour@1.0.0':
+    resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
+    engines: {node: '>=18'}
+
+  '@img/sharp-darwin-arm64@0.34.5':
+    resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [arm64]
+    os: [darwin]
+
+  '@img/sharp-darwin-x64@0.34.5':
+    resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [x64]
+    os: [darwin]
+
+  '@img/sharp-libvips-darwin-arm64@1.2.4':
+    resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==}
+    cpu: [arm64]
+    os: [darwin]
+
+  '@img/sharp-libvips-darwin-x64@1.2.4':
+    resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==}
+    cpu: [x64]
+    os: [darwin]
+
+  '@img/sharp-libvips-linux-arm64@1.2.4':
+    resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
+    cpu: [arm64]
+    os: [linux]
+
+  '@img/sharp-libvips-linux-arm@1.2.4':
+    resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
+    cpu: [arm]
+    os: [linux]
+
+  '@img/sharp-libvips-linux-ppc64@1.2.4':
+    resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
+    cpu: [ppc64]
+    os: [linux]
+
+  '@img/sharp-libvips-linux-riscv64@1.2.4':
+    resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
+    cpu: [riscv64]
+    os: [linux]
+
+  '@img/sharp-libvips-linux-s390x@1.2.4':
+    resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
+    cpu: [s390x]
+    os: [linux]
+
+  '@img/sharp-libvips-linux-x64@1.2.4':
+    resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
+    cpu: [x64]
+    os: [linux]
+
+  '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+    resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
+    cpu: [arm64]
+    os: [linux]
+
+  '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+    resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
+    cpu: [x64]
+    os: [linux]
+
+  '@img/sharp-linux-arm64@0.34.5':
+    resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [arm64]
+    os: [linux]
+
+  '@img/sharp-linux-arm@0.34.5':
+    resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [arm]
+    os: [linux]
+
+  '@img/sharp-linux-ppc64@0.34.5':
+    resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [ppc64]
+    os: [linux]
+
+  '@img/sharp-linux-riscv64@0.34.5':
+    resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [riscv64]
+    os: [linux]
+
+  '@img/sharp-linux-s390x@0.34.5':
+    resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [s390x]
+    os: [linux]
+
+  '@img/sharp-linux-x64@0.34.5':
+    resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [x64]
+    os: [linux]
+
+  '@img/sharp-linuxmusl-arm64@0.34.5':
+    resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [arm64]
+    os: [linux]
+
+  '@img/sharp-linuxmusl-x64@0.34.5':
+    resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [x64]
+    os: [linux]
+
+  '@img/sharp-wasm32@0.34.5':
+    resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [wasm32]
+
+  '@img/sharp-win32-arm64@0.34.5':
+    resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [arm64]
+    os: [win32]
+
+  '@img/sharp-win32-ia32@0.34.5':
+    resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [ia32]
+    os: [win32]
+
+  '@img/sharp-win32-x64@0.34.5':
+    resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+    cpu: [x64]
+    os: [win32]
+
   '@ioredis/commands@1.5.0':
     resolution: {integrity: sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==}
 
@@ -481,6 +624,10 @@ packages:
   '@nuxt/icon@2.2.1':
     resolution: {integrity: sha512-GI840yYGuvHI0BGDQ63d6rAxGzG96jQcWrnaWIQKlyQo/7sx9PjXkSHckXUXyX1MCr9zY6U25Td6OatfY6Hklw==}
 
+  '@nuxt/image@2.0.0':
+    resolution: {integrity: sha512-otHi6gAoYXKLrp8m27ZjX1PjxOPaltQ4OiUs/BhkW995mF/vXf8SWQTw68fww+Uric0v+XgoVrP9icDi+yT6zw==}
+    engines: {node: '>=18.20.6'}
+
   '@nuxt/kit@3.20.2':
     resolution: {integrity: sha512-laqfmMcWWNV1FsVmm1+RQUoGY8NIJvCRl0z0K8ikqPukoEry0LXMqlQ+xaf8xJRvoH2/78OhZmsEEsUBTXipcw==}
     engines: {node: '>=18.12.0'}
@@ -1555,6 +1702,9 @@ packages:
     engines: {node: '>=4'}
     hasBin: true
 
+  cssfilter@0.0.10:
+    resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==}
+
   cssnano-preset-default@7.0.10:
     resolution: {integrity: sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA==}
     engines: {node: ^18.12.0 || ^20.9.0 || >=22.0}
@@ -1940,6 +2090,10 @@ packages:
     resolution: {integrity: sha512-BXNqFQ66oOsR82g9ajFFsR8ZKrjVvYCLyeML9IvSMAsP56XH2VXBdZjmI11p65nXXJxTEt1hie3J2QeFJVgrtQ==}
     engines: {node: '>=12.22.0'}
 
+  ipx@3.1.1:
+    resolution: {integrity: sha512-7Xnt54Dco7uYkfdAw0r2vCly3z0rSaVhEXMzPvl3FndsTVm5p26j+PO+gyinkYmcsEUvX2Rh7OGK7KzYWRu6BA==}
+    hasBin: true
+
   iron-webcrypto@1.2.1:
     resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==}
 
@@ -2764,6 +2918,10 @@ packages:
   setprototypeof@1.2.0:
     resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
 
+  sharp@0.34.5:
+    resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==}
+    engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
   shebang-command@2.0.0:
     resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
     engines: {node: '>=8'}
@@ -3271,6 +3429,11 @@ packages:
     resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
     engines: {node: '>=18'}
 
+  xss@1.0.15:
+    resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==}
+    engines: {node: '>= 0.10.0'}
+    hasBin: true
+
   y18n@5.0.8:
     resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
     engines: {node: '>=10'}
@@ -3611,6 +3774,9 @@ snapshots:
   '@esbuild/win32-x64@0.27.2':
     optional: true
 
+  '@fastify/accept-negotiator@2.0.1':
+    optional: true
+
   '@floating-ui/core@1.7.3':
     dependencies:
       '@floating-ui/utils': 0.2.10
@@ -3639,6 +3805,103 @@ snapshots:
       '@iconify/types': 2.0.0
       vue: 3.5.26
 
+  '@img/colour@1.0.0':
+    optional: true
+
+  '@img/sharp-darwin-arm64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-darwin-arm64': 1.2.4
+    optional: true
+
+  '@img/sharp-darwin-x64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-darwin-x64': 1.2.4
+    optional: true
+
+  '@img/sharp-libvips-darwin-arm64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-darwin-x64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linux-arm64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linux-arm@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linux-ppc64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linux-riscv64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linux-s390x@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linux-x64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linuxmusl-arm64@1.2.4':
+    optional: true
+
+  '@img/sharp-libvips-linuxmusl-x64@1.2.4':
+    optional: true
+
+  '@img/sharp-linux-arm64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linux-arm64': 1.2.4
+    optional: true
+
+  '@img/sharp-linux-arm@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linux-arm': 1.2.4
+    optional: true
+
+  '@img/sharp-linux-ppc64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linux-ppc64': 1.2.4
+    optional: true
+
+  '@img/sharp-linux-riscv64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linux-riscv64': 1.2.4
+    optional: true
+
+  '@img/sharp-linux-s390x@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linux-s390x': 1.2.4
+    optional: true
+
+  '@img/sharp-linux-x64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linux-x64': 1.2.4
+    optional: true
+
+  '@img/sharp-linuxmusl-arm64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+    optional: true
+
+  '@img/sharp-linuxmusl-x64@0.34.5':
+    optionalDependencies:
+      '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+    optional: true
+
+  '@img/sharp-wasm32@0.34.5':
+    dependencies:
+      '@emnapi/runtime': 1.8.1
+    optional: true
+
+  '@img/sharp-win32-arm64@0.34.5':
+    optional: true
+
+  '@img/sharp-win32-ia32@0.34.5':
+    optional: true
+
+  '@img/sharp-win32-x64@0.34.5':
+    optional: true
+
   '@ioredis/commands@1.5.0': {}
 
   '@isaacs/balanced-match@4.0.1': {}
@@ -3842,6 +4105,42 @@ snapshots:
       - vite
       - vue
 
+  '@nuxt/image@2.0.0(db0@0.3.4)(ioredis@5.9.1)(magicast@0.5.1)':
+    dependencies:
+      '@nuxt/kit': 4.2.2(magicast@0.5.1)
+      consola: 3.4.2
+      defu: 6.1.4
+      h3: 1.15.4
+      image-meta: 0.2.2
+      knitwork: 1.3.0
+      ohash: 2.0.11
+      pathe: 2.0.3
+      std-env: 3.10.0
+      ufo: 1.6.2
+    optionalDependencies:
+      ipx: 3.1.1(db0@0.3.4)(ioredis@5.9.1)
+    transitivePeerDependencies:
+      - '@azure/app-configuration'
+      - '@azure/cosmos'
+      - '@azure/data-tables'
+      - '@azure/identity'
+      - '@azure/keyvault-secrets'
+      - '@azure/storage-blob'
+      - '@capacitor/preferences'
+      - '@deno/kv'
+      - '@netlify/blobs'
+      - '@planetscale/database'
+      - '@upstash/redis'
+      - '@vercel/blob'
+      - '@vercel/functions'
+      - '@vercel/kv'
+      - aws4fetch
+      - db0
+      - idb-keyval
+      - ioredis
+      - magicast
+      - uploadthing
+
   '@nuxt/kit@3.20.2(magicast@0.5.1)':
     dependencies:
       c12: 3.3.3(magicast@0.5.1)
@@ -4951,6 +5250,9 @@ snapshots:
 
   cssesc@3.0.0: {}
 
+  cssfilter@0.0.10:
+    optional: true
+
   cssnano-preset-default@7.0.10(postcss@8.5.6):
     dependencies:
       browserslist: 4.28.1
@@ -5358,6 +5660,46 @@ snapshots:
     transitivePeerDependencies:
       - supports-color
 
+  ipx@3.1.1(db0@0.3.4)(ioredis@5.9.1):
+    dependencies:
+      '@fastify/accept-negotiator': 2.0.1
+      citty: 0.1.6
+      consola: 3.4.2
+      defu: 6.1.4
+      destr: 2.0.5
+      etag: 1.8.1
+      h3: 1.15.4
+      image-meta: 0.2.2
+      listhen: 1.9.0
+      ofetch: 1.5.1
+      pathe: 2.0.3
+      sharp: 0.34.5
+      svgo: 4.0.0
+      ufo: 1.6.2
+      unstorage: 1.17.3(db0@0.3.4)(ioredis@5.9.1)
+      xss: 1.0.15
+    transitivePeerDependencies:
+      - '@azure/app-configuration'
+      - '@azure/cosmos'
+      - '@azure/data-tables'
+      - '@azure/identity'
+      - '@azure/keyvault-secrets'
+      - '@azure/storage-blob'
+      - '@capacitor/preferences'
+      - '@deno/kv'
+      - '@netlify/blobs'
+      - '@planetscale/database'
+      - '@upstash/redis'
+      - '@vercel/blob'
+      - '@vercel/functions'
+      - '@vercel/kv'
+      - aws4fetch
+      - db0
+      - idb-keyval
+      - ioredis
+      - uploadthing
+    optional: true
+
   iron-webcrypto@1.2.1: {}
 
   is-core-module@2.16.1:
@@ -6377,6 +6719,38 @@ snapshots:
 
   setprototypeof@1.2.0: {}
 
+  sharp@0.34.5:
+    dependencies:
+      '@img/colour': 1.0.0
+      detect-libc: 2.1.2
+      semver: 7.7.3
+    optionalDependencies:
+      '@img/sharp-darwin-arm64': 0.34.5
+      '@img/sharp-darwin-x64': 0.34.5
+      '@img/sharp-libvips-darwin-arm64': 1.2.4
+      '@img/sharp-libvips-darwin-x64': 1.2.4
+      '@img/sharp-libvips-linux-arm': 1.2.4
+      '@img/sharp-libvips-linux-arm64': 1.2.4
+      '@img/sharp-libvips-linux-ppc64': 1.2.4
+      '@img/sharp-libvips-linux-riscv64': 1.2.4
+      '@img/sharp-libvips-linux-s390x': 1.2.4
+      '@img/sharp-libvips-linux-x64': 1.2.4
+      '@img/sharp-libvips-linuxmusl-arm64': 1.2.4
+      '@img/sharp-libvips-linuxmusl-x64': 1.2.4
+      '@img/sharp-linux-arm': 0.34.5
+      '@img/sharp-linux-arm64': 0.34.5
+      '@img/sharp-linux-ppc64': 0.34.5
+      '@img/sharp-linux-riscv64': 0.34.5
+      '@img/sharp-linux-s390x': 0.34.5
+      '@img/sharp-linux-x64': 0.34.5
+      '@img/sharp-linuxmusl-arm64': 0.34.5
+      '@img/sharp-linuxmusl-x64': 0.34.5
+      '@img/sharp-wasm32': 0.34.5
+      '@img/sharp-win32-arm64': 0.34.5
+      '@img/sharp-win32-ia32': 0.34.5
+      '@img/sharp-win32-x64': 0.34.5
+    optional: true
+
   shebang-command@2.0.0:
     dependencies:
       shebang-regex: 3.0.0
@@ -6837,6 +7211,12 @@ snapshots:
     dependencies:
       is-wsl: 3.1.0
 
+  xss@1.0.15:
+    dependencies:
+      commander: 2.20.3
+      cssfilter: 0.0.10
+    optional: true
+
   y18n@5.0.8: {}
 
   yallist@3.1.1: {}

BIN
public/images/home/flowchart.png


+ 0 - 0
app/assets/images/home/home-bg.png → public/images/home/home-bg.png


+ 0 - 0
app/assets/images/home/home-bg2.png → public/images/home/home-bg2.png


+ 0 - 0
app/assets/images/home/home-bg3.png → public/images/home/home-bg3.png


+ 0 - 0
app/assets/images/home/home-bg4.png → public/images/home/home-bg4.png


+ 0 - 0
app/assets/images/home/home-d.png → public/images/home/home-d.png


+ 0 - 0
app/assets/images/home/icon.png → public/images/home/icon.png


+ 0 - 0
app/assets/images/home/icon10.png → public/images/home/icon10.png


+ 0 - 0
app/assets/images/home/icon11.png → public/images/home/icon11.png


+ 0 - 0
app/assets/images/home/icon12.png → public/images/home/icon12.png


+ 0 - 0
app/assets/images/home/icon13.png → public/images/home/icon13.png


+ 0 - 0
app/assets/images/home/icon14.png → public/images/home/icon14.png


+ 0 - 0
app/assets/images/home/icon15.png → public/images/home/icon15.png


+ 0 - 0
app/assets/images/home/icon16.png → public/images/home/icon16.png


+ 0 - 0
app/assets/images/home/icon17.png → public/images/home/icon17.png


+ 0 - 0
app/assets/images/home/icon18.png → public/images/home/icon18.png


+ 0 - 0
app/assets/images/home/icon19.png → public/images/home/icon19.png


+ 0 - 0
app/assets/images/home/icon2.png → public/images/home/icon2.png


+ 0 - 0
app/assets/images/home/icon20.png → public/images/home/icon20.png


+ 0 - 0
app/assets/images/home/icon3.png → public/images/home/icon3.png


+ 0 - 0
app/assets/images/home/icon4.png → public/images/home/icon4.png


+ 0 - 0
app/assets/images/home/icon5.png → public/images/home/icon5.png


+ 0 - 0
app/assets/images/home/icon6.png → public/images/home/icon6.png


+ 0 - 0
app/assets/images/home/icon7.png → public/images/home/icon7.png


+ 0 - 0
app/assets/images/home/icon8.png → public/images/home/icon8.png


+ 0 - 0
app/assets/images/home/icon9.png → public/images/home/icon9.png


+ 0 - 0
app/assets/images/home/server.png → public/images/home/server.png


+ 0 - 0
app/assets/images/products/bg.png → public/images/products/bg.png


BIN
public/images/products/bg2.jpg


BIN
public/images/products/flowchart.png


+ 0 - 0
app/assets/images/products/icon2.png → public/images/products/security.png