page-crm-home.scss 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863
  1. /* 基础样式与水墨效果 */
  2. .crm-home {
  3. font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
  4. color: #333;
  5. padding-bottom: 40px;
  6. position: relative;
  7. background-color: #f9f5f0;
  8. // background-image: url('../src/assets/images/paper-texture.webp');
  9. background-attachment: fixed;
  10. }
  11. .ink-background {
  12. position: fixed;
  13. top: 0;
  14. left: 0;
  15. width: 100%;
  16. height: 100%;
  17. pointer-events: none;
  18. z-index: 0;
  19. opacity: 0.1;
  20. }
  21. .ink-particle {
  22. position: absolute;
  23. width: 300px;
  24. height: 300px;
  25. background: radial-gradient(circle, rgba(47,125,173,0.3) 0%, rgba(255,255,255,0) 70%);
  26. border-radius: 50%;
  27. filter: blur(10px);
  28. animation: float 15s infinite ease-in-out;
  29. &:nth-child(2) {
  30. animation-delay: 5s;
  31. background: radial-gradient(circle, rgba(91,140,90,0.3) 0%, rgba(255,255,255,0) 70%);
  32. }
  33. &:nth-child(3) {
  34. animation-delay: 8s;
  35. background: radial-gradient(circle, rgba(212,177,106,0.3) 0%, rgba(255,255,255,0) 70%);
  36. }
  37. }
  38. @keyframes float {
  39. 0%, 100% { transform: translate(0, 0); }
  40. 25% { transform: translate(20px, 20px); }
  41. 50% { transform: translate(-20px, 10px); }
  42. 75% { transform: translate(10px, -20px); }
  43. }
  44. /* 区块背景 */
  45. .section-mountain-bg {
  46. position: absolute;
  47. top: 0;
  48. left: 0;
  49. width: 100%;
  50. height: 100%;
  51. // background: url('assets/images/mountain-silhouette.png') bottom center repeat-x;
  52. opacity: 0.05;
  53. z-index: 0;
  54. }
  55. .section-water-bg {
  56. position: absolute;
  57. top: 0;
  58. left: 0;
  59. width: 100%;
  60. height: 100%;
  61. // background: url('assets/images/water-ink.png') center no-repeat;
  62. opacity: 0.08;
  63. z-index: 0;
  64. }
  65. .section-rice-bg {
  66. position: absolute;
  67. top: 0;
  68. left: 0;
  69. width: 100%;
  70. height: 100%;
  71. // background: url('assets/images/rice-pattern.png') center repeat;
  72. opacity: 0.1;
  73. z-index: 0;
  74. }
  75. .section-cloud-bg {
  76. position: absolute;
  77. top: 0;
  78. left: 0;
  79. width: 100%;
  80. height: 100%;
  81. // background: url('assets/images/cloud-ink.png') center no-repeat;
  82. opacity: 0.08;
  83. z-index: 0;
  84. }
  85. /* 标题样式 */
  86. .section-header {
  87. position: relative;
  88. display: flex;
  89. justify-content: space-between;
  90. align-items: center;
  91. margin: 40px 5% 25px;
  92. padding-bottom: 15px;
  93. z-index: 1;
  94. h2 {
  95. font-size: 1.8rem;
  96. color: #2F7DAD;
  97. display: flex;
  98. align-items: center;
  99. font-family: "赣锋体", serif;
  100. text-shadow: 1px 1px 2px rgba(0,0,0,0.1);
  101. i {
  102. margin-right: 12px;
  103. color: #D4B16A;
  104. font-size: 1.5rem;
  105. }
  106. }
  107. .title-ink {
  108. position: relative;
  109. &::after {
  110. content: "";
  111. position: absolute;
  112. bottom: -5px;
  113. left: 0;
  114. width: 100%;
  115. height: 3px;
  116. background: linear-gradient(90deg, #2F7DAD, #5B8C5A);
  117. border-radius: 3px;
  118. }
  119. }
  120. }
  121. .more-link {
  122. color: #5B8C5A;
  123. text-decoration: none;
  124. font-size: 0.95rem;
  125. display: flex;
  126. align-items: center;
  127. transition: all 0.3s;
  128. &:hover {
  129. color: #2F7DAD;
  130. i {
  131. transform: translateX(3px);
  132. }
  133. }
  134. i {
  135. margin-left: 5px;
  136. transition: all 0.3s;
  137. }
  138. }
  139. /* 水墨按钮样式 */
  140. .ink-button {
  141. position: relative;
  142. background: none;
  143. border: none;
  144. color: #2F7DAD;
  145. padding: 8px 15px;
  146. font-size: 0.9rem;
  147. cursor: pointer;
  148. overflow: hidden;
  149. display: inline-flex;
  150. align-items: center;
  151. transition: all 0.3s;
  152. &::before {
  153. content: "";
  154. position: absolute;
  155. bottom: 0;
  156. left: 0;
  157. width: 100%;
  158. height: 1px;
  159. background: #D4B16A;
  160. transform: scaleX(0);
  161. transform-origin: right;
  162. transition: transform 0.3s;
  163. }
  164. &:hover {
  165. color: #5B8C5A;
  166. &::before {
  167. transform: scaleX(1);
  168. transform-origin: left;
  169. }
  170. i {
  171. transform: translateX(3px);
  172. }
  173. }
  174. i {
  175. margin-left: 5px;
  176. transition: all 0.3s;
  177. }
  178. }
  179. /* 智能Banner系统 */
  180. .banner-section {
  181. position: relative;
  182. padding: 30px 0 40px;
  183. background: linear-gradient(135deg, rgba(245,247,250,0.8) 0%, rgba(195,207,226,0.6) 100%);
  184. overflow: hidden;
  185. }
  186. .banner-container {
  187. max-width: 1200px;
  188. margin: 0 auto;
  189. padding: 0 5%;
  190. position: relative;
  191. z-index: 2;
  192. }
  193. .carousel {
  194. position: relative;
  195. border-radius: 12px;
  196. overflow: hidden;
  197. box-shadow: 0 8px 25px rgba(0,0,0,0.15);
  198. height: 350px;
  199. }
  200. .carousel-inner {
  201. height: 100%;
  202. position: relative;
  203. }
  204. .carousel-item {
  205. position: absolute;
  206. top: 0;
  207. left: 0;
  208. width: 100%;
  209. height: 100%;
  210. background-size: cover;
  211. background-position: center;
  212. opacity: 0;
  213. transition: opacity 1s ease;
  214. &.active {
  215. opacity: 1;
  216. }
  217. }
  218. .ink-overlay {
  219. position: absolute;
  220. top: 0;
  221. left: 0;
  222. width: 100%;
  223. height: 100%;
  224. background: linear-gradient(90deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.1) 100%);
  225. }
  226. .carousel-caption {
  227. position: absolute;
  228. bottom: 80px;
  229. left: 60px;
  230. color: white;
  231. text-shadow: 2px 2px 5px rgba(0,0,0,0.5);
  232. max-width: 600px;
  233. h3 {
  234. font-size: 2.5rem;
  235. margin-bottom: 15px;
  236. font-family: "赣锋体", serif;
  237. position: relative;
  238. display: inline-block;
  239. &::before {
  240. content: attr(data-text);
  241. position: absolute;
  242. top: 0;
  243. left: 0;
  244. color: transparent;
  245. -webkit-text-stroke: 1px white;
  246. z-index: 1;
  247. }
  248. }
  249. p {
  250. font-size: 1.3rem;
  251. margin-bottom: 20px;
  252. }
  253. }
  254. .brush-stroke {
  255. position: absolute;
  256. bottom: -15px;
  257. left: 0;
  258. width: 150px;
  259. height: 8px;
  260. background: #D4B16A;
  261. border-radius: 4px;
  262. opacity: 0.8;
  263. }
  264. .carousel-control {
  265. position: absolute;
  266. top: 50%;
  267. transform: translateY(-50%);
  268. background: rgba(255,255,255,0.3);
  269. border: none;
  270. width: 50px;
  271. height: 50px;
  272. border-radius: 50%;
  273. color: white;
  274. font-size: 1.5rem;
  275. cursor: pointer;
  276. transition: all 0.3s;
  277. z-index: 3;
  278. display: flex;
  279. align-items: center;
  280. justify-content: center;
  281. backdrop-filter: blur(5px);
  282. &:hover {
  283. background: rgba(255,255,255,0.5);
  284. transform: translateY(-50%) scale(1.1);
  285. }
  286. &.prev {
  287. left: 30px;
  288. }
  289. &.next {
  290. right: 30px;
  291. }
  292. }
  293. .carousel-indicators {
  294. position: absolute;
  295. bottom: 20px;
  296. left: 50%;
  297. transform: translateX(-50%);
  298. display: flex;
  299. gap: 10px;
  300. z-index: 3;
  301. span {
  302. width: 12px;
  303. height: 12px;
  304. border-radius: 50%;
  305. background: rgba(255,255,255,0.5);
  306. cursor: pointer;
  307. transition: all 0.3s;
  308. &.active {
  309. background: #D4B16A;
  310. transform: scale(1.2);
  311. }
  312. }
  313. }
  314. /* 快速入口 */
  315. .quick-access {
  316. display: flex;
  317. justify-content: center;
  318. margin-top: 30px;
  319. gap: 25px;
  320. }
  321. .quick-item {
  322. position: relative;
  323. width: 120px;
  324. height: 120px;
  325. display: flex;
  326. flex-direction: column;
  327. align-items: center;
  328. justify-content: center;
  329. cursor: pointer;
  330. transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  331. i {
  332. font-size: 2.5rem;
  333. color: white;
  334. margin-bottom: 10px;
  335. transition: all 0.3s;
  336. position: relative;
  337. z-index: 2;
  338. }
  339. span {
  340. font-size: 1rem;
  341. color: white;
  342. position: relative;
  343. z-index: 2;
  344. text-align: center;
  345. transition: all 0.3s;
  346. }
  347. }
  348. .ceramic-disk {
  349. &::before {
  350. content: "";
  351. position: absolute;
  352. top: 0;
  353. left: 0;
  354. width: 100%;
  355. height: 100%;
  356. background: linear-gradient(135deg, #2F7DAD, #5B8C5A);
  357. border-radius: 50%;
  358. z-index: 1;
  359. transition: all 0.5s;
  360. }
  361. &:hover {
  362. transform: translateY(-10px) rotate(5deg);
  363. &::before {
  364. transform: scale(1.05);
  365. box-shadow: 0 10px 25px rgba(47,125,173,0.4);
  366. }
  367. .disk-border {
  368. opacity: 0.8;
  369. }
  370. i {
  371. transform: scale(1.1);
  372. }
  373. }
  374. }
  375. .disk-border {
  376. position: absolute;
  377. top: 0;
  378. left: 0;
  379. width: 100%;
  380. height: 100%;
  381. border-radius: 50%;
  382. border: 2px solid rgba(212,177,106,0.5);
  383. opacity: 0;
  384. transition: all 0.5s;
  385. z-index: 2;
  386. }
  387. .disk-shadow {
  388. position: absolute;
  389. bottom: -10px;
  390. left: 10%;
  391. width: 80%;
  392. height: 20px;
  393. background: radial-gradient(ellipse at center, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0) 80%);
  394. filter: blur(5px);
  395. z-index: 0;
  396. transition: all 0.5s;
  397. }
  398. /* 数智动态区 */
  399. .dynamic-section {
  400. position: relative;
  401. padding: 40px 0;
  402. background: rgba(255,255,255,0.7);
  403. backdrop-filter: blur(5px);
  404. margin: 30px 0;
  405. border-top: 1px solid rgba(212,177,106,0.2);
  406. border-bottom: 1px solid rgba(212,177,106,0.2);
  407. }
  408. .dynamic-grid {
  409. display: grid;
  410. grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
  411. gap: 25px;
  412. margin: 0 5%;
  413. position: relative;
  414. z-index: 1;
  415. }
  416. .dynamic-card {
  417. background: white;
  418. border-radius: 12px;
  419. overflow: hidden;
  420. box-shadow: 0 5px 20px rgba(0,0,0,0.08);
  421. transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.1);
  422. position: relative;
  423. border: 1px solid rgba(212,177,106,0.1);
  424. &:hover {
  425. transform: translateY(-10px);
  426. box-shadow: 0 15px 30px rgba(0,0,0,0.15);
  427. .card-header {
  428. background-size: 120%;
  429. }
  430. }
  431. }
  432. .scroll-fade {
  433. opacity: 0;
  434. transform: translateY(30px);
  435. transition: all 0.6s ease-out;
  436. &.visible {
  437. opacity: 1;
  438. transform: translateY(0);
  439. }
  440. }
  441. .card-header {
  442. padding: 18px 25px;
  443. background: linear-gradient(90deg, #2F7DAD, #5B8C5A);
  444. color: white;
  445. display: flex;
  446. justify-content: space-between;
  447. align-items: center;
  448. position: relative;
  449. overflow: hidden;
  450. transition: all 0.5s;
  451. h3 {
  452. margin: 0;
  453. font-size: 1.3rem;
  454. display: flex;
  455. align-items: center;
  456. position: relative;
  457. z-index: 2;
  458. }
  459. i {
  460. margin-right: 10px;
  461. font-size: 1.3rem;
  462. }
  463. }
  464. .title-container {
  465. display: flex;
  466. align-items: center;
  467. }
  468. .ink-splash {
  469. position: absolute;
  470. top: -50px;
  471. right: -50px;
  472. width: 150px;
  473. height: 150px;
  474. background: radial-gradient(circle, rgba(212,177,106,0.3) 0%, rgba(212,177,106,0) 70%);
  475. border-radius: 50%;
  476. z-index: 1;
  477. }
  478. .tag {
  479. padding: 5px 10px;
  480. border-radius: 20px;
  481. font-size: 0.75rem;
  482. font-weight: bold;
  483. position: relative;
  484. z-index: 2;
  485. &.ai-tag {
  486. background: rgba(227,242,253,0.9);
  487. color: #1976D2;
  488. }
  489. &.blockchain-tag {
  490. background: rgba(232,245,233,0.9);
  491. color: #388E3C;
  492. }
  493. &.kg-tag {
  494. background: rgba(243,229,245,0.9);
  495. color: #8E24AA;
  496. }
  497. }
  498. .card-content {
  499. padding: 20px 25px;
  500. }
  501. /* 新闻动态卡片 */
  502. .news-list {
  503. list-style: none;
  504. padding: 0;
  505. margin: 0 0 20px;
  506. }
  507. .news-item {
  508. padding: 12px 0;
  509. border-bottom: 1px solid #eee;
  510. display: flex;
  511. justify-content: space-between;
  512. align-items: center;
  513. transition: all 0.3s;
  514. &:last-child {
  515. border-bottom: none;
  516. }
  517. &:hover {
  518. background: rgba(245,247,250,0.5);
  519. .news-title {
  520. color: #2F7DAD;
  521. }
  522. .news-dot {
  523. transform: scale(1.2);
  524. background: #D4B16A;
  525. }
  526. }
  527. }
  528. .news-dot {
  529. width: 8px;
  530. height: 8px;
  531. border-radius: 50%;
  532. background: #5B8C5A;
  533. margin-right: 12px;
  534. transition: all 0.3s;
  535. }
  536. .news-title {
  537. flex: 1;
  538. white-space: nowrap;
  539. overflow: hidden;
  540. text-overflow: ellipsis;
  541. font-size: 0.95rem;
  542. transition: all 0.3s;
  543. }
  544. .news-date {
  545. color: #888;
  546. margin-left: 10px;
  547. font-size: 0.85rem;
  548. min-width: 50px;
  549. text-align: right;
  550. }
  551. .news-chart {
  552. height: 180px;
  553. margin-top: 15px;
  554. position: relative;
  555. .echarts-container {
  556. width: 100%;
  557. height: 100%;
  558. }
  559. }
  560. /* 文件传达卡片 */
  561. .document-item {
  562. display: flex;
  563. align-items: center;
  564. padding: 12px 0;
  565. cursor: pointer;
  566. transition: all 0.3s;
  567. &:hover {
  568. background: rgba(245,247,250,0.5);
  569. .document-title {
  570. color: #2F7DAD;
  571. }
  572. .gold-border {
  573. opacity: 1;
  574. transform: scale(1.05);
  575. }
  576. }
  577. }
  578. .document-icon {
  579. width: 40px;
  580. height: 40px;
  581. border-radius: 8px;
  582. background: #f5f5f5;
  583. display: flex;
  584. align-items: center;
  585. justify-content: center;
  586. margin-right: 15px;
  587. position: relative;
  588. i {
  589. color: #D4B16A;
  590. font-size: 1.3rem;
  591. }
  592. }
  593. .gold-border {
  594. position: absolute;
  595. top: 0;
  596. left: 0;
  597. width: 100%;
  598. height: 100%;
  599. border: 1px solid #D4B16A;
  600. border-radius: 8px;
  601. opacity: 0;
  602. transition: all 0.3s;
  603. }
  604. .document-info {
  605. flex: 1;
  606. min-width: 0;
  607. }
  608. .document-title {
  609. display: block;
  610. white-space: nowrap;
  611. overflow: hidden;
  612. text-overflow: ellipsis;
  613. font-size: 0.95rem;
  614. margin-bottom: 3px;
  615. transition: all 0.3s;
  616. }
  617. .document-meta {
  618. display: flex;
  619. font-size: 0.8rem;
  620. color: #888;
  621. .document-size {
  622. margin-right: 10px;
  623. }
  624. .document-hash {
  625. font-family: monospace;
  626. background: #f5f5f5;
  627. padding: 2px 5px;
  628. border-radius: 3px;
  629. }
  630. }
  631. .blockchain-visual {
  632. height: 150px;
  633. margin-top: 15px;
  634. background: #f9f9f9;
  635. border-radius: 8px;
  636. overflow: hidden;
  637. .echarts-container {
  638. width: 100%;
  639. height: 100%;
  640. }
  641. }
  642. /* 学术前沿卡片 */
  643. .knowledge-poem {
  644. text-align: center;
  645. margin-bottom: 20px;
  646. font-family: "赣锋体", serif;
  647. .poem-line {
  648. font-size: 1.3rem;
  649. color: #2F7DAD;
  650. margin: 5px 0;
  651. line-height: 1.6;
  652. }
  653. .poem-author {
  654. font-size: 0.9rem;
  655. color: #888;
  656. margin-top: 10px;
  657. font-style: italic;
  658. }
  659. }
  660. .knowledge-graph {
  661. height: 250px;
  662. position: relative;
  663. .echarts-container {
  664. width: 100%;
  665. height: 100%;
  666. }
  667. }
  668. .graph-legend {
  669. position: absolute;
  670. bottom: 10px;
  671. left: 10px;
  672. display: flex;
  673. gap: 15px;
  674. background: rgba(255,255,255,0.8);
  675. padding: 5px 10px;
  676. border-radius: 20px;
  677. box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  678. .legend-item {
  679. font-size: 0.8rem;
  680. color: #555;
  681. display: flex;
  682. align-items: center;
  683. }
  684. .legend-dot {
  685. width: 10px;
  686. height: 10px;
  687. border-radius: 50%;
  688. margin-right: 5px;
  689. &.cultural {
  690. background: #2F7DAD;
  691. }
  692. &.scenic {
  693. background: #5B8C5A;
  694. }
  695. &.figure {
  696. background: #D4B16A;
  697. }
  698. }
  699. }
  700. /* 共创展示区 */
  701. .showcase-section {
  702. position: relative;
  703. padding: 40px 0;
  704. background: rgba(249,245,240,0.7);
  705. backdrop-filter: blur(3px);
  706. }
  707. .showcase-tabs {
  708. display: flex;
  709. margin: 0 5% 25px;
  710. border-bottom: 1px solid rgba(212,177,106,0.3);
  711. position: relative;
  712. z-index: 1;
  713. }
  714. .tab-btn {
  715. padding: 12px 25px;
  716. background: none;
  717. border: none;
  718. position: relative;
  719. cursor: pointer;
  720. font-size: 1rem;
  721. color: #666;
  722. transition: all 0.3s;
  723. display: flex;
  724. flex-direction: column;
  725. align-items: center;
  726. &.active {
  727. color: #2F7DAD;
  728. .tab-ink {
  729. transform: translateY(0);
  730. }
  731. .ink-underline {
  732. width: 100%;
  733. opacity: 1;
  734. }
  735. }
  736. }
  737. .ink-tab {
  738. overflow: hidden;
  739. .tab-ink {
  740. display: inline-block;
  741. transition: all 0.3s;
  742. transform: translateY(100%);
  743. }
  744. .ink-underline {
  745. width: 0;
  746. height: 3px;
  747. background: #D4B16A;
  748. border-radius: 3px;
  749. margin-top: 5px;
  750. opacity: 0;
  751. transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  752. }
  753. }
  754. .showcase-content {
  755. margin: 0 5%;
  756. }
  757. .showcase-panel {
  758. display: none;
  759. &.active {
  760. display: block;
  761. animation: fadeIn 0.5s ease-out;
  762. }
  763. }
  764. @keyframes fadeIn {
  765. from { opacity: 0; transform: translateY(20px); }
  766. to { opacity: 1; transform: translateY(0); }
  767. }
  768. /* 数字文创展廊 */
  769. .aigc-gallery {
  770. display: grid;
  771. grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  772. gap: 25px;
  773. }
  774. .gallery-item {
  775. position: relative;
  776. border-radius: 12px;
  777. overflow: hidden;
  778. box-shadow: 0 5px 15px rgba(0,0,0,0.1);
  779. transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.1);
  780. height: 350px;
  781. &:hover {
  782. transform: translateY(-10px);
  783. box-shadow: 0 15px 30px rgba(0,0,0,0.2);
  784. .gallery-caption {
  785. transform: translateY(0);
  786. }
  787. .gallery-view {
  788. opacity: 1;
  789. transform: translateY(0);
  790. }
  791. .gallery-ink {
  792. opacity: 0.3;
  793. }
  794. }
  795. }
  796. .gallery-ink {
  797. position: absolute;
  798. top: 0;
  799. left: 0;
  800. width: 100%;
  801. height: 100%;
  802. background: radial-gradient(circle at center, rgba(47,125,173,0.5) 0%, rgba(47,125,173,0) 70%);
  803. opacity: 0;
  804. transition: all 0.5s;
  805. z-index: 1;
  806. }
  807. .gallery-item img {
  808. width: 100%;
  809. height: 100%;
  810. object-fit: cover;
  811. display: block;
  812. }
  813. .gallery-caption {
  814. position: absolute;
  815. bottom: 0;
  816. left: 0;
  817. right: 0;
  818. background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 100%);
  819. color: white;
  820. padding: 20px;
  821. transform: translateY(30px);
  822. transition: all 0.5s;
  823. z-index: 2;
  824. h4 {
  825. margin: 0 0 5px;
  826. font-size: 1.3rem;
  827. }
  828. p {
  829. margin: 0;
  830. font-size: 0.9rem;
  831. color: rgba(255,255,255,0.8);
  832. }
  833. }
  834. .caption-border {
  835. position: absolute;
  836. bottom: 15px;
  837. left: 20px;
  838. width: 50px;
  839. height: 2px;
  840. background: #D4B16A;
  841. }
  842. .gallery-view {
  843. position: absolute;
  844. top: 20px;
  845. right: 20px;
  846. background: rgba(212,177,106,0.9);
  847. color: white;
  848. border: none;
  849. padding: 8px 15px;
  850. border-radius: 20px;
  851. font-size: 0.9rem;
  852. cursor: pointer;
  853. opacity: 0;
  854. transform: translateY(-20px);
  855. transition: all 0.5s;
  856. z-index: 3;
  857. display: flex;
  858. align-items: center;
  859. &:hover {
  860. background: #2F7DAD;
  861. }
  862. i {
  863. margin-left: 5px;
  864. }
  865. }
  866. /* 文旅IP孵化榜 */
  867. .ip-ranking {
  868. background: white;
  869. border-radius: 12px;
  870. padding: 25px;
  871. box-shadow: 0 5px 20px rgba(0,0,0,0.08);
  872. }
  873. .ip-header {
  874. display: flex;
  875. justify-content: space-between;
  876. align-items: center;
  877. margin-bottom: 20px;
  878. h3 {
  879. margin: 0;
  880. color: #2F7DAD;
  881. font-size: 1.4rem;
  882. }
  883. }
  884. .ip-filter {
  885. display: flex;
  886. gap: 10px;
  887. span {
  888. padding: 5px 12px;
  889. border-radius: 15px;
  890. font-size: 0.85rem;
  891. cursor: pointer;
  892. transition: all 0.3s;
  893. &.filter-active {
  894. background: #5B8C5A;
  895. color: white;
  896. }
  897. &:not(.filter-active):hover {
  898. background: #f5f5f5;
  899. color: #2F7DAD;
  900. }
  901. }
  902. }
  903. .ip-list {
  904. margin-bottom: 25px;
  905. }
  906. .ip-item {
  907. display: flex;
  908. align-items: center;
  909. padding: 15px 0;
  910. border-bottom: 1px solid #eee;
  911. &:last-child {
  912. border-bottom: none;
  913. }
  914. }
  915. .ip-rank {
  916. width: 30px;
  917. height: 30px;
  918. background: #D4B16A;
  919. color: white;
  920. border-radius: 50%;
  921. display: flex;
  922. align-items: center;
  923. justify-content: center;
  924. margin-right: 15px;
  925. font-weight: bold;
  926. flex-shrink: 0;
  927. }
  928. .ip-avatar {
  929. width: 50px;
  930. height: 50px;
  931. border-radius: 50%;
  932. background-size: cover;
  933. background-position: center;
  934. margin-right: 15px;
  935. border: 2px solid #f5f5f5;
  936. flex-shrink: 0;
  937. }
  938. .ip-info {
  939. flex: 1;
  940. min-width: 0;
  941. h4 {
  942. margin: 0 0 5px;
  943. color: #2F7DAD;
  944. white-space: nowrap;
  945. overflow: hidden;
  946. text-overflow: ellipsis;
  947. }
  948. .ip-desc {
  949. margin: 0;
  950. color: #666;
  951. font-size: 0.85rem;
  952. }
  953. }
  954. .ip-stats {
  955. display: flex;
  956. gap: 15px;
  957. margin-top: 8px;
  958. .stat-item {
  959. display: flex;
  960. align-items: center;
  961. font-size: 0.8rem;
  962. color: #888;
  963. i {
  964. margin-right: 5px;
  965. color: #5B8C5A;
  966. }
  967. }
  968. }
  969. .ip-chart {
  970. width: 80px;
  971. height: 40px;
  972. flex-shrink: 0;
  973. .mini-echarts {
  974. width: 100%;
  975. height: 100%;
  976. }
  977. }
  978. .ip-map {
  979. height: 250px;
  980. background: #f9f9f9;
  981. border-radius: 8px;
  982. overflow: hidden;
  983. .echarts-container {
  984. width: 100%;
  985. height: 100%;
  986. }
  987. }
  988. /* XR云展厅 */
  989. .xr-showroom {
  990. background: white;
  991. border-radius: 12px;
  992. padding: 25px;
  993. box-shadow: 0 5px 20px rgba(0,0,0,0.08);
  994. }
  995. .xr-header {
  996. display: flex;
  997. justify-content: space-between;
  998. align-items: center;
  999. margin-bottom: 20px;
  1000. h3 {
  1001. margin: 0;
  1002. color: #2F7DAD;
  1003. font-size: 1.4rem;
  1004. }
  1005. }
  1006. .xr-controls {
  1007. display: flex;
  1008. gap: 10px;
  1009. }
  1010. .xr-btn {
  1011. background: rgba(91,140,90,0.1);
  1012. border: 1px solid rgba(91,140,90,0.3);
  1013. color: #5B8C5A;
  1014. padding: 8px 15px;
  1015. border-radius: 20px;
  1016. font-size: 0.9rem;
  1017. cursor: pointer;
  1018. transition: all 0.3s;
  1019. display: flex;
  1020. align-items: center;
  1021. &:hover {
  1022. background: rgba(91,140,90,0.2);
  1023. }
  1024. i {
  1025. margin-right: 5px;
  1026. }
  1027. }
  1028. .webgl-container {
  1029. position: relative;
  1030. height: 400px;
  1031. background: #f5f5f5;
  1032. border-radius: 8px;
  1033. overflow: hidden;
  1034. }
  1035. .xr-placeholder {
  1036. width: 100%;
  1037. height: 100%;
  1038. position: relative;
  1039. img {
  1040. width: 100%;
  1041. height: 100%;
  1042. object-fit: cover;
  1043. }
  1044. }
  1045. .xr-loading {
  1046. position: absolute;
  1047. top: 50%;
  1048. left: 50%;
  1049. transform: translate(-50%, -50%);
  1050. display: flex;
  1051. flex-direction: column;
  1052. align-items: center;
  1053. color: white;
  1054. text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
  1055. .tea-leaf {
  1056. width: 40px;
  1057. height: 40px;
  1058. // background: url('assets/images/tea-leaf.png') center no-repeat;
  1059. background-size: contain;
  1060. animation: float 2s infinite ease-in-out;
  1061. margin-bottom: 10px;
  1062. }
  1063. }
  1064. .xr-exhibits {
  1065. position: absolute;
  1066. bottom: 20px;
  1067. left: 20px;
  1068. display: flex;
  1069. gap: 10px;
  1070. z-index: 2;
  1071. }
  1072. .exhibit-item {
  1073. width: 60px;
  1074. height: 60px;
  1075. border-radius: 8px;
  1076. background: white;
  1077. display: flex;
  1078. flex-direction: column;
  1079. align-items: center;
  1080. justify-content: center;
  1081. cursor: pointer;
  1082. transition: all 0.3s;
  1083. overflow: hidden;
  1084. position: relative;
  1085. &.active {
  1086. box-shadow: 0 0 0 2px #D4B16A;
  1087. &::after {
  1088. content: "";
  1089. position: absolute;
  1090. top: 0;
  1091. left: 0;
  1092. width: 100%;
  1093. height: 100%;
  1094. background: rgba(212,177,106,0.1);
  1095. }
  1096. }
  1097. &:hover {
  1098. transform: translateY(-5px);
  1099. }
  1100. }
  1101. .exhibit-icon {
  1102. width: 40px;
  1103. height: 40px;
  1104. border-radius: 4px;
  1105. background-size: cover;
  1106. background-position: center;
  1107. }
  1108. .exhibit-item span {
  1109. font-size: 0.7rem;
  1110. margin-top: 2px;
  1111. color: #333;
  1112. }
  1113. .enter-btn {
  1114. position: absolute;
  1115. bottom: 30px;
  1116. left: 50%;
  1117. transform: translateX(-50%);
  1118. background: linear-gradient(to right, #2F7DAD, #5B8C5A);
  1119. color: white;
  1120. border: none;
  1121. padding: 12px 30px;
  1122. border-radius: 30px;
  1123. font-size: 1rem;
  1124. cursor: pointer;
  1125. transition: all 0.3s;
  1126. overflow: hidden;
  1127. z-index: 2;
  1128. display: flex;
  1129. align-items: center;
  1130. &:hover {
  1131. transform: translateX(-50%) scale(1.05);
  1132. box-shadow: 0 5px 15px rgba(47,125,173,0.4);
  1133. }
  1134. }
  1135. .gold-button {
  1136. background: linear-gradient(to right, #D4B16A, #E8C878);
  1137. position: relative;
  1138. .gold-effect {
  1139. position: absolute;
  1140. top: -50%;
  1141. left: -50%;
  1142. width: 200%;
  1143. height: 200%;
  1144. background: linear-gradient(
  1145. to bottom right,
  1146. rgba(255,255,255,0) 45%,
  1147. rgba(255,255,255,0.8) 50%,
  1148. rgba(255,255,255,0) 55%
  1149. );
  1150. transform: rotate(30deg);
  1151. transition: all 0.5s;
  1152. opacity: 0;
  1153. }
  1154. &:hover .gold-effect {
  1155. opacity: 1;
  1156. animation: shine 1.5s;
  1157. }
  1158. }
  1159. @keyframes shine {
  1160. 0% { left: -50%; top: -50%; }
  1161. 100% { left: 150%; top: 150%; }
  1162. }
  1163. /* 协会智能体 */
  1164. .ai-agent-section {
  1165. position: relative;
  1166. padding: 40px 0 60px;
  1167. background: rgba(255,255,255,0.7);
  1168. backdrop-filter: blur(5px);
  1169. margin-top: 30px;
  1170. }
  1171. .ai-agent-grid {
  1172. display: grid;
  1173. grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
  1174. gap: 25px;
  1175. margin: 0 5%;
  1176. position: relative;
  1177. z-index: 1;
  1178. }
  1179. .ai-card {
  1180. background: white;
  1181. border-radius: 12px;
  1182. overflow: hidden;
  1183. box-shadow: 0 5px 20px rgba(0,0,0,0.08);
  1184. transition: all 0.5s;
  1185. border: 1px solid rgba(212,177,106,0.1);
  1186. &:hover {
  1187. transform: translateY(-10px);
  1188. box-shadow: 0 15px 30px rgba(0,0,0,0.15);
  1189. }
  1190. }
  1191. .chatbot-card .card-header {
  1192. background: linear-gradient(90deg, #5B8C5A, #8BC34A);
  1193. }
  1194. .dashboard-card .card-header {
  1195. background: linear-gradient(90deg, #2F7DAD, #64B5F6);
  1196. }
  1197. .online-status {
  1198. background: #4CAF50;
  1199. padding: 5px 10px;
  1200. border-radius: 15px;
  1201. font-size: 0.75rem;
  1202. color: white;
  1203. display: flex;
  1204. align-items: center;
  1205. &::before {
  1206. content: "";
  1207. width: 8px;
  1208. height: 8px;
  1209. background: white;
  1210. border-radius: 50%;
  1211. margin-right: 5px;
  1212. animation: pulse 1.5s infinite;
  1213. }
  1214. }
  1215. @keyframes pulse {
  1216. 0% { opacity: 1; }
  1217. 50% { opacity: 0.5; }
  1218. 100% { opacity: 1; }
  1219. }
  1220. .update-time {
  1221. color: rgba(255,255,255,0.8);
  1222. font-size: 0.8rem;
  1223. }
  1224. .chat-preview {
  1225. background: #f9f9f9;
  1226. border-radius: 8px;
  1227. padding: 20px;
  1228. margin-bottom: 20px;
  1229. }
  1230. .chat-message {
  1231. display: flex;
  1232. margin-bottom: 15px;
  1233. &.ai-message {
  1234. .message-content {
  1235. background: white;
  1236. border: 1px solid #eee;
  1237. &::before {
  1238. border-right-color: white;
  1239. }
  1240. }
  1241. }
  1242. }
  1243. .message-avatar {
  1244. width: 40px;
  1245. height: 40px;
  1246. border-radius: 50%;
  1247. margin-right: 10px;
  1248. flex-shrink: 0;
  1249. position: relative;
  1250. img {
  1251. width: 100%;
  1252. height: 100%;
  1253. border-radius: 50%;
  1254. object-fit: cover;
  1255. position: relative;
  1256. z-index: 1;
  1257. }
  1258. .wave-animation {
  1259. position: absolute;
  1260. top: -5px;
  1261. left: -5px;
  1262. right: -5px;
  1263. bottom: -5px;
  1264. border: 2px solid rgba(91,140,90,0.3);
  1265. border-radius: 50%;
  1266. animation: wave 2s infinite;
  1267. opacity: 0;
  1268. }
  1269. }
  1270. @keyframes wave {
  1271. 0% { transform: scale(0.8); opacity: 0; }
  1272. 50% { opacity: 0.8; }
  1273. 100% { transform: scale(1.2); opacity: 0; }
  1274. }
  1275. .message-content {
  1276. background: #5B8C5A;
  1277. color: white;
  1278. padding: 12px 15px;
  1279. border-radius: 18px;
  1280. position: relative;
  1281. max-width: 80%;
  1282. &::before {
  1283. content: "";
  1284. position: absolute;
  1285. left: -8px;
  1286. top: 15px;
  1287. border-width: 8px 8px 8px 0;
  1288. border-style: solid;
  1289. border-color: transparent #5B8C5A transparent transparent;
  1290. }
  1291. p {
  1292. margin: 0;
  1293. font-size: 0.95rem;
  1294. }
  1295. .message-time {
  1296. font-size: 0.7rem;
  1297. color: rgba(255,255,255,0.7);
  1298. text-align: right;
  1299. margin-top: 5px;
  1300. }
  1301. }
  1302. .quick-questions {
  1303. display: flex;
  1304. flex-wrap: wrap;
  1305. gap: 8px;
  1306. }
  1307. .quick-question {
  1308. background: rgba(91,140,90,0.1);
  1309. border: none;
  1310. color: #5B8C5A;
  1311. padding: 6px 12px;
  1312. border-radius: 15px;
  1313. font-size: 0.8rem;
  1314. cursor: pointer;
  1315. transition: all 0.3s;
  1316. &:hover {
  1317. background: rgba(91,140,90,0.2);
  1318. }
  1319. }
  1320. .chat-btn {
  1321. width: 100%;
  1322. padding: 12px;
  1323. background: linear-gradient(to right, #5B8C5A, #8BC34A);
  1324. color: white;
  1325. border: none;
  1326. border-radius: 8px;
  1327. font-size: 1rem;
  1328. cursor: pointer;
  1329. transition: all 0.3s;
  1330. display: flex;
  1331. align-items: center;
  1332. justify-content: center;
  1333. &:hover {
  1334. background: linear-gradient(to right, #4a7a49, #7ab239);
  1335. box-shadow: 0 5px 15px rgba(91,140,90,0.3);
  1336. }
  1337. i {
  1338. margin-right: 8px;
  1339. font-size: 1.2rem;
  1340. }
  1341. }
  1342. /* 数据看板卡片 */
  1343. .stats-grid {
  1344. display: grid;
  1345. grid-template-columns: repeat(3, 1fr);
  1346. gap: 15px;
  1347. margin-bottom: 20px;
  1348. }
  1349. .stat-item {
  1350. background: #f9f9f9;
  1351. border-radius: 8px;
  1352. padding: 15px;
  1353. text-align: center;
  1354. position: relative;
  1355. }
  1356. .stat-icon {
  1357. width: 40px;
  1358. height: 40px;
  1359. background: rgba(47,125,173,0.1);
  1360. border-radius: 50%;
  1361. display: flex;
  1362. align-items: center;
  1363. justify-content: center;
  1364. margin: 0 auto 10px;
  1365. i {
  1366. color: #2F7DAD;
  1367. font-size: 1.2rem;
  1368. }
  1369. }
  1370. .stat-value {
  1371. font-size: 1.8rem;
  1372. font-weight: bold;
  1373. color: #2F7DAD;
  1374. margin-bottom: 5px;
  1375. }
  1376. .stat-label {
  1377. font-size: 0.9rem;
  1378. color: #666;
  1379. }
  1380. .mini-echarts {
  1381. width: 100%;
  1382. height: 40px;
  1383. margin-top: 10px;
  1384. }
  1385. .data-timeline {
  1386. height: 200px;
  1387. background: #f9f9f9;
  1388. border-radius: 8px;
  1389. .echarts-container {
  1390. width: 100%;
  1391. height: 100%;
  1392. }
  1393. }
  1394. /* 水墨过渡效果 */
  1395. .ink-transition {
  1396. position: fixed;
  1397. top: 0;
  1398. left: 0;
  1399. width: 100%;
  1400. height: 100%;
  1401. // background: url('assets/images/ink-transition.png') center no-repeat;
  1402. background-size: cover;
  1403. pointer-events: none;
  1404. z-index: 1000;
  1405. opacity: 0;
  1406. transition: opacity 0.8s;
  1407. &.active {
  1408. opacity: 1;
  1409. }
  1410. }
  1411. /* 响应式设计 */
  1412. @media (max-width: 992px) {
  1413. .dynamic-grid, .ai-agent-grid {
  1414. grid-template-columns: 1fr;
  1415. }
  1416. .aigc-gallery {
  1417. grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  1418. }
  1419. }
  1420. @media (max-width: 768px) {
  1421. .carousel {
  1422. height: 250px;
  1423. }
  1424. .carousel-caption {
  1425. bottom: 50px;
  1426. left: 30px;
  1427. h3 {
  1428. font-size: 1.8rem;
  1429. }
  1430. p {
  1431. font-size: 1.1rem;
  1432. }
  1433. }
  1434. .quick-access {
  1435. flex-wrap: wrap;
  1436. justify-content: center;
  1437. }
  1438. .quick-item {
  1439. width: 100px;
  1440. height: 100px;
  1441. }
  1442. .showcase-tabs {
  1443. overflow-x: auto;
  1444. white-space: nowrap;
  1445. padding-bottom: 5px;
  1446. &::-webkit-scrollbar {
  1447. display: none;
  1448. }
  1449. }
  1450. .tab-btn {
  1451. padding: 10px 15px;
  1452. font-size: 0.9rem;
  1453. }
  1454. .webgl-container {
  1455. height: 300px;
  1456. }
  1457. }
  1458. @media (max-width: 576px) {
  1459. .section-header h2 {
  1460. font-size: 1.5rem;
  1461. }
  1462. .carousel {
  1463. height: 200px;
  1464. }
  1465. .carousel-caption {
  1466. bottom: 30px;
  1467. left: 20px;
  1468. h3 {
  1469. font-size: 1.5rem;
  1470. }
  1471. p {
  1472. font-size: 1rem;
  1473. }
  1474. }
  1475. .quick-item {
  1476. width: 80px;
  1477. height: 80px;
  1478. i {
  1479. font-size: 2rem;
  1480. }
  1481. span {
  1482. font-size: 0.9rem;
  1483. }
  1484. }
  1485. }
  1486. /* 新增的页脚样式 */
  1487. .footer {
  1488. background: linear-gradient(135deg, #2F7DAD, #1a4b6b);
  1489. color: white;
  1490. padding: 60px 0 30px;
  1491. position: relative;
  1492. margin-top: 60px;
  1493. &::before {
  1494. content: "";
  1495. position: absolute;
  1496. top: -50px;
  1497. left: 0;
  1498. width: 100%;
  1499. height: 50px;
  1500. background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(47,125,173,0.3));
  1501. }
  1502. }
  1503. .footer-container {
  1504. max-width: 1200px;
  1505. margin: 0 auto;
  1506. padding: 0 5%;
  1507. }
  1508. .footer-grid {
  1509. display: grid;
  1510. grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  1511. gap: 40px;
  1512. margin-bottom: 40px;
  1513. }
  1514. .footer-col {
  1515. h3 {
  1516. font-size: 1.2rem;
  1517. margin-bottom: 20px;
  1518. position: relative;
  1519. padding-bottom: 10px;
  1520. font-family: "赣锋体", serif;
  1521. &::after {
  1522. content: "";
  1523. position: absolute;
  1524. bottom: 0;
  1525. left: 0;
  1526. width: 40px;
  1527. height: 2px;
  1528. background: #D4B16A;
  1529. }
  1530. }
  1531. }
  1532. .footer-links {
  1533. list-style: none;
  1534. padding: 0;
  1535. margin: 0;
  1536. li {
  1537. margin-bottom: 12px;
  1538. }
  1539. a {
  1540. color: rgba(255,255,255,0.8);
  1541. text-decoration: none;
  1542. transition: all 0.3s;
  1543. font-size: 0.95rem;
  1544. display: inline-block;
  1545. position: relative;
  1546. &::after {
  1547. content: "";
  1548. position: absolute;
  1549. bottom: -2px;
  1550. left: 0;
  1551. width: 0;
  1552. height: 1px;
  1553. background: #D4B16A;
  1554. transition: width 0.3s;
  1555. }
  1556. &:hover {
  1557. color: white;
  1558. transform: translateX(5px);
  1559. &::after {
  1560. width: 100%;
  1561. }
  1562. }
  1563. }
  1564. }
  1565. .footer-bottom {
  1566. border-top: 1px solid rgba(255,255,255,0.1);
  1567. padding-top: 30px;
  1568. text-align: center;
  1569. font-size: 0.9rem;
  1570. color: rgba(255,255,255,0.6);
  1571. p {
  1572. margin: 0;
  1573. }
  1574. }
  1575. /* 响应式设计 */
  1576. @media (max-width: 768px) {
  1577. .footer {
  1578. padding: 40px 0 20px;
  1579. }
  1580. .footer-grid {
  1581. grid-template-columns: 1fr 1fr;
  1582. gap: 30px;
  1583. }
  1584. }
  1585. @media (max-width: 480px) {
  1586. .footer-grid {
  1587. grid-template-columns: 1fr;
  1588. gap: 25px;
  1589. }
  1590. .footer-col {
  1591. h3 {
  1592. font-size: 1.1rem;
  1593. margin-bottom: 15px;
  1594. }
  1595. }
  1596. .footer-links a {
  1597. font-size: 0.9rem;
  1598. }
  1599. .footer-bottom {
  1600. font-size: 0.8rem;
  1601. }
  1602. }