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

2075 lines
63 KiB

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