市场夺宝奇兵
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.

1972 lines
57 KiB

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  7. <meta http-equiv="pragma" content="no-cache" />
  8. <meta http-equiv="cache-control" content="no-cache" />
  9. <meta http-equiv="expires" content="0" />
  10. <link rel="shortcut icon" href="dbqb_favicon.ico" />
  11. <link rel="Bookmark" href="dbqb_favicon.ico" />
  12. <meta http-equiv="keywords" content="夺宝奇兵,homilychart,homilylink" />
  13. <meta http-equiv="description" content="HomilyLink" />
  14. <title>夺宝奇兵 - AI炒股时代,机构界的黑科技!</title>
  15. <!-- 引入外部资源 -->
  16. <script src="https://cdn.tailwindcss.com?v=3.3.5"></script>
  17. <link
  18. href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"
  19. rel="stylesheet"
  20. />
  21. <!-- 基础样式配置 -->
  22. <script>
  23. tailwind.config = {
  24. theme: {
  25. extend: {
  26. colors: {
  27. primary: "#3B82F6",
  28. windows: "#0078D7",
  29. macos: "#555555",
  30. android: "#3DDC84",
  31. ios: "#000000",
  32. },
  33. },
  34. },
  35. };
  36. </script>
  37. <style type="text/tailwindcss">
  38. @layer utilities {
  39. .card-hover {
  40. @apply transition-all duration-300 hover:shadow-xl hover:-translate-y-1;
  41. }
  42. .btn-effect {
  43. @apply relative overflow-hidden transition-all duration-300;
  44. }
  45. .btn-effect::after {
  46. content: "";
  47. @apply absolute top-0 left-[-100%] w-full h-full bg-white/20 transform skew-x-12 transition-all duration-500;
  48. }
  49. .btn-effect:hover::after {
  50. @apply left-[100%];
  51. }
  52. .guide-step {
  53. @apply flex items-start mb-3;
  54. }
  55. .guide-step-number {
  56. @apply w-6 h-6 rounded-full bg-primary text-white flex items-center justify-center mr-3 flex-shrink-0 mt-0.5;
  57. }
  58. .modal-backdrop {
  59. @apply fixed inset-0 bg-black/50 flex items-center justify-center z-50 opacity-0 pointer-events-none transition-opacity duration-300;
  60. }
  61. .modal-backdrop.active {
  62. @apply opacity-100 pointer-events-auto;
  63. }
  64. .modal-content {
  65. @apply bg-white rounded-xl p-6 max-w-md w-full mx-4 transform translate-y-8 transition-transform duration-300;
  66. }
  67. .modal-backdrop.active .modal-content {
  68. @apply translate-y-0;
  69. }
  70. }
  71. </style>
  72. <style>
  73. /* 确保基础样式生效 */
  74. body {
  75. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
  76. sans-serif;
  77. }
  78. /* 简单动画 */
  79. @keyframes fadeIn {
  80. from {
  81. opacity: 0;
  82. transform: translateY(10px);
  83. }
  84. to {
  85. opacity: 1;
  86. transform: translateY(0);
  87. }
  88. }
  89. .fade-in {
  90. animation: fadeIn 0.5s ease-out forwards;
  91. }
  92. .delay-100 {
  93. animation-delay: 0.1s;
  94. }
  95. .delay-200 {
  96. animation-delay: 0.2s;
  97. }
  98. .delay-300 {
  99. animation-delay: 0.3s;
  100. }
  101. </style>
  102. <style>
  103. *,
  104. ::before,
  105. ::after {
  106. --tw-border-spacing-x: 0;
  107. --tw-border-spacing-y: 0;
  108. --tw-translate-x: 0;
  109. --tw-translate-y: 0;
  110. --tw-rotate: 0;
  111. --tw-skew-x: 0;
  112. --tw-skew-y: 0;
  113. --tw-scale-x: 1;
  114. --tw-scale-y: 1;
  115. --tw-pan-x: ;
  116. --tw-pan-y: ;
  117. --tw-pinch-zoom: ;
  118. --tw-scroll-snap-strictness: proximity;
  119. --tw-gradient-from-position: ;
  120. --tw-gradient-via-position: ;
  121. --tw-gradient-to-position: ;
  122. --tw-ordinal: ;
  123. --tw-slashed-zero: ;
  124. --tw-numeric-figure: ;
  125. --tw-numeric-spacing: ;
  126. --tw-numeric-fraction: ;
  127. --tw-ring-inset: ;
  128. --tw-ring-offset-width: 0px;
  129. --tw-ring-offset-color: #fff;
  130. --tw-ring-color: rgb(59 130 246 / 0.5);
  131. --tw-ring-offset-shadow: 0 0 #0000;
  132. --tw-ring-shadow: 0 0 #0000;
  133. --tw-shadow: 0 0 #0000;
  134. --tw-shadow-colored: 0 0 #0000;
  135. --tw-blur: ;
  136. --tw-brightness: ;
  137. --tw-contrast: ;
  138. --tw-grayscale: ;
  139. --tw-hue-rotate: ;
  140. --tw-invert: ;
  141. --tw-saturate: ;
  142. --tw-sepia: ;
  143. --tw-drop-shadow: ;
  144. --tw-backdrop-blur: ;
  145. --tw-backdrop-brightness: ;
  146. --tw-backdrop-contrast: ;
  147. --tw-backdrop-grayscale: ;
  148. --tw-backdrop-hue-rotate: ;
  149. --tw-backdrop-invert: ;
  150. --tw-backdrop-opacity: ;
  151. --tw-backdrop-saturate: ;
  152. --tw-backdrop-sepia: ;
  153. --tw-contain-size: ;
  154. --tw-contain-layout: ;
  155. --tw-contain-paint: ;
  156. --tw-contain-style: ;
  157. }
  158. ::backdrop {
  159. --tw-border-spacing-x: 0;
  160. --tw-border-spacing-y: 0;
  161. --tw-translate-x: 0;
  162. --tw-translate-y: 0;
  163. --tw-rotate: 0;
  164. --tw-skew-x: 0;
  165. --tw-skew-y: 0;
  166. --tw-scale-x: 1;
  167. --tw-scale-y: 1;
  168. --tw-pan-x: ;
  169. --tw-pan-y: ;
  170. --tw-pinch-zoom: ;
  171. --tw-scroll-snap-strictness: proximity;
  172. --tw-gradient-from-position: ;
  173. --tw-gradient-via-position: ;
  174. --tw-gradient-to-position: ;
  175. --tw-ordinal: ;
  176. --tw-slashed-zero: ;
  177. --tw-numeric-figure: ;
  178. --tw-numeric-spacing: ;
  179. --tw-numeric-fraction: ;
  180. --tw-ring-inset: ;
  181. --tw-ring-offset-width: 0px;
  182. --tw-ring-offset-color: #fff;
  183. --tw-ring-color: rgb(59 130 246 / 0.5);
  184. --tw-ring-offset-shadow: 0 0 #0000;
  185. --tw-ring-shadow: 0 0 #0000;
  186. --tw-shadow: 0 0 #0000;
  187. --tw-shadow-colored: 0 0 #0000;
  188. --tw-blur: ;
  189. --tw-brightness: ;
  190. --tw-contrast: ;
  191. --tw-grayscale: ;
  192. --tw-hue-rotate: ;
  193. --tw-invert: ;
  194. --tw-saturate: ;
  195. --tw-sepia: ;
  196. --tw-drop-shadow: ;
  197. --tw-backdrop-blur: ;
  198. --tw-backdrop-brightness: ;
  199. --tw-backdrop-contrast: ;
  200. --tw-backdrop-grayscale: ;
  201. --tw-backdrop-hue-rotate: ;
  202. --tw-backdrop-invert: ;
  203. --tw-backdrop-opacity: ;
  204. --tw-backdrop-saturate: ;
  205. --tw-backdrop-sepia: ;
  206. --tw-contain-size: ;
  207. --tw-contain-layout: ;
  208. --tw-contain-paint: ;
  209. --tw-contain-style: ;
  210. } /* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */
  211. *,
  212. ::after,
  213. ::before {
  214. box-sizing: border-box;
  215. border-width: 0;
  216. border-style: solid;
  217. border-color: #e5e7eb;
  218. }
  219. ::after,
  220. ::before {
  221. --tw-content: "";
  222. }
  223. :host,
  224. html {
  225. line-height: 1.5;
  226. -webkit-text-size-adjust: 100%;
  227. -moz-tab-size: 4;
  228. tab-size: 4;
  229. font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
  230. "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  231. font-feature-settings: normal;
  232. font-variation-settings: normal;
  233. -webkit-tap-highlight-color: transparent;
  234. }
  235. body {
  236. margin: 0;
  237. line-height: inherit;
  238. }
  239. hr {
  240. height: 0;
  241. color: inherit;
  242. border-top-width: 1px;
  243. }
  244. abbr:where([title]) {
  245. -webkit-text-decoration: underline dotted;
  246. text-decoration: underline dotted;
  247. }
  248. h1,
  249. h2,
  250. h3,
  251. h4,
  252. h5,
  253. h6 {
  254. font-size: inherit;
  255. font-weight: inherit;
  256. }
  257. a {
  258. color: inherit;
  259. text-decoration: inherit;
  260. }
  261. b,
  262. strong {
  263. font-weight: bolder;
  264. }
  265. code,
  266. kbd,
  267. pre,
  268. samp {
  269. font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
  270. "Liberation Mono", "Courier New", monospace;
  271. font-feature-settings: normal;
  272. font-variation-settings: normal;
  273. font-size: 1em;
  274. }
  275. small {
  276. font-size: 80%;
  277. }
  278. sub,
  279. sup {
  280. font-size: 75%;
  281. line-height: 0;
  282. position: relative;
  283. vertical-align: baseline;
  284. }
  285. sub {
  286. bottom: -0.25em;
  287. }
  288. sup {
  289. top: -0.5em;
  290. }
  291. table {
  292. text-indent: 0;
  293. border-color: inherit;
  294. border-collapse: collapse;
  295. }
  296. button,
  297. input,
  298. optgroup,
  299. select,
  300. textarea {
  301. font-family: inherit;
  302. font-feature-settings: inherit;
  303. font-variation-settings: inherit;
  304. font-size: 100%;
  305. font-weight: inherit;
  306. line-height: inherit;
  307. letter-spacing: inherit;
  308. color: inherit;
  309. margin: 0;
  310. padding: 0;
  311. }
  312. button,
  313. select {
  314. text-transform: none;
  315. }
  316. button,
  317. input:where([type="button"]),
  318. input:where([type="reset"]),
  319. input:where([type="submit"]) {
  320. -webkit-appearance: button;
  321. background-color: transparent;
  322. background-image: none;
  323. }
  324. :-moz-focusring {
  325. outline: auto;
  326. }
  327. :-moz-ui-invalid {
  328. box-shadow: none;
  329. }
  330. progress {
  331. vertical-align: baseline;
  332. }
  333. ::-webkit-inner-spin-button,
  334. ::-webkit-outer-spin-button {
  335. height: auto;
  336. }
  337. [type="search"] {
  338. -webkit-appearance: textfield;
  339. outline-offset: -2px;
  340. }
  341. ::-webkit-search-decoration {
  342. -webkit-appearance: none;
  343. }
  344. ::-webkit-file-upload-button {
  345. -webkit-appearance: button;
  346. font: inherit;
  347. }
  348. summary {
  349. display: list-item;
  350. }
  351. blockquote,
  352. dd,
  353. dl,
  354. figure,
  355. h1,
  356. h2,
  357. h3,
  358. h4,
  359. h5,
  360. h6,
  361. hr,
  362. p,
  363. pre {
  364. margin: 0;
  365. }
  366. fieldset {
  367. margin: 0;
  368. padding: 0;
  369. }
  370. legend {
  371. padding: 0;
  372. }
  373. menu,
  374. ol,
  375. ul {
  376. list-style: none;
  377. margin: 0;
  378. padding: 0;
  379. }
  380. dialog {
  381. padding: 0;
  382. }
  383. textarea {
  384. resize: vertical;
  385. }
  386. input::placeholder,
  387. textarea::placeholder {
  388. opacity: 1;
  389. color: #9ca3af;
  390. }
  391. [role="button"],
  392. button {
  393. cursor: pointer;
  394. }
  395. :disabled {
  396. cursor: default;
  397. }
  398. audio,
  399. canvas,
  400. embed,
  401. iframe,
  402. img,
  403. object,
  404. svg,
  405. video {
  406. display: block;
  407. vertical-align: middle;
  408. }
  409. img,
  410. video {
  411. max-width: 100%;
  412. height: auto;
  413. }
  414. [hidden]:where(:not([hidden="until-found"])) {
  415. display: none;
  416. }
  417. .container {
  418. width: 100%;
  419. }
  420. @media (min-width: 640px) {
  421. .container {
  422. max-width: 640px;
  423. }
  424. }
  425. @media (min-width: 768px) {
  426. .container {
  427. max-width: 768px;
  428. }
  429. }
  430. @media (min-width: 1024px) {
  431. .container {
  432. max-width: 1024px;
  433. }
  434. }
  435. @media (min-width: 1280px) {
  436. .container {
  437. max-width: 1280px;
  438. }
  439. }
  440. @media (min-width: 1536px) {
  441. .container {
  442. max-width: 1536px;
  443. }
  444. }
  445. .fixed {
  446. position: fixed;
  447. }
  448. .left-0 {
  449. left: 0px;
  450. }
  451. .right-0 {
  452. right: 0px;
  453. }
  454. .top-0 {
  455. top: 0px;
  456. }
  457. .z-50 {
  458. z-index: 50;
  459. }
  460. .mx-auto {
  461. margin-left: auto;
  462. margin-right: auto;
  463. }
  464. .mb-1 {
  465. margin-bottom: 0.25rem;
  466. }
  467. .mb-10 {
  468. margin-bottom: 2.5rem;
  469. }
  470. .mb-12 {
  471. margin-bottom: 3rem;
  472. }
  473. .mb-16 {
  474. margin-bottom: 4rem;
  475. }
  476. .mb-2 {
  477. margin-bottom: 0.5rem;
  478. }
  479. .mb-3 {
  480. margin-bottom: 0.75rem;
  481. }
  482. .mb-4 {
  483. margin-bottom: 1rem;
  484. }
  485. .mb-5 {
  486. margin-bottom: 1.25rem;
  487. }
  488. .mb-6 {
  489. margin-bottom: 1.5rem;
  490. }
  491. .mr-2 {
  492. margin-right: 0.5rem;
  493. }
  494. .mr-4 {
  495. margin-right: 1rem;
  496. }
  497. .mt-16 {
  498. margin-top: 4rem;
  499. }
  500. .mt-2 {
  501. margin-top: 0.5rem;
  502. }
  503. .flex {
  504. display: flex;
  505. }
  506. .inline-flex {
  507. display: inline-flex;
  508. }
  509. .grid {
  510. display: grid;
  511. }
  512. .hidden {
  513. display: none;
  514. }
  515. .h-10 {
  516. height: 2.5rem;
  517. }
  518. .h-16 {
  519. height: 4rem;
  520. }
  521. .h-20 {
  522. height: 5rem;
  523. }
  524. .h-auto {
  525. height: auto;
  526. }
  527. .w-10 {
  528. width: 2.5rem;
  529. }
  530. .w-16 {
  531. width: 4rem;
  532. }
  533. .w-20 {
  534. width: 5rem;
  535. }
  536. .w-full {
  537. width: 100%;
  538. }
  539. .max-w-2xl {
  540. max-width: 42rem;
  541. }
  542. .max-w-3xl {
  543. max-width: 48rem;
  544. }
  545. .max-w-6xl {
  546. max-width: 72rem;
  547. }
  548. .flex-1 {
  549. flex: 1 1 0%;
  550. }
  551. .flex-shrink-0 {
  552. flex-shrink: 0;
  553. }
  554. .grid-cols-1 {
  555. grid-template-columns: repeat(1, minmax(0, 1fr));
  556. }
  557. .flex-col {
  558. flex-direction: column;
  559. }
  560. .items-start {
  561. align-items: flex-start;
  562. }
  563. .items-center {
  564. align-items: center;
  565. }
  566. .justify-center {
  567. justify-content: center;
  568. }
  569. .justify-between {
  570. justify-content: space-between;
  571. }
  572. .gap-4 {
  573. gap: 1rem;
  574. }
  575. .gap-6 {
  576. gap: 1.5rem;
  577. }
  578. .space-x-2 > :not([hidden]) ~ :not([hidden]) {
  579. --tw-space-x-reverse: 0;
  580. margin-right: calc(0.5rem * var(--tw-space-x-reverse));
  581. margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
  582. }
  583. .space-x-3 > :not([hidden]) ~ :not([hidden]) {
  584. --tw-space-x-reverse: 0;
  585. margin-right: calc(0.75rem * var(--tw-space-x-reverse));
  586. margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));
  587. }
  588. .space-x-8 > :not([hidden]) ~ :not([hidden]) {
  589. --tw-space-x-reverse: 0;
  590. margin-right: calc(2rem * var(--tw-space-x-reverse));
  591. margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
  592. }
  593. .space-y-3 > :not([hidden]) ~ :not([hidden]) {
  594. --tw-space-y-reverse: 0;
  595. margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  596. margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
  597. }
  598. .space-y-4 > :not([hidden]) ~ :not([hidden]) {
  599. --tw-space-y-reverse: 0;
  600. margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  601. margin-bottom: calc(1rem * var(--tw-space-y-reverse));
  602. }
  603. .rounded-full {
  604. border-radius: 9999px;
  605. }
  606. .rounded-lg {
  607. border-radius: 0.5rem;
  608. }
  609. .rounded-xl {
  610. border-radius: 0.75rem;
  611. }
  612. .border {
  613. border-width: 1px;
  614. }
  615. .border-t {
  616. border-top-width: 1px;
  617. }
  618. .border-blue-200 {
  619. --tw-border-opacity: 1;
  620. border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
  621. }
  622. .border-gray-300 {
  623. --tw-border-opacity: 1;
  624. border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
  625. }
  626. .bg-android {
  627. --tw-bg-opacity: 1;
  628. background-color: rgb(61 220 132 / var(--tw-bg-opacity, 1));
  629. }
  630. .bg-android\/10 {
  631. background-color: rgb(61 220 132 / 0.1);
  632. }
  633. .bg-blue-100 {
  634. --tw-bg-opacity: 1;
  635. background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1));
  636. }
  637. .bg-blue-50 {
  638. --tw-bg-opacity: 1;
  639. background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
  640. }
  641. .bg-gray-100 {
  642. --tw-bg-opacity: 1;
  643. background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
  644. }
  645. .bg-gray-50 {
  646. --tw-bg-opacity: 1;
  647. background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
  648. }
  649. .bg-gray-900 {
  650. --tw-bg-opacity: 1;
  651. background-color: rgb(17 24 39 / var(--tw-bg-opacity, 1));
  652. }
  653. .bg-ios {
  654. --tw-bg-opacity: 1;
  655. background-color: rgb(0 0 0 / var(--tw-bg-opacity, 1));
  656. }
  657. .bg-macos {
  658. --tw-bg-opacity: 1;
  659. background-color: rgb(85 85 85 / var(--tw-bg-opacity, 1));
  660. }
  661. .bg-primary {
  662. --tw-bg-opacity: 1;
  663. background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
  664. }
  665. .bg-white {
  666. --tw-bg-opacity: 1;
  667. background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  668. }
  669. .bg-white\/95 {
  670. background-color: rgb(255 255 255 / 0.95);
  671. }
  672. .bg-windows {
  673. --tw-bg-opacity: 1;
  674. background-color: rgb(0 120 215 / var(--tw-bg-opacity, 1));
  675. }
  676. .bg-windows\/10 {
  677. background-color: rgb(0 120 215 / 0.1);
  678. }
  679. .bg-yellow-100 {
  680. --tw-bg-opacity: 1;
  681. background-color: rgb(254 249 195 / var(--tw-bg-opacity, 1));
  682. }
  683. .bg-gradient-to-r {
  684. background-image: linear-gradient(to right, var(--tw-gradient-stops));
  685. }
  686. .from-primary {
  687. --tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);
  688. --tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);
  689. --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  690. }
  691. .to-purple-600 {
  692. --tw-gradient-to: #9333ea var(--tw-gradient-to-position);
  693. }
  694. .bg-clip-text {
  695. -webkit-background-clip: text;
  696. background-clip: text;
  697. }
  698. .p-5 {
  699. padding: 1.25rem;
  700. }
  701. .p-6 {
  702. padding: 1.5rem;
  703. }
  704. .px-4 {
  705. padding-left: 1rem;
  706. padding-right: 1rem;
  707. }
  708. .px-5 {
  709. padding-left: 1.25rem;
  710. padding-right: 1.25rem;
  711. }
  712. .py-10 {
  713. padding-top: 2.5rem;
  714. padding-bottom: 2.5rem;
  715. }
  716. .py-2 {
  717. padding-top: 0.5rem;
  718. padding-bottom: 0.5rem;
  719. }
  720. .py-3 {
  721. padding-top: 0.75rem;
  722. padding-bottom: 0.75rem;
  723. }
  724. .py-4 {
  725. padding-top: 1rem;
  726. padding-bottom: 1rem;
  727. }
  728. .pb-16 {
  729. padding-bottom: 4rem;
  730. }
  731. .pt-28 {
  732. padding-top: 7rem;
  733. }
  734. .text-center {
  735. text-align: center;
  736. }
  737. .text-3xl {
  738. font-size: 1.875rem;
  739. line-height: 2.25rem;
  740. }
  741. .text-4xl {
  742. font-size: 2.25rem;
  743. line-height: 2.5rem;
  744. }
  745. .text-\[clamp\(1\.8rem\2c 4vw\2c 2\.5rem\)\] {
  746. font-size: clamp(1.8rem, 4vw, 2.5rem);
  747. }
  748. .text-lg {
  749. font-size: 1.125rem;
  750. line-height: 1.75rem;
  751. }
  752. .text-sm {
  753. font-size: 0.875rem;
  754. line-height: 1.25rem;
  755. }
  756. .text-xl {
  757. font-size: 1.25rem;
  758. line-height: 1.75rem;
  759. }
  760. .text-xs {
  761. font-size: 0.75rem;
  762. line-height: 1rem;
  763. }
  764. .font-bold {
  765. font-weight: 700;
  766. }
  767. .font-medium {
  768. font-weight: 500;
  769. }
  770. .font-semibold {
  771. font-weight: 600;
  772. }
  773. .text-android {
  774. --tw-text-opacity: 1;
  775. color: rgb(61 220 132 / var(--tw-text-opacity, 1));
  776. }
  777. .text-gray-400 {
  778. --tw-text-opacity: 1;
  779. color: rgb(156 163 175 / var(--tw-text-opacity, 1));
  780. }
  781. .text-gray-500 {
  782. --tw-text-opacity: 1;
  783. color: rgb(107 114 128 / var(--tw-text-opacity, 1));
  784. }
  785. .text-gray-600 {
  786. --tw-text-opacity: 1;
  787. color: rgb(75 85 99 / var(--tw-text-opacity, 1));
  788. }
  789. .text-gray-700 {
  790. --tw-text-opacity: 1;
  791. color: rgb(55 65 81 / var(--tw-text-opacity, 1));
  792. }
  793. .text-gray-800 {
  794. --tw-text-opacity: 1;
  795. color: rgb(31 41 55 / var(--tw-text-opacity, 1));
  796. }
  797. .text-ios {
  798. --tw-text-opacity: 1;
  799. color: rgb(0 0 0 / var(--tw-text-opacity, 1));
  800. }
  801. .text-macos {
  802. --tw-text-opacity: 1;
  803. color: rgb(85 85 85 / var(--tw-text-opacity, 1));
  804. }
  805. .text-primary {
  806. --tw-text-opacity: 1;
  807. color: rgb(59 130 246 / var(--tw-text-opacity, 1));
  808. }
  809. .text-transparent {
  810. color: transparent;
  811. }
  812. .text-white {
  813. --tw-text-opacity: 1;
  814. color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  815. }
  816. .text-windows {
  817. --tw-text-opacity: 1;
  818. color: rgb(0 120 215 / var(--tw-text-opacity, 1));
  819. }
  820. .text-yellow-500 {
  821. --tw-text-opacity: 1;
  822. color: rgb(234 179 8 / var(--tw-text-opacity, 1));
  823. }
  824. .shadow-lg {
  825. --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1),
  826. 0 4px 6px -4px rgb(0 0 0 / 0.1);
  827. --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color),
  828. 0 4px 6px -4px var(--tw-shadow-color);
  829. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  830. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  831. }
  832. .shadow-md {
  833. --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1),
  834. 0 2px 4px -2px rgb(0 0 0 / 0.1);
  835. --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color),
  836. 0 2px 4px -2px var(--tw-shadow-color);
  837. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  838. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  839. }
  840. .shadow-sm {
  841. --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  842. --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  843. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  844. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  845. }
  846. .transition-all {
  847. transition-property: all;
  848. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  849. transition-duration: 150ms;
  850. }
  851. .transition-colors {
  852. transition-property: color, background-color, border-color, fill, stroke,
  853. -webkit-text-decoration-color;
  854. transition-property: color, background-color, border-color,
  855. text-decoration-color, fill, stroke;
  856. transition-property: color, background-color, border-color,
  857. text-decoration-color, fill, stroke, -webkit-text-decoration-color;
  858. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  859. transition-duration: 150ms;
  860. }
  861. .delay-100 {
  862. transition-delay: 100ms;
  863. }
  864. .delay-200 {
  865. transition-delay: 200ms;
  866. }
  867. .delay-300 {
  868. transition-delay: 300ms;
  869. }
  870. .card-hover {
  871. transition-property: all;
  872. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  873. transition-duration: 300ms;
  874. }
  875. .card-hover:hover {
  876. --tw-translate-y: -0.25rem;
  877. transform: translate(var(--tw-translate-x), var(--tw-translate-y))
  878. rotate(var(--tw-rotate)) skewX(var(--tw-skew-x))
  879. skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
  880. scaleY(var(--tw-scale-y));
  881. --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
  882. 0 8px 10px -6px rgb(0 0 0 / 0.1);
  883. --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
  884. 0 8px 10px -6px var(--tw-shadow-color);
  885. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  886. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  887. }
  888. .btn-effect {
  889. position: relative;
  890. overflow: hidden;
  891. transition-property: all;
  892. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  893. transition-duration: 300ms;
  894. }
  895. .btn-effect::after {
  896. content: "";
  897. position: absolute;
  898. top: 0px;
  899. left: -100%;
  900. height: 100%;
  901. width: 100%;
  902. --tw-skew-x: 12deg;
  903. transform: translate(var(--tw-translate-x), var(--tw-translate-y))
  904. rotate(var(--tw-rotate)) skewX(var(--tw-skew-x))
  905. skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
  906. scaleY(var(--tw-scale-y));
  907. background-color: rgb(255 255 255 / 0.2);
  908. transition-property: all;
  909. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  910. transition-duration: 500ms;
  911. }
  912. .btn-effect:hover::after {
  913. left: 100%;
  914. }
  915. .guide-step {
  916. margin-bottom: 0.75rem;
  917. display: flex;
  918. align-items: flex-start;
  919. }
  920. .guide-step-number {
  921. margin-right: 0.75rem;
  922. margin-top: 0.125rem;
  923. display: flex;
  924. height: 1.5rem;
  925. width: 1.5rem;
  926. flex-shrink: 0;
  927. align-items: center;
  928. justify-content: center;
  929. border-radius: 9999px;
  930. --tw-bg-opacity: 1;
  931. background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
  932. --tw-text-opacity: 1;
  933. color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  934. }
  935. .modal-backdrop {
  936. pointer-events: none;
  937. position: fixed;
  938. inset: 0px;
  939. z-index: 50;
  940. display: flex;
  941. align-items: center;
  942. justify-content: center;
  943. background-color: rgb(0 0 0 / 0.5);
  944. opacity: 0;
  945. transition-property: opacity;
  946. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  947. transition-duration: 300ms;
  948. }
  949. .modal-backdrop.active {
  950. pointer-events: auto;
  951. opacity: 1;
  952. }
  953. .modal-content {
  954. margin-left: 1rem;
  955. margin-right: 1rem;
  956. width: 100%;
  957. max-width: 28rem;
  958. --tw-translate-y: 2rem;
  959. transform: translate(var(--tw-translate-x), var(--tw-translate-y))
  960. rotate(var(--tw-rotate)) skewX(var(--tw-skew-x))
  961. skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
  962. scaleY(var(--tw-scale-y));
  963. border-radius: 0.75rem;
  964. --tw-bg-opacity: 1;
  965. background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  966. padding: 1.5rem;
  967. transition-property: transform;
  968. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  969. transition-duration: 300ms;
  970. }
  971. .modal-backdrop.active .modal-content {
  972. --tw-translate-y: 0px;
  973. transform: translate(var(--tw-translate-x), var(--tw-translate-y))
  974. rotate(var(--tw-rotate)) skewX(var(--tw-skew-x))
  975. skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
  976. scaleY(var(--tw-scale-y));
  977. }
  978. .hover\:bg-gray-50:hover {
  979. --tw-bg-opacity: 1;
  980. background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
  981. }
  982. .hover\:bg-primary\/90:hover {
  983. background-color: rgb(59 130 246 / 0.9);
  984. }
  985. .hover\:text-primary:hover {
  986. --tw-text-opacity: 1;
  987. color: rgb(59 130 246 / var(--tw-text-opacity, 1));
  988. }
  989. .hover\:shadow-lg:hover {
  990. --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1),
  991. 0 4px 6px -4px rgb(0 0 0 / 0.1);
  992. --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color),
  993. 0 4px 6px -4px var(--tw-shadow-color);
  994. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  995. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  996. }
  997. @media (min-width: 640px) {
  998. .sm\:grid-cols-2 {
  999. grid-template-columns: repeat(2, minmax(0, 1fr));
  1000. }
  1001. }
  1002. @media (min-width: 768px) {
  1003. .md\:flex {
  1004. display: flex;
  1005. }
  1006. .md\:hidden {
  1007. display: none;
  1008. }
  1009. .md\:grid-cols-3 {
  1010. grid-template-columns: repeat(3, minmax(0, 1fr));
  1011. }
  1012. }
  1013. @media (min-width: 1024px) {
  1014. .lg\:grid-cols-4 {
  1015. grid-template-columns: repeat(4, minmax(0, 1fr));
  1016. }
  1017. }
  1018. </style>
  1019. <style data-id="immersive-translate-input-injected-css">
  1020. .immersive-translate-input {
  1021. position: absolute;
  1022. top: 0;
  1023. right: 0;
  1024. left: 0;
  1025. bottom: 0;
  1026. z-index: 2147483647;
  1027. display: flex;
  1028. justify-content: center;
  1029. align-items: center;
  1030. }
  1031. .immersive-translate-attach-loading::after {
  1032. content: " ";
  1033. --loading-color: #f78fb6;
  1034. width: 6px;
  1035. height: 6px;
  1036. border-radius: 50%;
  1037. display: block;
  1038. margin: 12px auto;
  1039. position: relative;
  1040. color: white;
  1041. left: -100px;
  1042. box-sizing: border-box;
  1043. animation: immersiveTranslateShadowRolling 1.5s linear infinite;
  1044. position: absolute;
  1045. top: 50%;
  1046. left: 50%;
  1047. transform: translate(-2000%, -50%);
  1048. z-index: 100;
  1049. }
  1050. .immersive-translate-loading-spinner {
  1051. vertical-align: middle !important;
  1052. width: 10px !important;
  1053. height: 10px !important;
  1054. display: inline-block !important;
  1055. margin: 0 4px !important;
  1056. border: 2px rgba(221, 244, 255, 0.6) solid !important;
  1057. border-top: 2px rgba(0, 0, 0, 0.375) solid !important;
  1058. border-left: 2px rgba(0, 0, 0, 0.375) solid !important;
  1059. border-radius: 50% !important;
  1060. padding: 0 !important;
  1061. -webkit-animation: immersive-translate-loading-animation 0.6s infinite
  1062. linear !important;
  1063. animation: immersive-translate-loading-animation 0.6s infinite linear !important;
  1064. }
  1065. @-webkit-keyframes immersive-translate-loading-animation {
  1066. from {
  1067. -webkit-transform: rotate(0deg);
  1068. }
  1069. to {
  1070. -webkit-transform: rotate(359deg);
  1071. }
  1072. }
  1073. @keyframes immersive-translate-loading-animation {
  1074. from {
  1075. transform: rotate(0deg);
  1076. }
  1077. to {
  1078. transform: rotate(359deg);
  1079. }
  1080. }
  1081. .immersive-translate-input-loading {
  1082. --loading-color: #f78fb6;
  1083. width: 6px;
  1084. height: 6px;
  1085. border-radius: 50%;
  1086. display: block;
  1087. margin: 12px auto;
  1088. position: relative;
  1089. color: white;
  1090. left: -100px;
  1091. box-sizing: border-box;
  1092. animation: immersiveTranslateShadowRolling 1.5s linear infinite;
  1093. }
  1094. @keyframes immersiveTranslateShadowRolling {
  1095. 0% {
  1096. box-shadow: 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0),
  1097. 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
  1098. }
  1099. 12% {
  1100. box-shadow: 100px 0 var(--loading-color), 0px 0 rgba(255, 255, 255, 0),
  1101. 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
  1102. }
  1103. 25% {
  1104. box-shadow: 110px 0 var(--loading-color), 100px 0 var(--loading-color),
  1105. 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
  1106. }
  1107. 36% {
  1108. box-shadow: 120px 0 var(--loading-color), 110px 0 var(--loading-color),
  1109. 100px 0 var(--loading-color), 0px 0 rgba(255, 255, 255, 0);
  1110. }
  1111. 50% {
  1112. box-shadow: 130px 0 var(--loading-color), 120px 0 var(--loading-color),
  1113. 110px 0 var(--loading-color), 100px 0 var(--loading-color);
  1114. }
  1115. 62% {
  1116. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1117. 130px 0 var(--loading-color), 120px 0 var(--loading-color),
  1118. 110px 0 var(--loading-color);
  1119. }
  1120. 75% {
  1121. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1122. 200px 0 rgba(255, 255, 255, 0), 130px 0 var(--loading-color),
  1123. 120px 0 var(--loading-color);
  1124. }
  1125. 87% {
  1126. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1127. 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
  1128. 130px 0 var(--loading-color);
  1129. }
  1130. 100% {
  1131. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1132. 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
  1133. 200px 0 rgba(255, 255, 255, 0);
  1134. }
  1135. }
  1136. .immersive-translate-toast {
  1137. display: flex;
  1138. position: fixed;
  1139. z-index: 2147483647;
  1140. left: 0;
  1141. right: 0;
  1142. top: 1%;
  1143. width: fit-content;
  1144. padding: 12px 20px;
  1145. margin: auto;
  1146. overflow: auto;
  1147. background: #fef6f9;
  1148. box-shadow: 0px 4px 10px 0px rgba(0, 10, 30, 0.06);
  1149. font-size: 15px;
  1150. border-radius: 8px;
  1151. color: #333;
  1152. }
  1153. .immersive-translate-toast-content {
  1154. display: flex;
  1155. flex-direction: row;
  1156. align-items: center;
  1157. }
  1158. .immersive-translate-toast-hidden {
  1159. margin: 0 20px 0 72px;
  1160. text-decoration: underline;
  1161. cursor: pointer;
  1162. }
  1163. .immersive-translate-toast-close {
  1164. color: #666666;
  1165. font-size: 20px;
  1166. font-weight: bold;
  1167. padding: 0 10px;
  1168. cursor: pointer;
  1169. }
  1170. @media screen and (max-width: 768px) {
  1171. .immersive-translate-toast {
  1172. top: 0;
  1173. padding: 12px 0px 0 10px;
  1174. }
  1175. .immersive-translate-toast-content {
  1176. flex-direction: column;
  1177. text-align: center;
  1178. }
  1179. .immersive-translate-toast-hidden {
  1180. margin: 10px auto;
  1181. }
  1182. }
  1183. .immersive-translate-dialog {
  1184. position: fixed;
  1185. z-index: 2147483647;
  1186. left: 0;
  1187. top: 0;
  1188. display: flex;
  1189. width: 300px;
  1190. flex-direction: column;
  1191. align-items: center;
  1192. font-size: 15px;
  1193. left: 0;
  1194. right: 0;
  1195. top: 0;
  1196. bottom: 0;
  1197. margin: auto;
  1198. height: fit-content;
  1199. border-radius: 20px;
  1200. background-color: #fff;
  1201. }
  1202. .immersive-translate-modal {
  1203. display: none;
  1204. position: fixed;
  1205. z-index: 2147483647;
  1206. left: 0;
  1207. top: 0;
  1208. width: 100%;
  1209. height: 100%;
  1210. overflow: auto;
  1211. background-color: rgb(0, 0, 0);
  1212. background-color: rgba(0, 0, 0, 0.4);
  1213. font-size: 15px;
  1214. }
  1215. .immersive-translate-modal-content {
  1216. background-color: #fefefe;
  1217. margin: 10% auto;
  1218. padding: 40px 24px 24px;
  1219. border-radius: 12px;
  1220. width: 350px;
  1221. font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu",
  1222. "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji",
  1223. "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  1224. position: relative;
  1225. }
  1226. @media screen and (max-width: 768px) {
  1227. .immersive-translate-modal-content {
  1228. margin: 25% auto !important;
  1229. }
  1230. }
  1231. @media screen and (max-width: 480px) {
  1232. .immersive-translate-modal-content {
  1233. width: 80vw !important;
  1234. margin: 20vh auto !important;
  1235. padding: 20px 12px 12px !important;
  1236. }
  1237. .immersive-translate-modal-title {
  1238. font-size: 14px !important;
  1239. }
  1240. .immersive-translate-modal-body {
  1241. font-size: 13px !important;
  1242. max-height: 60vh !important;
  1243. }
  1244. .immersive-translate-btn {
  1245. font-size: 13px !important;
  1246. padding: 8px 16px !important;
  1247. margin: 0 4px !important;
  1248. }
  1249. .immersive-translate-modal-footer {
  1250. gap: 6px !important;
  1251. margin-top: 16px !important;
  1252. }
  1253. }
  1254. .immersive-translate-modal .immersive-translate-modal-content-in-input {
  1255. max-width: 500px;
  1256. }
  1257. .immersive-translate-modal-content-in-input
  1258. .immersive-translate-modal-body {
  1259. text-align: left;
  1260. max-height: unset;
  1261. }
  1262. .immersive-translate-modal-title {
  1263. text-align: center;
  1264. font-size: 16px;
  1265. font-weight: 700;
  1266. color: #333333;
  1267. }
  1268. .immersive-translate-modal-body {
  1269. text-align: center;
  1270. font-size: 14px;
  1271. font-weight: 400;
  1272. color: #333333;
  1273. margin-top: 24px;
  1274. word-break: break-all;
  1275. }
  1276. @media screen and (max-width: 768px) {
  1277. .immersive-translate-modal-body {
  1278. max-height: 250px;
  1279. overflow-y: auto;
  1280. }
  1281. }
  1282. .immersive-translate-close {
  1283. color: #666666;
  1284. position: absolute;
  1285. right: 16px;
  1286. top: 16px;
  1287. font-size: 20px;
  1288. font-weight: bold;
  1289. }
  1290. .immersive-translate-close:hover,
  1291. .immersive-translate-close:focus {
  1292. text-decoration: none;
  1293. cursor: pointer;
  1294. }
  1295. .immersive-translate-modal-footer {
  1296. display: flex;
  1297. justify-content: center;
  1298. flex-wrap: wrap;
  1299. margin-top: 24px;
  1300. }
  1301. .immersive-translate-btn {
  1302. width: fit-content;
  1303. color: #fff;
  1304. background-color: #ea4c89;
  1305. border: none;
  1306. font-size: 14px;
  1307. margin: 0 8px;
  1308. padding: 9px 30px;
  1309. border-radius: 5px;
  1310. display: flex;
  1311. align-items: center;
  1312. justify-content: center;
  1313. cursor: pointer;
  1314. transition: background-color 0.3s ease;
  1315. }
  1316. .immersive-translate-btn-container {
  1317. display: flex;
  1318. flex-direction: column;
  1319. align-items: center;
  1320. justify-content: center;
  1321. gap: 8px;
  1322. }
  1323. .immersive-translate-btn:hover {
  1324. background-color: #f082ac;
  1325. }
  1326. .immersive-translate-btn:disabled {
  1327. opacity: 0.6;
  1328. cursor: not-allowed;
  1329. }
  1330. .immersive-translate-btn:disabled:hover {
  1331. background-color: #ea4c89;
  1332. }
  1333. .immersive-translate-link-btn {
  1334. background-color: transparent;
  1335. color: #ea4c89;
  1336. border: none;
  1337. cursor: pointer;
  1338. height: 30px;
  1339. line-height: 30px;
  1340. }
  1341. .immersive-translate-cancel-btn {
  1342. /* gray color */
  1343. background-color: rgb(89, 107, 120);
  1344. }
  1345. .immersive-translate-cancel-btn:hover {
  1346. background-color: hsl(205, 20%, 32%);
  1347. }
  1348. .immersive-translate-action-btn {
  1349. background-color: transparent;
  1350. color: #ea4c89;
  1351. border: 1px solid #ea4c89;
  1352. }
  1353. .immersive-translate-btn svg {
  1354. margin-right: 5px;
  1355. }
  1356. .immersive-translate-link {
  1357. cursor: pointer;
  1358. user-select: none;
  1359. -webkit-user-drag: none;
  1360. text-decoration: none;
  1361. color: #ea4c89;
  1362. -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
  1363. }
  1364. .immersive-translate-primary-link {
  1365. cursor: pointer;
  1366. user-select: none;
  1367. -webkit-user-drag: none;
  1368. text-decoration: none;
  1369. color: #ea4c89;
  1370. -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
  1371. }
  1372. .immersive-translate-modal input[type="radio"] {
  1373. margin: 0 6px;
  1374. cursor: pointer;
  1375. }
  1376. .immersive-translate-modal label {
  1377. cursor: pointer;
  1378. }
  1379. .immersive-translate-close-action {
  1380. position: absolute;
  1381. top: 2px;
  1382. right: 0px;
  1383. cursor: pointer;
  1384. }
  1385. .imt-image-status {
  1386. background-color: rgba(0, 0, 0, 0.5) !important;
  1387. display: flex !important;
  1388. flex-direction: column !important;
  1389. align-items: center !important;
  1390. justify-content: center !important;
  1391. border-radius: 16px !important;
  1392. }
  1393. .imt-image-status img,
  1394. .imt-image-status svg,
  1395. .imt-img-loading {
  1396. width: 28px !important;
  1397. height: 28px !important;
  1398. margin: 0 0 8px 0 !important;
  1399. min-height: 28px !important;
  1400. min-width: 28px !important;
  1401. position: relative !important;
  1402. }
  1403. .imt-img-loading {
  1404. background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4CAMAAACfWMssAAAAtFBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////oK74hAAAAPHRSTlMABBMIDyQXHwyBfFdDMSw+OjXCb+5RG51IvV/k0rOqlGRM6KKMhdvNyZBz9MaupmxpWyj437iYd/yJVNZeuUC7AAACt0lEQVRIx53T2XKiUBCA4QYOiyCbiAsuuGBcYtxiYtT3f6/pbqoYHVFO5r+iivpo6DpAWYpqeoFfr9f90DsYAuRSWkFnPO50OgR9PwiCUFcl2GEcx+N/YBh6pvKaefHlUgZd1zVe0NbYcQjGBfzrPE8Xz8aF+71D8gG6DHFPpc4a7xFiCDuhaWgKgGIJQ3d5IMGDrpS4S5KgpIm+en9f6PlAhKby4JwEIxlYJV9h5k5nee9GoxHJ2IDSNB0dwdad1NAxDJ/uXDHYmebdk4PdbkS58CIVHdYSUHTYYRWOJblWSyu2lmy3KNFVJNBhxcuGW4YBVCbYGRZwIooipHsNqjM4FbgOQqQqSKQQU9V8xmi1QlgHqQQ6DDBvRUVCDirs+EzGDGOQTCATgtYTnbCVLgsVgRE0T1QE0qHCFAht2z6dLvJQs3Lo2FQoDxWNUiBhaP4eRgwNkI+dAjVOA/kUrIDwf3CG8NfNOE0eiFotSuo+rBiq8tD9oY4Qzc6YJw99hl1wzpQvD7ef2M8QgnOGJfJw+EltQc+oX2yn907QB22WZcvlUpd143dqQu+8pCJZuGE4xCuPXJqqcs5sNpsI93Rmzym1k4Npk+oD1SH3/a3LOK/JpUBpWfqNySxWzCfNCUITuDG5dtuphrUJ1myeIE9bIsPiKrfqTai5WZxbhtNphYx6GEIHihyGFTI69lje/rxajdh0s0msZ0zYxyPLhYCb1CyHm9Qsd2H37Y3lugVwL9kNh8Ot8cha6fUNQ8nuXi5z9/ExsAO4zQrb/ev1yrCB7lGyQzgYDGuxq1toDN/JGvN+HyWNHKB7zEoK+PX11e12G431erGYzwmytAWU56fkMHY5JJnDRR2eZji3AwtIcrEV8Cojat/BdQ7XOwGV1e1hDjGGjXbdArm8uJZtCH5MbcctVX8A1WpqumJHwckAAAAASUVORK5CYII=");
  1405. background-size: 28px 28px;
  1406. animation: image-loading-rotate 1s linear infinite !important;
  1407. }
  1408. .imt-image-status span {
  1409. color: var(--bg-2, #fff) !important;
  1410. font-size: 14px !important;
  1411. line-height: 14px !important;
  1412. font-weight: 500 !important;
  1413. font-family: "PingFang SC", Arial, sans-serif !important;
  1414. }
  1415. .imt-primary-button {
  1416. display: flex;
  1417. padding: 12px 80px;
  1418. justify-content: center;
  1419. align-items: center;
  1420. gap: 8px;
  1421. border-radius: 8px;
  1422. background: #ea4c89;
  1423. color: #fff;
  1424. font-size: 16px;
  1425. font-style: normal;
  1426. font-weight: 700;
  1427. line-height: 24px;
  1428. border: none;
  1429. cursor: pointer;
  1430. }
  1431. .imt-retry-text {
  1432. color: #999;
  1433. text-align: center;
  1434. font-size: 14px;
  1435. font-style: normal;
  1436. font-weight: 400;
  1437. line-height: 21px;
  1438. cursor: pointer;
  1439. }
  1440. .imt-action-container {
  1441. display: flex;
  1442. flex-direction: column;
  1443. gap: 12px;
  1444. }
  1445. .imt-modal-content-text {
  1446. text-align: left;
  1447. color: #333;
  1448. font-size: 16px;
  1449. font-weight: 400;
  1450. line-height: 24px;
  1451. }
  1452. @keyframes image-loading-rotate {
  1453. from {
  1454. transform: rotate(360deg);
  1455. }
  1456. to {
  1457. transform: rotate(0deg);
  1458. }
  1459. }
  1460. .imt-linear-gradient-text {
  1461. background: linear-gradient(
  1462. 90deg,
  1463. #00a6ff 0%,
  1464. #c369ff 52.4%,
  1465. #ff4590 100%
  1466. );
  1467. background-clip: text;
  1468. -webkit-background-clip: text;
  1469. -webkit-text-fill-color: transparent;
  1470. }
  1471. .imt-flex-center {
  1472. display: flex;
  1473. align-items: center;
  1474. justify-content: center;
  1475. }
  1476. .imt-linear-black-btn {
  1477. border-radius: 50px;
  1478. background: linear-gradient(66deg, #222 19%, #696969 94.25%);
  1479. height: 48px;
  1480. width: 100%;
  1481. color: #fff;
  1482. font-size: 16px;
  1483. font-weight: 700;
  1484. display: flex;
  1485. align-items: center;
  1486. cursor: pointer;
  1487. justify-content: center;
  1488. }
  1489. </style>
  1490. </head>
  1491. <body class="bg-gray-50 text-gray-800">
  1492. <!-- 导航栏 -->
  1493. <header class="fixed top-0 left-0 right-0 bg-white/95 shadow-sm z-50">
  1494. <div
  1495. class="container mx-auto px-4 py-4 flex justify-between items-center"
  1496. >
  1497. <div class="flex items-center space-x-2">
  1498. <div
  1499. class="w-10 h-10 rounded-lg bg-gradient-to-r from-primary to-purple-600 flex items-center justify-center"
  1500. >
  1501. <img
  1502. alt="夺宝奇兵"
  1503. src="https://hc.homilychart.com/hc/250121/img/20230711171637.png"
  1504. style="width: 40px; height: 40px"
  1505. />
  1506. </div>
  1507. <span
  1508. class="text-xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-primary to-purple-600"
  1509. >夺宝奇兵-软件下载</span
  1510. >
  1511. </div>
  1512. <!-- 桌面导航 -->
  1513. <nav class="hidden md:flex items-center space-x-8">
  1514. <a href="index.html" class="hover:text-primary transition-colors"
  1515. >首页</a
  1516. >
  1517. <a href="hcdbqb-download.html" class="text-primary font-medium"
  1518. >下载中心</a
  1519. >
  1520. <a
  1521. href="https://api.whatsapp.com/send?phone=85255110485&text=我需要帮助"
  1522. target="_blank"
  1523. class="hover:text-primary transition-colors"
  1524. >帮助</a
  1525. >
  1526. <a
  1527. href="https://api.whatsapp.com/send?phone=85255110485&text=我需要帮助"
  1528. target="_blank"
  1529. class="px-5 py-2 rounded-full bg-gradient-to-r from-primary to-purple-600 text-white hover:shadow-lg transition-all"
  1530. >加入我们</a
  1531. >
  1532. </nav>
  1533. <!-- 移动端菜单 -->
  1534. <button id="mobileMenuBtn" class="md:hidden text-xl">
  1535. <i class="fa fa-bars"></i>
  1536. </button>
  1537. </div>
  1538. <!-- 移动端菜单内容 -->
  1539. <div id="mobileMenu" class="md:hidden hidden bg-white border-t">
  1540. <div class="container mx-auto px-4 py-3 flex flex-col space-y-3">
  1541. <a href="index.html" class="py-2 hover:text-primary transition-colors"
  1542. >首页</a
  1543. >
  1544. <a href="hcdbqb-download.html" class="py-2 text-primary">下载中心</a>
  1545. <a
  1546. href="https://wa.me/+6588792879?text=夺宝奇兵下载我需要帮助"
  1547. target="_blank"
  1548. class="py-2 hover:text-primary transition-colors"
  1549. >帮助</a
  1550. >
  1551. <a
  1552. href="https://wa.me/+6588792879?text=夺宝奇兵下载我需要帮助"
  1553. target="_blank"
  1554. class="py-2 mt-2 rounded-full bg-gradient-to-r from-primary to-purple-600 text-white text-center"
  1555. >联系我们</a
  1556. >
  1557. </div>
  1558. </div>
  1559. </header>
  1560. <!-- 主要内容 -->
  1561. <main class="pt-28 pb-16 px-4">
  1562. <div class="container mx-auto max-w-6xl">
  1563. <!-- 页面标题 -->
  1564. <div class="text-center mb-12 fade-in" style="opacity: 1">
  1565. <h1 class="text-[clamp(1.8rem,4vw,2.5rem)] font-bold mb-4">
  1566. 客户端下载
  1567. </h1>
  1568. <p class="text-gray-600 max-w-2xl mx-auto">
  1569. 选择适合您设备的客户端软件版本,体验夺宝奇兵,听直播和重播!
  1570. </p>
  1571. </div>
  1572. <!-- 下载提示 - 防止拦截的关键提示 -->
  1573. <div
  1574. class="bg-blue-50 border border-blue-200 rounded-xl p-5 mb-10 max-w-3xl mx-auto fade-in delay-100"
  1575. style="opacity: 1"
  1576. >
  1577. <div class="flex items-start">
  1578. <div
  1579. class="w-10 h-10 rounded-full bg-blue-100 flex items-center justify-center text-primary flex-shrink-0 mr-4"
  1580. >
  1581. <i class="fa fa-info"></i>
  1582. </div>
  1583. <div>
  1584. <h3 class="font-semibold text-lg mb-2">下载说明</h3>
  1585. <p class="text-gray-700 mb-3">
  1586. 我们的安装包经过安全认证,若浏览器提示拦截,请按照以下步骤操作:
  1587. </p>
  1588. <div class="grid grid-cols-1 md:grid-cols-3 gap-4 text-sm">
  1589. <div class="guide-step">
  1590. <span class="guide-step-number">1</span>
  1591. <span>点击浏览器拦截提示</span>
  1592. </div>
  1593. <div class="guide-step">
  1594. <span class="guide-step-number">2</span>
  1595. <span>选择"允许下载"</span>
  1596. </div>
  1597. <div class="guide-step">
  1598. <span class="guide-step-number">3</span>
  1599. <span>在下载中心确认保存</span>
  1600. </div>
  1601. </div>
  1602. </div>
  1603. </div>
  1604. </div>
  1605. <!-- 设备展示图 -->
  1606. <div
  1607. class="max-w-3xl mx-auto mb-16 fade-in delay-100"
  1608. style="opacity: 1"
  1609. >
  1610. <a href="#downloading"
  1611. ><img
  1612. src="https://hc.homilychart.com/hc/250121/img/homilylink-down.jpeg"
  1613. alt="多平台设备展示"
  1614. class="w-full h-auto rounded-xl shadow-lg"
  1615. /></a>
  1616. </div>
  1617. <!-- 下载卡片区域 -->
  1618. <div
  1619. id="downloading"
  1620. class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6"
  1621. >
  1622. <!-- Windows -->
  1623. <div
  1624. class="bg-white rounded-xl shadow-md p-6 text-center card-hover fade-in"
  1625. style="opacity: 1"
  1626. >
  1627. <div
  1628. class="w-20 h-20 mx-auto mb-5 rounded-full bg-windows/10 flex items-center justify-center text-windows text-4xl"
  1629. >
  1630. <i class="fa fa-windows"></i>
  1631. </div>
  1632. <h3 class="text-lg font-bold mb-2">Windows</h3>
  1633. <p class="text-gray-500 text-sm mb-3">适用于Win 7及以上</p>
  1634. <p class="text-gray-500 text-xs mb-4">版本: v1.2.2 | 178 MB</p>
  1635. <button
  1636. onclick="handleDownload('windows')"
  1637. class="btn-effect w-full py-3 rounded-lg bg-windows text-white font-medium"
  1638. >
  1639. <i class="fa fa-download mr-2"></i>立即下载
  1640. </button>
  1641. </div>
  1642. <!-- macOS -->
  1643. <div
  1644. class="bg-white rounded-xl shadow-md p-6 text-center card-hover fade-in delay-100"
  1645. style="opacity: 1"
  1646. >
  1647. <div
  1648. class="w-20 h-20 mx-auto mb-5 rounded-full bg-gray-100 flex items-center justify-center text-macos text-4xl"
  1649. >
  1650. <i class="fa fa-apple"></i>
  1651. </div>
  1652. <h3 class="text-lg font-bold mb-2">macOS</h3>
  1653. <p class="text-gray-500 text-sm mb-3">适用于macOS 10.15+</p>
  1654. <p class="text-gray-500 text-xs mb-4">版本: v1.2.1 | 80.6 MB</p>
  1655. <button
  1656. onclick="handleDownload('macos')"
  1657. class="btn-effect w-full py-3 rounded-lg bg-macos text-white font-medium"
  1658. >
  1659. <i class="fa fa-download mr-2"></i>立即下载
  1660. </button>
  1661. </div>
  1662. <!-- Android -->
  1663. <div
  1664. class="bg-white rounded-xl shadow-md p-6 text-center card-hover fade-in delay-200"
  1665. style="opacity: 1"
  1666. >
  1667. <div
  1668. class="w-20 h-20 mx-auto mb-5 rounded-full bg-android/10 flex items-center justify-center text-android text-4xl"
  1669. >
  1670. <i class="fa fa-android"></i>
  1671. </div>
  1672. <h3 class="text-lg font-bold mb-2">Android</h3>
  1673. <p class="text-gray-500 text-sm mb-3">适用于Android 6.0+</p>
  1674. <p class="text-gray-500 text-xs mb-4">版本: v1.3.22 | 20.11 MB</p>
  1675. <button
  1676. onclick="window.location.href='https://play.google.com/store/apps/details?id=com.homilychart.hljw'; return false;"
  1677. class="btn-effect w-full py-3 rounded-lg bg-android text-white font-medium"
  1678. >
  1679. <i class="fa fa-download mr-2"></i>立即下载
  1680. </button>
  1681. </div>
  1682. <!-- iOS -->
  1683. <div
  1684. class="bg-white rounded-xl shadow-md p-6 text-center card-hover fade-in delay-300"
  1685. style="opacity: 1"
  1686. >
  1687. <div
  1688. class="w-20 h-20 mx-auto mb-5 rounded-full bg-gray-100 flex items-center justify-center text-ios text-4xl"
  1689. >
  1690. <i class="fa fa-mobile"></i>
  1691. </div>
  1692. <h3 class="text-lg font-bold mb-2">iOS</h3>
  1693. <p class="text-gray-500 text-sm mb-3">适用于iOS 12.0+</p>
  1694. <p class="text-gray-500 text-xs mb-4">版本: v1.3.21 | 135.1 MB</p>
  1695. <button
  1696. onclick="window.location.href='https://apps.apple.com/sg/app/homily-link/id6444714265?l=zh-Hans-CN'; return false;"
  1697. class="btn-effect w-full py-3 rounded-lg bg-ios text-white font-medium"
  1698. >
  1699. <i class="fa fa-download mr-2"></i>立即下载
  1700. </button>
  1701. </div>
  1702. </div>
  1703. <!-- 下载帮助指南 -->
  1704. <div
  1705. class="mt-16 bg-white rounded-xl shadow-md p-6 max-w-3xl mx-auto fade-in delay-200"
  1706. style="opacity: 1"
  1707. >
  1708. <h3 class="text-xl font-bold mb-4 text-center">常见下载问题</h3>
  1709. <div class="space-y-4">
  1710. <div>
  1711. <h4 class="font-semibold mb-1 flex items-center">
  1712. <i class="fa fa-shield text-primary mr-2"></i>
  1713. 为什么我的下载被拦截了?
  1714. </h4>
  1715. <p class="text-gray-600 text-sm">
  1716. 浏览器会对未知的安装包进行安全检查,这是正常的安全机制。我们的软件经过数字签名,您可以放心下载。
  1717. </p>
  1718. </div>
  1719. <div>
  1720. <h4 class="font-semibold mb-1 flex items-center">
  1721. <i class="fa fa-exclamation-triangle text-primary mr-2"></i>
  1722. 下载的文件无法打开?
  1723. </h4>
  1724. <p class="text-gray-600 text-sm">
  1725. 请检查您的设备是否满足系统要求,Windows和macOS可能需要在设置中允许来自开发者的应用。
  1726. </p>
  1727. </div>
  1728. </div>
  1729. </div>
  1730. </div>
  1731. </main>
  1732. <!-- 设备提醒弹窗 -->
  1733. <div id="deviceAlertModal" class="modal-backdrop">
  1734. <div class="modal-content text-center">
  1735. <div
  1736. class="w-16 h-16 mx-auto mb-4 rounded-full bg-yellow-100 flex items-center justify-center text-yellow-500 text-3xl"
  1737. >
  1738. <i class="fa fa-exclamation-triangle"></i>
  1739. </div>
  1740. <h3 class="text-xl font-bold mb-2">设备提示</h3>
  1741. <p class="text-gray-600 mb-6">
  1742. 您正在使用移动设备访问,建议在电脑端下载并安装此版本。
  1743. </p>
  1744. <div class="flex space-x-3">
  1745. <button
  1746. onclick="closeModal()"
  1747. class="flex-1 py-2 rounded-lg border border-gray-300 text-gray-700 font-medium hover:bg-gray-50 transition-colors"
  1748. >
  1749. 取消
  1750. </button>
  1751. <button
  1752. onclick="proceedDownload()"
  1753. class="flex-1 py-2 rounded-lg bg-primary text-white font-medium hover:bg-primary/90 transition-colors"
  1754. >
  1755. 仍要下载
  1756. </button>
  1757. </div>
  1758. </div>
  1759. </div>
  1760. <!-- 页脚 -->
  1761. <footer class="bg-gray-900 text-white py-10 px-4">
  1762. <div class="container mx-auto max-w-6xl text-center">
  1763. <div class="mb-6">
  1764. <div class="inline-flex items-center space-x-2">
  1765. <div
  1766. class="w-10 h-10 rounded-lg gradient-bg flex items-center justify-center"
  1767. >
  1768. <img
  1769. alt="夺宝奇兵"
  1770. src="https://hc.homilychart.com/hc/250121/img/20230711171637.png"
  1771. style="width: 40px; height: 40px"
  1772. />
  1773. </div>
  1774. <span class="font-bold">夺宝奇兵</span>
  1775. </div>
  1776. </div>
  1777. <p class="text-gray-400 text-sm mb-4">
  1778. Copyright 2025.Capitalmaster Pte Ltd All Rights Reserved.
  1779. </p>
  1780. </div>
  1781. </footer>
  1782. <!-- 下载相关脚本 -->
  1783. <script>
  1784. // 存储当前要下载的平台
  1785. let currentPlatform = null;
  1786. // 移动端菜单切换
  1787. document
  1788. .getElementById("mobileMenuBtn")
  1789. .addEventListener("click", function () {
  1790. const menu = document.getElementById("mobileMenu");
  1791. menu.classList.toggle("hidden");
  1792. const icon = this.querySelector("i");
  1793. if (icon.classList.contains("fa-bars")) {
  1794. icon.classList.replace("fa-bars", "fa-times");
  1795. } else {
  1796. icon.classList.replace("fa-times", "fa-bars");
  1797. }
  1798. });
  1799. // 检测是否为移动设备
  1800. function isMobileDevice() {
  1801. return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
  1802. navigator.userAgent
  1803. );
  1804. }
  1805. // 处理下载逻辑
  1806. function handleDownload(platform) {
  1807. // 对于电脑版(Windows/macOS),检查是否在移动设备上
  1808. if (
  1809. (platform === "windows" || platform === "macos") &&
  1810. isMobileDevice()
  1811. ) {
  1812. // 存储当前平台并显示提示弹窗
  1813. currentPlatform = platform;
  1814. document.getElementById("deviceAlertModal").classList.add("active");
  1815. } else {
  1816. // 直接下载
  1817. startDownload(platform);
  1818. }
  1819. }
  1820. // 开始下载
  1821. function startDownload(platform) {
  1822. // 构建下载链接(实际应用中替换为真实下载地址)
  1823. const downloadUrls = {
  1824. windows:
  1825. "https://hc.homilychart.com/hc/250121/download/HomilyLink_Setup_1.2.2.exe",
  1826. macos:
  1827. "https://hc.homilychart.com/hc/250121/download/Homily Link-1.2.1.dmg",
  1828. android:
  1829. "https://play.google.com/store/apps/details?id=com.homilychart.hljw",
  1830. ios: "https://yourdomain.com/downloads/ios-version.ipa",
  1831. };
  1832. // 创建下载链接并触发点击
  1833. const link = document.createElement("a");
  1834. link.href = downloadUrls[platform];
  1835. // 设置文件名,增加可信度
  1836. const filenames = {
  1837. windows: "Homily Link Setup 1.2.2.exe",
  1838. macos: "Homily Link-1.2.1.dmg",
  1839. android: "Homily Link.apk",
  1840. ios: "Homily Link.ipa",
  1841. };
  1842. if (filenames[platform]) {
  1843. link.download = filenames[platform];
  1844. }
  1845. // 模拟用户主动操作延迟,降低拦截概率
  1846. setTimeout(() => {
  1847. link.click();
  1848. // 显示下载提示
  1849. alert("下载已开始,如果没有反应,请检查浏览器顶部或底部的拦截提示");
  1850. }, 300);
  1851. }
  1852. // 关闭弹窗
  1853. function closeModal() {
  1854. document.getElementById("deviceAlertModal").classList.remove("active");
  1855. currentPlatform = null;
  1856. }
  1857. // 继续下载
  1858. function proceedDownload() {
  1859. if (currentPlatform) {
  1860. startDownload(currentPlatform);
  1861. closeModal();
  1862. }
  1863. }
  1864. // 页面加载完成后初始化动画
  1865. document.addEventListener("DOMContentLoaded", function () {
  1866. document.querySelectorAll(".fade-in").forEach((el) => {
  1867. el.style.opacity = "1";
  1868. });
  1869. });
  1870. </script>
  1871. </body>
  1872. <div id="immersive-translate-popup" style="all: initial"></div>
  1873. </html>