style.css 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. /* 基本样式重置 */
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }
  7. body {
  8. font-family: 'PingFang SC', 'Microsoft YaHei', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  9. line-height: 1.6;
  10. color: #333;
  11. background-color: #f5f7fa;
  12. background-image: linear-gradient(to right, rgba(245, 247, 250, 0.8) 1px, transparent 1px),
  13. linear-gradient(to bottom, rgba(245, 247, 250, 0.8) 1px, transparent 1px);
  14. background-size: 20px 20px;
  15. margin: 0 auto;
  16. font-size:100%;
  17. }
  18. .container {
  19. width: 100%;
  20. max-width: 1200px;
  21. margin: 0 auto;
  22. padding: 0 20px;
  23. }
  24. /* 主内容区 */
  25. main {
  26. padding: 40px 0;
  27. }
  28. .app-container {
  29. display: flex;
  30. gap: 30px;
  31. margin-bottom: 30px;
  32. }
  33. /* 左侧边栏 */
  34. .sidebar {
  35. flex: 0 0 350px;
  36. display: flex;
  37. flex-direction: column;
  38. gap: 15px;
  39. }
  40. /* 面板共用样式 */
  41. .panel {
  42. background: white;
  43. border-radius: 12px;
  44. padding: 15px;
  45. box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
  46. transition: box-shadow 0.3s;
  47. position: relative;
  48. overflow: hidden;
  49. }
  50. .panel:hover {
  51. box-shadow: 0 15px 35px rgba(0, 0, 0, 0.12);
  52. }
  53. .panel::after {
  54. content: '';
  55. position: absolute;
  56. top: 0;
  57. left: 0;
  58. width: 100%;
  59. height: 4px;
  60. background: linear-gradient(90deg, #4568dc, #b06ab3);
  61. }
  62. .panel h2 {
  63. font-size: 1.4rem;
  64. font-weight: 600;
  65. margin-bottom: 20px;
  66. color: #333;
  67. border-bottom: 1px solid #eee;
  68. padding-bottom: 15px;
  69. position: relative;
  70. }
  71. .panel h2::after {
  72. content: '';
  73. position: absolute;
  74. bottom: -1px;
  75. left: 0;
  76. width: 60px;
  77. height: 3px;
  78. background: linear-gradient(90deg, #4568dc, #b06ab3);
  79. border-radius: 3px;
  80. }
  81. /* 输入组样式 */
  82. .input-group {
  83. margin-bottom: 20px;
  84. }
  85. .input-group label {
  86. display: block;
  87. margin-bottom: 8px;
  88. font-weight: 500;
  89. color: #444;
  90. }
  91. .input-group input[type="text"],
  92. .input-group select,
  93. .input-group textarea {
  94. width: 100%;
  95. padding: 12px;
  96. border: 1px solid #ddd;
  97. border-radius: 8px;
  98. font-size: 12.6px;
  99. transition: all 0.3s;
  100. background-color: #f9f9f9;
  101. }
  102. .input-group input[type="text"]:focus,
  103. .input-group select:focus,
  104. .input-group textarea:focus {
  105. border-color: #4568dc;
  106. outline: none;
  107. box-shadow: 0 0 0 3px rgba(69, 104, 220, 0.2);
  108. background-color: white;
  109. }
  110. .checkbox-group {
  111. display: flex;
  112. align-items: center;
  113. position: relative;
  114. left: -230px;
  115. }
  116. .checkbox-group label {
  117. display: flex;
  118. align-items: center;
  119. cursor: pointer;
  120. margin-right: 10px;
  121. }
  122. .checkbox-group input[type="checkbox"] {
  123. margin-right: 2px;
  124. accent-color: #4568dc;
  125. width: 16px;
  126. height: 16px;
  127. }
  128. .csv-options {
  129. display: flex;
  130. gap: 15px;
  131. margin-top: 10px;
  132. }
  133. /* 按钮样式 */
  134. .btn {
  135. display: inline-block;
  136. padding: 12px 20px;
  137. border: none;
  138. border-radius: 8px;
  139. font-size: 13.5px;
  140. font-weight: 500;
  141. cursor: pointer;
  142. transition: all 0.3s;
  143. position: relative;
  144. overflow: hidden;
  145. }
  146. .btn::after {
  147. content: '';
  148. position: absolute;
  149. top: 0;
  150. left: -100%;
  151. width: 100%;
  152. height: 100%;
  153. background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  154. transition: left 0.5s;
  155. }
  156. .btn:hover::after {
  157. left: 100%;
  158. }
  159. .btn-primary {
  160. background: linear-gradient(135deg, #4568dc, #5c7be5);
  161. color: white;
  162. box-shadow: 0 5px 15px rgba(69, 104, 220, 0.3);
  163. }
  164. .btn-primary:hover {
  165. background: linear-gradient(135deg, #3a56bb, #4d69cd);
  166. transform: translateY(-2px);
  167. box-shadow: 0 8px 20px rgba(69, 104, 220, 0.4);
  168. }
  169. .btn-primary:disabled {
  170. background: #a5b1e2;
  171. cursor: not-allowed;
  172. box-shadow: none;
  173. }
  174. .btn-secondary {
  175. background: linear-gradient(135deg, #f0f2f5, #e4e7f0);
  176. color: #444;
  177. box-shadow: 0 5px 15px rgba(0, 0, 0, 0.05);
  178. }
  179. .btn-secondary:hover {
  180. background: linear-gradient(135deg, #e4e6e9, #d8dce6);
  181. transform: translateY(-2px);
  182. box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
  183. }
  184. .input-group .btn {
  185. margin-right: 10px;
  186. }
  187. /* 右侧主要内容区 */
  188. .main-content {
  189. flex: 1;
  190. display: flex;
  191. flex-direction: column;
  192. gap: 25px;
  193. max-width: 800px;
  194. margin: 0 auto;
  195. }
  196. .chart-container {
  197. background-color: #fff;
  198. border-radius: 12px;
  199. box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
  200. padding: 25px;
  201. margin-bottom: 6px;
  202. transition: box-shadow 0.3s;
  203. position: relative;
  204. overflow: hidden;
  205. max-width: 100%;
  206. overflow-x: auto;
  207. }
  208. .chart-container::after {
  209. content: '';
  210. position: absolute;
  211. top: 0;
  212. left: 0;
  213. width: 100%;
  214. height: 4px;
  215. background: linear-gradient(90deg, #4568dc, #b06ab3);
  216. }
  217. .chart-container:hover {
  218. box-shadow: 0 15px 35px rgba(0, 0, 0, 0.12);
  219. }
  220. #chart-wrapper {
  221. flex: 1;
  222. position: relative;
  223. border-radius: 8px;
  224. overflow: hidden;
  225. margin: 0 0 20px 0;
  226. border: 1px solid #e0e0e0;
  227. padding: 15px;
  228. background: white;
  229. transition: all 0.3s ease;
  230. box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.03);
  231. }
  232. /* 添加图表区域默认背景样式 */
  233. #chart-wrapper:empty {
  234. background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='grad' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3E%3Cstop offset='0%25' style='stop-color:%23f0f4ff;stop-opacity:1' /%3E%3Cstop offset='100%25' style='stop-color:%23eef4ff;stop-opacity:1' /%3E%3C/linearGradient%3E%3Cpattern id='grid' width='40' height='40' patternUnits='userSpaceOnUse'%3E%3Cpath d='M 0 10 L 40 10 M 10 0 L 10 40 M 0 20 L 40 20 M 20 0 L 20 40 M 0 30 L 40 30 M 30 0 L 30 40' fill='none' stroke='%23e0e0e0' stroke-width='0.5'/%3E%3C/pattern%3E%3C/defs%3E%3Crect width='100%25' height='100%25' fill='url(%23grad)'/%3E%3Crect width='100%25' height='100%25' fill='url(%23grid)'/%3E%3Ctext x='50%25' y='50%25' font-family='Arial, sans-serif' font-size='16' font-weight='bold' text-anchor='middle' fill='%23aaaaaa' dominant-baseline='middle'%3E选择数据并点击"生成图表"%3C/text%3E%3Cg transform='translate(50%25, 40%25)'%3E%3Cpath d='M-40,-30 L-40,30 L40,30' stroke='%234568dc' stroke-width='2' fill='none' stroke-opacity='0.3'/%3E%3Ccircle cx='-20' cy='10' r='5' fill='%234568dc' fill-opacity='0.3'/%3E%3Ccircle cx='0' cy='-10' r='5' fill='%234568dc' fill-opacity='0.3'/%3E%3Ccircle cx='20' cy='0' r='5' fill='%234568dc' fill-opacity='0.3'/%3E%3Cpath d='M-20,10 L0,-10 L20,0' stroke='%234568dc' stroke-width='2' fill='none' stroke-opacity='0.3'/%3E%3C/g%3E%3C/svg%3E");
  235. background-size: cover;
  236. background-position: center;
  237. min-height: 300px;
  238. display: flex;
  239. align-items: center;
  240. justify-content: center;
  241. }
  242. .chart-actions {
  243. display: flex;
  244. justify-content: flex-end;
  245. gap: 12px;
  246. margin-bottom: 20px;
  247. padding: 0 0 15px 0;
  248. border-bottom: 1px solid #e0e0e0;
  249. }
  250. /* 提示面板 */
  251. .tips-panel {
  252. background: white;
  253. border-radius: 12px;
  254. padding: 25px;
  255. box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
  256. position: relative;
  257. overflow: hidden;
  258. max-width: 100%;
  259. overflow-x: auto;
  260. }
  261. .tips-panel::after {
  262. content: '';
  263. position: absolute;
  264. top: 0;
  265. left: 0;
  266. width: 100%;
  267. height: 4px;
  268. background: linear-gradient(90deg, #4568dc, #b06ab3);
  269. }
  270. .tips-panel h3 {
  271. font-size: 1.2rem;
  272. margin-bottom: 15px;
  273. color: #333;
  274. position: relative;
  275. padding-bottom: 10px;
  276. }
  277. .tips-panel h3::after {
  278. content: '';
  279. position: absolute;
  280. bottom: 0;
  281. left: 0;
  282. width: 40px;
  283. height: 3px;
  284. background: linear-gradient(90deg, #4568dc, #b06ab3);
  285. border-radius: 3px;
  286. }
  287. .tips-panel ul {
  288. padding-left: 20px;
  289. }
  290. .tips-panel li {
  291. margin-bottom: 10px;
  292. color: #555;
  293. position: relative;
  294. }
  295. .tips-panel li::before {
  296. content: '';
  297. position: absolute;
  298. left: -20px;
  299. top: 8px;
  300. width: 8px;
  301. height: 8px;
  302. background: linear-gradient(135deg, #4568dc, #b06ab3);
  303. border-radius: 50%;
  304. }
  305. /* 响应式设计 */
  306. @media (max-width: 900px) {
  307. .app-container {
  308. flex-direction: column;
  309. }
  310. .sidebar {
  311. flex: initial;
  312. width: 100%;
  313. }
  314. .chart-container {
  315. height: 400px;
  316. }
  317. }
  318. /* 数据格式切换相关样式 */
  319. #simple-data-container,
  320. #series-data-container,
  321. #csv-data-container {
  322. transition: all 0.3s ease;
  323. }
  324. /* 图表导出loading效果 */
  325. .loading-overlay {
  326. position: absolute;
  327. top: 0;
  328. left: 0;
  329. right: 0;
  330. bottom: 0;
  331. background: rgba(255, 255, 255, 0.8);
  332. display: flex;
  333. align-items: center;
  334. justify-content: center;
  335. z-index: 10;
  336. backdrop-filter: blur(3px);
  337. }
  338. .loading-spinner {
  339. width: 45px;
  340. height: 45px;
  341. border: 4px solid rgba(69, 104, 220, 0.3);
  342. border-radius: 50%;
  343. border-top: 4px solid #4568dc;
  344. animation: spin 1s linear infinite;
  345. box-shadow: 0 0 10px rgba(69, 104, 220, 0.2);
  346. }
  347. @keyframes spin {
  348. 0% { transform: rotate(0deg); }
  349. 100% { transform: rotate(360deg); }
  350. }
  351. /* 通知弹窗样式 */
  352. .notification {
  353. position: fixed;
  354. top: 20px;
  355. right: 20px;
  356. padding: 15px 25px;
  357. background: linear-gradient(135deg, #4caf50, #45a049);
  358. color: white;
  359. border-radius: 8px;
  360. box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
  361. z-index: 100;
  362. opacity: 0;
  363. transform: translateY(-20px);
  364. transition: all 0.3s;
  365. }
  366. .notification.show {
  367. opacity: 1;
  368. transform: translateY(0);
  369. }
  370. .notification.error {
  371. background: linear-gradient(135deg, #f44336, #e53935);
  372. }
  373. /* 添加引导动画 */
  374. @keyframes pulse {
  375. 0% { box-shadow: 0 0 0 0 rgba(69, 104, 220, 0.6); }
  376. 70% { box-shadow: 0 0 0 12px rgba(69, 104, 220, 0); }
  377. 100% { box-shadow: 0 0 0 0 rgba(69, 104, 220, 0); }
  378. }
  379. #generate-btn {
  380. animation: pulse 2s infinite;
  381. }
  382. /* 图表类型画廊 */
  383. .chart-type-gallery {
  384. margin-top: 25px;
  385. border-top: 1px solid #e0e0e0;
  386. padding-top: 20px;
  387. }
  388. .chart-type-gallery h3 {
  389. font-size: 1.08rem;
  390. margin-bottom: 15px;
  391. color: #333;
  392. position: relative;
  393. display: inline-block;
  394. padding-bottom: 8px;
  395. }
  396. .chart-type-gallery h3::after {
  397. content: '';
  398. position: absolute;
  399. bottom: 0;
  400. left: 0;
  401. width: 100%;
  402. height: 3px;
  403. background: linear-gradient(90deg, #4568dc, #b06ab3);
  404. border-radius: 3px;
  405. }
  406. .chart-type-scroller {
  407. overflow-x: auto;
  408. white-space: nowrap;
  409. padding-bottom: 15px;
  410. /* 自定义滚动条 */
  411. scrollbar-width: thin;
  412. scrollbar-color: #ccc #f0f0f0;
  413. }
  414. .chart-type-scroller::-webkit-scrollbar {
  415. height: 8px;
  416. }
  417. .chart-type-scroller::-webkit-scrollbar-track {
  418. background: #f0f0f0;
  419. border-radius: 10px;
  420. }
  421. .chart-type-scroller::-webkit-scrollbar-thumb {
  422. background: linear-gradient(90deg, #4568dc, #b06ab3);
  423. border-radius: 10px;
  424. }
  425. .chart-type-group {
  426. display: inline-block;
  427. vertical-align: top;
  428. margin-right: 25px;
  429. min-width: 250px;
  430. }
  431. .chart-type-group h4 {
  432. font-size: 15.3px;
  433. margin: 0 0 12px 0;
  434. color: #444;
  435. border-bottom: 1px dashed #e0e0e0;
  436. padding-bottom: 8px;
  437. }
  438. .chart-type-items {
  439. display: flex;
  440. flex-wrap: wrap;
  441. gap: 12px;
  442. }
  443. .chart-type-item {
  444. width: 85px;
  445. text-align: center;
  446. cursor: pointer;
  447. transition: box-shadow 0.3s, background-color 0.3s;
  448. border-radius: 8px;
  449. padding: 10px 5px;
  450. background-color: #f9f9f9;
  451. box-shadow: 0 3px 8px rgba(0,0,0,0.05);
  452. }
  453. .chart-type-item:hover {
  454. background-color: #f0f8ff;
  455. box-shadow: 0 8px 15px rgba(0,0,0,0.1);
  456. }
  457. .chart-type-item.active {
  458. background: linear-gradient(135deg, #e6f2ff, #eef8ff);
  459. border: 1px solid #b3d7ff;
  460. box-shadow: 0 5px 15px rgba(69, 104, 220, 0.15);
  461. }
  462. .chart-type-item img {
  463. width: 60px;
  464. height: 60px;
  465. object-fit: contain;
  466. margin-bottom: 8px;
  467. border-radius: 4px;
  468. background: white;
  469. padding: 3px;
  470. border: 1px solid #eee;
  471. }
  472. .chart-type-item span {
  473. display: block;
  474. font-size: 11.7px;
  475. color: #444;
  476. white-space: normal;
  477. line-height: 1.3;
  478. }
  479. /* 添加canvas样式 */
  480. canvas#chart-canvas {
  481. height: 450px !important;
  482. }
  483. /* 为canvas添加默认背景,但在绘制图表时不显示背景 */
  484. canvas#chart-canvas:not([data-chart-rendered]) {
  485. background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3ClinearGradient id='grad' x1='0%25' y1='0%25' x2='100%25' y2='100%25'%3E%3Cstop offset='0%25' style='stop-color:%23f0f4ff;stop-opacity:1' /%3E%3Cstop offset='100%25' style='stop-color:%23eef4ff;stop-opacity:1' /%3E%3C/linearGradient%3E%3Cpattern id='grid' width='40' height='40' patternUnits='userSpaceOnUse'%3E%3Cpath d='M 0 10 L 40 10 M 10 0 L 10 40 M 0 20 L 40 20 M 20 0 L 20 40 M 0 30 L 40 30 M 30 0 L 30 40' fill='none' stroke='%23e0e0e0' stroke-width='0.5'/%3E%3C/pattern%3E%3C/defs%3E%3Crect width='100%25' height='100%25' fill='url(%23grad)'/%3E%3Crect width='100%25' height='100%25' fill='url(%23grid)'/%3E%3Cg transform='translate(50%25, 50%25)'%3E%3Cpath d='M-40,-30 L-40,30 L40,30' stroke='%234568dc' stroke-width='2' fill='none' stroke-opacity='0.3'/%3E%3Ccircle cx='-20' cy='10' r='5' fill='%234568dc' fill-opacity='0.3'/%3E%3Ccircle cx='0' cy='-10' r='5' fill='%234568dc' fill-opacity='0.3'/%3E%3Ccircle cx='20' cy='0' r='5' fill='%234568dc' fill-opacity='0.3'/%3E%3Cpath d='M-20,10 L0,-10 L20,0' stroke='%234568dc' stroke-width='2' fill='none' stroke-opacity='0.3'/%3E%3C/g%3E%3C/svg%3E");
  486. background-size: cover;
  487. background-position: center;
  488. }
  489. /* 确保有data-chart-rendered属性的canvas没有背景图 */
  490. canvas#chart-canvas[data-chart-rendered] {
  491. background-image: none !important;
  492. }
  493. /* 美化文件上传控件 */
  494. .input-group input[type="file"] {
  495. width: 0.1px;
  496. height: 0.1px;
  497. opacity: 0;
  498. overflow: hidden;
  499. position: absolute;
  500. z-index: -1;
  501. }
  502. .input-group input[type="file"] + label {
  503. display: flex;
  504. align-items: center;
  505. justify-content: center;
  506. padding: 12px 15px;
  507. border-radius: 8px;
  508. background: linear-gradient(135deg, #f0f2f5, #e4e7f0);
  509. color: #444;
  510. cursor: pointer;
  511. font-weight: 500;
  512. transition: all 0.3s;
  513. box-shadow: 0 3px 10px rgba(0, 0, 0, 0.05);
  514. margin-bottom: 0;
  515. text-align: center;
  516. width: 100%;
  517. }
  518. .input-group input[type="file"] + label:hover {
  519. background: #e9ecef;
  520. border-color: #adb5bd;
  521. }
  522. .input-group input[type="file"] + label::before {
  523. content: '\f07c'; /* Use Font Awesome icon code for folder */
  524. font-family: "Font Awesome 5 Free"; /* Ensure Font Awesome is loaded */
  525. font-weight: 900;
  526. margin-right: 8px;
  527. display: inline-block; /* Ensure icon aligns properly */
  528. }
  529. /* 新增的页面头部样式 */
  530. .page-header {
  531. background-color: #f8f9fa;
  532. padding: 12px 20px;
  533. border-bottom: 1px solid #e3e6f0;
  534. display: flex;
  535. align-items: center;
  536. margin-bottom: 20px;
  537. position: relative;
  538. }
  539. .page-header .header-link {
  540. display: inline-flex;
  541. align-items: center;
  542. text-decoration: none;
  543. color: #5a5c69;
  544. font-weight: 500;
  545. font-size: 14px;
  546. transition: color 0.2s ease-in-out;
  547. }
  548. .page-header .header-link:hover {
  549. color: #4e73df;
  550. }
  551. .page-header .header-link img {
  552. margin-right: 8px;
  553. height: 18px;
  554. width: 18px;
  555. }
  556. .page-header .header-link .fehelper-text {
  557. font-weight: 700;
  558. }
  559. .page-header .page-title-suffix {
  560. margin-left: 8px;
  561. font-size: 14px;
  562. font-weight: 500;
  563. }
  564. /* Style for the "Explore More Tools" button */
  565. .page-header>a.x-other-tools {
  566. margin: 0; /* Reset margin */
  567. font-size: 12px; /* Slightly smaller */
  568. cursor: pointer;
  569. text-decoration: none;
  570. -webkit-user-select: none;
  571. user-select: none;
  572. color: #495057; /* Grey text */
  573. background-color: #f8f9fa; /* Light grey background */
  574. padding: 6px 12px; /* Adjusted padding */
  575. border-radius: 6px; /* Standard rounded corners */
  576. border: 1px solid #dee2e6; /* Match border color */
  577. transition: all 0.2s ease;
  578. display: inline-flex;
  579. align-items: center;
  580. white-space: nowrap;
  581. position: absolute;
  582. right: 10px;
  583. }
  584. .page-header>a.x-other-tools .icon-plus-circle {
  585. display: inline-block;
  586. width: 14px; /* Slightly smaller icon */
  587. height: 14px;
  588. background: url(../static/img/plus-circle.svg) no-repeat center center;
  589. background-size: contain;
  590. margin-right: 4px;
  591. }
  592. .page-header>a.x-other-tools .tool-market-badge {
  593. display: inline-block;
  594. background-color: #007bff; /* Match theme blue */
  595. color: white;
  596. padding: 2px 7px;
  597. border-radius: 4px; /* Slightly less round */
  598. margin-left: 6px;
  599. font-size: 11px; /* Smaller badge text */
  600. font-weight: 500;
  601. }
  602. .page-header>a.x-other-tools:hover {
  603. color: #212529;
  604. background-color: #e9ecef;
  605. border-color: #ced4da;
  606. box-shadow: 0 1px 2px rgba(0,0,0,0.05);
  607. transform: none; /* Remove translateY */
  608. }
  609. /* 保持原有的顶部导航样式 */
  610. .x-donate-link {
  611. font-size: 14px;
  612. font-weight: 500;
  613. color: #2563eb;
  614. cursor: pointer;
  615. text-decoration: none;
  616. border: none;
  617. margin-left: 70px;
  618. white-space: nowrap;
  619. margin-right: auto;
  620. padding: 5px 16px;
  621. border-radius: 20px;
  622. background-color: #eff6ff;
  623. transition: all 0.2s ease;
  624. position: relative;
  625. display: inline-flex;
  626. align-items: center;
  627. box-shadow: 0 1px 2px rgba(37, 99, 235, 0.1);
  628. }
  629. .x-donate-link:hover {
  630. background-color: #dbeafe;
  631. color: #1d4ed8;
  632. text-decoration: none;
  633. box-shadow: 0 2px 4px rgba(37, 99, 235, 0.15);
  634. transform: translateY(-1px);
  635. }
  636. .x-donate-link {
  637. margin: 0 10px;
  638. font-size: 12px;
  639. font-weight: normal;
  640. position: absolute;
  641. right: 220px;
  642. }