国外MOSE官网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

597 lines
22 KiB

3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
  1. <script setup lang="ts">
  2. import { Icon } from '@iconify/vue';
  3. import { ref, onMounted, reactive, computed } from 'vue';
  4. import ArchitectureModule from '@/components/technology/ArchitectureModule.vue';
  5. import InnovationModule from '@/components/technology/InnovationModule.vue';
  6. import EcosystemIntegrationModule from '@/components/technology/EcosystemIntegrationModule.vue';
  7. import AppListModule from '@/components/ecosystem/AppListModule.vue';
  8. import { useI18n } from 'vue-i18n';
  9. import { useConfig } from '@/utils/config';
  10. const { getConfigImage } = useConfig();
  11. import { queryTechnologyList } from '@/api/modules/technology';
  12. import { querySummaryList } from '@/api/modules/config';
  13. import { useSummary } from '@/utils/config';
  14. const { getSummaryDescription } = useSummary();
  15. // 返回的是富文本 还需要分段
  16. const tecDesList = computed(() => {
  17. return getSummaryDescription('config_structural_of_technology').split('\n');
  18. });
  19. const { t } = useI18n();
  20. // 轮播控制
  21. const currentAppIndex = ref(0);
  22. const totalApps = 8; // 假设有8个应用
  23. // 显示下一个应用
  24. const showNextApp = () => {
  25. currentAppIndex.value = (currentAppIndex.value + 1) % totalApps;
  26. };
  27. // 显示上一个应用
  28. const showPrevApp = () => {
  29. currentAppIndex.value = (currentAppIndex.value - 1 + totalApps) % totalApps;
  30. };
  31. // 技术架构数据
  32. const architectures = [
  33. {
  34. title: '聚合层',
  35. description: '负责汇总并优化来自各个区块链的交易请求,提高系统整体处理效率。',
  36. icon: 'carbon:data-1',
  37. color: 'primary',
  38. image: '/LOGO.png' // 这里替换为实际图片路径
  39. },
  40. {
  41. title: '跨链层',
  42. description: '实现不同区块链之间资产和信息的互通互联,支持多链生态系统整合。',
  43. icon: 'carbon:connect',
  44. color: 'secondary',
  45. image: '/LOGO.png' // 这里替换为实际图片路径
  46. },
  47. {
  48. title: '路由层',
  49. description: '提供智能路径规划和优化,确定交易的最佳执行路径,降低成本并提高效率。',
  50. icon: 'carbon:path-finder',
  51. color: 'accent',
  52. image: '/LOGO.png' // 这里替换为实际图片路径
  53. },
  54. {
  55. title: '应用层',
  56. description: '提供各类去中心化应用接口和服务,支持第三方开发者基于平台构建创新应用。',
  57. icon: 'carbon:application',
  58. color: 'primary',
  59. image: '/LOGO.png' // 这里替换为实际图片路径
  60. }
  61. ];
  62. // 核心技术数据
  63. const technologies = [
  64. {
  65. title: '技术壁垒',
  66. description: 'MOSE采用创新的多层零知识证明协议,确保交易隐私性的同时保持可验证性和安全性。该技术已申请多项国际专利,形成独特的技术壁垒。',
  67. icon: 'carbon:security',
  68. color: 'primary',
  69. image: '/LOGO.png' // 这里替换为实际图片路径
  70. },
  71. {
  72. title: '生态优势',
  73. description: '基于创新的跨链技术,MOSE能够无缝连接多种主流区块链,使用户可以在不同链上自由转移和交易资产,同时保持完全隐私。',
  74. icon: 'carbon:growth',
  75. color: 'secondary',
  76. image: '/LOGO.png' // 这里替换为实际图片路径
  77. },
  78. {
  79. title: '混币器',
  80. description: 'MOSE独创的"混币器"技术,将用户闲置的资产通过智能合约自动参与DeFi流动性挖矿,为用户创造被动收益,同时增强整个生态系统的流动性。',
  81. icon: 'carbon:currency',
  82. color: 'accent',
  83. image: '/LOGO.png' // 这里替换为实际图片路径
  84. },
  85. {
  86. title: '跨链桥',
  87. description: 'MOSE跨链桥采用创新的多重签名和状态验证机制,实现资产在不同链间的安全高效转移,并保持交易隐私,解决了传统跨链桥容易成为黑客攻击目标的问题。',
  88. icon: 'carbon:bridge',
  89. color: 'primary',
  90. image: '/LOGO.png' // 这里替换为实际图片路径
  91. }
  92. ];
  93. // 应用数据
  94. const apps = reactive([
  95. {
  96. id: 1,
  97. name: 'MOSE Wallet',
  98. description: '多链资产管理钱包,支持所有主流区块链,内置隐私保护功能。',
  99. image: '/LOGO.png',
  100. color: 'from-blue-600 to-indigo-900',
  101. icon: 'carbon:wallet'
  102. },
  103. {
  104. id: 2,
  105. name: 'MOSE Exchange',
  106. description: '去中心化交易所,支持跨链交易与隐私交易,流动性共享。',
  107. image: '/LOGO.png',
  108. color: 'from-purple-600 to-indigo-900',
  109. icon: 'carbon:chart-line'
  110. },
  111. {
  112. id: 3,
  113. name: 'MOSE Bridge',
  114. description: '安全高效的跨链桥,支持资产在不同区块链之间的无缝转移。',
  115. image: '/LOGO.png',
  116. color: 'from-green-600 to-teal-900',
  117. icon: 'carbon:bridge'
  118. },
  119. {
  120. id: 4,
  121. name: 'MOSE Pay',
  122. description: '隐私支付解决方案,为商家和用户提供安全、快速的支付服务。',
  123. image: '/LOGO.png',
  124. color: 'from-orange-600 to-red-900',
  125. icon: 'carbon:purchase'
  126. },
  127. {
  128. id: 5,
  129. name: 'MOSE DAO',
  130. description: '去中心化自治组织工具,支持社区治理和决策。',
  131. image: '/LOGO.png',
  132. color: 'from-amber-600 to-orange-900',
  133. icon: 'carbon:group'
  134. },
  135. {
  136. id: 6,
  137. name: 'MOSE NFT',
  138. description: '隐私NFT市场,支持创作者版权保护和数字资产交易。',
  139. image: '/LOGO.png',
  140. color: 'from-pink-600 to-rose-900',
  141. icon: 'carbon:image'
  142. },
  143. {
  144. id: 7,
  145. name: 'MOSE DeFi',
  146. description: '去中心化金融套件,包括借贷、质押、流动性挖矿等功能。',
  147. image: '/LOGO.png',
  148. color: 'from-cyan-600 to-blue-900',
  149. icon: 'carbon:money'
  150. },
  151. {
  152. id: 8,
  153. name: 'MOSE ID',
  154. description: '去中心化身份认证系统,保护用户隐私的同时满足合规要求。',
  155. image: '/LOGO.png',
  156. color: 'from-emerald-600 to-green-900',
  157. icon: 'carbon:user'
  158. }
  159. ]);
  160. // Swiper实例
  161. let swiper = null;
  162. // 初始化
  163. onMounted(() => {
  164. // 初始化WOW.js动画
  165. try {
  166. const WOW = window.WOW;
  167. if (WOW) {
  168. new WOW({
  169. boxClass: 'wow',
  170. animateClass: 'animate__animated',
  171. offset: 100,
  172. mobile: true,
  173. live: true
  174. }).init();
  175. }
  176. } catch (error) {
  177. console.error('Failed to initialize WOW.js:', error);
  178. }
  179. // 初始化Swiper
  180. initSwiper();
  181. });
  182. // 初始化Swiper
  183. const initSwiper = () => {
  184. // 动态加载Swiper
  185. import('swiper/bundle').then(({ Swiper }) => {
  186. import('swiper/css/bundle').then(() => {
  187. // 等待DOM更新
  188. setTimeout(() => {
  189. swiper = new Swiper('.swiper-container', {
  190. effect: 'coverflow',
  191. grabCursor: true,
  192. centeredSlides: true,
  193. slidesPerView: 'auto',
  194. loop: true,
  195. speed: 800,
  196. autoplay: {
  197. delay: 3000,
  198. disableOnInteraction: false,
  199. },
  200. coverflowEffect: {
  201. rotate: 0,
  202. stretch: 80,
  203. depth: 200,
  204. modifier: 1,
  205. slideShadows: true,
  206. },
  207. pagination: {
  208. el: '.swiper-pagination',
  209. clickable: true,
  210. dynamicBullets: true,
  211. },
  212. navigation: {
  213. nextEl: '.swiper-button-next',
  214. prevEl: '.swiper-button-prev',
  215. },
  216. });
  217. }, 500);
  218. });
  219. }).catch(err => {
  220. console.error('Failed to load Swiper:', err);
  221. });
  222. };
  223. </script>
  224. <template>
  225. <div class="bg-background min-h-screen">
  226. <!-- Hero Section -->
  227. <section class="relative py-24 px-6 md:px-12 lg:px-24 bg-background-dark overflow-hidden">
  228. <div class="container mx-auto relative z-10">
  229. <div class="max-w-3xl mx-auto text-center">
  230. <h1 class="text-4xl md:text-5xl lg:text-6xl font-bold text-text mb-6 wow animate__animated animate__fadeInDown animate__duration-fast">
  231. 领先的区块链隐私技术
  232. </h1>
  233. <p class="text-lg md:text-xl text-text-secondary mb-8 wow animate__animated animate__fadeIn animate__delay-xs animate__duration-fast">
  234. MOSE通过创新的密码学和跨链技术为区块链世界构建隐私保护的基础设施
  235. </p>
  236. <div class="flex justify-center gap-4">
  237. <a href="#architecture" class="inline-flex items-center gap-2 bg-primary hover:bg-primary-dark text-white font-medium py-3 px-6 rounded-lg transition-colors duration-200">
  238. 了解技术架构
  239. <Icon icon="carbon:arrow-down" />
  240. </a>
  241. <a href="#innovation" class="inline-flex items-center gap-2 bg-transparent border border-primary hover:bg-primary-light/10 text-primary font-medium py-3 px-6 rounded-lg transition-colors duration-200">
  242. 核心创新
  243. <Icon icon="carbon:launch" />
  244. </a>
  245. </div>
  246. </div>
  247. </div>
  248. <!-- Background Decoration -->
  249. <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-10">
  250. <div class="absolute -top-24 -left-24 w-64 h-64 rounded-full bg-primary-light blur-3xl wow animate__animated animate__pulse animate__infinite"></div>
  251. <div class="absolute top-1/2 right-0 w-80 h-80 rounded-full bg-secondary blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-sm"></div>
  252. <div class="absolute -bottom-24 left-1/3 w-72 h-72 rounded-full bg-accent blur-3xl wow animate__animated animate__pulse animate__infinite animate__delay-md"></div>
  253. </div>
  254. </section>
  255. <!-- 技术架构模块 - 4列布局 带底图 -->
  256. <section id="architecture" class="py-54 px-6 md:px-12 lg:px-32 bg-background-light" :style="{ backgroundImage: `url(${getConfigImage('tec_summary_bg')})` }">
  257. <div class=" w-full">
  258. <h2 class="text-3xl md:text-4xl font-bold text-text mb-16 text-center wow animate__animated animate__fadeInUp animate__duration-fast">
  259. 技术架构
  260. </h2>
  261. <div class="flex flex-wrap justify-between w-full">
  262. <!-- 动态生成技术架构卡片 -->
  263. <div
  264. v-for="(arch, index) in tecDesList"
  265. :key="index"
  266. class="w-full sm:w-1/2 lg:w-1/4 px-4 mb-8 wow animate__animated animate__fadeInUp"
  267. :class="[`animate__delay-${index}00ms`]"
  268. >
  269. <!-- 内容 -->
  270. <div class="flex flex-col items-center text-center">
  271. <p class="text-white text-xl font-medium mb-6" v-html="arch"></p>
  272. <!-- 按钮 -->
  273. <button class="px-6 py-2 bg-red-600 hover:bg-red-700 rounded-sm text-white text-sm flex items-center gap-2 transition-all duration-300">
  274. 了解更多
  275. <Icon icon="carbon:arrow-right" />
  276. </button>
  277. </div>
  278. </div>
  279. </div>
  280. </div>
  281. </section>
  282. <!-- 核心技术模块 - 单行布局 带底图 -->
  283. <section id="innovation" class="py-16 px-6 md:px-12 lg:px-24" :style="{ backgroundImage: `url(${getConfigImage('tec_created_bg')})` }">
  284. <div class="container mx-auto">
  285. <h2 class="text-3xl md:text-4xl font-bold text-text mb-12 text-center wow animate__animated animate__fadeInUp animate__duration-fast">
  286. 核心技术
  287. </h2>
  288. <!-- 核心技术卡片 - 一行一个 -->
  289. <div class="space-y-8">
  290. <div
  291. v-for="(tech, index) in technologies"
  292. :key="index"
  293. class="relative overflow-hidden rounded-2xl shadow-xl hover:shadow-2xl transition-all duration-500 group wow animate__animated animate__fadeInUp"
  294. :class="[`animate__delay-${index}00ms`]"
  295. >
  296. <!-- 背景图片 -->
  297. <div class="absolute inset-0 w-full h-full">
  298. <img :src="tech.image" :alt="tech.title" class="w-full h-full object-cover transition-transform duration-700 group-hover:scale-105" />
  299. <div
  300. class="absolute inset-0"
  301. :class="{
  302. 'bg-gradient-to-r from-indigo-900/90 via-indigo-900/50 to-transparent': tech.color === 'primary',
  303. 'bg-gradient-to-r from-emerald-900/90 via-emerald-900/50 to-transparent': tech.color === 'secondary',
  304. 'bg-gradient-to-r from-amber-900/90 via-amber-900/50 to-transparent': tech.color === 'accent',
  305. 'bg-gradient-to-r from-blue-900/90 via-blue-900/50 to-transparent': tech.color === 'primary' && index === 3
  306. }"
  307. ></div>
  308. </div>
  309. <!-- 内容 -->
  310. <div class="relative p-8 md:p-12 min-h-[300px] flex flex-col md:flex-row items-center">
  311. <!-- 左侧内容 -->
  312. <div class="md:w-1/2 mb-6 md:mb-0">
  313. <div class="flex items-center mb-6">
  314. <div class="w-16 h-16 rounded-full bg-white/20 backdrop-blur-sm flex items-center justify-center mr-4">
  315. <Icon :icon="tech.icon" class="h-8 w-8" :class="`text-${tech.color}`" />
  316. </div>
  317. <h3 class="text-3xl md:text-4xl font-bold text-white">{{ tech.title }}</h3>
  318. </div>
  319. <p class="text-white/90 text-lg md:text-xl leading-relaxed">
  320. {{ tech.description }}
  321. </p>
  322. <!-- 按钮 -->
  323. <div class="mt-8">
  324. <button class="px-6 py-3 bg-white/20 hover:bg-white/30 backdrop-blur-sm rounded-full text-white text-base flex items-center gap-2 transition-all duration-300 border border-white/30">
  325. 技术详情
  326. <Icon icon="carbon:arrow-right" />
  327. </button>
  328. </div>
  329. </div>
  330. <!-- 右侧装饰元素 -->
  331. <div class="md:w-1/2 md:pl-8 flex justify-center md:justify-end">
  332. <div
  333. class="w-48 h-48 md:w-64 md:h-64 rounded-full border-2 border-white/20 flex items-center justify-center relative overflow-hidden"
  334. :class="{
  335. 'bg-indigo-900/20': tech.color === 'primary',
  336. 'bg-emerald-900/20': tech.color === 'secondary',
  337. 'bg-amber-900/20': tech.color === 'accent',
  338. 'bg-blue-900/20': tech.color === 'primary' && index === 3
  339. }"
  340. >
  341. <!-- 内圈 -->
  342. <div class="w-32 h-32 md:w-40 md:h-40 rounded-full border border-white/40 absolute animate-spin-slow"></div>
  343. <!-- 技术图标 -->
  344. <div class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-white/10 backdrop-blur-md flex items-center justify-center">
  345. <Icon :icon="tech.icon" class="h-10 w-10 md:h-12 md:w-12" :class="`text-${tech.color}`" />
  346. </div>
  347. <!-- 装饰点 -->
  348. <div class="absolute top-1/4 right-1/4 w-3 h-3 rounded-full bg-white"></div>
  349. <div class="absolute bottom-1/4 left-1/4 w-3 h-3 rounded-full bg-white"></div>
  350. </div>
  351. </div>
  352. </div>
  353. <!-- 序号装饰 -->
  354. <div class="absolute bottom-4 right-8">
  355. <span class="text-8xl font-bold text-white opacity-10">0{{ index + 1 }}</span>
  356. </div>
  357. </div>
  358. </div>
  359. </div>
  360. </section>
  361. <!-- 应用程序模块 - Swiper轮播 -->
  362. <section class="py-16 px-6 md:px-12 lg:px-24 bg-background-light relative overflow-hidden" :style="{ backgroundImage: `url(${getConfigImage('eco_app_bg')})` }">
  363. <div class="container mx-auto relative z-10">
  364. <h2 class="text-3xl md:text-4xl font-bold text-text mb-12 text-center wow animate__animated animate__fadeInUp animate__duration-fast">
  365. 生态应用
  366. </h2>
  367. <div class="relative wow animate__animated animate__fadeIn animate__duration-fast">
  368. <!-- Swiper轮播 -->
  369. <div class="swiper-container">
  370. <div class="swiper-wrapper">
  371. <!-- 应用卡片 -->
  372. <div
  373. v-for="(app, index) in apps"
  374. :key="app.id"
  375. class="swiper-slide"
  376. >
  377. <div class="app-card relative overflow-hidden rounded-2xl shadow-xl hover:shadow-2xl transition-all duration-500 mx-4 my-8 h-[500px]">
  378. <!-- 背景渐变 -->
  379. <div class="absolute inset-0 bg-gradient-to-br" :class="app.color"></div>
  380. <!-- 装饰图形 -->
  381. <div class="absolute top-0 right-0 w-64 h-64 bg-white/10 rounded-full blur-3xl transform translate-x-1/2 -translate-y-1/2"></div>
  382. <div class="absolute bottom-0 left-0 w-48 h-48 bg-black/10 rounded-full blur-3xl transform -translate-x-1/2 translate-y-1/2"></div>
  383. <!-- 内容 -->
  384. <div class="relative p-8 flex flex-col h-full">
  385. <!-- 应用图标 -->
  386. <div class="mb-6 flex justify-center">
  387. <div class="w-24 h-24 rounded-full bg-white/20 backdrop-blur-sm flex items-center justify-center border-4 border-white/30">
  388. <Icon :icon="app.icon" class="h-12 w-12 text-white" />
  389. </div>
  390. </div>
  391. <!-- 应用名称 -->
  392. <h3 class="text-3xl font-bold text-white text-center mb-4">{{ app.name }}</h3>
  393. <!-- 应用描述 -->
  394. <p class="text-white/90 text-center text-lg mb-8">
  395. {{ app.description }}
  396. </p>
  397. <!-- 装饰线 -->
  398. <div class="w-24 h-1 bg-white/30 mx-auto mb-8"></div>
  399. <!-- 功能列表 -->
  400. <div class="space-y-4 mt-auto">
  401. <div class="flex items-center text-white">
  402. <Icon icon="carbon:checkmark" class="h-5 w-5 mr-3" />
  403. <span>多链支持</span>
  404. </div>
  405. <div class="flex items-center text-white">
  406. <Icon icon="carbon:checkmark" class="h-5 w-5 mr-3" />
  407. <span>隐私保护</span>
  408. </div>
  409. <div class="flex items-center text-white">
  410. <Icon icon="carbon:checkmark" class="h-5 w-5 mr-3" />
  411. <span>安全加密</span>
  412. </div>
  413. </div>
  414. <!-- 按钮 -->
  415. <div class="mt-8 flex justify-center">
  416. <button class="px-6 py-3 bg-white text-primary font-medium rounded-full hover:bg-opacity-90 transition-all duration-300 flex items-center gap-2">
  417. 立即体验
  418. <Icon icon="carbon:launch" />
  419. </button>
  420. </div>
  421. <!-- 应用编号 -->
  422. <div class="absolute top-6 right-6 bg-white/20 backdrop-blur-sm w-8 h-8 rounded-full flex items-center justify-center">
  423. <span class="text-white font-bold">{{ app.id }}</span>
  424. </div>
  425. </div>
  426. </div>
  427. </div>
  428. </div>
  429. <!-- 分页器 -->
  430. <div class="swiper-pagination mt-8"></div>
  431. </div>
  432. <!-- 导航按钮 -->
  433. <div class="swiper-button-prev !text-primary after:!text-lg"></div>
  434. <div class="swiper-button-next !text-primary after:!text-lg"></div>
  435. </div>
  436. </div>
  437. <!-- 背景装饰 -->
  438. <div class="absolute top-0 left-0 w-full h-full overflow-hidden opacity-5 pointer-events-none">
  439. <div class="absolute top-1/4 left-1/4 w-64 h-64 rounded-full border border-primary"></div>
  440. <div class="absolute bottom-1/4 right-1/4 w-96 h-96 rounded-full border border-secondary"></div>
  441. <div class="absolute top-3/4 left-3/4 w-48 h-48 rounded-full border border-accent"></div>
  442. </div>
  443. </section>
  444. <!-- 保留原有模块 -->
  445. <!-- <div class="py-16 px-6 md:px-12 lg:px-24 bg-background">
  446. <ArchitectureModule />
  447. </div> -->
  448. <!-- 保留原有模块 -->
  449. <!-- <div class="py-16 px-6 md:px-12 lg:px-24 bg-background-light">
  450. <InnovationModule />
  451. </div> -->
  452. <!-- 保留原有模块 -->
  453. <!-- <div class="py-16 px-6 md:px-12 lg:px-24">
  454. <EcosystemIntegrationModule />
  455. </div> -->
  456. </div>
  457. </template>
  458. <style scoped>
  459. /* 动画延迟类 */
  460. .animate__delay-0ms {
  461. animation-delay: 0ms;
  462. }
  463. .animate__delay-100ms {
  464. animation-delay: 100ms;
  465. }
  466. .animate__delay-200ms {
  467. animation-delay: 200ms;
  468. }
  469. .animate__delay-300ms {
  470. animation-delay: 300ms;
  471. }
  472. /* 慢速旋转 */
  473. @keyframes spin-slow {
  474. from {
  475. transform: rotate(0deg);
  476. }
  477. to {
  478. transform: rotate(360deg);
  479. }
  480. }
  481. .animate-spin-slow {
  482. animation: spin-slow 20s linear infinite;
  483. }
  484. /* Swiper样式覆盖 */
  485. :deep(.swiper-container) {
  486. padding: 30px 0;
  487. overflow: visible;
  488. }
  489. :deep(.swiper-slide) {
  490. width: 350px;
  491. transition: transform 0.3s;
  492. }
  493. :deep(.swiper-slide-active) {
  494. transform: scale(1.05);
  495. z-index: 2;
  496. }
  497. :deep(.swiper-pagination-bullet) {
  498. width: 10px;
  499. height: 10px;
  500. background: rgba(255, 255, 255, 0.5);
  501. opacity: 1;
  502. }
  503. :deep(.swiper-pagination-bullet-active) {
  504. background: var(--color-primary);
  505. transform: scale(1.2);
  506. }
  507. :deep(.swiper-button-prev),
  508. :deep(.swiper-button-next) {
  509. color: var(--color-primary);
  510. background: rgba(255, 255, 255, 0.3);
  511. width: 50px;
  512. height: 50px;
  513. border-radius: 50%;
  514. backdrop-filter: blur(4px);
  515. transition: all 0.3s;
  516. }
  517. :deep(.swiper-button-prev:hover),
  518. :deep(.swiper-button-next:hover) {
  519. background: rgba(255, 255, 255, 0.5);
  520. }
  521. :deep(.swiper-button-prev:after),
  522. :deep(.swiper-button-next:after) {
  523. font-size: 20px;
  524. font-weight: bold;
  525. }
  526. /* 卡片悬停效果 */
  527. .app-card {
  528. transition: all 0.5s;
  529. box-shadow: 0 15px 30px rgba(0, 0, 0, 0.1);
  530. }
  531. .app-card:hover {
  532. transform: translateY(-10px);
  533. box-shadow: 0 20px 40px rgba(0, 0, 0, 0.2);
  534. }
  535. </style>