HomeView.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611
  1. <template>
  2. <main>
  3. <div class="home-center-padding">
  4. <template v-if="baseMap.has(0)">
  5. <h2
  6. class="font-medium text-[50px] leading-[72px] mt-[125px] text-[#303133] text-center tracking-[4px] lg:text-3xl lg:leading-[40px] lg:mt-32 md:!mt-10"
  7. >
  8. {{ baseMap.get(0).name }}
  9. </h2>
  10. <div class="flex justify-center items-center mt-1 mb-[35px] h-24 lg:mb-4 lg:mt-1 lg:h-12">
  11. <span
  12. id="Chato_rolling_click"
  13. data-sensors-click=""
  14. class="font-medium text-center text-transparent bg-clip-text text-[64px] leading-[95px] min-h-[95px] tracking-[8px] lg:text-[32px] lg:leading-[48px] lg:min-h-[48px] lg:tracking-[1px] line-grad-bg"
  15. >{{ rollingText }}</span
  16. ><svg class="w-4 h-[75px] lg:w-2 lg:h-9" aria-hidden="true">
  17. <use href="#icon-home_play"></use>
  18. </svg>
  19. </div>
  20. <section
  21. class="miSans text-lg leading-9 text-[#696984] text-center lg:text-sm lg:leading-7"
  22. v-html="baseMap.get(0)['desc']"
  23. ></section>
  24. </template>
  25. <div class="text-center flex gap-8 items-center justify-center lg:gap-4">
  26. <button
  27. aria-disabled="false"
  28. type="button"
  29. class="el-button el-button--primary w-[228px] !h-[60px] !text-lg font-medium tracking-[0.08em] !rounded-lg mt-7 !ml-0 hover:!scale-105 lg:!text-sm lg:w-[153px] lg:!h-[45px] lg:mt-5 !border-none btn-grad shadow-lg"
  30. id="Chato_top_create_click"
  31. >
  32. <!--v-if--><span class=""> 20S快速创建机器人 </span>
  33. </button>
  34. </div>
  35. <div
  36. class="relative bg-right-bottom bg-contain bg-no-repeat mt-16 mb-32 flex justify-between h-[694px] box-border pr-[124px] pl-16 max-w-[1075px] mx-auto lg:justify-normal lg:flex-col lg:bg-none lg:h-auto lg:mb-12 lg:p-0 xl:pl-0 xl:pr-24 md:!pr-0"
  37. >
  38. <h3
  39. class="hidden text-5xl leading-[72px] font-medium text-[#303133] text-center lg:text-[26px] lg:leading-[38px] lg:block"
  40. >
  41. 行业<strong class="tracking-[0.08em] bg-clip-text text-transparent line-grad-bg">案例</strong>
  42. </h3>
  43. <div
  44. class="relative transition-all mb-6 cursor-pointer lg:mt-4 lg:mx-8 hidden md:block"
  45. data-sensors-click=""
  46. id="Chato_home_case_button"
  47. :data-sensors-bot-name="(homeCaseInfo as any)['name']"
  48. >
  49. <div
  50. class="w-[18vw] min-w-[230px] max-w-[280px] border-[0.8px] border-solid border-[#E4E7ED] rounded-2xl bg-white px-3 py-[10px] flex items-center gap-2 text-[#596780] font-medium text-base lg:w-full lg:max-w-none lg:border-[#EBDAFF] lg:text-[#7c5cfc]"
  51. >
  52. <img :src="(homeCaseInfo as any)['logo']" class="w-12 h-12 object-cover" /><span>{{
  53. (homeCaseInfo as any)['name']
  54. }}</span>
  55. </div>
  56. <span
  57. class="w-8 h-8 rounded-full border-[0.8px] border-solid border-[#EBDAFF] bg-white absolute right-4 -top-[15px] flex items-center justify-center lg:right-3"
  58. ><img :src="(homeCaseInfo as any)['icon1']" class="w-[18px] h-[18px]"
  59. /></span>
  60. </div>
  61. <div class="mt-[70px] pl-[22px] block md:hidden">
  62. <div
  63. class="relative transition-all mb-6 cursor-pointer lg:mt-4 lg:mx-8"
  64. :class="{ 'case-active': chooseCase === item['id'] }"
  65. data-sensors-click=""
  66. id="Chato_home_case_button"
  67. :data-sensors-bot-name="item['name']"
  68. v-for="(item, index) in cases"
  69. :key="index"
  70. @click="chooseCase = item['id']"
  71. >
  72. <div
  73. class="w-[18vw] min-w-[230px] max-w-[280px] border-[0.8px] border-solid border-[#E4E7ED] rounded-2xl bg-white px-3 py-[10px] flex items-center gap-2 text-[#596780] font-medium text-base lg:w-full lg:max-w-none lg:border-[#EBDAFF] lg:text-[#7c5cfc]"
  74. >
  75. <img :src="item['logo']" class="miSans w-12 h-12 object-cover miSans" /><span>{{
  76. item['name']
  77. }}</span>
  78. </div>
  79. <span
  80. class="w-8 h-8 rounded-full border-[0.8px] border-solid border-[#EBDAFF] bg-white absolute right-4 -top-[15px] flex items-center justify-center lg:right-3"
  81. ><img :src="item['icon1']" class="w-[18px] h-[18px]"
  82. /></span>
  83. </div>
  84. </div>
  85. <div>
  86. <div
  87. class="top-tag px-6 py-3 rounded-[22px] w-fit mx-auto flex items-center justify-center gap-1 text-white font-medium text-xs mb-5"
  88. >
  89. <img class="w-4 h-4" :src="(homeCaseInfo as any)['icon2']" /><span>{{
  90. (homeCaseInfo as any)['name']
  91. }}</span>
  92. </div>
  93. <div class="el-image w-[355px]">
  94. <img
  95. :src="(homeCaseInfo as any)['img']"
  96. class="el-image__inner"
  97. style="object-fit: contain"
  98. /><!--v-if--><!--v-if-->
  99. </div>
  100. </div>
  101. <span
  102. class="case-pic-bg w-10 h-10 rounded-full flex items-center justify-center absolute top-[158px] left-[43%] lg:hidden xl:left-[40%]"
  103. ><img src="@/assets/pic.png" class="w-5 h-5 text-white" /></span
  104. ><span
  105. class="case-voice-bg w-14 h-14 rounded-full flex items-center justify-center absolute bottom-[121px] left-[45%] lg:hidden xl:left-[38%]"
  106. ><img src="@/assets/yuyin.png" class="w-8 h-8 text-white" /></span
  107. ><span
  108. class="case-bot-bg rounded-[20px] w-[76px] h-[74px] flex items-center justify-center absolute top-[323px] right-0 lg:hidden"
  109. ><img src="@/assets/robot.png" class="w-9 h-9 text-white" /></span
  110. ><!---->
  111. </div>
  112. </div>
  113. <div
  114. v-if="baseMap.has(1)"
  115. class="line-grad-bg pt-20 pb-24 mb-32 lg:!mb-12 home-center-padding lg:!px-2 lg:pt-9 lg:pb-9"
  116. >
  117. <h3 class="mb-12 text-white text-center text-5xl font-medium lg:mb-8 lg:text-2xl">
  118. {{ baseMap.get(1)['name'] }}
  119. </h3>
  120. <div
  121. class="rounded-3xl bg-[#F3F5FB] flex justify-around items-center py-14 lg:flex-col-reverse lg:px-4 lg:pt-5 lg:pb-6 lg:rounded-xl"
  122. >
  123. <div class="lg:w-full lg:pl-3">
  124. <p
  125. v-html="baseMap.get(1)['desc']"
  126. class="text-[#303133] text-2xl font-medium leading-10 text-left lg:text-base"
  127. ></p>
  128. <div class="mt-6 mb-8 flex flex-col gap-5 lg:text-center lg:gap-3 lg:my-5">
  129. <p
  130. v-for="(item, index) in baseMap.get(1)['val']"
  131. :key="index"
  132. class="text-[#596780] font-medium text-sm leading-5 flex gap-2 items-center"
  133. >
  134. <el-icon color="#7c5cfc"><CircleCheck /></el-icon>
  135. <span>{{ item }}</span>
  136. </p>
  137. </div>
  138. <button
  139. aria-disabled="false"
  140. type="button"
  141. class="el-button el-button--primary !border-none font-bold !h-12 w-40 lg:!h-10 lg:w-28"
  142. id="Chato_tranning_more_click"
  143. >
  144. <!--v-if--><span class=""> 了解更多 </span>
  145. </button>
  146. </div>
  147. <div class="el-image !w-[65%] h-auto lg:!w-full lg:mb-8">
  148. <img
  149. src="@/assets/img1.png"
  150. class="el-image__inner"
  151. style="object-fit: cover"
  152. /><!--v-if--><!--v-if-->
  153. </div>
  154. </div>
  155. </div>
  156. <div v-if="baseMap.has(2)" class="home-center-padding">
  157. <h3
  158. class="miSans text-5xl leading-[72px] font-medium text-[#303133] text-center lg:text-[26px] lg:leading-[38px]"
  159. >
  160. {{ baseMap.get(2)['name'] }}
  161. <strong
  162. v-if="baseMap.get(2)['sub']"
  163. class="tracking-[0.08em] bg-clip-text text-transparent line-grad-bg"
  164. >
  165. {{ baseMap.get(2)['sub'] }}
  166. </strong>
  167. </h3>
  168. <div
  169. v-html="baseMap.get(2)['desc']"
  170. class="miSans text-base leading-9 mt-6 text-center text-[#696984]"
  171. ></div>
  172. <div class="el-row learn-row lg:!mx-0 lg:!mt-1" style="margin-left: -5px; margin-right: -5px">
  173. <div
  174. class="el-col el-col-8 el-col-xs-24 is-guttered wow fadeInDown learn-card"
  175. style="
  176. padding-right: 5px;
  177. padding-left: 5px;
  178. display: flex;
  179. justify-content: center;
  180. visibility: visible;
  181. animation-name: fadeInDown;
  182. "
  183. v-for="(item, index) in abilities"
  184. :key="index"
  185. >
  186. <div class="el-space el-space--vertical lg:pt-10" style="align-items: center">
  187. <div class="el-space__item" style="padding-bottom: 8px; margin-right: 0px">
  188. <img :src="item['logo']" class="h-[38px] block w-auto" />
  189. </div>
  190. <div class="el-space__item" style="padding-bottom: 8px; margin-right: 0px">
  191. <span class="learn-title"> {{ item['name'] }} </span>
  192. </div>
  193. <div class="el-space__item" style="padding-bottom: 8px; margin-right: 0px">
  194. <span class="learn-msg" v-html="item['desc']"> </span>
  195. </div>
  196. </div>
  197. </div>
  198. </div>
  199. <div class="mt-6 text-center mb-[100px] lg:mt-0 lg:mb-12">
  200. <button
  201. aria-disabled="false"
  202. type="button"
  203. class="el-button el-button--primary !h-[60px] w-[273px] !text-lg font-medium tracking-[0.08em] !border-none lg:!h-10 lg:w-32 lg:!text-sm"
  204. id="Chato_customize_click"
  205. >
  206. <!--v-if--><span class=""> 立即体验 </span>
  207. </button>
  208. </div>
  209. </div>
  210. <div
  211. v-if="baseMap.has(3)"
  212. class="line-grad-bg home-center-padding py-20 text-white text-center mb-28 lg:mb-12 lg:py-10"
  213. >
  214. <h3 class="miSans text-5xl leading-[72px] font-medium mb-6 lg:text-[26px] lg:leading-[38px]">
  215. {{ baseMap.get(3)['name'] }}
  216. </h3>
  217. <p v-if="baseMap.get(3)['desc']" class="miSans text-xl leading-9 mb-12 lg:mb-6 lg:text-base">
  218. {{ baseMap.get(3)['desc'] }}
  219. </p>
  220. <div class="flex justify-between gap-5 lg:flex-col">
  221. <div
  222. class="wow fadeInDown flex-1 flex flex-col justify-between rounded-2xl bg-white py-6 px-7 lg:h-auto lg:gap-3 lg:p-4"
  223. style="visibility: visible; animation-name: fadeInDown"
  224. v-for="(item, index) in advantages"
  225. :key="index"
  226. >
  227. <div class="service-card">
  228. <span
  229. class="w-14 h-14 flex items-center justify-center rounded-full overflow-hidden bg-[#7c5cfc1a] lg:w-12 lg:h-12"
  230. >
  231. <img class="w-9 h-9 text-[#7c5cfc] lg:w-7 lg:h-7 block" :src="item['logo']" alt="" />
  232. </span>
  233. <p class="text-xl font-medium tracking-[0.04em] text-[#3D3D3D] lg:text-base">
  234. {{ item['name'] }}
  235. </p>
  236. <div class="leading-6 text-left text-sm" v-html="item['desc']"></div>
  237. </div>
  238. <button
  239. aria-disabled="false"
  240. type="button"
  241. class="el-button el-button--primary is-link"
  242. id="Chato_know_more_click_1"
  243. >
  244. <!--v-if--><span class=""> 进一步了解 </span>
  245. </button>
  246. </div>
  247. </div>
  248. </div>
  249. <div class="home-center-padding" v-if="baseMap.has(4)">
  250. <h3
  251. class="miSans text-5xl leading-[72px] font-medium text-[#303133] text-center lg:text-[26px] lg:leading-[38px]"
  252. >
  253. {{ baseMap.get(4)['name'] }}
  254. <strong
  255. class="tracking-[0.08em] bg-clip-text text-transparent line-grad-bg"
  256. v-if="baseMap.get(4)['sub']"
  257. >{{ baseMap.get(4)['sub'] }}</strong
  258. >
  259. </h3>
  260. <p v-if="baseMap.get(4)['desc']" class="miSans text-[#767676] text-xl leading-9 text-center mt-4">
  261. {{ baseMap.get(4)['desc'] }}
  262. </p>
  263. <div
  264. class="el-row mt-20 lg:mt-10 flex w-full justify-around !mx-0 mb-[120px] lg:mb-[60px]"
  265. style="margin-left: -20px; margin-right: -20px"
  266. v-for="(item, index) in services"
  267. :key="index"
  268. >
  269. <div
  270. class="el-col el-col-12 el-col-xs-24 is-guttered mb-0 lg:mb-10"
  271. style="padding-right: 20px; padding-left: 20px; display: flex; justify-content: center"
  272. >
  273. <img
  274. :src="item['logo']"
  275. class="my-10 w-[440px] h-auto lg:my-5 lg:w-[260px] lg:h-[180px] block"
  276. alt=""
  277. />
  278. </div>
  279. <div
  280. class="el-col el-col-12 el-col-xs-24 is-guttered wow fadeInRight advantage-card"
  281. style="
  282. padding-right: 20px;
  283. padding-left: 20px;
  284. align-self: center;
  285. visibility: visible;
  286. animation-name: fadeInRight;
  287. "
  288. >
  289. <div
  290. class="el-space el-space--vertical"
  291. style="align-items: flex-start; justify-content: flex-start"
  292. >
  293. <div class="el-space__item" style="padding-bottom: 8px; margin-right: 0px">
  294. <span class="advantage-title">{{ item['name'] }}</span>
  295. </div>
  296. <div class="el-space__item" style="padding-bottom: 8px; margin-right: 0px">
  297. <div class="flex flex-row items-start mt-2">
  298. <span class="advantage-msg" v-html="item['desc']"> </span>
  299. </div>
  300. </div>
  301. </div>
  302. <div class="w-full lg:text-center">
  303. <button
  304. aria-disabled="false"
  305. type="button"
  306. class="el-button el-button--primary advantage-btn"
  307. data-inner-type="1"
  308. id="Chato_service_more_click_1"
  309. >
  310. <!--v-if--><span class=""> 进一步了解 </span>
  311. </button>
  312. </div>
  313. </div>
  314. </div>
  315. <h3
  316. class="text-5xl leading-[72px] font-medium text-[#303133] text-center lg:text-[26px] lg:leading-[38px] tracking-[4px]"
  317. >
  318. 常见<strong class="tracking-[0.08em] bg-clip-text text-transparent line-grad-bg">问题 </strong>
  319. </h3>
  320. <dl class="mt-10 w-full">
  321. <div
  322. v-for="(item, index) in questions"
  323. :key="index"
  324. class="el-card is-hover-shadow wow fadeInUp qa-card"
  325. style="visibility: visible; animation-name: fadeInUp"
  326. >
  327. <!--v-if-->
  328. <div class="el-card__body" style="">
  329. <dt class="text-[#303133] tracking-[4px] text-xl leading-[30px] font-medium lg:text-lg">
  330. {{ item['question'] }}
  331. </dt>
  332. <dd class="text-base leading-[30px] mt-4 text-[#696984] lg:text-sm lg:mt-[14px]">
  333. {{ item['answer'] }}
  334. </dd>
  335. </div>
  336. </div>
  337. </dl>
  338. </div>
  339. <div
  340. class="quick-start-bg home-center-padding mt-[100px] mb-[50px] py-[74px] items-center lg:py-7 lg:mt-10 lg:mb-5 overflow-hidden flex justify-between gap-28 lg:flex-col lg:gap-0 lg:items-start"
  341. >
  342. <div class="flex flex-col items-start text-white flex-1 overflow-hidden lg:w-full lg:items-center">
  343. <p class="text-[44px] font-medium tracking-[0.04em] mb-4 lg:text-3xl lg:leading-9">
  344. 快速定制您的机器人
  345. </p>
  346. <p class="miSans text-lg leading-7 mb-6 lg:text-base lg:text-center">
  347. ZOUMAAI 为你提供定制化的产品解决方案,我们致力于用 AI 来提升业务的效率
  348. </p>
  349. <div class="flex gap-7 items-center justify-center mb-16 lg:gap-3 lg:mb-6">
  350. <button
  351. aria-disabled="false"
  352. type="button"
  353. class="miSans el-button el-button--primary w-[150px] !h-10 !border-none !bg-white !text-[#7C5CFC] rounded-lg !text-sm font-medium tracking-[0.08em] lg:w-24 lg:!h-9 lg:!text-xs hover:!scale-105"
  354. id="Chato_bottom_create_click"
  355. >
  356. <!--v-if--><span class=""> 体验 走马AI </span></button
  357. >
  358. </div>
  359. <div class="flex justify-between items-center w-full max-w-[90%] lg:mb-6 lg:gap-4 lg:max-w-none">
  360. <div class="text-sm">
  361. <p class="text-3xl font-medium mb-4 flex items-center gap-1 lg:text-xl">
  362. 2,000,000 <span class="text-base lg:text-sm">+</span>
  363. </p>
  364. <p class="lg:text-xs">模型调用量</p>
  365. </div>
  366. <div class="divider"></div>
  367. <div class="text-sm">
  368. <p class="text-3xl font-medium mb-4 flex items-center gap-1 lg:text-xl">
  369. 100,000 <span class="text-base lg:text-sm">+</span>
  370. </p>
  371. <p class="lg:text-xs">机器人数</p>
  372. </div>
  373. <div class="divider"></div>
  374. <div class="text-sm">
  375. <p class="text-3xl font-medium mb-4 flex items-center gap-1 lg:text-xl">
  376. 100 <span class="text-base lg:text-sm">+</span>
  377. </p>
  378. <p class="lg:text-xs">服务行业</p>
  379. </div>
  380. <!---->
  381. </div>
  382. </div>
  383. <div class="w-[400px] box-border rounded-2xl px-7 py-6 bg-white lg:w-full shrink-0">
  384. <p class="text-[#303133] text-lg font-medium mb-4 flex items-center">
  385. <svg class="w-[22px] h-[22px] mr-1" aria-hidden="true">
  386. <use href="#icon-phone"></use>
  387. </svg>
  388. 联系我们
  389. </p>
  390. <p class="text-[#596780] text-sm leading-5 mb-6">将有专人为您提供产品解决方案,专业答疑等</p>
  391. <connect-form></connect-form>
  392. </div>
  393. </div>
  394. </main>
  395. </template>
  396. <script setup lang="ts">
  397. import { ref, computed } from 'vue'
  398. import useRolling from '@/hooks/useRolling'
  399. import { fetchHomeCase, fetchBase, fetchQuestion, fetchAbility } from '@/api'
  400. import { CircleCheck } from '@element-plus/icons-vue'
  401. import {ConnectForm} from '@/components/common'
  402. const rollingList = ref([])
  403. const { rollingText, startRolling } = useRolling(rollingList.value)
  404. // const timer = setInterval(() => {
  405. // rollingText.value = rolling(rollingList)
  406. // }, 500)
  407. const cases = ref([])
  408. const chooseCase = ref('')
  409. fetchHomeCase().then((res: any) => {
  410. cases.value = res
  411. if (res.length > 0) {
  412. chooseCase.value = res[0].id
  413. }
  414. })
  415. const homeCaseInfo = computed(() => {
  416. if (cases.value.length > 0) {
  417. let info = cases.value.find((item: any) => {
  418. return item.id === chooseCase.value
  419. })
  420. return info || {}
  421. }
  422. return {}
  423. })
  424. const baseMap = ref(new Map())
  425. const abilities = ref([])
  426. const advantages = ref([])
  427. const services = ref([])
  428. fetchBase().then((res: any) => {
  429. res.forEach((item: any) => {
  430. let names = item.name.split('_;')
  431. baseMap.value.set(item['direction'], {
  432. ...item,
  433. name: names[0],
  434. sub: names.length > 1 ? names[1] : '',
  435. val: item.val.split('_;') || []
  436. })
  437. if (item['direction'] === 2) {
  438. fetchAbility(item['id']).then((res: any) => {
  439. abilities.value = res
  440. })
  441. }
  442. if (item['direction'] === 3) {
  443. fetchAbility(item['id']).then((res: any) => {
  444. advantages.value = res
  445. })
  446. }
  447. if (item['direction'] === 4) {
  448. fetchAbility(item['id']).then((res: any) => {
  449. services.value = res
  450. })
  451. }
  452. })
  453. console.log(baseMap.value)
  454. if (baseMap.value.has(0)) {
  455. rollingList.value = baseMap.value.get(0).val
  456. startRolling(rollingList.value)
  457. }
  458. })
  459. const questions = ref([])
  460. fetchQuestion().then((res: any) => {
  461. questions.value = res || []
  462. })
  463. </script>
  464. <style lang="less" scoped>
  465. .line-grad-bg {
  466. background-image: linear-gradient(117deg, #0547ff -84%, #d683ff 125%);
  467. }
  468. .btn-grad {
  469. background: linear-gradient(99deg, #4e4f50 0%, #5a5c60 0%, #303133 99%);
  470. }
  471. .quick-start-bg {
  472. background: linear-gradient(138deg, #0547ff -126%, #d683ff 141%);
  473. }
  474. .qa-card {
  475. margin-bottom: 2rem;
  476. box-sizing: border-box;
  477. width: 100%;
  478. border-radius: 1rem;
  479. border-width: 1px;
  480. border-style: solid;
  481. --tw-border-opacity: 1;
  482. border-color: rgba(218, 218, 225, var(--tw-border-opacity));
  483. padding: 0.75rem;
  484. }
  485. .advantage-btn {
  486. margin-top: 30px;
  487. height: 2.75rem;
  488. width: 140px;
  489. border-style: none;
  490. font-size: 1rem;
  491. line-height: 1.5rem;
  492. }
  493. .service-card {
  494. display: flex;
  495. flex-direction: column;
  496. align-items: center;
  497. gap: 1rem;
  498. font-size: 1rem;
  499. line-height: 1.75rem;
  500. letter-spacing: 0.3px;
  501. --tw-text-opacity: 1;
  502. color: rgba(105, 105, 132, var(--tw-text-opacity));
  503. }
  504. .case-active {
  505. transform: scale(1.2) translate(8%);
  506. box-shadow: 0 20px 23.2px -19px #6a56db2b;
  507. margin-bottom: 38px;
  508. &:after {
  509. position: absolute;
  510. top: 50%;
  511. transform: translateY(-50%);
  512. left: -16px;
  513. content: '';
  514. background-color: #7c5cfc;
  515. width: 6px;
  516. height: 40px;
  517. border-top-right-radius: 20px;
  518. border-bottom-right-radius: 20px;
  519. }
  520. }
  521. .learn-row {
  522. margin-top: 5rem;
  523. display: flex;
  524. width: 100%;
  525. justify-content: space-around;
  526. }
  527. @keyframes fadeInDown {
  528. 0% {
  529. opacity: 0;
  530. transform: translateY(-20px);
  531. }
  532. to {
  533. opacity: 1;
  534. transform: translateY(0);
  535. }
  536. }
  537. .fadeInDown {
  538. animation-name: fadeInDown;
  539. }
  540. .top-tag {
  541. background: linear-gradient(159deg, #7c5cfc -11%, #5c87fc 94%);
  542. }
  543. .case-pic-bg {
  544. background: linear-gradient(155deg, #ffa8e5 1%, #ffe45e 95%);
  545. }
  546. .case-voice-bg {
  547. background: linear-gradient(155deg, #cc92ff 1%, #4fb0ff 95%);
  548. }
  549. .case-bot-bg {
  550. background: linear-gradient(153deg, #4278f6 -37%, #51c8ff 110%);
  551. }
  552. .learn-msg {
  553. text-align: center;
  554. font-size: 1rem;
  555. line-height: 1.5rem;
  556. line-height: 30px;
  557. --tw-text-opacity: 1;
  558. color: rgba(105, 105, 132, var(--tw-text-opacity));
  559. }
  560. .learn-title {
  561. margin-top: 1.5rem;
  562. margin-bottom: 1.5rem;
  563. text-align: center;
  564. font-size: 20px;
  565. font-weight: 500;
  566. line-height: 30px;
  567. letter-spacing: 4px;
  568. --tw-text-opacity: 1;
  569. color: rgba(48, 49, 51, var(--tw-text-opacity));
  570. }
  571. .advantage-title {
  572. margin-bottom: 30px;
  573. text-align: center;
  574. font-size: 1.875rem;
  575. line-height: 2.25rem;
  576. line-height: 44px;
  577. letter-spacing: 4px;
  578. --tw-text-opacity: 1;
  579. color: rgba(48, 49, 51, var(--tw-text-opacity));
  580. font-weight: bold;
  581. }
  582. </style>