index.css 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052
  1. body{
  2. margin: 0;
  3. transition: background-color 0.3s ease, color 0.3s ease;
  4. }
  5. /* 深色模式基础样式 */
  6. .dark-mode {
  7. background-color: #1a1a1a;
  8. color: #e0e0e0;
  9. }
  10. .dark-mode body {
  11. background-color: #1a1a1a;
  12. color: #e0e0e0;
  13. }
  14. .market-container {
  15. padding: 20px;
  16. margin-top: 10px;
  17. background: #fff;
  18. border-radius: 4px;
  19. box-shadow: 0 1px 3px rgba(0,0,0,0.1);
  20. transition: background-color 0.3s ease, box-shadow 0.3s ease;
  21. }
  22. /* 深色模式下的市场容器 */
  23. .dark-mode .market-container {
  24. background: #1f1f1f;
  25. box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  26. }
  27. /* 顶部搜索和筛选区 */
  28. .market-header {
  29. background-color: #f8f9fa;
  30. padding: 1rem;
  31. border-radius: 4px;
  32. margin-bottom: 1.5rem;
  33. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  34. position: sticky;
  35. top: 0;
  36. z-index: 100;
  37. transition: box-shadow 0.3s ease;
  38. }
  39. /* 滚动时的样式增强 */
  40. .market-header.scrolled {
  41. box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
  42. }
  43. .search-filters-container {
  44. display: flex;
  45. align-items: center;
  46. flex-wrap: wrap;
  47. gap: 1rem;
  48. }
  49. .search-box {
  50. position: relative;
  51. flex: 1;
  52. min-width: 200px;
  53. }
  54. .search-icon {
  55. position: absolute;
  56. left: 10px;
  57. top: 50%;
  58. transform: translateY(-50%);
  59. color: #6c757d;
  60. font-size: 16px;
  61. }
  62. .search-box input {
  63. width: 100%;
  64. padding: 8px 15px 8px 35px;
  65. border: 1px solid #ced4da;
  66. border-radius: 4px;
  67. font-size: 16px;
  68. transition: all 0.3s;
  69. }
  70. .search-box input:focus {
  71. border-color: #4ca1af;
  72. box-shadow: 0 0 0 0.2rem rgba(76, 161, 175, 0.25);
  73. outline: none;
  74. }
  75. .filter-group {
  76. position: relative;
  77. min-width: 150px;
  78. }
  79. .filter-label {
  80. position: absolute;
  81. top: -22px;
  82. left: 0;
  83. font-size: 14px;
  84. color: #6c757d;
  85. font-weight: 500;
  86. }
  87. .filter-select {
  88. width: 100%;
  89. padding: 8px 10px;
  90. border: 1px solid #ced4da;
  91. border-radius: 4px;
  92. font-size: 14px;
  93. background-color: white;
  94. cursor: pointer;
  95. transition: all 0.3s;
  96. }
  97. .filter-select:focus {
  98. border-color: #4ca1af;
  99. box-shadow: 0 0 0 0.2rem rgba(76, 161, 175, 0.25);
  100. outline: none;
  101. }
  102. .view-toggle {
  103. display: flex;
  104. border: 1px solid #ced4da;
  105. border-radius: 4px;
  106. overflow: hidden;
  107. }
  108. .view-btn {
  109. padding: 8px 15px;
  110. font-size: 14px;
  111. background-color: white;
  112. cursor: pointer;
  113. transition: all 0.3s;
  114. color: #6c757d;
  115. }
  116. .view-btn:hover {
  117. background-color: #f1f1f1;
  118. }
  119. .view-btn.active {
  120. background-color: #4ca1af;
  121. color: white;
  122. }
  123. /* 主体内容区 */
  124. .market-content {
  125. display: flex;
  126. gap: 20px;
  127. margin-top: 20px;
  128. padding-top: 10px;
  129. position: relative;
  130. }
  131. /* 侧边栏样式 */
  132. .market-sidebar {
  133. width: 200px;
  134. flex-shrink: 0;
  135. position: sticky;
  136. top: 80px; /* 与顶部header保持一定距离 */
  137. max-height: calc(100vh - 100px); /* 设置最大高度,确保不会超出视窗 */
  138. overflow-y: auto; /* 内容过多时可滚动 */
  139. scrollbar-width: thin;
  140. scrollbar-color: #d0d0d0 #f4f4f4;
  141. transition: all 0.3s ease;
  142. }
  143. /* 侧边栏滚动条样式 */
  144. .market-sidebar::-webkit-scrollbar {
  145. width: 6px;
  146. }
  147. .market-sidebar::-webkit-scrollbar-track {
  148. background: #f4f4f4;
  149. border-radius: 3px;
  150. }
  151. .market-sidebar::-webkit-scrollbar-thumb {
  152. background-color: #d0d0d0;
  153. border-radius: 3px;
  154. border: 1px solid #f4f4f4;
  155. }
  156. .market-sidebar::-webkit-scrollbar-thumb:hover {
  157. background-color: #c0c0c0;
  158. }
  159. /* 暗黑模式下的侧边栏滚动条 */
  160. [data-theme='dark'] .market-sidebar {
  161. scrollbar-color: #555 #333;
  162. }
  163. [data-theme='dark'] .market-sidebar::-webkit-scrollbar-track {
  164. background: #2a2a2a;
  165. }
  166. [data-theme='dark'] .market-sidebar::-webkit-scrollbar-thumb {
  167. background-color: #555;
  168. border: 1px solid #2a2a2a;
  169. }
  170. [data-theme='dark'] .market-sidebar::-webkit-scrollbar-thumb:hover {
  171. background-color: #666;
  172. }
  173. /* 侧边栏section样式优化 */
  174. .sidebar-section {
  175. background: #fff;
  176. border-radius: 4px;
  177. padding: 15px;
  178. margin-bottom: 20px;
  179. box-shadow: 0 1px 3px rgba(0,0,0,0.1);
  180. transition: all 0.3s ease;
  181. }
  182. /* 滚动时的样式增强 */
  183. .market-sidebar.scrolled .sidebar-section {
  184. box-shadow: 0 2px 6px rgba(0,0,0,0.15);
  185. }
  186. .sidebar-section h4 {
  187. margin: 0 0 12px;
  188. padding-bottom: 12px;
  189. border-bottom: 1px solid #eee;
  190. font-size: 18px;
  191. color: #333;
  192. }
  193. .category-list li,
  194. .my-tools li {
  195. padding: 8px 10px;
  196. margin: 3px 0;
  197. cursor: pointer;
  198. border-radius: 4px;
  199. display: flex;
  200. justify-content: space-between;
  201. align-items: center;
  202. font-size: 14px;
  203. }
  204. .category-list li:hover,
  205. .my-tools li:hover {
  206. background: #f0f0f0;
  207. }
  208. .category-list li.active,
  209. .my-tools li.active {
  210. background: #e6f7ff;
  211. color: #1890ff;
  212. }
  213. .count {
  214. font-size: 14px;
  215. color: #999;
  216. }
  217. /* 工具展示区 */
  218. .tools-grid {
  219. flex: 1;
  220. }
  221. /* 网格视图 */
  222. .tools-container.grid {
  223. display: grid;
  224. grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  225. gap: 20px;
  226. }
  227. .tool-card {
  228. background: #fff;
  229. border-radius: 4px;
  230. padding: 15px;
  231. box-shadow: 0 1px 3px rgba(0,0,0,0.1);
  232. display: flex;
  233. flex-direction: column;
  234. gap: 10px;
  235. transition: transform 0.2s;
  236. }
  237. .tool-card:hover {
  238. transform: translateY(-2px);
  239. box-shadow: 0 4px 6px rgba(0,0,0,0.1);
  240. }
  241. .tool-icon {
  242. font-size: 32px;
  243. display: inline-flex;
  244. align-items: center;
  245. justify-content: center;
  246. width: 24px;
  247. height: 24px;
  248. border-radius: 12px;
  249. margin-right: 12px;
  250. background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
  251. color: #2d3436;
  252. transition: all 0.3s ease;
  253. }
  254. .tool-card:hover .tool-icon {
  255. transform: scale(1.1);
  256. box-shadow: 0 4px 8px rgba(0,0,0,0.1);
  257. }
  258. /* 为不同类型的工具设置不同的背景色 */
  259. .tool-card[data-category="dev"] .tool-icon {
  260. background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
  261. }
  262. .tool-card[data-category="encode"] .tool-icon {
  263. background: linear-gradient(135deg, #d299c2 0%, #fef9d7 100%);
  264. }
  265. .tool-card[data-category="image"] .tool-icon {
  266. background: linear-gradient(135deg, #89f7fe 0%, #66a6ff 100%);
  267. }
  268. .tool-card[data-category="productivity"] .tool-icon {
  269. background: linear-gradient(135deg, #f6d365 0%, #fda085 100%);
  270. }
  271. .tool-card[data-category="calculator"] .tool-icon {
  272. background: linear-gradient(135deg, #84fab0 0%, #8fd3f4 100%);
  273. }
  274. .tool-info {
  275. flex: 1;
  276. display: flex;
  277. flex-direction: column;
  278. justify-content: center;
  279. }
  280. .tool-info h3 {
  281. margin: 0 0 10px;
  282. font-size: 18px;
  283. color: #333;
  284. display: flex;
  285. align-items: center;
  286. gap: 10px;
  287. }
  288. .tool-desc {
  289. margin: 0;
  290. font-size: 14px;
  291. color: #666;
  292. line-height: 1.5;
  293. }
  294. .tool-meta {
  295. display: flex;
  296. gap: 15px;
  297. margin-top: 10px;
  298. font-size: 12px;
  299. color: #999;
  300. }
  301. .tool-actions {
  302. display: flex;
  303. gap: 8px;
  304. margin-top: 10px;
  305. }
  306. /* 列表视图 */
  307. .tools-container.list .tool-card {
  308. flex-direction: row;
  309. align-items: center;
  310. margin-bottom: 10px;
  311. }
  312. .tools-container.list .tool-info {
  313. margin: 0 15px;
  314. }
  315. /* 调整列表视图中图标的大小 */
  316. .tools-container.list .tool-icon {
  317. width: 40px;
  318. height: 40px;
  319. font-size: 28px;
  320. margin-right: 16px;
  321. }
  322. /* 按钮样式 */
  323. .btn {
  324. padding: 8px 15px;
  325. border: none;
  326. border-radius: 4px;
  327. cursor: pointer;
  328. font-size: 14px;
  329. transition: all 0.3s;
  330. }
  331. .btn-xs {
  332. padding: 4px 8px;
  333. font-size: 13px;
  334. line-height: 1.5;
  335. border-radius: 3px;
  336. }
  337. .btn:hover {
  338. opacity: 0.9;
  339. }
  340. .btn:disabled {
  341. opacity: 0.6;
  342. cursor: not-allowed;
  343. }
  344. .x-progress {
  345. font-size: 13px;
  346. margin-left: 3px;
  347. }
  348. /* 为系统预装的工具添加提示样式 */
  349. .btn-disabled {
  350. background-color: #e0e0e0;
  351. color: #999;
  352. cursor: not-allowed;
  353. }
  354. .btn-disabled:hover {
  355. opacity: 1;
  356. }
  357. .btn-success {
  358. background: #52c41a;
  359. color: #fff;
  360. }
  361. .btn-danger {
  362. background: #ff4d4f;
  363. color: #fff;
  364. }
  365. .btn-info {
  366. background: #1890ff;
  367. color: #fff;
  368. }
  369. .btn-warning {
  370. background: #faad14;
  371. color: #fff;
  372. }
  373. .btn-default {
  374. background: #f0f0f0;
  375. color: #666;
  376. }
  377. .btn-default.active {
  378. background-color: #ff4757;
  379. color: white;
  380. border-color: #ff4757;
  381. }
  382. .btn-default.active:hover {
  383. background-color: #ff6b81;
  384. border-color: #ff6b81;
  385. }
  386. .favorite-icon {
  387. color: #ff4757;
  388. margin-right: 4px;
  389. transition: all 0.3s ease;
  390. }
  391. .btn-default:not(.active) .favorite-icon {
  392. color: #666;
  393. }
  394. .btn-default.active .favorite-icon {
  395. transform: scale(1.2);
  396. color: white;
  397. }
  398. /* 暗黑模式适配 */
  399. [data-theme='dark'] .market-container {
  400. background: #1f1f1f;
  401. }
  402. [data-theme='dark'] .market-header {
  403. background-color: #2a2a2a;
  404. }
  405. [data-theme='dark'] .sidebar-section,
  406. [data-theme='dark'] .tool-card {
  407. background: #2d2d2d;
  408. box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  409. }
  410. [data-theme='dark'] .tool-info h3 {
  411. color: #fff;
  412. }
  413. [data-theme='dark'] .tool-desc {
  414. color: #bbb;
  415. }
  416. [data-theme='dark'] .category-list li:hover,
  417. [data-theme='dark'] .my-tools li:hover {
  418. background: #3d3d3d;
  419. }
  420. [data-theme='dark'] .category-list li.active {
  421. background: #177ddc;
  422. color: #fff;
  423. }
  424. [data-theme='dark'] .my-tools li.active {
  425. background: #177ddc;
  426. color: #fff;
  427. }
  428. [data-theme='dark'] .view-toggle span {
  429. background: #3d3d3d;
  430. color: #bbb;
  431. }
  432. [data-theme='dark'] .view-toggle span.active {
  433. background: #177ddc;
  434. color: #fff;
  435. }
  436. [data-theme='dark'] .btn-default {
  437. background: #3d3d3d;
  438. color: #bbb;
  439. }
  440. /* 暗黑模式下的图标样式调整 */
  441. [data-theme='dark'] .tool-icon {
  442. color: #ffffff;
  443. opacity: 0.9;
  444. }
  445. /* 推荐位和广告位样式 */
  446. .recommendation-container {
  447. margin-bottom: 20px;
  448. }
  449. .recommendation-section {
  450. display: grid;
  451. grid-template-columns: repeat(4, 1fr);
  452. gap: 15px;
  453. }
  454. .recommendation-card {
  455. display: flex;
  456. align-items: center;
  457. padding: 15px;
  458. background: #fff;
  459. border-radius: 6px;
  460. box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  461. cursor: pointer;
  462. transition: all 0.3s ease;
  463. position: relative;
  464. }
  465. .recommendation-card:hover {
  466. transform: translateY(-3px);
  467. box-shadow: 0 6px 12px rgba(0,0,0,0.15);
  468. }
  469. .rec-icon {
  470. display: flex;
  471. align-items: center;
  472. justify-content: center;
  473. width: 60px;
  474. height: 60px;
  475. border-radius: 12px;
  476. background: linear-gradient(135deg, #f6d365 0%, #fda085 100%);
  477. font-size: 28px;
  478. margin-right: 15px;
  479. flex-shrink: 0;
  480. }
  481. .recommendation-card:nth-child(1) .rec-icon {
  482. background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);
  483. }
  484. .recommendation-card:nth-child(2) .rec-icon {
  485. background: linear-gradient(135deg, #d299c2 0%, #fef9d7 100%);
  486. }
  487. .recommendation-card:nth-child(3) .rec-icon {
  488. background: linear-gradient(135deg, #89f7fe 0%, #66a6ff 100%);
  489. }
  490. .rec-content {
  491. flex: 1;
  492. }
  493. .rec-content h4 {
  494. margin: 0 0 8px;
  495. font-size: 18px;
  496. color: #333;
  497. }
  498. .rec-content p {
  499. margin: 0;
  500. font-size: 14px;
  501. color: #666;
  502. line-height: 1.4;
  503. }
  504. /* 广告卡片特殊样式 */
  505. .ad-card {
  506. position: relative;
  507. border: 1px solid #FFD700;
  508. background: linear-gradient(to right, #fff, #fffdf0);
  509. }
  510. .ad-icon {
  511. background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%);
  512. }
  513. .ad-tag {
  514. position: absolute;
  515. top: 8px;
  516. right: 8px;
  517. background: rgba(255, 215, 0, 0.2);
  518. border: 1px solid #FFD700;
  519. border-radius: 4px;
  520. padding: 3px 8px;
  521. font-size: 12px;
  522. color: #997a00;
  523. }
  524. /* 必装标签样式 */
  525. .must-tag {
  526. position: absolute;
  527. top: 8px;
  528. right: 8px;
  529. background: rgba(82, 196, 26, 0.2);
  530. border: 1px solid #52c41a;
  531. border-radius: 4px;
  532. padding: 3px 8px;
  533. font-size: 12px;
  534. color: #52c41a;
  535. }
  536. /* 最新标签样式 */
  537. .new-tag {
  538. position: absolute;
  539. top: 8px;
  540. right: 8px;
  541. background: rgba(24, 144, 255, 0.2);
  542. border: 1px solid #1890ff;
  543. border-radius: 4px;
  544. padding: 3px 8px;
  545. font-size: 12px;
  546. color: #1890ff;
  547. }
  548. /* 推荐标签样式 */
  549. .recommend-tag {
  550. position: absolute;
  551. top: 8px;
  552. right: 8px;
  553. background: rgba(250, 84, 28, 0.2);
  554. border: 1px solid #fa541c;
  555. border-radius: 4px;
  556. padding: 3px 8px;
  557. font-size: 12px;
  558. color: #fa541c;
  559. }
  560. /* 暗黑模式适配 */
  561. [data-theme='dark'] .recommendation-card {
  562. background: #2d2d2d;
  563. box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  564. }
  565. [data-theme='dark'] .rec-content h4 {
  566. color: #fff;
  567. }
  568. [data-theme='dark'] .rec-content p {
  569. color: #bbb;
  570. }
  571. [data-theme='dark'] .ad-card {
  572. background: linear-gradient(to right, #2d2d2d, #332e1f);
  573. border-color: #997a00;
  574. }
  575. [data-theme='dark'] .ad-tag {
  576. background: rgba(255, 215, 0, 0.15);
  577. color: #FFD700;
  578. }
  579. /* 暗黑模式下的必装标签 */
  580. [data-theme='dark'] .must-tag {
  581. background: rgba(82, 196, 26, 0.15);
  582. color: #73d13d;
  583. border-color: #52c41a;
  584. }
  585. /* 暗黑模式下的最新标签 */
  586. [data-theme='dark'] .new-tag {
  587. background: rgba(24, 144, 255, 0.15);
  588. color: #40a9ff;
  589. border-color: #1890ff;
  590. }
  591. /* 暗黑模式下的推荐标签 */
  592. [data-theme='dark'] .recommend-tag {
  593. background: rgba(250, 84, 28, 0.15);
  594. color: #ff7a45;
  595. border-color: #fa541c;
  596. }
  597. /* 轮播Banner区域 */
  598. /* 导航链接样式 */
  599. .x-nav-links {
  600. margin-right: 15px;
  601. }
  602. .x-nav-links a {
  603. color: #1890ff;
  604. text-decoration: none;
  605. margin-left: 15px;
  606. font-size: 14px;
  607. }
  608. .x-nav-links a:hover {
  609. color: #40a9ff;
  610. text-decoration: underline;
  611. }
  612. /* 设置弹窗样式 */
  613. .settings-modal {
  614. position: fixed;
  615. top: 0;
  616. left: 0;
  617. right: 0;
  618. bottom: 0;
  619. background-color: rgba(0, 0, 0, 0.5);
  620. z-index: 1000;
  621. display: flex;
  622. justify-content: center;
  623. align-items: center;
  624. backdrop-filter: blur(2px);
  625. }
  626. .settings-dialog {
  627. background-color: #fff;
  628. border-radius: 8px;
  629. box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25);
  630. width: 80%;
  631. max-width: 800px;
  632. max-height: 90vh;
  633. display: flex;
  634. flex-direction: column;
  635. animation: fadeIn 0.3s ease;
  636. overflow: hidden;
  637. }
  638. @keyframes fadeIn {
  639. from { opacity: 0; transform: translateY(-20px); }
  640. to { opacity: 1; transform: translateY(0); }
  641. }
  642. .settings-header {
  643. padding: 16px 20px;
  644. border-bottom: 1px solid #e8e8e8;
  645. display: flex;
  646. justify-content: space-between;
  647. align-items: center;
  648. position: sticky;
  649. top: 0;
  650. background-color: #fff;
  651. z-index: 10;
  652. box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
  653. flex-shrink: 0;
  654. }
  655. .settings-header h3 {
  656. margin: 0;
  657. color: #333;
  658. font-size: 20px;
  659. font-weight: 600;
  660. }
  661. .close-btn {
  662. font-size: 28px;
  663. color: #999;
  664. cursor: pointer;
  665. transition: all 0.3s;
  666. width: 32px;
  667. height: 32px;
  668. display: flex;
  669. align-items: center;
  670. justify-content: center;
  671. border-radius: 50%;
  672. }
  673. .close-btn:hover {
  674. color: #666;
  675. background-color: #f0f0f0;
  676. }
  677. .settings-body {
  678. padding: 0 20px;
  679. overflow-y: auto;
  680. flex: 1;
  681. scrollbar-width: thin;
  682. scrollbar-color: #d0d0d0 #f4f4f4;
  683. }
  684. .settings-body label {
  685. font-weight: normal !important;
  686. display: inline-flex;
  687. align-items: center;
  688. }
  689. .settings-body label b,
  690. .settings-body label i,
  691. .settings-body label strong {
  692. font-weight: bold;
  693. }
  694. .settings-body::-webkit-scrollbar {
  695. width: 8px;
  696. }
  697. .settings-body::-webkit-scrollbar-track {
  698. background: #f4f4f4;
  699. border-radius: 4px;
  700. }
  701. .settings-body::-webkit-scrollbar-thumb {
  702. background-color: #d0d0d0;
  703. border-radius: 4px;
  704. border: 2px solid #f4f4f4;
  705. }
  706. .settings-body::-webkit-scrollbar-thumb:hover {
  707. background-color: #c0c0c0;
  708. }
  709. .settings-footer {
  710. padding: 16px 20px;
  711. border-top: 1px solid #e8e8e8;
  712. display: flex;
  713. justify-content: flex-end;
  714. gap: 12px;
  715. position: sticky;
  716. bottom: 0;
  717. background-color: #fff;
  718. z-index: 10;
  719. box-shadow: 0 -1px 4px rgba(0, 0, 0, 0.05);
  720. flex-shrink: 0;
  721. }
  722. .settings-footer .btn {
  723. padding: 8px 20px;
  724. border-radius: 4px;
  725. font-size: 14px;
  726. font-weight: 500;
  727. transition: all 0.3s ease;
  728. box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  729. }
  730. .settings-footer .btn-success {
  731. background: linear-gradient(135deg, #52c41a, #39a012);
  732. }
  733. .settings-footer .btn-success:hover {
  734. background: linear-gradient(135deg, #5bd81e, #43b515);
  735. box-shadow: 0 4px 8px rgba(0,0,0,0.15);
  736. transform: translateY(-1px);
  737. }
  738. .settings-footer .btn-danger {
  739. background: linear-gradient(135deg, #ff4d4f, #e02b2e);
  740. }
  741. .settings-footer .btn-danger:hover {
  742. background: linear-gradient(135deg, #ff6769, #ed3437);
  743. box-shadow: 0 4px 8px rgba(0,0,0,0.15);
  744. transform: translateY(-1px);
  745. }
  746. .dark-mode .settings-footer {
  747. border-top-color: #333;
  748. background-color: #1f1f1f;
  749. box-shadow: 0 -1px 4px rgba(0, 0, 0, 0.2);
  750. }
  751. .dark-mode .settings-footer .btn {
  752. box-shadow: 0 2px 6px rgba(0,0,0,0.2);
  753. }
  754. .dark-mode .settings-footer .btn-success {
  755. background: linear-gradient(135deg, #49b616, #338c0f);
  756. }
  757. .dark-mode .settings-footer .btn-success:hover {
  758. background: linear-gradient(135deg, #52c41a, #39a012);
  759. }
  760. .dark-mode .settings-footer .btn-danger {
  761. background: linear-gradient(135deg, #e63e40, #cc2729);
  762. }
  763. .dark-mode .settings-footer .btn-danger:hover {
  764. background: linear-gradient(135deg, #ff4d4f, #e02b2e);
  765. }
  766. .a-btn {
  767. display: inline-block;
  768. background-color: #1890ff;
  769. color: white;
  770. padding: 2px 8px;
  771. border-radius: 3px;
  772. margin-left: 10px;
  773. font-size: 12px;
  774. text-decoration: none;
  775. }
  776. .a-btn:hover {
  777. background-color: #40a9ff;
  778. text-decoration: none;
  779. }
  780. .x-count-down {
  781. margin-left: 10px;
  782. font-size: 12px;
  783. color: #ff4d4f;
  784. }
  785. .x-tips {
  786. color: #666;
  787. font-size: 14px;
  788. margin-left: 5px;
  789. }
  790. /* 暗黑模式样式适配 */
  791. .dark-mode .settings-modal {
  792. background-color: rgba(0, 0, 0, 0.7);
  793. }
  794. .dark-mode .settings-dialog {
  795. background-color: #1f1f1f;
  796. color: #eee;
  797. box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
  798. }
  799. .dark-mode .settings-header {
  800. border-bottom-color: #333;
  801. background-color: #1f1f1f;
  802. box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
  803. }
  804. .dark-mode .settings-header h3 {
  805. color: #eee;
  806. }
  807. .dark-mode .close-btn {
  808. color: #aaa;
  809. }
  810. .dark-mode .close-btn:hover {
  811. color: #eee;
  812. background-color: #333;
  813. }
  814. .dark-mode .settings-section h4 {
  815. color: #eee;
  816. }
  817. .dark-mode .box-config {
  818. background-color: #2a2a2a;
  819. }
  820. .dark-mode .box-inner {
  821. background-color: #333;
  822. }
  823. /* 导航栏样式 */
  824. .main-navbar {
  825. display: flex;
  826. justify-content: space-between;
  827. align-items: center;
  828. padding: 8px 15px; /* 减少垂直内边距 */
  829. background: linear-gradient(to right, #2c3e50, #4ca1af);
  830. color: #fff;
  831. position: relative;
  832. min-height: 48px; /* 限制最小高度 */
  833. max-height: 60px; /* 限制最大高度 */
  834. }
  835. .navbar-brand {
  836. display: flex;
  837. align-items: center;
  838. }
  839. .brand-link {
  840. display: flex;
  841. align-items: center;
  842. color: #fff;
  843. text-decoration: none;
  844. font-weight: 500;
  845. font-size: 16px;
  846. transition: all 0.3s ease;
  847. }
  848. .brand-link:hover {
  849. opacity: 0.9;
  850. text-decoration: none;
  851. color: #fff;
  852. }
  853. .brand-link img {
  854. height: 20px;
  855. width: 20px;
  856. margin-right: 6px;
  857. }
  858. .brand-text {
  859. font-weight: 600;
  860. font-size: 16px;
  861. }
  862. .brand-subtitle {
  863. margin-left: 6px;
  864. font-size: 14px;
  865. opacity: 0.9;
  866. font-weight: normal;
  867. position: relative;
  868. padding-left: 8px;
  869. }
  870. .brand-subtitle::before {
  871. content: '';
  872. position: absolute;
  873. left: 0;
  874. top: 50%;
  875. transform: translateY(-50%);
  876. height: 70%;
  877. width: 1px;
  878. background-color: rgba(255, 255, 255, 0.5);
  879. }
  880. .navbar-actions {
  881. display: flex;
  882. align-items: center;
  883. gap: 15px;
  884. }
  885. /* 版本信息区域 - 统一样式 */
  886. .version-info {
  887. display: flex;
  888. align-items: center;
  889. font-size: 12px;
  890. color: rgba(255, 255, 255, 0.9);
  891. background: rgba(0, 0, 0, 0.15);
  892. padding: 6px 12px;
  893. border-radius: 6px;
  894. gap: 8px;
  895. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  896. max-height: 36px; /* 限制最大高度,保持导航栏紧凑 */
  897. overflow: hidden;
  898. }
  899. .nav-item {
  900. position: relative;
  901. transition: all 0.3s ease;
  902. overflow: hidden;
  903. display: flex;
  904. align-items: center;
  905. justify-content: center;
  906. color: #fff;
  907. text-decoration: none;
  908. padding: 6px 12px; /* 减少内边距 */
  909. border-radius: 5px;
  910. font-size: 13px; /* 稍微减小字体 */
  911. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);
  912. min-width: 90px; /* 减少最小宽度 */
  913. text-align: center;
  914. height: 32px; /* 固定高度 */
  915. box-sizing: border-box;
  916. }
  917. .nav-item:hover {
  918. background-color: rgba(255, 255, 255, 0.1);
  919. transform: translateY(-2px);
  920. box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  921. color: #fff;
  922. text-decoration: none;
  923. }
  924. .nav-item:active {
  925. transform: translateY(0);
  926. box-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
  927. }
  928. .nav-icon {
  929. display: inline-block;
  930. transition: all 0.3s ease;
  931. margin-right: 6px;
  932. font-size: 16px;
  933. }
  934. .nav-item:hover .nav-icon {
  935. transform: scale(1.2) rotate(10deg);
  936. }
  937. /* 波纹效果 */
  938. .nav-item::after {
  939. content: '';
  940. position: absolute;
  941. top: 50%;
  942. left: 50%;
  943. width: 5px;
  944. height: 5px;
  945. background: rgba(255, 255, 255, 0.3);
  946. opacity: 0;
  947. border-radius: 100%;
  948. transform: scale(1, 1) translate(-50%);
  949. transform-origin: 50% 50%;
  950. }
  951. .nav-item:hover::after {
  952. animation: ripple 0.6s ease-out;
  953. }
  954. /* 打赏鼓励按钮特殊效果 */
  955. .navbar-actions .donate-link {
  956. background: linear-gradient(135deg, #ff9a9e 0%, #fad0c4 99%, #fad0c4 100%);
  957. color: #333;
  958. position: relative;
  959. overflow: hidden;
  960. }
  961. .navbar-actions .donate-link:hover {
  962. background: linear-gradient(45deg, #ff7675, #d63031);
  963. transform: translateY(-3px);
  964. box-shadow: 0 5px 15px rgba(255, 105, 97, 0.4);
  965. color: #fff;
  966. }
  967. .navbar-actions .donate-link .nav-icon {
  968. color: #e74c3c;
  969. font-size: 18px;
  970. }
  971. .navbar-actions .donate-link:hover .nav-icon {
  972. animation: heartbeat 1.2s infinite;
  973. color: #fff;
  974. }
  975. /* 设置按钮特殊效果 */
  976. .navbar-actions .settings-link {
  977. position: relative;
  978. overflow: hidden;
  979. background-color: rgba(255, 255, 255, 0.15);
  980. }
  981. .navbar-actions .settings-link:hover {
  982. background: linear-gradient(45deg, #74b9ff, #0984e3);
  983. }
  984. .navbar-actions .settings-link .nav-icon {
  985. transition: transform 0.5s ease;
  986. }
  987. .navbar-actions .settings-link:hover .nav-icon {
  988. animation: rotate 2s linear infinite;
  989. }
  990. /* 动画关键帧 */
  991. @keyframes ripple {
  992. 0% {
  993. transform: scale(0, 0);
  994. opacity: 1;
  995. }
  996. 20% {
  997. transform: scale(25, 25);
  998. opacity: 1;
  999. }
  1000. 100% {
  1001. opacity: 0;
  1002. transform: scale(40, 40);
  1003. }
  1004. }
  1005. @keyframes heartbeat {
  1006. 0% { transform: scale(1); }
  1007. 25% { transform: scale(1.3); }
  1008. 50% { transform: scale(1); }
  1009. 75% { transform: scale(1.3); }
  1010. 100% { transform: scale(1); }
  1011. }
  1012. @keyframes rotate {
  1013. 0% { transform: rotate(0deg); }
  1014. 100% { transform: rotate(360deg); }
  1015. }
  1016. @keyframes bounce {
  1017. 0%, 20%, 50%, 80%, 100% {
  1018. transform: translateY(0);
  1019. }
  1020. 40% {
  1021. transform: translateY(-3px);
  1022. }
  1023. 60% {
  1024. transform: translateY(-2px);
  1025. }
  1026. }
  1027. /* 响应式调整 */
  1028. @media (max-width: 768px) {
  1029. .navbar-actions {
  1030. gap: 10px;
  1031. }
  1032. .nav-item {
  1033. min-width: auto;
  1034. padding: 8px 12px;
  1035. }
  1036. .version-info {
  1037. padding: 4px 8px;
  1038. font-size: 10px;
  1039. gap: 4px;
  1040. max-height: 28px;
  1041. }
  1042. .version-details {
  1043. gap: 3px;
  1044. }
  1045. .current-version,
  1046. .latest-version-text {
  1047. font-size: 9px;
  1048. padding: 1px 3px;
  1049. }
  1050. .update-btn {
  1051. font-size: 9px;
  1052. padding: 2px 6px;
  1053. height: 16px;
  1054. }
  1055. /* 搜索和筛选区域响应式 */
  1056. .search-filters-container {
  1057. flex-direction: column;
  1058. align-items: stretch;
  1059. }
  1060. .filter-group {
  1061. width: 100%;
  1062. }
  1063. .view-toggle {
  1064. margin-top: 1rem;
  1065. width: 100%;
  1066. }
  1067. .view-btn {
  1068. flex: 1;
  1069. text-align: center;
  1070. }
  1071. .market-content {
  1072. flex-direction: column;
  1073. }
  1074. .market-sidebar {
  1075. width: 100%;
  1076. position: relative;
  1077. top: 0;
  1078. max-height: none;
  1079. margin-bottom: 20px;
  1080. }
  1081. }
  1082. @media (max-width: 600px) {
  1083. .brand-subtitle {
  1084. display: none;
  1085. }
  1086. .nav-item {
  1087. padding: 6px 10px;
  1088. }
  1089. .nav-item span {
  1090. display: none;
  1091. }
  1092. .nav-icon {
  1093. margin-right: 0;
  1094. font-size: 18px;
  1095. }
  1096. .version-info {
  1097. padding: 3px 6px;
  1098. font-size: 10px;
  1099. gap: 4px;
  1100. max-height: 24px;
  1101. }
  1102. .version-latest {
  1103. font-size: 10px;
  1104. gap: 3px;
  1105. }
  1106. .version-number {
  1107. font-size: 9px;
  1108. padding: 1px 2px;
  1109. }
  1110. .version-details {
  1111. gap: 3px;
  1112. }
  1113. .current-version,
  1114. .latest-version-text {
  1115. font-size: 9px;
  1116. padding: 1px 3px;
  1117. }
  1118. .update-btn {
  1119. font-size: 9px;
  1120. padding: 2px 6px;
  1121. height: 16px;
  1122. }
  1123. .donate-link span,
  1124. .settings-link span {
  1125. display: none;
  1126. }
  1127. .donate-link .nav-icon,
  1128. .settings-link .nav-icon {
  1129. margin-right: 0;
  1130. }
  1131. }
  1132. /* 暗黑模式下搜索和筛选区样式 */
  1133. .dark-mode .search-box input,
  1134. .dark-mode .filter-select {
  1135. background-color: #333;
  1136. border-color: #444;
  1137. color: #eee;
  1138. }
  1139. .dark-mode .filter-label {
  1140. color: #aaa;
  1141. }
  1142. .dark-mode .view-toggle {
  1143. border-color: #444;
  1144. }
  1145. .dark-mode .view-btn {
  1146. background-color: #333;
  1147. color: #aaa;
  1148. }
  1149. .dark-mode .view-btn.active {
  1150. background-color: #4ca1af;
  1151. color: white;
  1152. }
  1153. /* 版本号与更新提示 - 优化为水平紧凑布局 */
  1154. .version-details {
  1155. display: flex;
  1156. align-items: center;
  1157. gap: 6px;
  1158. flex-wrap: wrap; /* 在必要时换行 */
  1159. }
  1160. .version-label {
  1161. font-size: 10px;
  1162. color: rgba(255,255,255,0.7);
  1163. white-space: nowrap; /* 防止换行 */
  1164. margin: 0; /* 移除边距 */
  1165. }
  1166. .current-version {
  1167. font-size: 11px;
  1168. font-weight: 500;
  1169. color: #fff;
  1170. padding: 1px 4px;
  1171. background-color: rgba(24, 144, 255, 0.5);
  1172. border-radius: 3px;
  1173. letter-spacing: 0.2px;
  1174. white-space: nowrap;
  1175. }
  1176. .latest-version-text {
  1177. font-size: 11px;
  1178. font-weight: 500;
  1179. color: #fff;
  1180. padding: 1px 4px;
  1181. background-color: rgba(82, 196, 26, 0.5);
  1182. border-radius: 3px;
  1183. letter-spacing: 0.2px;
  1184. white-space: nowrap;
  1185. }
  1186. .latest-version-container {
  1187. height: 18px;
  1188. display: flex;
  1189. align-items: center;
  1190. }
  1191. .latest-version-img {
  1192. height: 18px;
  1193. transition: transform 0.2s ease;
  1194. cursor: pointer;
  1195. }
  1196. .latest-version-img:hover {
  1197. transform: scale(1.05);
  1198. }
  1199. .update-btn {
  1200. background-color: #ff6b6b;
  1201. color: white;
  1202. border: none;
  1203. padding: 3px 8px;
  1204. border-radius: 3px;
  1205. font-size: 10px;
  1206. font-weight: 500;
  1207. cursor: pointer;
  1208. box-shadow: 0 1px 2px rgba(0,0,0,0.2);
  1209. animation: pulse 1.5s infinite;
  1210. transition: background-color 0.3s;
  1211. white-space: nowrap;
  1212. height: 20px; /* 固定高度 */
  1213. display: flex;
  1214. align-items: center;
  1215. }
  1216. .update-btn:hover {
  1217. background-color: #ff5252;
  1218. }
  1219. @keyframes pulse {
  1220. 0% {
  1221. box-shadow: 0 0 0 0 rgba(255, 107, 107, 0.7);
  1222. }
  1223. 70% {
  1224. box-shadow: 0 0 0 6px rgba(255, 107, 107, 0);
  1225. }
  1226. 100% {
  1227. box-shadow: 0 0 0 0 rgba(255, 107, 107, 0);
  1228. }
  1229. }
  1230. .dark-mode .current-version {
  1231. background-color: rgba(24, 144, 255, 0.5);
  1232. color: #fff;
  1233. }
  1234. .dark-mode .latest-version-text {
  1235. background-color: rgba(82, 196, 26, 0.5);
  1236. color: #fff;
  1237. }
  1238. .dark-mode .version-label {
  1239. color: #aaa;
  1240. }
  1241. .dark-mode .update-btn {
  1242. background-color: #ff7676;
  1243. }
  1244. .dark-mode .update-btn:hover {
  1245. background-color: #ff5e5e;
  1246. }
  1247. .version-latest {
  1248. display: flex;
  1249. align-items: center;
  1250. font-size: 12px;
  1251. font-weight: 500;
  1252. color: #fff;
  1253. gap: 6px;
  1254. white-space: nowrap;
  1255. }
  1256. .version-check-icon {
  1257. color: #52c41a;
  1258. font-size: 14px;
  1259. text-shadow: 0 0 5px rgba(82, 196, 26, 0.5);
  1260. flex-shrink: 0;
  1261. }
  1262. .dark-mode .version-latest {
  1263. color: #f0f0f0;
  1264. }
  1265. .dark-mode .version-check-icon {
  1266. color: #73d13d;
  1267. }
  1268. .version-number {
  1269. background-color: rgba(0, 0, 0, 0.2);
  1270. border-radius: 3px;
  1271. padding: 1px 4px;
  1272. margin-left: 2px;
  1273. font-weight: 400;
  1274. color: #fff;
  1275. font-size: 11px;
  1276. white-space: nowrap;
  1277. }
  1278. .dark-mode .version-number {
  1279. background-color: rgba(255, 255, 255, 0.15);
  1280. color: #fff;
  1281. }
  1282. /* 暗黑模式滚动条 */
  1283. .dark-mode .settings-body {
  1284. scrollbar-color: #555 #333;
  1285. }
  1286. .dark-mode .settings-body::-webkit-scrollbar-track {
  1287. background: #2a2a2a;
  1288. }
  1289. .dark-mode .settings-body::-webkit-scrollbar-thumb {
  1290. background-color: #555;
  1291. border: 2px solid #2a2a2a;
  1292. }
  1293. .dark-mode .settings-body::-webkit-scrollbar-thumb:hover {
  1294. background-color: #666;
  1295. }
  1296. .dark-mode .settings-section {
  1297. border-bottom-color: #333;
  1298. }
  1299. .settings-section {
  1300. margin-bottom: 25px;
  1301. padding-bottom: 15px;
  1302. border-bottom: 1px dashed #eee;
  1303. }
  1304. .settings-section:last-child {
  1305. margin-bottom: 0;
  1306. padding-bottom: 0;
  1307. border-bottom: none;
  1308. }
  1309. .settings-section h4 {
  1310. margin-top: 0;
  1311. margin-bottom: 15px;
  1312. font-size: 18px;
  1313. font-weight: 600;
  1314. color: #333;
  1315. }
  1316. .box-config {
  1317. background-color: #f9f9f9;
  1318. border-radius: 4px;
  1319. padding: 15px;
  1320. }
  1321. .st-item {
  1322. margin-bottom: 15px;
  1323. }
  1324. .box-inner {
  1325. margin-top: 10px;
  1326. background-color: #f0f0f0;
  1327. padding: 10px;
  1328. border-radius: 4px;
  1329. }
  1330. .row-line {
  1331. margin-bottom: 8px;
  1332. }
  1333. .x-disabled {
  1334. opacity: 0.6;
  1335. pointer-events: none;
  1336. }
  1337. /* 设置打赏按钮样式 */
  1338. .donate-link:hover {
  1339. transform: translateY(-3px);
  1340. box-shadow: 0 5px 15px rgba(255, 105, 97, 0.4);
  1341. background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 99%, #fecfef 100%);
  1342. }
  1343. .donate-link:active {
  1344. transform: translateY(0);
  1345. }
  1346. .donate-link .nav-icon {
  1347. color: #e74c3c;
  1348. font-size: 18px;
  1349. animation: heartbeat 1.3s ease-in-out infinite;
  1350. }
  1351. .donate-link:hover .nav-icon {
  1352. animation: heartbeat 0.6s ease-in-out infinite;
  1353. }
  1354. @keyframes heartbeat {
  1355. 0% {
  1356. transform: scale(1);
  1357. }
  1358. 14% {
  1359. transform: scale(1.3);
  1360. }
  1361. 28% {
  1362. transform: scale(1);
  1363. }
  1364. 42% {
  1365. transform: scale(1.3);
  1366. }
  1367. 70% {
  1368. transform: scale(1);
  1369. }
  1370. }
  1371. /* 打赏模态框样式 */
  1372. .donate-modal .settings-dialog {
  1373. max-width: 500px;
  1374. }
  1375. .donate-content {
  1376. text-align: center;
  1377. padding: 10px;
  1378. }
  1379. .donate-desc {
  1380. font-size: 16px;
  1381. margin-bottom: 20px;
  1382. color: #666;
  1383. line-height: 1.6;
  1384. }
  1385. .donate-qrcode {
  1386. display: flex;
  1387. flex-direction: column;
  1388. align-items: center;
  1389. margin-bottom: 20px;
  1390. }
  1391. .donate-image {
  1392. max-width: 250px;
  1393. border-radius: 10px;
  1394. box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
  1395. margin-bottom: 15px;
  1396. transition: transform 0.3s ease;
  1397. }
  1398. .donate-image:hover {
  1399. transform: scale(1.05);
  1400. }
  1401. .donate-text {
  1402. font-size: 18px;
  1403. font-weight: bold;
  1404. color: #e74c3c;
  1405. margin-top: 10px;
  1406. }
  1407. /* 暗黑模式下的打赏样式 */
  1408. .dark-mode .donate-link {
  1409. background: linear-gradient(135deg, #ff6b6b 0%, #f39c12 100%);
  1410. color: #fff;
  1411. }
  1412. .dark-mode .donate-link:hover {
  1413. background: linear-gradient(135deg, #ff6b6b 0%, #e74c3c 100%);
  1414. }
  1415. .dark-mode .donate-link .nav-icon {
  1416. color: #fff;
  1417. }
  1418. .dark-mode .donate-desc {
  1419. color: #ccc;
  1420. }
  1421. .dark-mode .donate-text {
  1422. color: #ff6b6b;
  1423. }
  1424. /* 媒体查询-移动设备 */
  1425. @media (max-width: 600px) {
  1426. .donate-link span {
  1427. display: none;
  1428. }
  1429. .donate-image {
  1430. max-width: 180px;
  1431. }
  1432. }
  1433. /* 确认对话框样式 */
  1434. .confirm-modal .settings-dialog {
  1435. max-width: 450px;
  1436. }
  1437. .confirm-content {
  1438. display: flex;
  1439. align-items: center;
  1440. padding: 20px 10px;
  1441. }
  1442. .confirm-icon {
  1443. font-size: 36px;
  1444. color: #f39c12;
  1445. margin-right: 20px;
  1446. background: rgba(243, 156, 18, 0.1);
  1447. width: 60px;
  1448. height: 60px;
  1449. border-radius: 50%;
  1450. display: flex;
  1451. justify-content: center;
  1452. align-items: center;
  1453. flex-shrink: 0;
  1454. }
  1455. .confirm-message {
  1456. font-size: 16px;
  1457. line-height: 1.6;
  1458. color: #555;
  1459. margin: 0;
  1460. }
  1461. /* 确认对话框动画 */
  1462. .confirm-modal .settings-dialog {
  1463. animation: bounceIn 0.4s cubic-bezier(0.68, -0.55, 0.27, 1.55);
  1464. }
  1465. @keyframes bounceIn {
  1466. 0% {
  1467. transform: scale(0.8);
  1468. opacity: 0;
  1469. }
  1470. 70% {
  1471. transform: scale(1.05);
  1472. opacity: 1;
  1473. }
  1474. 100% {
  1475. transform: scale(1);
  1476. }
  1477. }
  1478. /* 黑暗模式下的确认对话框 */
  1479. .dark-mode .confirm-icon {
  1480. color: #f39c12;
  1481. background: rgba(243, 156, 18, 0.2);
  1482. }
  1483. .dark-mode .confirm-message {
  1484. color: #ddd;
  1485. }
  1486. /* 暗黑模式下的导航栏按钮样式 */
  1487. .dark-mode .navbar-actions .settings-link {
  1488. background-color: rgba(255, 255, 255, 0.08);
  1489. box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  1490. }
  1491. .dark-mode .navbar-actions .settings-link:hover {
  1492. background: linear-gradient(45deg, #3498db, #2980b9);
  1493. box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
  1494. }
  1495. .dark-mode .navbar-actions .donate-link {
  1496. background: linear-gradient(135deg, #ff6b6b 0%, #f39c12 100%);
  1497. color: #fff;
  1498. }
  1499. .dark-mode .navbar-actions .donate-link:hover {
  1500. background: linear-gradient(45deg, #e74c3c, #c0392b);
  1501. color: #fff;
  1502. }
  1503. /* 暗黑模式下的波纹效果 */
  1504. .dark-mode .navbar-actions .nav-item::after {
  1505. background: rgba(255, 255, 255, 0.4);
  1506. }
  1507. .dark-mode .navbar-actions .donate-link .nav-icon,
  1508. .dark-mode .navbar-actions .settings-link .nav-icon {
  1509. color: #fff;
  1510. }
  1511. /* 深色模式下的文本样式 */
  1512. .dark-mode h1, .dark-mode h2, .dark-mode h3, .dark-mode h4, .dark-mode h5, .dark-mode h6 {
  1513. color: #e0e0e0;
  1514. }
  1515. .dark-mode p, .dark-mode span, .dark-mode div {
  1516. color: #c0c0c0;
  1517. }
  1518. /* 深色模式下的输入框样式 */
  1519. .dark-mode input[type="text"],
  1520. .dark-mode input[type="email"],
  1521. .dark-mode input[type="password"],
  1522. .dark-mode textarea,
  1523. .dark-mode select {
  1524. background-color: #333;
  1525. border-color: #555;
  1526. color: #e0e0e0;
  1527. }
  1528. .dark-mode input[type="text"]:focus,
  1529. .dark-mode input[type="email"]:focus,
  1530. .dark-mode input[type="password"]:focus,
  1531. .dark-mode textarea:focus,
  1532. .dark-mode select:focus {
  1533. border-color: #4ca1af;
  1534. box-shadow: 0 0 0 2px rgba(76, 161, 175, 0.2);
  1535. }
  1536. /* 深色模式下的复选框样式 */
  1537. .dark-mode input[type="checkbox"] {
  1538. background-color: #333;
  1539. border-color: #555;
  1540. }
  1541. .dark-mode input[type="checkbox"]:checked {
  1542. background-color: #4ca1af;
  1543. border-color: #4ca1af;
  1544. }
  1545. /* 深色模式下的标签样式 */
  1546. .dark-mode label {
  1547. color: #e0e0e0;
  1548. }
  1549. /* 深色模式下的链接样式 */
  1550. .dark-mode a {
  1551. color: #4ca1af;
  1552. }
  1553. .dark-mode a:hover {
  1554. color: #5cb3c1;
  1555. }
  1556. /* 工具排序样式 */
  1557. .tool-sort-container {
  1558. background: #f8f9fa;
  1559. border-radius: 8px;
  1560. padding: 15px;
  1561. margin-top: 10px;
  1562. }
  1563. .sort-tips {
  1564. color: #6c757d;
  1565. font-size: 12px;
  1566. margin-bottom: 12px;
  1567. padding: 6px 10px;
  1568. background: rgba(0, 123, 255, 0.08);
  1569. border-left: 3px solid #007bff;
  1570. border-radius: 4px;
  1571. line-height: 1.4;
  1572. }
  1573. .sortable-list {
  1574. background: white;
  1575. border-radius: 6px;
  1576. border: 1px solid #e9ecef;
  1577. min-height: 180px;
  1578. max-height: 350px;
  1579. overflow-y: auto;
  1580. padding: 6px;
  1581. }
  1582. .sortable-item {
  1583. display: flex;
  1584. align-items: center;
  1585. padding: 2px 12px;
  1586. margin: 2px 0;
  1587. background: white;
  1588. border: 1px solid #e9ecef;
  1589. border-radius: 4px;
  1590. cursor: move;
  1591. transition: all 0.2s ease;
  1592. position: relative;
  1593. }
  1594. .sortable-item:hover {
  1595. background: #f8f9fa;
  1596. border-color: #007bff;
  1597. box-shadow: 0 1px 3px rgba(0, 123, 255, 0.15);
  1598. transform: translateY(-1px);
  1599. }
  1600. .sortable-item.dragging {
  1601. opacity: 0.6;
  1602. transform: scale(1.02);
  1603. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
  1604. background: #fff3cd;
  1605. border-color: #ffc107;
  1606. }
  1607. .sortable-item.drag-over {
  1608. border-top: 3px solid #007bff;
  1609. background: rgba(0, 123, 255, 0.05);
  1610. }
  1611. .drag-handle {
  1612. font-size: 14px;
  1613. color: #6c757d;
  1614. margin-right: 10px;
  1615. cursor: grab;
  1616. padding: 2px 4px;
  1617. border-radius: 3px;
  1618. transition: all 0.2s ease;
  1619. user-select: none;
  1620. width: 20px;
  1621. text-align: center;
  1622. flex-shrink: 0;
  1623. }
  1624. .drag-handle:hover {
  1625. background: #e9ecef;
  1626. color: #495057;
  1627. }
  1628. .drag-handle:active {
  1629. cursor: grabbing;
  1630. }
  1631. .sortable-item .tool-icon {
  1632. font-size: 16px;
  1633. margin-right: 10px;
  1634. text-align: center;
  1635. flex-shrink: 0;
  1636. }
  1637. .sortable-item .tool-name {
  1638. font-weight: 500;
  1639. color: #343a40;
  1640. margin-right: 12px;
  1641. min-width: 100px;
  1642. flex-shrink: 0;
  1643. font-size: 14px;
  1644. }
  1645. .sortable-item .tool-desc {
  1646. color: #6c757d;
  1647. font-size: 12px;
  1648. flex: 1;
  1649. overflow: hidden;
  1650. text-overflow: ellipsis;
  1651. white-space: nowrap;
  1652. line-height: 1.3;
  1653. }
  1654. .sort-actions {
  1655. margin-top: 12px;
  1656. text-align: right;
  1657. }
  1658. .sort-actions .btn {
  1659. margin-left: 6px;
  1660. }
  1661. .btn-sm {
  1662. padding: 5px 10px;
  1663. font-size: 12px;
  1664. }
  1665. /* 暗黑模式下的排序样式 */
  1666. .dark-mode .tool-sort-container {
  1667. background: #2a2a2a;
  1668. }
  1669. .dark-mode .sort-tips {
  1670. background: rgba(0, 123, 255, 0.2);
  1671. color: #d4d4d4;
  1672. }
  1673. .dark-mode .sortable-list {
  1674. background: #1e1e1e;
  1675. border-color: #404040;
  1676. }
  1677. .dark-mode .sortable-item {
  1678. background: #1e1e1e;
  1679. border-color: #404040;
  1680. }
  1681. .dark-mode .sortable-item:hover {
  1682. background: #2a2a2a;
  1683. border-color: #007bff;
  1684. }
  1685. .dark-mode .sortable-item.dragging {
  1686. background: #3a3a2a;
  1687. border-color: #ffc107;
  1688. }
  1689. .dark-mode .sortable-item.drag-over {
  1690. background: rgba(0, 123, 255, 0.1);
  1691. }
  1692. .dark-mode .drag-handle {
  1693. color: #888;
  1694. }
  1695. .dark-mode .drag-handle:hover {
  1696. background: #404040;
  1697. color: #d4d4d4;
  1698. }
  1699. .dark-mode .sortable-item .tool-name {
  1700. color: #d4d4d4;
  1701. }
  1702. .dark-mode .sortable-item .tool-desc {
  1703. color: #888;
  1704. }
  1705. /* 突出显示修复按钮 */
  1706. .highlight-bugfix {
  1707. background: linear-gradient(90deg, #ff9800 0%, #ffc107 100%);
  1708. color: #fff !important;
  1709. border-radius: 6px;
  1710. font-weight: bold;
  1711. margin-left: 10px;
  1712. padding: 0 16px;
  1713. box-shadow: 0 2px 8px rgba(255,152,0,0.10);
  1714. display: flex;
  1715. align-items: center;
  1716. transition: transform 0.15s, box-shadow 0.15s;
  1717. border: 1px solid #ff9800;
  1718. height: 32px;
  1719. }
  1720. .highlight-bugfix:hover {
  1721. background: linear-gradient(90deg, #ffc107 0%, #ff9800 100%);
  1722. color: #fff;
  1723. transform: scale(1.06);
  1724. box-shadow: 0 4px 16px rgba(255,152,0,0.18);
  1725. text-decoration: none;
  1726. }
  1727. .bugfix-emoji {
  1728. font-size: 20px;
  1729. margin-right: 6px;
  1730. }
  1731. .bugfix-text {
  1732. font-size: 15px;
  1733. letter-spacing: 1px;
  1734. }