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

2241 lines
65 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. <!-- 引入Tailwind CSS -->
  16. <script src="https://cdn.tailwindcss.com"></script>
  17. <!-- 引入Font Awesome -->
  18. <link
  19. href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css"
  20. rel="stylesheet"
  21. />
  22. <!-- 配置Tailwind自定义颜色和字体(与原页面保持一致) -->
  23. <script>
  24. tailwind.config = {
  25. theme: {
  26. extend: {
  27. colors: {
  28. primary: "#3B82F6",
  29. secondary: "#10B981",
  30. accent: "#8B5CF6",
  31. dark: "#1E293B",
  32. light: "#F8FAFC",
  33. },
  34. fontFamily: {
  35. sans: ["Inter", "system-ui", "sans-serif"],
  36. },
  37. },
  38. },
  39. };
  40. </script>
  41. <!-- 自定义工具类 -->
  42. <style type="text/tailwindcss">
  43. @layer utilities {
  44. .content-auto {
  45. content-visibility: auto;
  46. }
  47. .text-shadow {
  48. text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  49. }
  50. .card-hover {
  51. @apply transition-all duration-300 hover:shadow-xl hover:-translate-y-1;
  52. }
  53. .gradient-bg {
  54. background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
  55. }
  56. }
  57. </style>
  58. <style>
  59. /* 全局动画定义 */
  60. @keyframes fadeIn {
  61. from {
  62. opacity: 0;
  63. transform: translateY(20px);
  64. }
  65. to {
  66. opacity: 1;
  67. transform: translateY(0);
  68. }
  69. }
  70. .animate-fade-in {
  71. opacity: 0;
  72. animation: fadeIn 0.6s ease-out forwards;
  73. }
  74. .delay-100 {
  75. animation-delay: 0.1s;
  76. }
  77. .delay-200 {
  78. animation-delay: 0.2s;
  79. }
  80. /* 平滑滚动 */
  81. html {
  82. scroll-behavior: smooth;
  83. }
  84. /* 视频容器比例控制 */
  85. .video-container {
  86. position: relative;
  87. padding-bottom: 56.25%; /* 16:9 比例 */
  88. height: 0;
  89. overflow: hidden;
  90. border-radius: 1.5rem;
  91. box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
  92. }
  93. .video-container iframe,
  94. .video-container video {
  95. position: absolute;
  96. top: 0;
  97. left: 0;
  98. width: 100%;
  99. height: 100%;
  100. border: 0;
  101. }
  102. /* 图片展示样式 */
  103. .image-grid {
  104. display: grid;
  105. grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  106. gap: 1.5rem;
  107. }
  108. .image-item {
  109. border-radius: 1rem;
  110. overflow: hidden;
  111. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  112. transition: all 0.3s ease;
  113. cursor: pointer;
  114. position: relative;
  115. }
  116. .image-item img {
  117. width: 100%;
  118. height: 200px;
  119. object-fit: cover;
  120. transition: transform 0.5s ease;
  121. }
  122. .image-item:hover {
  123. transform: translateY(-5px);
  124. box-shadow: 0 12px 20px rgba(0, 0, 0, 0.12);
  125. }
  126. .image-item:hover img {
  127. transform: scale(1.05);
  128. }
  129. .image-caption {
  130. padding: 1rem;
  131. background-color: white;
  132. }
  133. /* 图片查看器 */
  134. .image-viewer {
  135. position: fixed;
  136. top: 0;
  137. left: 0;
  138. width: 100%;
  139. height: 100%;
  140. background-color: rgba(0, 0, 0, 0.9);
  141. display: none;
  142. justify-content: center;
  143. align-items: center;
  144. z-index: 100;
  145. padding: 2rem;
  146. }
  147. .image-viewer.active {
  148. display: flex;
  149. }
  150. .viewer-content {
  151. max-width: 90%;
  152. max-height: 90%;
  153. position: relative;
  154. }
  155. .viewer-image {
  156. max-width: 100%;
  157. max-height: 80vh;
  158. border-radius: 0.5rem;
  159. }
  160. .viewer-caption {
  161. color: white;
  162. text-align: center;
  163. margin-top: 1rem;
  164. font-size: 1.2rem;
  165. }
  166. .close-viewer {
  167. position: absolute;
  168. top: -40px;
  169. right: 0;
  170. color: white;
  171. font-size: 2rem;
  172. cursor: pointer;
  173. transition: color 0.3s ease;
  174. }
  175. .viewer-nav {
  176. position: absolute;
  177. top: 50%;
  178. width: 100%;
  179. display: flex;
  180. justify-content: space-between;
  181. transform: translateY(-50%);
  182. padding: 0 1rem;
  183. }
  184. .viewer-nav button {
  185. background-color: rgba(255, 255, 255, 0.2);
  186. border: none;
  187. color: white;
  188. width: 40px;
  189. height: 40px;
  190. border-radius: 50%;
  191. display: flex;
  192. align-items: center;
  193. justify-content: center;
  194. cursor: pointer;
  195. transition: background-color 0.3s ease;
  196. }
  197. </style>
  198. <style>
  199. *,
  200. ::before,
  201. ::after {
  202. --tw-border-spacing-x: 0;
  203. --tw-border-spacing-y: 0;
  204. --tw-translate-x: 0;
  205. --tw-translate-y: 0;
  206. --tw-rotate: 0;
  207. --tw-skew-x: 0;
  208. --tw-skew-y: 0;
  209. --tw-scale-x: 1;
  210. --tw-scale-y: 1;
  211. --tw-pan-x: ;
  212. --tw-pan-y: ;
  213. --tw-pinch-zoom: ;
  214. --tw-scroll-snap-strictness: proximity;
  215. --tw-gradient-from-position: ;
  216. --tw-gradient-via-position: ;
  217. --tw-gradient-to-position: ;
  218. --tw-ordinal: ;
  219. --tw-slashed-zero: ;
  220. --tw-numeric-figure: ;
  221. --tw-numeric-spacing: ;
  222. --tw-numeric-fraction: ;
  223. --tw-ring-inset: ;
  224. --tw-ring-offset-width: 0px;
  225. --tw-ring-offset-color: #fff;
  226. --tw-ring-color: rgb(59 130 246 / 0.5);
  227. --tw-ring-offset-shadow: 0 0 #0000;
  228. --tw-ring-shadow: 0 0 #0000;
  229. --tw-shadow: 0 0 #0000;
  230. --tw-shadow-colored: 0 0 #0000;
  231. --tw-blur: ;
  232. --tw-brightness: ;
  233. --tw-contrast: ;
  234. --tw-grayscale: ;
  235. --tw-hue-rotate: ;
  236. --tw-invert: ;
  237. --tw-saturate: ;
  238. --tw-sepia: ;
  239. --tw-drop-shadow: ;
  240. --tw-backdrop-blur: ;
  241. --tw-backdrop-brightness: ;
  242. --tw-backdrop-contrast: ;
  243. --tw-backdrop-grayscale: ;
  244. --tw-backdrop-hue-rotate: ;
  245. --tw-backdrop-invert: ;
  246. --tw-backdrop-opacity: ;
  247. --tw-backdrop-saturate: ;
  248. --tw-backdrop-sepia: ;
  249. --tw-contain-size: ;
  250. --tw-contain-layout: ;
  251. --tw-contain-paint: ;
  252. --tw-contain-style: ;
  253. }
  254. ::backdrop {
  255. --tw-border-spacing-x: 0;
  256. --tw-border-spacing-y: 0;
  257. --tw-translate-x: 0;
  258. --tw-translate-y: 0;
  259. --tw-rotate: 0;
  260. --tw-skew-x: 0;
  261. --tw-skew-y: 0;
  262. --tw-scale-x: 1;
  263. --tw-scale-y: 1;
  264. --tw-pan-x: ;
  265. --tw-pan-y: ;
  266. --tw-pinch-zoom: ;
  267. --tw-scroll-snap-strictness: proximity;
  268. --tw-gradient-from-position: ;
  269. --tw-gradient-via-position: ;
  270. --tw-gradient-to-position: ;
  271. --tw-ordinal: ;
  272. --tw-slashed-zero: ;
  273. --tw-numeric-figure: ;
  274. --tw-numeric-spacing: ;
  275. --tw-numeric-fraction: ;
  276. --tw-ring-inset: ;
  277. --tw-ring-offset-width: 0px;
  278. --tw-ring-offset-color: #fff;
  279. --tw-ring-color: rgb(59 130 246 / 0.5);
  280. --tw-ring-offset-shadow: 0 0 #0000;
  281. --tw-ring-shadow: 0 0 #0000;
  282. --tw-shadow: 0 0 #0000;
  283. --tw-shadow-colored: 0 0 #0000;
  284. --tw-blur: ;
  285. --tw-brightness: ;
  286. --tw-contrast: ;
  287. --tw-grayscale: ;
  288. --tw-hue-rotate: ;
  289. --tw-invert: ;
  290. --tw-saturate: ;
  291. --tw-sepia: ;
  292. --tw-drop-shadow: ;
  293. --tw-backdrop-blur: ;
  294. --tw-backdrop-brightness: ;
  295. --tw-backdrop-contrast: ;
  296. --tw-backdrop-grayscale: ;
  297. --tw-backdrop-hue-rotate: ;
  298. --tw-backdrop-invert: ;
  299. --tw-backdrop-opacity: ;
  300. --tw-backdrop-saturate: ;
  301. --tw-backdrop-sepia: ;
  302. --tw-contain-size: ;
  303. --tw-contain-layout: ;
  304. --tw-contain-paint: ;
  305. --tw-contain-style: ;
  306. } /* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */
  307. *,
  308. ::after,
  309. ::before {
  310. box-sizing: border-box;
  311. border-width: 0;
  312. border-style: solid;
  313. border-color: #e5e7eb;
  314. }
  315. ::after,
  316. ::before {
  317. --tw-content: "";
  318. }
  319. :host,
  320. html {
  321. line-height: 1.5;
  322. -webkit-text-size-adjust: 100%;
  323. -moz-tab-size: 4;
  324. tab-size: 4;
  325. font-family: Inter, system-ui, sans-serif;
  326. font-feature-settings: normal;
  327. font-variation-settings: normal;
  328. -webkit-tap-highlight-color: transparent;
  329. }
  330. body {
  331. margin: 0;
  332. line-height: inherit;
  333. }
  334. hr {
  335. height: 0;
  336. color: inherit;
  337. border-top-width: 1px;
  338. }
  339. abbr:where([title]) {
  340. -webkit-text-decoration: underline dotted;
  341. text-decoration: underline dotted;
  342. }
  343. h1,
  344. h2,
  345. h3,
  346. h4,
  347. h5,
  348. h6 {
  349. font-size: inherit;
  350. font-weight: inherit;
  351. }
  352. a {
  353. color: inherit;
  354. text-decoration: inherit;
  355. }
  356. b,
  357. strong {
  358. font-weight: bolder;
  359. }
  360. code,
  361. kbd,
  362. pre,
  363. samp {
  364. font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
  365. "Liberation Mono", "Courier New", monospace;
  366. font-feature-settings: normal;
  367. font-variation-settings: normal;
  368. font-size: 1em;
  369. }
  370. small {
  371. font-size: 80%;
  372. }
  373. sub,
  374. sup {
  375. font-size: 75%;
  376. line-height: 0;
  377. position: relative;
  378. vertical-align: baseline;
  379. }
  380. sub {
  381. bottom: -0.25em;
  382. }
  383. sup {
  384. top: -0.5em;
  385. }
  386. table {
  387. text-indent: 0;
  388. border-color: inherit;
  389. border-collapse: collapse;
  390. }
  391. button,
  392. input,
  393. optgroup,
  394. select,
  395. textarea {
  396. font-family: inherit;
  397. font-feature-settings: inherit;
  398. font-variation-settings: inherit;
  399. font-size: 100%;
  400. font-weight: inherit;
  401. line-height: inherit;
  402. letter-spacing: inherit;
  403. color: inherit;
  404. margin: 0;
  405. padding: 0;
  406. }
  407. button,
  408. select {
  409. text-transform: none;
  410. }
  411. button,
  412. input:where([type="button"]),
  413. input:where([type="reset"]),
  414. input:where([type="submit"]) {
  415. -webkit-appearance: button;
  416. background-color: transparent;
  417. background-image: none;
  418. }
  419. :-moz-focusring {
  420. outline: auto;
  421. }
  422. :-moz-ui-invalid {
  423. box-shadow: none;
  424. }
  425. progress {
  426. vertical-align: baseline;
  427. }
  428. ::-webkit-inner-spin-button,
  429. ::-webkit-outer-spin-button {
  430. height: auto;
  431. }
  432. [type="search"] {
  433. -webkit-appearance: textfield;
  434. outline-offset: -2px;
  435. }
  436. ::-webkit-search-decoration {
  437. -webkit-appearance: none;
  438. }
  439. ::-webkit-file-upload-button {
  440. -webkit-appearance: button;
  441. font: inherit;
  442. }
  443. summary {
  444. display: list-item;
  445. }
  446. blockquote,
  447. dd,
  448. dl,
  449. figure,
  450. h1,
  451. h2,
  452. h3,
  453. h4,
  454. h5,
  455. h6,
  456. hr,
  457. p,
  458. pre {
  459. margin: 0;
  460. }
  461. fieldset {
  462. margin: 0;
  463. padding: 0;
  464. }
  465. legend {
  466. padding: 0;
  467. }
  468. menu,
  469. ol,
  470. ul {
  471. list-style: none;
  472. margin: 0;
  473. padding: 0;
  474. }
  475. dialog {
  476. padding: 0;
  477. }
  478. textarea {
  479. resize: vertical;
  480. }
  481. input::placeholder,
  482. textarea::placeholder {
  483. opacity: 1;
  484. color: #9ca3af;
  485. }
  486. [role="button"],
  487. button {
  488. cursor: pointer;
  489. }
  490. :disabled {
  491. cursor: default;
  492. }
  493. audio,
  494. canvas,
  495. embed,
  496. iframe,
  497. img,
  498. object,
  499. svg,
  500. video {
  501. display: block;
  502. vertical-align: middle;
  503. }
  504. img,
  505. video {
  506. max-width: 100%;
  507. height: auto;
  508. }
  509. [hidden]:where(:not([hidden="until-found"])) {
  510. display: none;
  511. }
  512. .container {
  513. width: 100%;
  514. }
  515. @media (min-width: 640px) {
  516. .container {
  517. max-width: 640px;
  518. }
  519. }
  520. @media (min-width: 768px) {
  521. .container {
  522. max-width: 768px;
  523. }
  524. }
  525. @media (min-width: 1024px) {
  526. .container {
  527. max-width: 1024px;
  528. }
  529. }
  530. @media (min-width: 1280px) {
  531. .container {
  532. max-width: 1280px;
  533. }
  534. }
  535. @media (min-width: 1536px) {
  536. .container {
  537. max-width: 1536px;
  538. }
  539. }
  540. .fixed {
  541. position: fixed;
  542. }
  543. .z-50 {
  544. z-index: 50;
  545. }
  546. .mx-auto {
  547. margin-left: auto;
  548. margin-right: auto;
  549. }
  550. .mb-10 {
  551. margin-bottom: 2.5rem;
  552. }
  553. .mb-12 {
  554. margin-bottom: 3rem;
  555. }
  556. .mb-16 {
  557. margin-bottom: 4rem;
  558. }
  559. .mb-4 {
  560. margin-bottom: 1rem;
  561. }
  562. .mb-6 {
  563. margin-bottom: 1.5rem;
  564. }
  565. .mb-8 {
  566. margin-bottom: 2rem;
  567. }
  568. .mt-1 {
  569. margin-top: 0.25rem;
  570. }
  571. .mt-6 {
  572. margin-top: 1.5rem;
  573. }
  574. .flex {
  575. display: flex;
  576. }
  577. .grid {
  578. display: grid;
  579. }
  580. .hidden {
  581. display: none;
  582. }
  583. .h-10 {
  584. height: 2.5rem;
  585. }
  586. .w-10 {
  587. width: 2.5rem;
  588. }
  589. .w-full {
  590. width: 100%;
  591. }
  592. .max-w-2xl {
  593. max-width: 42rem;
  594. }
  595. .max-w-5xl {
  596. max-width: 64rem;
  597. }
  598. .max-w-6xl {
  599. max-width: 72rem;
  600. }
  601. .transform {
  602. transform: translate(var(--tw-translate-x), var(--tw-translate-y))
  603. rotate(var(--tw-rotate)) skewX(var(--tw-skew-x))
  604. skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
  605. scaleY(var(--tw-scale-y));
  606. }
  607. .grid-cols-1 {
  608. grid-template-columns: repeat(1, minmax(0, 1fr));
  609. }
  610. .flex-col {
  611. flex-direction: column;
  612. }
  613. .flex-wrap {
  614. flex-wrap: wrap;
  615. }
  616. .items-center {
  617. align-items: center;
  618. }
  619. .justify-center {
  620. justify-content: center;
  621. }
  622. .justify-between {
  623. justify-content: space-between;
  624. }
  625. .gap-3 {
  626. gap: 0.75rem;
  627. }
  628. .gap-4 {
  629. gap: 1rem;
  630. }
  631. .gap-8 {
  632. gap: 2rem;
  633. }
  634. .space-x-1 > :not([hidden]) ~ :not([hidden]) {
  635. --tw-space-x-reverse: 0;
  636. margin-right: calc(0.25rem * var(--tw-space-x-reverse));
  637. margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse)));
  638. }
  639. .space-x-2 > :not([hidden]) ~ :not([hidden]) {
  640. --tw-space-x-reverse: 0;
  641. margin-right: calc(0.5rem * var(--tw-space-x-reverse));
  642. margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
  643. }
  644. .space-x-3 > :not([hidden]) ~ :not([hidden]) {
  645. --tw-space-x-reverse: 0;
  646. margin-right: calc(0.75rem * var(--tw-space-x-reverse));
  647. margin-left: calc(0.75rem * calc(1 - var(--tw-space-x-reverse)));
  648. }
  649. .space-x-4 > :not([hidden]) ~ :not([hidden]) {
  650. --tw-space-x-reverse: 0;
  651. margin-right: calc(1rem * var(--tw-space-x-reverse));
  652. margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
  653. }
  654. .space-x-6 > :not([hidden]) ~ :not([hidden]) {
  655. --tw-space-x-reverse: 0;
  656. margin-right: calc(1.5rem * var(--tw-space-x-reverse));
  657. margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse)));
  658. }
  659. .space-y-3 > :not([hidden]) ~ :not([hidden]) {
  660. --tw-space-y-reverse: 0;
  661. margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
  662. margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
  663. }
  664. .space-y-4 > :not([hidden]) ~ :not([hidden]) {
  665. --tw-space-y-reverse: 0;
  666. margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  667. margin-bottom: calc(1rem * var(--tw-space-y-reverse));
  668. }
  669. .rounded-2xl {
  670. border-radius: 1rem;
  671. }
  672. .rounded-full {
  673. border-radius: 9999px;
  674. }
  675. .rounded-lg {
  676. border-radius: 0.5rem;
  677. }
  678. .border-2 {
  679. border-width: 2px;
  680. }
  681. .border-t {
  682. border-top-width: 1px;
  683. }
  684. .border-gray-800 {
  685. --tw-border-opacity: 1;
  686. border-color: rgb(31 41 55 / var(--tw-border-opacity, 1));
  687. }
  688. .border-primary {
  689. --tw-border-opacity: 1;
  690. border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
  691. }
  692. .bg-dark {
  693. --tw-bg-opacity: 1;
  694. background-color: rgb(30 41 59 / var(--tw-bg-opacity, 1));
  695. }
  696. .bg-gray-100 {
  697. --tw-bg-opacity: 1;
  698. background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
  699. }
  700. .bg-gray-50 {
  701. --tw-bg-opacity: 1;
  702. background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
  703. }
  704. .bg-gray-800 {
  705. --tw-bg-opacity: 1;
  706. background-color: rgb(31 41 55 / var(--tw-bg-opacity, 1));
  707. }
  708. .bg-light {
  709. --tw-bg-opacity: 1;
  710. background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1));
  711. }
  712. .bg-primary {
  713. --tw-bg-opacity: 1;
  714. background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
  715. }
  716. .bg-white {
  717. --tw-bg-opacity: 1;
  718. background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
  719. }
  720. .bg-white\/90 {
  721. background-color: rgb(255 255 255 / 0.9);
  722. }
  723. .bg-gradient-to-b {
  724. background-image: linear-gradient(to bottom, var(--tw-gradient-stops));
  725. }
  726. .bg-gradient-to-r {
  727. background-image: linear-gradient(to right, var(--tw-gradient-stops));
  728. }
  729. .from-blue-50 {
  730. --tw-gradient-from: #eff6ff var(--tw-gradient-from-position);
  731. --tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);
  732. --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  733. }
  734. .from-primary {
  735. --tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);
  736. --tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);
  737. --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
  738. }
  739. .to-accent {
  740. --tw-gradient-to: #8b5cf6 var(--tw-gradient-to-position);
  741. }
  742. .to-white {
  743. --tw-gradient-to: #fff var(--tw-gradient-to-position);
  744. }
  745. .bg-clip-text {
  746. -webkit-background-clip: text;
  747. background-clip: text;
  748. }
  749. .p-6 {
  750. padding: 1.5rem;
  751. }
  752. .px-4 {
  753. padding-left: 1rem;
  754. padding-right: 1rem;
  755. }
  756. .px-5 {
  757. padding-left: 1.25rem;
  758. padding-right: 1.25rem;
  759. }
  760. .px-8 {
  761. padding-left: 2rem;
  762. padding-right: 2rem;
  763. }
  764. .py-12 {
  765. padding-top: 3rem;
  766. padding-bottom: 3rem;
  767. }
  768. .py-2 {
  769. padding-top: 0.5rem;
  770. padding-bottom: 0.5rem;
  771. }
  772. .py-20 {
  773. padding-top: 5rem;
  774. padding-bottom: 5rem;
  775. }
  776. .py-3 {
  777. padding-top: 0.75rem;
  778. padding-bottom: 0.75rem;
  779. }
  780. .pb-20 {
  781. padding-bottom: 5rem;
  782. }
  783. .pt-32 {
  784. padding-top: 8rem;
  785. }
  786. .pt-8 {
  787. padding-top: 2rem;
  788. }
  789. .text-center {
  790. text-align: center;
  791. }
  792. .font-sans {
  793. font-family: Inter, system-ui, sans-serif;
  794. }
  795. .text-\[clamp\(1\.5rem\2c 3vw\2c 2\.5rem\)\] {
  796. font-size: clamp(1.5rem, 3vw, 2.5rem);
  797. }
  798. .text-\[clamp\(2rem\2c 5vw\2c 3rem\)\] {
  799. font-size: clamp(2rem, 5vw, 3rem);
  800. }
  801. .text-lg {
  802. font-size: 1.125rem;
  803. line-height: 1.75rem;
  804. }
  805. .text-sm {
  806. font-size: 0.875rem;
  807. line-height: 1.25rem;
  808. }
  809. .text-xl {
  810. font-size: 1.25rem;
  811. line-height: 1.75rem;
  812. }
  813. .font-bold {
  814. font-weight: 700;
  815. }
  816. .font-medium {
  817. font-weight: 500;
  818. }
  819. .font-semibold {
  820. font-weight: 600;
  821. }
  822. .leading-tight {
  823. line-height: 1.25;
  824. }
  825. .text-dark {
  826. --tw-text-opacity: 1;
  827. color: rgb(30 41 59 / var(--tw-text-opacity, 1));
  828. }
  829. .text-gray-400 {
  830. --tw-text-opacity: 1;
  831. color: rgb(156 163 175 / var(--tw-text-opacity, 1));
  832. }
  833. .text-gray-500 {
  834. --tw-text-opacity: 1;
  835. color: rgb(107 114 128 / var(--tw-text-opacity, 1));
  836. }
  837. .text-gray-600 {
  838. --tw-text-opacity: 1;
  839. color: rgb(75 85 99 / var(--tw-text-opacity, 1));
  840. }
  841. .text-gray-700 {
  842. --tw-text-opacity: 1;
  843. color: rgb(55 65 81 / var(--tw-text-opacity, 1));
  844. }
  845. .text-primary {
  846. --tw-text-opacity: 1;
  847. color: rgb(59 130 246 / var(--tw-text-opacity, 1));
  848. }
  849. .text-transparent {
  850. color: transparent;
  851. }
  852. .text-white {
  853. --tw-text-opacity: 1;
  854. color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  855. }
  856. .shadow-sm {
  857. --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
  858. --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
  859. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  860. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  861. }
  862. .shadow-xl {
  863. --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
  864. 0 8px 10px -6px rgb(0 0 0 / 0.1);
  865. --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),
  866. 0 8px 10px -6px var(--tw-shadow-color);
  867. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  868. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  869. }
  870. .backdrop-blur-sm {
  871. --tw-backdrop-blur: blur(4px);
  872. -webkit-backdrop-filter: var(--tw-backdrop-blur)
  873. var(--tw-backdrop-brightness) var(--tw-backdrop-contrast)
  874. var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate)
  875. var(--tw-backdrop-invert) var(--tw-backdrop-opacity)
  876. var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
  877. backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness)
  878. var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale)
  879. var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert)
  880. var(--tw-backdrop-opacity) var(--tw-backdrop-saturate)
  881. var(--tw-backdrop-sepia);
  882. }
  883. .transition-all {
  884. transition-property: all;
  885. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  886. transition-duration: 150ms;
  887. }
  888. .transition-colors {
  889. transition-property: color, background-color, border-color, fill, stroke,
  890. -webkit-text-decoration-color;
  891. transition-property: color, background-color, border-color,
  892. text-decoration-color, fill, stroke;
  893. transition-property: color, background-color, border-color,
  894. text-decoration-color, fill, stroke, -webkit-text-decoration-color;
  895. transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  896. transition-duration: 150ms;
  897. }
  898. .delay-100 {
  899. transition-delay: 100ms;
  900. }
  901. .delay-200 {
  902. transition-delay: 200ms;
  903. }
  904. .duration-300 {
  905. transition-duration: 300ms;
  906. }
  907. .text-shadow {
  908. text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  909. }
  910. .gradient-bg {
  911. background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
  912. }
  913. .hover\:-translate-y-0\.5:hover {
  914. --tw-translate-y: -0.125rem;
  915. transform: translate(var(--tw-translate-x), var(--tw-translate-y))
  916. rotate(var(--tw-rotate)) skewX(var(--tw-skew-x))
  917. skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x))
  918. scaleY(var(--tw-scale-y));
  919. }
  920. .hover\:bg-gray-100:hover {
  921. --tw-bg-opacity: 1;
  922. background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
  923. }
  924. .hover\:bg-gray-200:hover {
  925. --tw-bg-opacity: 1;
  926. background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
  927. }
  928. .hover\:bg-primary:hover {
  929. --tw-bg-opacity: 1;
  930. background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
  931. }
  932. .hover\:bg-primary\/5:hover {
  933. background-color: rgb(59 130 246 / 0.05);
  934. }
  935. .hover\:text-primary:hover {
  936. --tw-text-opacity: 1;
  937. color: rgb(59 130 246 / var(--tw-text-opacity, 1));
  938. }
  939. .hover\:text-white:hover {
  940. --tw-text-opacity: 1;
  941. color: rgb(255 255 255 / var(--tw-text-opacity, 1));
  942. }
  943. .hover\:shadow-lg:hover {
  944. --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1),
  945. 0 4px 6px -4px rgb(0 0 0 / 0.1);
  946. --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color),
  947. 0 4px 6px -4px var(--tw-shadow-color);
  948. box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
  949. var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
  950. }
  951. .hover\:shadow-primary\/20:hover {
  952. --tw-shadow-color: rgb(59 130 246 / 0.2);
  953. --tw-shadow: var(--tw-shadow-colored);
  954. }
  955. @media (min-width: 640px) {
  956. .sm\:flex-row {
  957. flex-direction: row;
  958. }
  959. }
  960. @media (min-width: 768px) {
  961. .md\:mb-0 {
  962. margin-bottom: 0px;
  963. }
  964. .md\:flex {
  965. display: flex;
  966. }
  967. .md\:hidden {
  968. display: none;
  969. }
  970. .md\:grid-cols-4 {
  971. grid-template-columns: repeat(4, minmax(0, 1fr));
  972. }
  973. .md\:flex-row {
  974. flex-direction: row;
  975. }
  976. .md\:p-8 {
  977. padding: 2rem;
  978. }
  979. .md\:pb-32 {
  980. padding-bottom: 8rem;
  981. }
  982. .md\:pt-40 {
  983. padding-top: 10rem;
  984. }
  985. .md\:text-2xl {
  986. font-size: 1.5rem;
  987. line-height: 2rem;
  988. }
  989. }
  990. </style>
  991. <style data-id="immersive-translate-input-injected-css">
  992. .immersive-translate-input {
  993. position: absolute;
  994. top: 0;
  995. right: 0;
  996. left: 0;
  997. bottom: 0;
  998. z-index: 2147483647;
  999. display: flex;
  1000. justify-content: center;
  1001. align-items: center;
  1002. }
  1003. .immersive-translate-attach-loading::after {
  1004. content: " ";
  1005. --loading-color: #f78fb6;
  1006. width: 6px;
  1007. height: 6px;
  1008. border-radius: 50%;
  1009. display: block;
  1010. margin: 12px auto;
  1011. position: relative;
  1012. color: white;
  1013. left: -100px;
  1014. box-sizing: border-box;
  1015. animation: immersiveTranslateShadowRolling 1.5s linear infinite;
  1016. position: absolute;
  1017. top: 50%;
  1018. left: 50%;
  1019. transform: translate(-2000%, -50%);
  1020. z-index: 100;
  1021. }
  1022. .immersive-translate-loading-spinner {
  1023. vertical-align: middle !important;
  1024. width: 10px !important;
  1025. height: 10px !important;
  1026. display: inline-block !important;
  1027. margin: 0 4px !important;
  1028. border: 2px rgba(221, 244, 255, 0.6) solid !important;
  1029. border-top: 2px rgba(0, 0, 0, 0.375) solid !important;
  1030. border-left: 2px rgba(0, 0, 0, 0.375) solid !important;
  1031. border-radius: 50% !important;
  1032. padding: 0 !important;
  1033. -webkit-animation: immersive-translate-loading-animation 0.6s infinite
  1034. linear !important;
  1035. animation: immersive-translate-loading-animation 0.6s infinite linear !important;
  1036. }
  1037. @-webkit-keyframes immersive-translate-loading-animation {
  1038. from {
  1039. -webkit-transform: rotate(0deg);
  1040. }
  1041. to {
  1042. -webkit-transform: rotate(359deg);
  1043. }
  1044. }
  1045. @keyframes immersive-translate-loading-animation {
  1046. from {
  1047. transform: rotate(0deg);
  1048. }
  1049. to {
  1050. transform: rotate(359deg);
  1051. }
  1052. }
  1053. .immersive-translate-input-loading {
  1054. --loading-color: #f78fb6;
  1055. width: 6px;
  1056. height: 6px;
  1057. border-radius: 50%;
  1058. display: block;
  1059. margin: 12px auto;
  1060. position: relative;
  1061. color: white;
  1062. left: -100px;
  1063. box-sizing: border-box;
  1064. animation: immersiveTranslateShadowRolling 1.5s linear infinite;
  1065. }
  1066. @keyframes immersiveTranslateShadowRolling {
  1067. 0% {
  1068. box-shadow: 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0),
  1069. 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
  1070. }
  1071. 12% {
  1072. box-shadow: 100px 0 var(--loading-color), 0px 0 rgba(255, 255, 255, 0),
  1073. 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
  1074. }
  1075. 25% {
  1076. box-shadow: 110px 0 var(--loading-color), 100px 0 var(--loading-color),
  1077. 0px 0 rgba(255, 255, 255, 0), 0px 0 rgba(255, 255, 255, 0);
  1078. }
  1079. 36% {
  1080. box-shadow: 120px 0 var(--loading-color), 110px 0 var(--loading-color),
  1081. 100px 0 var(--loading-color), 0px 0 rgba(255, 255, 255, 0);
  1082. }
  1083. 50% {
  1084. box-shadow: 130px 0 var(--loading-color), 120px 0 var(--loading-color),
  1085. 110px 0 var(--loading-color), 100px 0 var(--loading-color);
  1086. }
  1087. 62% {
  1088. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1089. 130px 0 var(--loading-color), 120px 0 var(--loading-color),
  1090. 110px 0 var(--loading-color);
  1091. }
  1092. 75% {
  1093. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1094. 200px 0 rgba(255, 255, 255, 0), 130px 0 var(--loading-color),
  1095. 120px 0 var(--loading-color);
  1096. }
  1097. 87% {
  1098. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1099. 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
  1100. 130px 0 var(--loading-color);
  1101. }
  1102. 100% {
  1103. box-shadow: 200px 0 rgba(255, 255, 255, 0),
  1104. 200px 0 rgba(255, 255, 255, 0), 200px 0 rgba(255, 255, 255, 0),
  1105. 200px 0 rgba(255, 255, 255, 0);
  1106. }
  1107. }
  1108. .immersive-translate-toast {
  1109. display: flex;
  1110. position: fixed;
  1111. z-index: 2147483647;
  1112. left: 0;
  1113. right: 0;
  1114. top: 1%;
  1115. width: fit-content;
  1116. padding: 12px 20px;
  1117. margin: auto;
  1118. overflow: auto;
  1119. background: #fef6f9;
  1120. box-shadow: 0px 4px 10px 0px rgba(0, 10, 30, 0.06);
  1121. font-size: 15px;
  1122. border-radius: 8px;
  1123. color: #333;
  1124. }
  1125. .immersive-translate-toast-content {
  1126. display: flex;
  1127. flex-direction: row;
  1128. align-items: center;
  1129. }
  1130. .immersive-translate-toast-hidden {
  1131. margin: 0 20px 0 72px;
  1132. text-decoration: underline;
  1133. cursor: pointer;
  1134. }
  1135. .immersive-translate-toast-close {
  1136. color: #666666;
  1137. font-size: 20px;
  1138. font-weight: bold;
  1139. padding: 0 10px;
  1140. cursor: pointer;
  1141. }
  1142. @media screen and (max-width: 768px) {
  1143. .immersive-translate-toast {
  1144. top: 0;
  1145. padding: 12px 0px 0 10px;
  1146. }
  1147. .immersive-translate-toast-content {
  1148. flex-direction: column;
  1149. text-align: center;
  1150. }
  1151. .immersive-translate-toast-hidden {
  1152. margin: 10px auto;
  1153. }
  1154. }
  1155. .immersive-translate-dialog {
  1156. position: fixed;
  1157. z-index: 2147483647;
  1158. left: 0;
  1159. top: 0;
  1160. display: flex;
  1161. width: 300px;
  1162. flex-direction: column;
  1163. align-items: center;
  1164. font-size: 15px;
  1165. left: 0;
  1166. right: 0;
  1167. top: 0;
  1168. bottom: 0;
  1169. margin: auto;
  1170. height: fit-content;
  1171. border-radius: 20px;
  1172. background-color: #fff;
  1173. }
  1174. .immersive-translate-modal {
  1175. display: none;
  1176. position: fixed;
  1177. z-index: 2147483647;
  1178. left: 0;
  1179. top: 0;
  1180. width: 100%;
  1181. height: 100%;
  1182. overflow: auto;
  1183. background-color: rgb(0, 0, 0);
  1184. background-color: rgba(0, 0, 0, 0.4);
  1185. font-size: 15px;
  1186. }
  1187. .immersive-translate-modal-content {
  1188. background-color: #fefefe;
  1189. margin: 10% auto;
  1190. padding: 40px 24px 24px;
  1191. border-radius: 12px;
  1192. width: 350px;
  1193. font-family: system-ui, -apple-system, "Segoe UI", "Roboto", "Ubuntu",
  1194. "Cantarell", "Noto Sans", sans-serif, "Apple Color Emoji",
  1195. "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  1196. position: relative;
  1197. }
  1198. @media screen and (max-width: 768px) {
  1199. .immersive-translate-modal-content {
  1200. margin: 25% auto !important;
  1201. }
  1202. }
  1203. @media screen and (max-width: 480px) {
  1204. .immersive-translate-modal-content {
  1205. width: 80vw !important;
  1206. margin: 20vh auto !important;
  1207. padding: 20px 12px 12px !important;
  1208. }
  1209. .immersive-translate-modal-title {
  1210. font-size: 14px !important;
  1211. }
  1212. .immersive-translate-modal-body {
  1213. font-size: 13px !important;
  1214. max-height: 60vh !important;
  1215. }
  1216. .immersive-translate-btn {
  1217. font-size: 13px !important;
  1218. padding: 8px 16px !important;
  1219. margin: 0 4px !important;
  1220. }
  1221. .immersive-translate-modal-footer {
  1222. gap: 6px !important;
  1223. margin-top: 16px !important;
  1224. }
  1225. }
  1226. .immersive-translate-modal .immersive-translate-modal-content-in-input {
  1227. max-width: 500px;
  1228. }
  1229. .immersive-translate-modal-content-in-input
  1230. .immersive-translate-modal-body {
  1231. text-align: left;
  1232. max-height: unset;
  1233. }
  1234. .immersive-translate-modal-title {
  1235. text-align: center;
  1236. font-size: 16px;
  1237. font-weight: 700;
  1238. color: #333333;
  1239. }
  1240. .immersive-translate-modal-body {
  1241. text-align: center;
  1242. font-size: 14px;
  1243. font-weight: 400;
  1244. color: #333333;
  1245. margin-top: 24px;
  1246. word-break: break-all;
  1247. }
  1248. @media screen and (max-width: 768px) {
  1249. .immersive-translate-modal-body {
  1250. max-height: 250px;
  1251. overflow-y: auto;
  1252. }
  1253. }
  1254. .immersive-translate-close {
  1255. color: #666666;
  1256. position: absolute;
  1257. right: 16px;
  1258. top: 16px;
  1259. font-size: 20px;
  1260. font-weight: bold;
  1261. }
  1262. .immersive-translate-close:hover,
  1263. .immersive-translate-close:focus {
  1264. text-decoration: none;
  1265. cursor: pointer;
  1266. }
  1267. .immersive-translate-modal-footer {
  1268. display: flex;
  1269. justify-content: center;
  1270. flex-wrap: wrap;
  1271. margin-top: 24px;
  1272. }
  1273. .immersive-translate-btn {
  1274. width: fit-content;
  1275. color: #fff;
  1276. background-color: #ea4c89;
  1277. border: none;
  1278. font-size: 14px;
  1279. margin: 0 8px;
  1280. padding: 9px 30px;
  1281. border-radius: 5px;
  1282. display: flex;
  1283. align-items: center;
  1284. justify-content: center;
  1285. cursor: pointer;
  1286. transition: background-color 0.3s ease;
  1287. }
  1288. .immersive-translate-btn-container {
  1289. display: flex;
  1290. flex-direction: column;
  1291. align-items: center;
  1292. justify-content: center;
  1293. gap: 8px;
  1294. }
  1295. .immersive-translate-btn:hover {
  1296. background-color: #f082ac;
  1297. }
  1298. .immersive-translate-btn:disabled {
  1299. opacity: 0.6;
  1300. cursor: not-allowed;
  1301. }
  1302. .immersive-translate-btn:disabled:hover {
  1303. background-color: #ea4c89;
  1304. }
  1305. .immersive-translate-link-btn {
  1306. background-color: transparent;
  1307. color: #ea4c89;
  1308. border: none;
  1309. cursor: pointer;
  1310. height: 30px;
  1311. line-height: 30px;
  1312. }
  1313. .immersive-translate-cancel-btn {
  1314. /* gray color */
  1315. background-color: rgb(89, 107, 120);
  1316. }
  1317. .immersive-translate-cancel-btn:hover {
  1318. background-color: hsl(205, 20%, 32%);
  1319. }
  1320. .immersive-translate-action-btn {
  1321. background-color: transparent;
  1322. color: #ea4c89;
  1323. border: 1px solid #ea4c89;
  1324. }
  1325. .immersive-translate-btn svg {
  1326. margin-right: 5px;
  1327. }
  1328. .immersive-translate-link {
  1329. cursor: pointer;
  1330. user-select: none;
  1331. -webkit-user-drag: none;
  1332. text-decoration: none;
  1333. color: #ea4c89;
  1334. -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
  1335. }
  1336. .immersive-translate-primary-link {
  1337. cursor: pointer;
  1338. user-select: none;
  1339. -webkit-user-drag: none;
  1340. text-decoration: none;
  1341. color: #ea4c89;
  1342. -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
  1343. }
  1344. .immersive-translate-modal input[type="radio"] {
  1345. margin: 0 6px;
  1346. cursor: pointer;
  1347. }
  1348. .immersive-translate-modal label {
  1349. cursor: pointer;
  1350. }
  1351. .immersive-translate-close-action {
  1352. position: absolute;
  1353. top: 2px;
  1354. right: 0px;
  1355. cursor: pointer;
  1356. }
  1357. .imt-image-status {
  1358. background-color: rgba(0, 0, 0, 0.5) !important;
  1359. display: flex !important;
  1360. flex-direction: column !important;
  1361. align-items: center !important;
  1362. justify-content: center !important;
  1363. border-radius: 16px !important;
  1364. }
  1365. .imt-image-status img,
  1366. .imt-image-status svg,
  1367. .imt-img-loading {
  1368. width: 28px !important;
  1369. height: 28px !important;
  1370. margin: 0 0 8px 0 !important;
  1371. min-height: 28px !important;
  1372. min-width: 28px !important;
  1373. position: relative !important;
  1374. }
  1375. .imt-img-loading {
  1376. 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=");
  1377. background-size: 28px 28px;
  1378. animation: image-loading-rotate 1s linear infinite !important;
  1379. }
  1380. .imt-image-status span {
  1381. color: var(--bg-2, #fff) !important;
  1382. font-size: 14px !important;
  1383. line-height: 14px !important;
  1384. font-weight: 500 !important;
  1385. font-family: "PingFang SC", Arial, sans-serif !important;
  1386. }
  1387. .imt-primary-button {
  1388. display: flex;
  1389. padding: 12px 80px;
  1390. justify-content: center;
  1391. align-items: center;
  1392. gap: 8px;
  1393. border-radius: 8px;
  1394. background: #ea4c89;
  1395. color: #fff;
  1396. font-size: 16px;
  1397. font-style: normal;
  1398. font-weight: 700;
  1399. line-height: 24px;
  1400. border: none;
  1401. cursor: pointer;
  1402. }
  1403. .imt-retry-text {
  1404. color: #999;
  1405. text-align: center;
  1406. font-size: 14px;
  1407. font-style: normal;
  1408. font-weight: 400;
  1409. line-height: 21px;
  1410. cursor: pointer;
  1411. }
  1412. .imt-action-container {
  1413. display: flex;
  1414. flex-direction: column;
  1415. gap: 12px;
  1416. }
  1417. .imt-modal-content-text {
  1418. text-align: left;
  1419. color: #333;
  1420. font-size: 16px;
  1421. font-weight: 400;
  1422. line-height: 24px;
  1423. }
  1424. @keyframes image-loading-rotate {
  1425. from {
  1426. transform: rotate(360deg);
  1427. }
  1428. to {
  1429. transform: rotate(0deg);
  1430. }
  1431. }
  1432. .imt-linear-gradient-text {
  1433. background: linear-gradient(
  1434. 90deg,
  1435. #00a6ff 0%,
  1436. #c369ff 52.4%,
  1437. #ff4590 100%
  1438. );
  1439. background-clip: text;
  1440. -webkit-background-clip: text;
  1441. -webkit-text-fill-color: transparent;
  1442. }
  1443. .imt-flex-center {
  1444. display: flex;
  1445. align-items: center;
  1446. justify-content: center;
  1447. }
  1448. .imt-linear-black-btn {
  1449. border-radius: 50px;
  1450. background: linear-gradient(66deg, #222 19%, #696969 94.25%);
  1451. height: 48px;
  1452. width: 100%;
  1453. color: #fff;
  1454. font-size: 16px;
  1455. font-weight: 700;
  1456. display: flex;
  1457. align-items: center;
  1458. cursor: pointer;
  1459. justify-content: center;
  1460. }
  1461. </style>
  1462. </head>
  1463. <body class="font-sans bg-light text-dark">
  1464. <!-- 导航栏 -->
  1465. <header
  1466. class="fixed w-full bg-white/90 backdrop-blur-sm shadow-sm z-50 transition-all duration-300"
  1467. >
  1468. <div
  1469. class="container mx-auto px-4 py-3 flex justify-between items-center"
  1470. >
  1471. <a href="#" class="flex items-center space-x-2">
  1472. <div
  1473. class="w-10 h-10 rounded-lg gradient-bg flex items-center justify-center"
  1474. >
  1475. <img
  1476. alt="夺宝奇兵"
  1477. src="https://hc.homilychart.com/hc/250121/img/20230711171637.png"
  1478. style="width: 40px; height: 40px"
  1479. />
  1480. </div>
  1481. <span
  1482. class="text-xl font-bold bg-clip-text text-transparent bg-gradient-to-r from-primary to-accent"
  1483. >夺宝奇兵-操作指南</span
  1484. >
  1485. </a>
  1486. <!-- 桌面导航 -->
  1487. <nav class="hidden md:flex items-center space-x-6">
  1488. <a
  1489. href="#video-guide"
  1490. class="font-medium hover:text-primary transition-colors"
  1491. >视频指南</a
  1492. >
  1493. <a
  1494. href="#image-guide"
  1495. class="font-medium hover:text-primary transition-colors"
  1496. >图片说明</a
  1497. >
  1498. <a
  1499. href="hcdbqb-download.html"
  1500. class="font-medium hover:text-primary transition-colors"
  1501. >软件下载</a
  1502. >
  1503. <a
  1504. href="https://wa.me/+6588792879?text=夺宝奇兵指南我需要帮助"
  1505. target="_blank"
  1506. class="px-5 py-2 rounded-full gradient-bg text-white font-medium hover:shadow-lg transition-all"
  1507. >联系支持</a
  1508. >
  1509. </nav>
  1510. <!-- 移动端菜单按钮 -->
  1511. <button id="menuBtn" class="md:hidden text-xl">
  1512. <i class="fa fa-bars"></i>
  1513. </button>
  1514. </div>
  1515. <!-- 移动端导航菜单 -->
  1516. <div
  1517. id="mobileMenu"
  1518. class="md:hidden hidden bg-white border-t animate-fade-in"
  1519. style="opacity: 1; transform: translateY(0px)"
  1520. >
  1521. <div class="container mx-auto px-4 py-3 flex flex-col space-y-4">
  1522. <a
  1523. href="#video-guide"
  1524. class="font-medium py-2 hover:text-primary transition-colors"
  1525. >视频指南</a
  1526. >
  1527. <a
  1528. href="#image-guide"
  1529. class="font-medium py-2 hover:text-primary transition-colors"
  1530. >图片说明</a
  1531. >
  1532. <a
  1533. href="hcdbqb-download.html"
  1534. class="font-medium py-2 hover:text-primary transition-colors"
  1535. >图片说明</a
  1536. >
  1537. <a
  1538. href="https://wa.me/+6588792879?text=夺宝奇兵指南我需要帮助"
  1539. target="_blank"
  1540. class="py-2 rounded-full gradient-bg text-white font-medium text-center hover:shadow-lg transition-all"
  1541. >联系支持</a
  1542. >
  1543. </div>
  1544. </div>
  1545. </header>
  1546. <!-- 英雄区域 -->
  1547. <section
  1548. class="pt-32 pb-20 md:pt-40 md:pb-32 px-4 bg-gradient-to-b from-blue-50 to-white"
  1549. >
  1550. <div class="container mx-auto max-w-6xl text-center">
  1551. <div
  1552. class="animate-fade-in"
  1553. style="opacity: 1; transform: translateY(0px)"
  1554. >
  1555. <h1
  1556. class="text-[clamp(2rem,5vw,3rem)] font-bold leading-tight text-shadow mb-6"
  1557. >
  1558. 操作指南中心
  1559. </h1>
  1560. <p class="text-lg text-gray-600 mb-8 max-w-2xl mx-auto">
  1561. 通过视频以及图文说明,教你如何使用夺宝奇兵软件以及如何观看直播和观看重播!
  1562. </p>
  1563. <div class="flex flex-col sm:flex-row justify-center gap-4">
  1564. <a
  1565. href="#video-guide"
  1566. class="px-8 py-3 rounded-full gradient-bg text-white font-medium text-center hover:shadow-lg hover:shadow-primary/20 transition-all transform hover:-translate-y-0.5"
  1567. >
  1568. 观看视频教程
  1569. </a>
  1570. <a
  1571. href="#image-guide"
  1572. class="px-8 py-3 rounded-full border-2 border-primary text-primary font-medium text-center hover:bg-primary/5 transition-all"
  1573. >
  1574. 查看图文说明
  1575. </a>
  1576. </div>
  1577. </div>
  1578. </div>
  1579. </section>
  1580. <!-- 视频指南区域 -->
  1581. <section id="video-guide" class="py-20 px-4 bg-white">
  1582. <div class="container mx-auto max-w-5xl">
  1583. <div
  1584. class="text-center mb-12 animate-fade-in"
  1585. style="opacity: 1; transform: translateY(0px)"
  1586. >
  1587. <h2 class="text-[clamp(1.5rem,3vw,2.5rem)] font-bold mb-4">
  1588. HomilyLink指南视频
  1589. </h2>
  1590. <p class="text-gray-600 max-w-2xl mx-auto">
  1591. 详细的视频教程,如何体验夺宝奇兵,如何听课,如何看重播!
  1592. </p>
  1593. </div>
  1594. <!-- 主视频播放窗口 -->
  1595. <div
  1596. class="bg-white rounded-2xl shadow-xl p-6 md:p-8 animate-fade-in delay-100"
  1597. style="opacity: 1; transform: translateY(0px)"
  1598. >
  1599. <h3 class="text-xl md:text-2xl font-semibold mb-4">
  1600. HomilyLink操作指南 &nbsp;|&nbsp;课程直播以及重播指南
  1601. </h3>
  1602. <div class="video-container">
  1603. <!-- 兼容性视频播放器 -->
  1604. <video
  1605. id="guideVideo"
  1606. controls=""
  1607. poster="https://hc.homilychart.com/hc/250121/img/106-1200x675.jpg"
  1608. controlslist="nodownload"
  1609. class="w-full"
  1610. >
  1611. <source
  1612. src="https://hc.homilychart.com/hc/250121/img/homilylink-guide.mp4"
  1613. type="video/mp4"
  1614. />
  1615. </video>
  1616. </div>
  1617. <div class="mt-6 flex flex-wrap items-center justify-between gap-4">
  1618. <div>
  1619. <p class="text-gray-600">时长: 02:14</p>
  1620. <p class="text-gray-500 text-sm mt-1">HomilyLink操作指南</p>
  1621. </div>
  1622. <div class="flex space-x-3">
  1623. <button
  1624. class="flex items-center space-x-1 px-4 py-2 rounded-lg bg-gray-100 hover:bg-gray-200 transition-colors"
  1625. >
  1626. <img
  1627. alt="夺宝奇兵"
  1628. src="https://hc.homilychart.com/hc/250121/img/20230711171637.png"
  1629. style="width: 30px; height: 30px"
  1630. />
  1631. <span
  1632. ><a
  1633. href="https://wa.me/+6588792879?text=进HomilyLink听课需要帮助"
  1634. target="_blank"
  1635. class="text-gray-400 transition-colors"
  1636. style="color: black"
  1637. >点击寻求帮助</a
  1638. ></span
  1639. >
  1640. </button>
  1641. </div>
  1642. </div>
  1643. </div>
  1644. </div>
  1645. </section>
  1646. <!-- 图片说明区域 -->
  1647. <section id="image-guide" class="py-20 px-4 bg-gray-50">
  1648. <div class="container mx-auto max-w-6xl" style="display: none">
  1649. <div
  1650. class="text-center mb-16 animate-fade-in"
  1651. style="opacity: 1; transform: translateY(0px)"
  1652. >
  1653. <h2 class="text-[clamp(1.5rem,3vw,2.5rem)] font-bold mb-4">
  1654. 操作步骤图解
  1655. </h2>
  1656. <p class="text-gray-600 max-w-2xl mx-auto">
  1657. 详细的图文说明,带您一步步完成各项操作设置
  1658. </p>
  1659. </div>
  1660. <!-- 图片过滤标签 -->
  1661. <div
  1662. class="flex flex-wrap justify-center gap-3 mb-10 animate-fade-in delay-100"
  1663. style="opacity: 1; transform: translateY(0px)"
  1664. >
  1665. <button
  1666. class="filter-btn active px-5 py-2 rounded-full bg-primary text-white font-medium"
  1667. data-filter="all"
  1668. >
  1669. 全部步骤
  1670. </button>
  1671. <button
  1672. class="filter-btn px-5 py-2 rounded-full bg-white text-gray-700 font-medium hover:bg-gray-100 transition-colors"
  1673. data-filter="setup"
  1674. >
  1675. 安装登录
  1676. </button>
  1677. <button
  1678. class="filter-btn px-5 py-2 rounded-full bg-white text-gray-700 font-medium hover:bg-gray-100 transition-colors"
  1679. data-filter="operation"
  1680. >
  1681. 观看直播
  1682. </button>
  1683. <button
  1684. class="filter-btn px-5 py-2 rounded-full bg-white text-gray-700 font-medium hover:bg-gray-100 transition-colors"
  1685. data-filter="advanced"
  1686. >
  1687. 观看重播
  1688. </button>
  1689. </div>
  1690. <!-- 图片网格 -->
  1691. <div
  1692. class="image-grid animate-fade-in delay-200"
  1693. style="opacity: 1; transform: translateY(0px)"
  1694. >
  1695. <!-- 安装设置 -->
  1696. <div
  1697. class="image-item"
  1698. data-category="setup"
  1699. data-caption="步骤1:开箱与配件检查"
  1700. >
  1701. <img
  1702. src="https://picsum.photos/seed/setup1/600/400"
  1703. alt="开箱与配件检查"
  1704. />
  1705. <div class="image-caption">
  1706. <h4 class="font-medium">步骤1:开箱与配件检查</h4>
  1707. <p class="text-gray-600 text-sm mt-1">
  1708. 检查包装内物品是否完整,包含主机、电源线、数据线和说明书
  1709. </p>
  1710. </div>
  1711. </div>
  1712. <div
  1713. class="image-item"
  1714. data-category="setup"
  1715. data-caption="步骤2:设备连接与安装"
  1716. >
  1717. <img
  1718. src="https://picsum.photos/seed/setup2/600/400"
  1719. alt="设备连接与安装"
  1720. />
  1721. <div class="image-caption">
  1722. <h4 class="font-medium">步骤2:设备连接与安装</h4>
  1723. <p class="text-gray-600 text-sm mt-1">
  1724. 按照图示连接电源和数据线,固定设备到合适位置
  1725. </p>
  1726. </div>
  1727. </div>
  1728. <!-- 基本操作 -->
  1729. <div
  1730. class="image-item"
  1731. data-category="operation"
  1732. data-caption="步骤3:开机与初始设置"
  1733. >
  1734. <img
  1735. src="https://picsum.photos/seed/operate1/600/400"
  1736. alt="开机与初始设置"
  1737. />
  1738. <div class="image-caption">
  1739. <h4 class="font-medium">步骤3:开机与初始设置</h4>
  1740. <p class="text-gray-600 text-sm mt-1">
  1741. 首次开机后按照向导完成语言、网络等基本设置
  1742. </p>
  1743. </div>
  1744. </div>
  1745. <div
  1746. class="image-item"
  1747. data-category="operation"
  1748. data-caption="步骤4:主界面功能介绍"
  1749. >
  1750. <img
  1751. src="https://picsum.photos/seed/operate2/600/400"
  1752. alt="主界面功能介绍"
  1753. />
  1754. <div class="image-caption">
  1755. <h4 class="font-medium">步骤4:主界面功能介绍</h4>
  1756. <p class="text-gray-600 text-sm mt-1">
  1757. 了解主界面布局和各功能模块的位置与作用
  1758. </p>
  1759. </div>
  1760. </div>
  1761. <!-- 高级功能 -->
  1762. <div
  1763. class="image-item"
  1764. data-category="advanced"
  1765. data-caption="步骤5:用户权限管理"
  1766. >
  1767. <img
  1768. src="https://picsum.photos/seed/advanced1/600/400"
  1769. alt="用户权限管理"
  1770. />
  1771. <div class="image-caption">
  1772. <h4 class="font-medium">步骤5:用户权限管理</h4>
  1773. <p class="text-gray-600 text-sm mt-1">
  1774. 如何创建和管理不同权限的用户账户
  1775. </p>
  1776. </div>
  1777. </div>
  1778. <div
  1779. class="image-item"
  1780. data-category="advanced"
  1781. data-caption="步骤6:数据备份与恢复"
  1782. >
  1783. <img
  1784. src="https://picsum.photos/seed/advanced2/600/400"
  1785. alt="数据备份与恢复"
  1786. />
  1787. <div class="image-caption">
  1788. <h4 class="font-medium">步骤6:数据备份与恢复</h4>
  1789. <p class="text-gray-600 text-sm mt-1">
  1790. 设置自动备份和手动备份,以及数据恢复方法
  1791. </p>
  1792. </div>
  1793. </div>
  1794. </div>
  1795. </div>
  1796. </section>
  1797. <!-- 图片查看器 -->
  1798. <div class="image-viewer" id="imageViewer">
  1799. <div class="viewer-content">
  1800. <span class="close-viewer" id="closeViewer">×</span>
  1801. <div class="viewer-nav">
  1802. <button id="prevImage"><i class="fa fa-chevron-left"></i></button>
  1803. <button id="nextImage"><i class="fa fa-chevron-right"></i></button>
  1804. </div>
  1805. <img src="" alt="" class="viewer-image" id="viewerImage" />
  1806. <div class="viewer-caption" id="viewerCaption"></div>
  1807. </div>
  1808. </div>
  1809. <!-- 页脚 -->
  1810. <footer class="bg-dark text-white py-12 px-4">
  1811. <div class="container mx-auto max-w-6xl">
  1812. <div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8">
  1813. <div>
  1814. <div class="flex items-center space-x-2 mb-6">
  1815. <div
  1816. class="w-10 h-10 rounded-lg gradient-bg flex items-center justify-center"
  1817. >
  1818. <img
  1819. alt="夺宝奇兵"
  1820. src="https://hc.homilychart.com/hc/250121/img/20230711171637.png"
  1821. style="width: 40px; height: 40px"
  1822. />
  1823. </div>
  1824. <span class="text-xl font-bold">夺宝奇兵</span>
  1825. </div>
  1826. <p class="text-gray-400 mb-6">AI炒股时代 机构界的黑科技!</p>
  1827. <div class="flex space-x-4">
  1828. <a
  1829. href="#"
  1830. class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-primary transition-colors"
  1831. >
  1832. <i class="fa fa-facebook"></i>
  1833. </a>
  1834. <a
  1835. href="#"
  1836. class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-primary transition-colors"
  1837. >
  1838. <i class="fa fa-twitter"></i>
  1839. </a>
  1840. <a
  1841. href="#"
  1842. class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-primary transition-colors"
  1843. >
  1844. <i class="fa fa-linkedin"></i>
  1845. </a>
  1846. <a
  1847. href="#"
  1848. class="w-10 h-10 rounded-full bg-gray-800 flex items-center justify-center hover:bg-primary transition-colors"
  1849. >
  1850. <i class="fa fa-instagram"></i>
  1851. </a>
  1852. </div>
  1853. </div>
  1854. <div>
  1855. <h4 class="text-lg font-semibold mb-6">产品</h4>
  1856. <ul class="space-y-3">
  1857. <li>
  1858. <a
  1859. href="https://wa.me/+6588792879?text=我要了解弘历云版软件"
  1860. target="_blank"
  1861. class="text-gray-400 hover:text-white transition-colors"
  1862. >弘历云版软件</a
  1863. >
  1864. </li>
  1865. <li>
  1866. <a
  1867. href="https://wa.me/+6588792879?text=我要了解HomilyChart"
  1868. target="_blank"
  1869. class="text-gray-400 hover:text-white transition-colors"
  1870. >HomilyChart</a
  1871. >
  1872. </li>
  1873. <li>
  1874. <a
  1875. href="https://wa.me/+6588792879?text=我要了解夺宝奇兵"
  1876. target="_blank"
  1877. class="text-gray-400 hover:text-white transition-colors"
  1878. >夺宝奇兵</a
  1879. >
  1880. </li>
  1881. <li>
  1882. <a
  1883. href="https://wa.me/+6588792879?text=我要了解博股会员"
  1884. class="text-gray-400 hover:text-white transition-colors"
  1885. >博股会员</a
  1886. >
  1887. </li>
  1888. <li>
  1889. <a
  1890. href="https://wa.me/+6588792879?text=我要了解最新软件"
  1891. class="text-gray-400 hover:text-white transition-colors"
  1892. >最新软件</a
  1893. >
  1894. </li>
  1895. </ul>
  1896. </div>
  1897. <div>
  1898. <h4 class="text-lg font-semibold mb-6">公司</h4>
  1899. <ul class="space-y-3">
  1900. <li>
  1901. <a
  1902. href="https://wa.me/+6588792879?text=我要咨询"
  1903. target="_blank"
  1904. class="text-gray-400 hover:text-white transition-colors"
  1905. >关于我们</a
  1906. >
  1907. </li>
  1908. <li>
  1909. <a
  1910. href="https://wa.me/+6588792879?text=我要咨询"
  1911. target="_blank"
  1912. class="text-gray-400 hover:text-white transition-colors"
  1913. >团队介绍</a
  1914. >
  1915. </li>
  1916. <li>
  1917. <a
  1918. href="https://wa.me/+6588792879?text=我要咨询"
  1919. target="_blank"
  1920. class="text-gray-400 hover:text-white transition-colors"
  1921. >加入我们</a
  1922. >
  1923. </li>
  1924. </ul>
  1925. </div>
  1926. <div>
  1927. <h4 class="text-lg font-semibold mb-6">支持</h4>
  1928. <ul class="space-y-3">
  1929. <li>
  1930. <a
  1931. href="hcdbqb-guide.html"
  1932. class="text-gray-400 hover:text-white transition-colors"
  1933. >帮助中心</a
  1934. >
  1935. </li>
  1936. <li>
  1937. <a
  1938. href="https://wa.me/+6588792879?text=我有问题"
  1939. target="_blank"
  1940. class="text-gray-400 hover:text-white transition-colors"
  1941. >常见问题</a
  1942. >
  1943. </li>
  1944. </ul>
  1945. </div>
  1946. </div>
  1947. <div
  1948. class="border-t border-gray-800 pt-8 flex flex-col md:flex-row justify-between items-center"
  1949. >
  1950. <p class="text-gray-500 text-sm mb-4 md:mb-0">
  1951. © Copyright 2025.Capitalmaster Pte Ltd All Rights Reserved.<br />
  1952. </p>
  1953. <div class="flex space-x-6">如需帮助,请及时联系我们!</div>
  1954. </div>
  1955. </div>
  1956. </footer>
  1957. <!-- JavaScript -->
  1958. <script>
  1959. // 移动端菜单切换
  1960. const menuBtn = document.getElementById("menuBtn");
  1961. const mobileMenu = document.getElementById("mobileMenu");
  1962. menuBtn.addEventListener("click", () => {
  1963. mobileMenu.classList.toggle("hidden");
  1964. // 切换图标
  1965. const icon = menuBtn.querySelector("i");
  1966. if (icon.classList.contains("fa-bars")) {
  1967. icon.classList.replace("fa-bars", "fa-times");
  1968. } else {
  1969. icon.classList.replace("fa-times", "fa-bars");
  1970. }
  1971. });
  1972. // 导航栏滚动效果
  1973. window.addEventListener("scroll", () => {
  1974. const header = document.querySelector("header");
  1975. if (window.scrollY > 50) {
  1976. header.classList.add("py-2", "shadow");
  1977. header.classList.remove("py-3");
  1978. } else {
  1979. header.classList.add("py-3");
  1980. header.classList.remove("py-2", "shadow");
  1981. }
  1982. });
  1983. // 图片查看器功能
  1984. const imageViewer = document.getElementById("imageViewer");
  1985. const viewerImage = document.getElementById("viewerImage");
  1986. const viewerCaption = document.getElementById("viewerCaption");
  1987. const closeViewer = document.getElementById("closeViewer");
  1988. const prevImage = document.getElementById("prevImage");
  1989. const nextImage = document.getElementById("nextImage");
  1990. const imageItems = document.querySelectorAll(".image-item");
  1991. let currentImageIndex = 0;
  1992. let filteredImages = Array.from(imageItems);
  1993. // 打开图片查看器
  1994. imageItems.forEach((item) => {
  1995. item.addEventListener("click", () => {
  1996. currentImageIndex = filteredImages.indexOf(item);
  1997. updateViewer();
  1998. imageViewer.classList.add("active");
  1999. document.body.style.overflow = "hidden";
  2000. });
  2001. });
  2002. // 关闭图片查看器
  2003. closeViewer.addEventListener("click", () => {
  2004. imageViewer.classList.remove("active");
  2005. document.body.style.overflow = "";
  2006. });
  2007. // 点击查看器外部关闭
  2008. imageViewer.addEventListener("click", (e) => {
  2009. if (e.target === imageViewer) {
  2010. imageViewer.classList.remove("active");
  2011. document.body.style.overflow = "";
  2012. }
  2013. });
  2014. // 上一张/下一张图片
  2015. prevImage.addEventListener("click", (e) => {
  2016. e.stopPropagation();
  2017. currentImageIndex =
  2018. (currentImageIndex - 1 + filteredImages.length) %
  2019. filteredImages.length;
  2020. updateViewer();
  2021. });
  2022. nextImage.addEventListener("click", (e) => {
  2023. e.stopPropagation();
  2024. currentImageIndex = (currentImageIndex + 1) % filteredImages.length;
  2025. updateViewer();
  2026. });
  2027. // 更新查看器内容
  2028. function updateViewer() {
  2029. const currentItem = filteredImages[currentImageIndex];
  2030. const imgSrc = currentItem.querySelector("img").src;
  2031. const caption = currentItem.dataset.caption;
  2032. viewerImage.src = imgSrc;
  2033. viewerImage.alt = caption;
  2034. viewerCaption.textContent = caption;
  2035. }
  2036. // 图片过滤功能
  2037. const filterBtns = document.querySelectorAll(".filter-btn");
  2038. filterBtns.forEach((btn) => {
  2039. btn.addEventListener("click", () => {
  2040. // 更新按钮样式
  2041. filterBtns.forEach((b) => {
  2042. b.classList.remove("active", "bg-primary", "text-white");
  2043. b.classList.add("bg-white", "text-gray-700", "hover:bg-gray-100");
  2044. });
  2045. btn.classList.add("active", "bg-primary", "text-white");
  2046. btn.classList.remove(
  2047. "bg-white",
  2048. "text-gray-700",
  2049. "hover:bg-gray-100"
  2050. );
  2051. const filter = btn.dataset.filter;
  2052. // 过滤图片
  2053. filteredImages = [];
  2054. imageItems.forEach((item) => {
  2055. if (filter === "all" || item.dataset.category === filter) {
  2056. item.style.display = "block";
  2057. filteredImages.push(item);
  2058. } else {
  2059. item.style.display = "none";
  2060. }
  2061. });
  2062. });
  2063. });
  2064. // 滚动动画
  2065. const animateOnScroll = () => {
  2066. const elements = document.querySelectorAll(".animate-fade-in");
  2067. elements.forEach((element) => {
  2068. const elementPosition = element.getBoundingClientRect().top;
  2069. const windowHeight = window.innerHeight;
  2070. if (elementPosition < windowHeight - 100) {
  2071. element.style.opacity = "1";
  2072. element.style.transform = "translateY(0)";
  2073. }
  2074. });
  2075. };
  2076. // 初始加载和滚动时执行动画
  2077. window.addEventListener("load", animateOnScroll);
  2078. window.addEventListener("scroll", animateOnScroll);
  2079. // 键盘导航支持
  2080. document.addEventListener("keydown", (e) => {
  2081. if (imageViewer.classList.contains("active")) {
  2082. if (e.key === "Escape") {
  2083. imageViewer.classList.remove("active");
  2084. document.body.style.overflow = "";
  2085. } else if (e.key === "ArrowLeft") {
  2086. currentImageIndex =
  2087. (currentImageIndex - 1 + filteredImages.length) %
  2088. filteredImages.length;
  2089. updateViewer();
  2090. } else if (e.key === "ArrowRight") {
  2091. currentImageIndex = (currentImageIndex + 1) % filteredImages.length;
  2092. updateViewer();
  2093. }
  2094. }
  2095. });
  2096. </script>
  2097. <script>
  2098. // 等页面完全加载后再执行(避免播放器还没渲染好)
  2099. window.onload = function () {
  2100. const video = document.getElementById("guideVideo");
  2101. // 这里放你的真实视频地址(本地/网络都可以)
  2102. const realVideoSrc =
  2103. "https://hc.homilychart.com/hc/250121/img/homilylink-guide.mp4";
  2104. // 动态添加视频源(支持多格式,兼容性更好)
  2105. const mp4Source = document.createElement("source");
  2106. mp4Source.src = realVideoSrc;
  2107. mp4Source.type = "video/mp4";
  2108. video.appendChild(mp4Source);
  2109. // 触发播放器加载(可选,确保视频能正常播放)
  2110. video.load();
  2111. };
  2112. </script>
  2113. </body>
  2114. <div id="immersive-translate-popup" style="all: initial"></div>
  2115. </html>