image_neon.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="template:media-width" content="1024">
  6. <meta name="template:media-height" content="1024">
  7. <meta name="viewport" content="width=device-width, initial-scale=1" />
  8. <title>{{title}}</title>
  9. <style>
  10. :root {
  11. --bg: #0b0f1a;
  12. --fg: #eaf6ff;
  13. --muted: #9fb6c6;
  14. --accent: #3cf0ff;
  15. --accent2: #ff3fe0;
  16. --accent3: #f0e130;
  17. --card-bg: rgba(12, 14, 20, 0.5);
  18. --border: rgba(255, 255, 255, 0.12);
  19. }
  20. html, body {
  21. height: 100%;
  22. margin: 0;
  23. background: var(--bg);
  24. color: var(--fg);
  25. font-family: 'PingFang SC', 'Source Han Sans', 'Microsoft YaHei', sans-serif;
  26. -webkit-font-smoothing: antialiased;
  27. -moz-osx-font-smoothing: grayscale;
  28. overflow: hidden;
  29. }
  30. body {
  31. display: flex;
  32. align-items: center;
  33. justify-content: center;
  34. position: relative;
  35. }
  36. .frame {
  37. position: relative;
  38. width: 1080px;
  39. height: 1920px;
  40. margin: 0 auto;
  41. display: grid;
  42. grid-template-rows: 15% 53% 18% 14%;
  43. gap: 22px;
  44. padding: 80px 40px 50px 40px;
  45. box-sizing: border-box;
  46. box-shadow: inset 0 0 40px rgba(0, 0, 0, 0.35);
  47. z-index: 1;
  48. }
  49. /* Background decorations */
  50. .background-glow {
  51. position: absolute;
  52. inset: 0;
  53. pointer-events: none;
  54. z-index: 0;
  55. overflow: hidden;
  56. }
  57. /* Grid pattern */
  58. .grid-pattern {
  59. position: absolute;
  60. inset: 0;
  61. background-image:
  62. linear-gradient(rgba(60, 240, 255, 0.05) 1px, transparent 1px),
  63. linear-gradient(90deg, rgba(60, 240, 255, 0.05) 1px, transparent 1px);
  64. background-size: 50px 50px;
  65. opacity: 0.3;
  66. }
  67. /* Scan lines */
  68. .scan-line {
  69. position: absolute;
  70. left: 0;
  71. width: 100%;
  72. height: 2px;
  73. background: linear-gradient(90deg,
  74. transparent,
  75. rgba(60, 240, 255, 0.6) 50%,
  76. transparent);
  77. box-shadow: 0 0 10px rgba(60, 240, 255, 0.5);
  78. }
  79. .scan-line:nth-child(1) { top: 15%; }
  80. .scan-line:nth-child(2) { top: 45%; }
  81. .scan-line:nth-child(3) { top: 75%; }
  82. /* Neon rings */
  83. .neon-ring {
  84. position: absolute;
  85. border-radius: 50%;
  86. border: 2px solid rgba(60, 240, 255, 0.3);
  87. box-shadow:
  88. 0 0 20px rgba(60, 240, 255, 0.4),
  89. inset 0 0 20px rgba(60, 240, 255, 0.2);
  90. }
  91. .neon-ring.ring-1 {
  92. width: 400px;
  93. height: 400px;
  94. top: 10%;
  95. right: -150px;
  96. border-color: rgba(60, 240, 255, 0.25);
  97. }
  98. .neon-ring.ring-2 {
  99. width: 300px;
  100. height: 300px;
  101. bottom: 15%;
  102. left: -100px;
  103. border-color: rgba(255, 63, 224, 0.25);
  104. box-shadow:
  105. 0 0 20px rgba(255, 63, 224, 0.4),
  106. inset 0 0 20px rgba(255, 63, 224, 0.2);
  107. }
  108. .neon-ring.ring-3 {
  109. width: 200px;
  110. height: 200px;
  111. top: 50%;
  112. left: 80px;
  113. border-color: rgba(240, 225, 48, 0.2);
  114. box-shadow:
  115. 0 0 20px rgba(240, 225, 48, 0.3),
  116. inset 0 0 20px rgba(240, 225, 48, 0.15);
  117. }
  118. /* Corner neon circles */
  119. .corner-circle {
  120. position: absolute;
  121. width: 150px;
  122. height: 150px;
  123. border-radius: 50%;
  124. }
  125. .corner-circle.tl {
  126. left: -50px;
  127. top: -50px;
  128. border: 3px solid rgba(60, 240, 255, 0.5);
  129. box-shadow:
  130. 0 0 30px rgba(60, 240, 255, 0.4),
  131. inset 0 0 30px rgba(60, 240, 255, 0.15);
  132. }
  133. .corner-circle.tl::before {
  134. content: '';
  135. position: absolute;
  136. top: 50%;
  137. left: 50%;
  138. transform: translate(-50%, -50%);
  139. width: 80%;
  140. height: 80%;
  141. border-radius: 50%;
  142. border: 2px solid rgba(60, 240, 255, 0.3);
  143. box-shadow: 0 0 20px rgba(60, 240, 255, 0.3);
  144. }
  145. .corner-circle.tl::after {
  146. content: '';
  147. position: absolute;
  148. top: 50%;
  149. left: 50%;
  150. transform: translate(-50%, -50%);
  151. width: 50%;
  152. height: 50%;
  153. border-radius: 50%;
  154. background: rgba(60, 240, 255, 0.15);
  155. box-shadow:
  156. 0 0 25px rgba(60, 240, 255, 0.5),
  157. inset 0 0 15px rgba(60, 240, 255, 0.3);
  158. animation: circlePulse 3s ease-in-out infinite;
  159. }
  160. .corner-circle.br {
  161. right: -50px;
  162. bottom: -50px;
  163. border: 3px solid rgba(255, 63, 224, 0.5);
  164. box-shadow:
  165. 0 0 30px rgba(255, 63, 224, 0.4),
  166. inset 0 0 30px rgba(255, 63, 224, 0.15);
  167. }
  168. .corner-circle.br::before {
  169. content: '';
  170. position: absolute;
  171. top: 50%;
  172. left: 50%;
  173. transform: translate(-50%, -50%);
  174. width: 80%;
  175. height: 80%;
  176. border-radius: 50%;
  177. border: 2px solid rgba(255, 63, 224, 0.3);
  178. box-shadow: 0 0 20px rgba(255, 63, 224, 0.3);
  179. }
  180. .corner-circle.br::after {
  181. content: '';
  182. position: absolute;
  183. top: 50%;
  184. left: 50%;
  185. transform: translate(-50%, -50%);
  186. width: 50%;
  187. height: 50%;
  188. border-radius: 50%;
  189. background: rgba(255, 63, 224, 0.15);
  190. box-shadow:
  191. 0 0 25px rgba(255, 63, 224, 0.5),
  192. inset 0 0 15px rgba(255, 63, 224, 0.3);
  193. animation: circlePulse 3s ease-in-out infinite 1.5s;
  194. }
  195. @keyframes circlePulse {
  196. 0%, 100% {
  197. opacity: 0.6;
  198. transform: translate(-50%, -50%) scale(1);
  199. }
  200. 50% {
  201. opacity: 1;
  202. transform: translate(-50%, -50%) scale(1.1);
  203. }
  204. }
  205. /* Neon squares */
  206. .neon-square {
  207. position: absolute;
  208. border: 2px solid;
  209. transform: rotate(45deg);
  210. }
  211. .neon-square.sq-1 {
  212. width: 100px;
  213. height: 100px;
  214. top: 20%;
  215. left: -30px;
  216. border-color: rgba(60, 240, 255, 0.3);
  217. box-shadow: 0 0 20px rgba(60, 240, 255, 0.4);
  218. }
  219. .neon-square.sq-2 {
  220. width: 70px;
  221. height: 70px;
  222. bottom: 25%;
  223. right: 50px;
  224. border-color: rgba(255, 63, 224, 0.3);
  225. box-shadow: 0 0 20px rgba(255, 63, 224, 0.4);
  226. }
  227. /* Neon particles */
  228. .particle {
  229. position: absolute;
  230. width: 4px;
  231. height: 4px;
  232. border-radius: 50%;
  233. background: rgba(60, 240, 255, 0.8);
  234. box-shadow: 0 0 10px rgba(60, 240, 255, 1);
  235. }
  236. .particle.p1 { top: 10%; left: 20%; }
  237. .particle.p2 { top: 30%; right: 15%; background: rgba(255, 63, 224, 0.8); box-shadow: 0 0 10px rgba(255, 63, 224, 1); }
  238. .particle.p3 { top: 60%; left: 10%; }
  239. .particle.p4 { bottom: 20%; right: 25%; background: rgba(240, 225, 48, 0.8); box-shadow: 0 0 10px rgba(240, 225, 48, 1); }
  240. .particle.p5 { bottom: 35%; left: 30%; }
  241. /* Diagonal lines */
  242. .neon-line {
  243. position: absolute;
  244. height: 2px;
  245. background: linear-gradient(90deg,
  246. transparent,
  247. rgba(60, 240, 255, 0.4) 50%,
  248. transparent);
  249. box-shadow: 0 0 8px rgba(60, 240, 255, 0.4);
  250. }
  251. .neon-line.line-1 {
  252. width: 300px;
  253. top: 25%;
  254. left: 100px;
  255. transform: rotate(-15deg);
  256. }
  257. .neon-line.line-2 {
  258. width: 250px;
  259. top: 65%;
  260. right: 150px;
  261. transform: rotate(20deg);
  262. background: linear-gradient(90deg,
  263. transparent,
  264. rgba(255, 63, 224, 0.4) 50%,
  265. transparent);
  266. box-shadow: 0 0 8px rgba(255, 63, 224, 0.4);
  267. }
  268. /* Header section */
  269. .header {
  270. position: relative;
  271. z-index: 1;
  272. display: grid;
  273. grid-template-rows: auto 1fr;
  274. gap: 12px;
  275. padding: 10px 0;
  276. }
  277. .header::before {
  278. content: '';
  279. position: absolute;
  280. top: -15px;
  281. left: 20%;
  282. right: 20%;
  283. height: 3px;
  284. background: linear-gradient(90deg,
  285. transparent,
  286. rgba(60, 240, 255, 0.8) 50%,
  287. transparent);
  288. box-shadow: 0 0 12px rgba(60, 240, 255, 0.8);
  289. }
  290. .header::after {
  291. content: '';
  292. position: absolute;
  293. bottom: -15px;
  294. left: 30%;
  295. right: 30%;
  296. height: 2px;
  297. background: linear-gradient(90deg,
  298. transparent,
  299. rgba(255, 63, 224, 0.7) 50%,
  300. transparent);
  301. box-shadow: 0 0 10px rgba(255, 63, 224, 0.7);
  302. }
  303. .title {
  304. margin: 0;
  305. font-size: 68px;
  306. font-weight: 800;
  307. line-height: 1.15;
  308. letter-spacing: 0.5px;
  309. color: var(--fg);
  310. overflow-wrap: anywhere;
  311. word-break: break-word;
  312. text-shadow:
  313. 0 0 6px rgba(60, 240, 255, 0.6),
  314. 0 0 18px rgba(60, 240, 255, 0.35),
  315. 0 0 32px rgba(255, 63, 224, 0.25);
  316. animation: glowPulse 3.6s ease-in-out infinite;
  317. text-align: center;
  318. position: relative;
  319. }
  320. .title::before,
  321. .title::after {
  322. content: '';
  323. position: absolute;
  324. width: 8px;
  325. height: 8px;
  326. border-radius: 50%;
  327. top: 0;
  328. background: var(--accent);
  329. box-shadow: 0 0 12px var(--accent);
  330. }
  331. .title::before { left: -20px; }
  332. .title::after { right: -20px; background: var(--accent2); box-shadow: 0 0 12px var(--accent2); }
  333. .title-meta {
  334. display: flex;
  335. gap: 12px;
  336. align-items: center;
  337. justify-content: center;
  338. flex-wrap: wrap;
  339. }
  340. .chip {
  341. display: inline-flex;
  342. align-items: center;
  343. gap: 8px;
  344. padding: 8px 14px;
  345. font-size: 22px;
  346. line-height: 1.2;
  347. color: #dff7ff;
  348. border: 2px solid rgba(60, 240, 255, 0.4);
  349. border-radius: 999px;
  350. background: transparent;
  351. box-shadow: 0 0 15px rgba(60, 240, 255, 0.3);
  352. }
  353. .chip .dot {
  354. width: 8px;
  355. height: 8px;
  356. border-radius: 50%;
  357. background: rgba(60, 240, 255, 1);
  358. box-shadow: 0 0 16px rgba(60, 240, 255, 0.9);
  359. }
  360. .chip .dot.pink {
  361. background: rgba(255, 63, 224, 1);
  362. box-shadow: 0 0 16px rgba(255, 63, 224, 0.9);
  363. }
  364. .chip .dot.yellow {
  365. background: rgba(240, 225, 48, 1);
  366. box-shadow: 0 0 16px rgba(240, 225, 48, 0.9);
  367. }
  368. @keyframes glowPulse {
  369. 0%, 100% {
  370. text-shadow:
  371. 0 0 6px rgba(60, 240, 255, 0.6),
  372. 0 0 18px rgba(60, 240, 255, 0.35),
  373. 0 0 32px rgba(255, 63, 224, 0.25);
  374. }
  375. 50% {
  376. text-shadow:
  377. 0 0 8px rgba(60, 240, 255, 0.85),
  378. 0 0 26px rgba(60, 240, 255, 0.55),
  379. 0 0 48px rgba(255, 63, 224, 0.35);
  380. }
  381. }
  382. @media (prefers-reduced-motion: reduce) {
  383. .title { animation: none; }
  384. }
  385. /* Media section */
  386. .media {
  387. position: relative;
  388. z-index: 1;
  389. border-radius: 28px;
  390. overflow: hidden;
  391. border: 2px solid;
  392. border-image: linear-gradient(135deg,
  393. rgba(60, 240, 255, 0.5),
  394. rgba(255, 63, 224, 0.5)) 1;
  395. background: rgba(15, 18, 28, 0.4);
  396. display: flex;
  397. align-items: center;
  398. justify-content: center;
  399. box-shadow:
  400. 0 24px 48px rgba(0, 0, 0, 0.55),
  401. 0 0 60px rgba(60, 240, 255, 0.15);
  402. }
  403. .media::before {
  404. content: '';
  405. position: absolute;
  406. inset: 0;
  407. border-radius: 26px;
  408. border: 2px solid rgba(60, 240, 255, 0.3);
  409. pointer-events: none;
  410. z-index: 1;
  411. }
  412. /* Corner indicators */
  413. .corner-indicator {
  414. position: absolute;
  415. width: 30px;
  416. height: 30px;
  417. z-index: 2;
  418. }
  419. .corner-indicator.tl {
  420. top: 15px;
  421. left: 15px;
  422. border-top: 3px solid var(--accent);
  423. border-left: 3px solid var(--accent);
  424. box-shadow: 0 0 10px var(--accent);
  425. }
  426. .corner-indicator.tr {
  427. top: 15px;
  428. right: 15px;
  429. border-top: 3px solid var(--accent2);
  430. border-right: 3px solid var(--accent2);
  431. box-shadow: 0 0 10px var(--accent2);
  432. }
  433. .corner-indicator.bl {
  434. bottom: 15px;
  435. left: 15px;
  436. border-bottom: 3px solid var(--accent2);
  437. border-left: 3px solid var(--accent2);
  438. box-shadow: 0 0 10px var(--accent2);
  439. }
  440. .corner-indicator.br {
  441. bottom: 15px;
  442. right: 15px;
  443. border-bottom: 3px solid var(--accent);
  444. border-right: 3px solid var(--accent);
  445. box-shadow: 0 0 10px var(--accent);
  446. }
  447. /* Side badges */
  448. .media-badge {
  449. position: absolute;
  450. display: flex;
  451. flex-direction: column;
  452. gap: 15px;
  453. z-index: 2;
  454. }
  455. .media-badge.left {
  456. left: -25px;
  457. top: 50%;
  458. transform: translateY(-50%);
  459. }
  460. .media-badge.right {
  461. right: -25px;
  462. top: 50%;
  463. transform: translateY(-50%);
  464. }
  465. .badge-dot {
  466. width: 12px;
  467. height: 12px;
  468. border-radius: 50%;
  469. background: rgba(60, 240, 255, 0.3);
  470. border: 2px solid rgba(60, 240, 255, 0.6);
  471. box-shadow: 0 0 12px rgba(60, 240, 255, 0.6);
  472. }
  473. .badge-dot.active {
  474. background: rgba(60, 240, 255, 0.8);
  475. border-color: rgba(60, 240, 255, 1);
  476. }
  477. .badge-dot.pink {
  478. background: rgba(255, 63, 224, 0.3);
  479. border-color: rgba(255, 63, 224, 0.6);
  480. box-shadow: 0 0 12px rgba(255, 63, 224, 0.6);
  481. }
  482. .badge-dot.pink.active {
  483. background: rgba(255, 63, 224, 0.8);
  484. border-color: rgba(255, 63, 224, 1);
  485. }
  486. .media img {
  487. width: 100%;
  488. height: 100%;
  489. max-width: 100%;
  490. max-height: 100%;
  491. object-fit: cover;
  492. display: block;
  493. }
  494. /* Caption section */
  495. .caption {
  496. position: relative;
  497. z-index: 1;
  498. display: grid;
  499. grid-template-columns: 12px 1fr 12px;
  500. align-items: center;
  501. gap: 18px;
  502. padding: 35px 10px 20px 10px;
  503. }
  504. .caption::before {
  505. content: '';
  506. position: absolute;
  507. top: -20px;
  508. left: 25%;
  509. right: 25%;
  510. height: 3px;
  511. background: linear-gradient(90deg,
  512. transparent,
  513. rgba(60, 240, 255, 0.7) 50%,
  514. transparent);
  515. box-shadow: 0 0 10px rgba(60, 240, 255, 0.7);
  516. }
  517. .caption::after {
  518. content: '';
  519. position: absolute;
  520. bottom: -15px;
  521. left: 20%;
  522. right: 20%;
  523. height: 2px;
  524. background: linear-gradient(90deg,
  525. transparent,
  526. rgba(255, 63, 224, 0.7) 50%,
  527. transparent);
  528. box-shadow: 0 0 10px rgba(255, 63, 224, 0.7);
  529. }
  530. .caption .accent-bar {
  531. width: 8px;
  532. height: 120px;
  533. border-radius: 8px;
  534. background: linear-gradient(180deg,
  535. rgba(60, 240, 255, 0.95),
  536. rgba(255, 63, 224, 0.95));
  537. box-shadow:
  538. 0 0 18px rgba(60, 240, 255, 0.8),
  539. 0 0 36px rgba(255, 63, 224, 0.45);
  540. animation: barPulse 2s ease-in-out infinite;
  541. }
  542. .caption .accent-bar-right {
  543. width: 8px;
  544. height: 120px;
  545. border-radius: 8px;
  546. background: linear-gradient(180deg,
  547. rgba(255, 63, 224, 0.95),
  548. rgba(240, 225, 48, 0.95));
  549. box-shadow:
  550. 0 0 18px rgba(255, 63, 224, 0.8),
  551. 0 0 36px rgba(240, 225, 48, 0.45);
  552. animation: barPulse 2s ease-in-out infinite 1s;
  553. }
  554. @keyframes barPulse {
  555. 0%, 100% {
  556. opacity: 1;
  557. }
  558. 50% {
  559. opacity: 0.7;
  560. }
  561. }
  562. /* Quote icons */
  563. .quote-icon {
  564. position: absolute;
  565. opacity: 0.15;
  566. z-index: 0;
  567. }
  568. .quote-icon.left {
  569. top: -15px;
  570. left: 40px;
  571. transform: rotate(180deg);
  572. }
  573. .quote-icon.right {
  574. bottom: -15px;
  575. right: 40px;
  576. }
  577. .caption p {
  578. margin: 0;
  579. font-size: 42px;
  580. line-height: 1.5;
  581. color: #dff7ff;
  582. overflow-wrap: anywhere;
  583. word-break: break-word;
  584. text-shadow: 0 0 8px rgba(60, 240, 255, 0.3);
  585. position: relative;
  586. z-index: 1;
  587. height: 189px;
  588. display: flex;
  589. align-items: center;
  590. justify-content: center;
  591. }
  592. /* Footer section */
  593. .footer {
  594. position: relative;
  595. z-index: 1;
  596. display: grid;
  597. grid-template-columns: 1fr 1.5fr 1fr;
  598. align-items: start;
  599. gap: 18px;
  600. padding: 20px 10px 28px 10px;
  601. overflow: visible;
  602. }
  603. .footer::before {
  604. content: '';
  605. position: absolute;
  606. top: -15px;
  607. left: 15%;
  608. right: 15%;
  609. height: 3px;
  610. background: linear-gradient(90deg,
  611. transparent,
  612. rgba(240, 225, 48, 0.8) 50%,
  613. transparent);
  614. box-shadow: 0 0 12px rgba(240, 225, 48, 0.8);
  615. }
  616. .author {
  617. display: flex;
  618. align-items: center;
  619. gap: 10px;
  620. font-size: 28px;
  621. color: var(--fg);
  622. white-space: nowrap;
  623. padding-top: 4px;
  624. }
  625. .author-badges {
  626. display: flex;
  627. gap: 6px;
  628. }
  629. .author-badge-dot {
  630. width: 10px;
  631. height: 10px;
  632. border-radius: 50%;
  633. background: var(--accent);
  634. box-shadow: 0 0 10px var(--accent);
  635. }
  636. .author-badge-dot.pink {
  637. background: var(--accent2);
  638. box-shadow: 0 0 10px var(--accent2);
  639. }
  640. .author .tag {
  641. padding: 6px 10px;
  642. border-radius: 10px;
  643. border: 2px solid rgba(60, 240, 255, 0.5);
  644. color: #bfefff;
  645. background: transparent;
  646. box-shadow: 0 0 15px rgba(60, 240, 255, 0.4);
  647. font-size: 20px;
  648. }
  649. .slogan {
  650. font-size: 26px;
  651. text-align: center;
  652. color: #dff7ff;
  653. text-shadow: 0 0 10px rgba(60, 240, 255, 0.25);
  654. overflow-wrap: anywhere;
  655. word-break: break-word;
  656. line-height: 1.4;
  657. padding-top: 4px;
  658. }
  659. .cta {
  660. display: flex;
  661. flex-direction: column;
  662. align-items: flex-end;
  663. gap: 10px;
  664. color: var(--muted);
  665. font-size: 20px;
  666. padding-top: 4px;
  667. }
  668. .cta .follow {
  669. display: inline-flex;
  670. align-items: center;
  671. gap: 10px;
  672. padding: 10px 14px;
  673. border-radius: 999px;
  674. background: transparent;
  675. border: 2px solid rgba(255, 63, 224, 0.5);
  676. color: #bfefff;
  677. box-shadow: 0 0 15px rgba(255, 63, 224, 0.4);
  678. font-size: 20px;
  679. white-space: nowrap;
  680. }
  681. .cta .hashtags {
  682. display: flex;
  683. gap: 10px;
  684. flex-wrap: wrap;
  685. justify-content: flex-end;
  686. }
  687. .cta .hashtags span {
  688. color: #9ad8ff;
  689. text-shadow: 0 0 10px rgba(60, 240, 255, 0.18);
  690. font-size: 20px;
  691. line-height: 1.5;
  692. }
  693. /* Detail overlays */
  694. .media::after {
  695. content: "";
  696. position: absolute;
  697. inset: 0;
  698. border-radius: inherit;
  699. pointer-events: none;
  700. box-shadow: inset 0 0 24px rgba(255, 255, 255, 0.05);
  701. z-index: 10;
  702. }
  703. /* Spine decoration */
  704. .spine {
  705. position: absolute;
  706. left: 8px;
  707. top: 50%;
  708. transform: translateY(-50%) rotate(-90deg);
  709. transform-origin: left top;
  710. z-index: 1;
  711. opacity: 0.9;
  712. background: transparent;
  713. border: 2px solid rgba(60, 240, 255, 0.5);
  714. border-radius: 999px;
  715. padding: 8px 14px;
  716. color: #bfefff;
  717. font-size: 20px;
  718. letter-spacing: 2px;
  719. text-shadow: 0 0 10px rgba(60, 240, 255, 0.6);
  720. box-shadow: 0 0 20px rgba(60, 240, 255, 0.4);
  721. white-space: nowrap;
  722. }
  723. .spine::before {
  724. content: '';
  725. position: absolute;
  726. left: -8px;
  727. top: 50%;
  728. transform: translateY(-50%);
  729. width: 6px;
  730. height: 6px;
  731. border-radius: 50%;
  732. background: var(--accent);
  733. box-shadow: 0 0 10px var(--accent);
  734. }
  735. .spine::after {
  736. content: '';
  737. position: absolute;
  738. right: -8px;
  739. top: 50%;
  740. transform: translateY(-50%);
  741. width: 6px;
  742. height: 6px;
  743. border-radius: 50%;
  744. background: var(--accent2);
  745. box-shadow: 0 0 10px var(--accent2);
  746. }
  747. /* Readability */
  748. * {
  749. text-rendering: optimizeLegibility;
  750. }
  751. </style>
  752. </head>
  753. <body>
  754. <div class="frame">
  755. <!-- Background decorations -->
  756. <div class="background-glow" aria-hidden="true">
  757. <!-- Grid pattern -->
  758. <div class="grid-pattern"></div>
  759. <!-- Scan lines -->
  760. <div class="scan-line"></div>
  761. <div class="scan-line"></div>
  762. <div class="scan-line"></div>
  763. <!-- Neon rings -->
  764. <div class="neon-ring ring-1"></div>
  765. <div class="neon-ring ring-2"></div>
  766. <div class="neon-ring ring-3"></div>
  767. <!-- Corner neon circles -->
  768. <div class="corner-circle tl"></div>
  769. <div class="corner-circle br"></div>
  770. <!-- Neon squares -->
  771. <div class="neon-square sq-1"></div>
  772. <div class="neon-square sq-2"></div>
  773. <!-- Particles -->
  774. <div class="particle p1"></div>
  775. <div class="particle p2"></div>
  776. <div class="particle p3"></div>
  777. <div class="particle p4"></div>
  778. <div class="particle p5"></div>
  779. <!-- Neon lines -->
  780. <div class="neon-line line-1"></div>
  781. <div class="neon-line line-2"></div>
  782. </div>
  783. <!-- Spine decoration -->
  784. <div class="spine" aria-hidden="true">CREATE · SHARE · INSPIRE</div>
  785. <!-- Header -->
  786. <header class="header" role="banner">
  787. <h1 class="title">{{title}}</h1>
  788. <div class="title-meta" role="list">
  789. <div class="chip" role="listitem"><span class="dot"></span>AI 短视频</div>
  790. <div class="chip" role="listitem"><span class="dot pink"></span>创意内容</div>
  791. <div class="chip" role="listitem"><span class="dot yellow"></span>轻松制作</div>
  792. </div>
  793. </header>
  794. <!-- Media -->
  795. <section class="media" role="img" aria-label="Illustration for the video">
  796. <!-- Corner indicators -->
  797. <div class="corner-indicator tl"></div>
  798. <div class="corner-indicator tr"></div>
  799. <div class="corner-indicator bl"></div>
  800. <div class="corner-indicator br"></div>
  801. <!-- Side badges -->
  802. <div class="media-badge left">
  803. <div class="badge-dot"></div>
  804. <div class="badge-dot active"></div>
  805. <div class="badge-dot"></div>
  806. </div>
  807. <div class="media-badge right">
  808. <div class="badge-dot pink"></div>
  809. <div class="badge-dot pink active"></div>
  810. <div class="badge-dot pink"></div>
  811. </div>
  812. <img src="{{image}}" alt="图像:{{title}}">
  813. </section>
  814. <!-- Caption -->
  815. <section class="caption" role="region" aria-label="旁白内容">
  816. <!-- Quote icons -->
  817. <svg class="quote-icon left" width="80" height="80" viewBox="0 0 24 24" fill="var(--accent)">
  818. <path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
  819. </svg>
  820. <svg class="quote-icon right" width="80" height="80" viewBox="0 0 24 24" fill="var(--accent2)">
  821. <path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
  822. </svg>
  823. <div class="accent-bar" aria-hidden="true"></div>
  824. <p>{{text}}</p>
  825. <div class="accent-bar-right" aria-hidden="true"></div>
  826. </section>
  827. <!-- Footer -->
  828. <footer class="footer" role="contentinfo">
  829. <div class="author">
  830. <span class="tag">作者</span>
  831. <div class="author-badges">
  832. <div class="author-badge-dot"></div>
  833. <div class="author-badge-dot pink"></div>
  834. </div>
  835. <div class="logo">{{author=@Pixelle.AI}}</div>
  836. </div>
  837. <div class="author-desc">{{describe=Open Source Omnimodal AI Creative Agent}}</div>
  838. <div class="cta">
  839. <div class="logo">{{brand=Pixelle-Video}}</div>
  840. <div class="hashtags">
  841. <span>#AI创作</span>
  842. <span>#短视频</span>
  843. <span>#内容生产</span>
  844. </div>
  845. </div>
  846. </footer>
  847. </div>
  848. </body>
  849. </html>