seafile.css 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. /* =============================================
  2. Phycat 主题 for Seafile (亮色模式 · Sakura 风格)
  3. 基于 Obsidian Phycat 主题移植,完全重写 Seafile 界面
  4. ============================================= */
  5. :root {
  6. --primary-color: #ff7096;
  7. --secondary-color: #bd93f9;
  8. --bg-color: #fff7fa;
  9. --light-deep: #e91e63;
  10. --light-light: #ffb7cd;
  11. --light-lighter: #ffe3ec;
  12. --light-pale: #fff0f5;
  13. --text-color: #1c1719;
  14. --text-color-secondary: #3f3a3b;
  15. --link-hover-color: #d81b60;
  16. --select-text-bg-color: rgba(255, 112, 150, 0.3);
  17. --glow-color: rgba(255, 112, 150, 0.5);
  18. --border-color: color-mix(in srgb, var(--primary-color), transparent 60%);
  19. --h2-bg-gradient: linear-gradient(to right, var(--light-light), var(--primary-color), var(--light-light));
  20. --text-bold: var(--light-deep);
  21. --code-normal: #546e7a;
  22. --code-string: #2e7d32;
  23. --code-comment: #b0bec5;
  24. --code-keyword: #d81b60;
  25. --code-function: #8e24aa;
  26. --code-value: #f57c00;
  27. --code-tag: #d81b60;
  28. --code-operator: #8e24aa;
  29. --code-property: #00897b;
  30. --code-punctuation: #78909c;
  31. --code-block-bg: #fff4f8;
  32. --code-block-header-bg: color-mix(in srgb, var(--primary-color), transparent 92%);
  33. --blockquote-bg: #fff0f5;
  34. --table-th-bg: #ffe3ec;
  35. --table-border: #ffd9e2;
  36. --checkbox-size: 1.2rem;
  37. --checkmark-color: #ffffff;
  38. --file-line-width: 900px;
  39. --letter-spacing: 0.5px;
  40. --line-height-customize: 1.7;
  41. --code-line-height: 1.5;
  42. --blockquote-line-height: 1.6;
  43. --table-line-height: 1.6;
  44. --heading-spacing: 1.2em;
  45. --h1-size: 2.2em;
  46. --h2-size: 1.8em;
  47. --h3-size: 1.5em;
  48. --h4-size: 1.3em;
  49. --h5-size: 1.2em;
  50. --h6-size: 1.2em;
  51. --radius-small: 8px;
  52. --radius-medium: 12px;
  53. --radius-large: 20px;
  54. }
  55. /* ========== 全局基础样式 ========== */
  56. * {
  57. border-radius: var(--radius-medium) !important;
  58. box-sizing: border-box;
  59. }
  60. body {
  61. background-color: var(--bg-color) !important;
  62. font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "LXGW WenKai", "霞鹜文楷", Helvetica, Arial, sans-serif !important;
  63. color: var(--text-color) !important;
  64. line-height: var(--line-height-customize) !important;
  65. letter-spacing: var(--letter-spacing) !important;
  66. }
  67. /* ========== 导航栏 ========== */
  68. .navbar,
  69. .navbar-default {
  70. background-color: var(--primary-color) !important;
  71. border: none !important;
  72. box-shadow: 0 4px 12px color-mix(in srgb, var(--primary-color), transparent 80%) !important;
  73. }
  74. .navbar-default .navbar-brand,
  75. .navbar-default .navbar-nav > li > a {
  76. color: white !important;
  77. font-weight: 500 !important;
  78. transition: all 0.2s ease;
  79. }
  80. .navbar-default .navbar-nav > li > a:hover,
  81. .navbar-default .navbar-nav > .open > a,
  82. .navbar-default .navbar-nav > .open > a:hover,
  83. .navbar-default .navbar-nav > .open > a:focus {
  84. background-color: color-mix(in srgb, var(--primary-color), black 10%) !important;
  85. color: white !important;
  86. }
  87. .navbar-default .navbar-toggle {
  88. border-color: rgba(255, 255, 255, 0.5) !important;
  89. }
  90. .navbar-default .navbar-toggle .icon-bar {
  91. background-color: white !important;
  92. }
  93. /* ========== 按钮 ========== */
  94. .btn,
  95. .btn-primary,
  96. .btn-default {
  97. border: none !important;
  98. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;
  99. font-weight: 500 !important;
  100. transition: all 0.2s ease !important;
  101. border-radius: var(--radius-medium) !important;
  102. }
  103. .btn-primary {
  104. background-color: var(--primary-color) !important;
  105. color: white !important;
  106. }
  107. .btn-primary:hover,
  108. .btn-primary:focus {
  109. background-color: var(--link-hover-color) !important;
  110. box-shadow: 0 4px 12px var(--glow-color) !important;
  111. transform: translateY(-2px);
  112. }
  113. .btn-primary:active {
  114. transform: scale(0.96) !important;
  115. }
  116. .btn-default {
  117. background-color: white !important;
  118. color: var(--text-color) !important;
  119. border: 1px solid var(--border-color) !important;
  120. }
  121. .btn-default:hover {
  122. background-color: var(--light-pale) !important;
  123. border-color: var(--primary-color) !important;
  124. }
  125. /* ========== 链接 ========== */
  126. a {
  127. color: var(--secondary-color) !important;
  128. text-decoration: none !important;
  129. font-weight: 500 !important;
  130. transition: color 0.2s ease;
  131. }
  132. a:hover {
  133. color: var(--link-hover-color) !important;
  134. text-decoration: underline !important;
  135. }
  136. /* ========== 面板、卡片 ========== */
  137. .panel {
  138. border: none !important;
  139. background-color: white !important;
  140. box-shadow: 0 6px 18px rgba(0, 0, 0, 0.03) !important;
  141. border-radius: var(--radius-large) !important;
  142. overflow: hidden;
  143. }
  144. .panel-heading {
  145. background-color: var(--light-pale) !important;
  146. color: var(--primary-color) !important;
  147. font-weight: bold !important;
  148. border-bottom: 1px solid var(--border-color) !important;
  149. border-radius: var(--radius-large) var(--radius-large) 0 0 !important;
  150. padding: 12px 18px !important;
  151. }
  152. .panel-footer {
  153. background-color: var(--light-pale) !important;
  154. border-top: 1px solid var(--border-color) !important;
  155. border-radius: 0 0 var(--radius-large) var(--radius-large) !important;
  156. }
  157. /* ========== 输入框、选择框 ========== */
  158. input,
  159. textarea,
  160. select,
  161. .form-control {
  162. border: 1px solid var(--border-color) !important;
  163. border-radius: var(--radius-small) !important;
  164. padding: 8px 12px !important;
  165. transition: all 0.2s ease !important;
  166. background-color: white !important;
  167. }
  168. input:focus,
  169. textarea:focus,
  170. select:focus {
  171. border-color: var(--primary-color) !important;
  172. box-shadow: 0 0 0 3px var(--glow-color) !important;
  173. outline: none !important;
  174. }
  175. /* ========== 标签、徽章 ========== */
  176. .badge,
  177. .label,
  178. .label-primary {
  179. background-color: var(--primary-color) !important;
  180. color: white !important;
  181. border-radius: 30px !important;
  182. padding: 3px 8px !important;
  183. font-weight: 500 !important;
  184. }
  185. /* ========== 表格 (普通表格) ========== */
  186. .table {
  187. background-color: white;
  188. border-radius: var(--radius-medium);
  189. overflow: hidden;
  190. box-shadow: 0 2px 8px rgba(0,0,0,0.02);
  191. }
  192. .table > thead > tr > th {
  193. background-color: var(--light-pale) !important;
  194. color: var(--primary-color) !important;
  195. font-weight: 600 !important;
  196. border-bottom: 2px solid var(--border-color) !important;
  197. }
  198. .table > tbody > tr > td,
  199. .table > tbody > tr > th {
  200. border-top: 1px solid var(--border-color) !important;
  201. padding: 10px 12px !important;
  202. }
  203. .table > tbody > tr:hover {
  204. background-color: var(--light-lighter) !important;
  205. }
  206. /* ========== Markdown 预览区 (Wiki 内容) ========== */
  207. .article {
  208. background-color: white !important;
  209. border-radius: var(--radius-large) !important;
  210. box-shadow: 0 8px 24px rgba(0, 0, 0, 0.02) !important;
  211. padding: 32px !important;
  212. margin: 16px 0 !important;
  213. line-height: var(--line-height-customize) !important;
  214. color: var(--text-color) !important;
  215. }
  216. /* ----- 标题 (仿 Phycat 双子塔风格) ----- */
  217. .article h1,
  218. .article h2,
  219. .article h3,
  220. .article h4,
  221. .article h5,
  222. .article h6 {
  223. color: var(--text-color) !important;
  224. font-weight: 600 !important;
  225. margin-top: calc(var(--heading-spacing) * 1.5);
  226. margin-bottom: calc(var(--heading-spacing) * 0.8);
  227. line-height: 1.3;
  228. position: relative;
  229. transition: all 0.3s ease;
  230. }
  231. /* H1:居中,下划线渐变 */
  232. .article h1 {
  233. font-size: var(--h1-size) !important;
  234. text-align: center;
  235. padding-bottom: 12px;
  236. border-bottom: 3px solid transparent;
  237. background-image: linear-gradient(to right, transparent, var(--primary-color), transparent);
  238. background-repeat: no-repeat;
  239. background-position: bottom;
  240. background-size: 40px 3px;
  241. transition: background-size 0.3s ease, color 0.3s ease;
  242. }
  243. .article h1:hover {
  244. color: var(--primary-color);
  245. background-size: 80% 3px;
  246. }
  247. /* H2:双子塔风格 (左侧双线条) */
  248. .article h2 {
  249. font-size: var(--h2-size) !important;
  250. padding-left: 24px !important;
  251. }
  252. .article h2::before {
  253. content: "";
  254. position: absolute;
  255. left: 0;
  256. top: 15%;
  257. height: 70%;
  258. width: 5px;
  259. background-color: var(--primary-color);
  260. border-radius: 4px;
  261. opacity: 0.8;
  262. transition: all 0.3s ease;
  263. }
  264. .article h2::after {
  265. content: "";
  266. position: absolute;
  267. left: 8px;
  268. top: 30%;
  269. height: 40%;
  270. width: 2px;
  271. background-color: var(--secondary-color);
  272. border-radius: 2px;
  273. opacity: 0.6;
  274. transition: all 0.3s ease 0.05s;
  275. }
  276. .article h2:hover {
  277. color: var(--primary-color) !important;
  278. }
  279. .article h2:hover::before {
  280. height: 100%;
  281. top: 0;
  282. opacity: 0.4;
  283. }
  284. .article h2:hover::after {
  285. height: 80%;
  286. top: 10%;
  287. width: 4px;
  288. opacity: 1;
  289. background-color: var(--primary-color);
  290. }
  291. /* H3:左侧小色块 */
  292. .article h3 {
  293. font-size: var(--h3-size) !important;
  294. padding-left: 18px !important;
  295. }
  296. .article h3::before {
  297. content: "";
  298. position: absolute;
  299. left: 0;
  300. top: 50%;
  301. transform: translateY(-50%);
  302. width: 5px;
  303. height: 1.3rem;
  304. border-radius: 4px;
  305. background-color: var(--primary-color);
  306. transition: all 0.3s ease;
  307. }
  308. .article h3:hover {
  309. padding-left: 22px;
  310. color: var(--primary-color);
  311. }
  312. .article h3:hover::before {
  313. height: 1.8rem;
  314. width: 7px;
  315. }
  316. /* H4:空心圆 */
  317. .article h4 {
  318. font-size: var(--h4-size) !important;
  319. padding-left: 20px !important;
  320. }
  321. .article h4::before {
  322. content: "";
  323. position: absolute;
  324. left: 0;
  325. top: 50%;
  326. transform: translateY(-50%);
  327. width: 10px;
  328. height: 10px;
  329. border-radius: 50%;
  330. background-color: white;
  331. border: 2px solid var(--primary-color);
  332. transition: all 0.3s ease;
  333. }
  334. .article h4:hover {
  335. color: var(--primary-color);
  336. transform: translateX(6px);
  337. }
  338. .article h4:hover::before {
  339. background-color: var(--primary-color);
  340. transform: translateY(-50%) scale(1.2);
  341. box-shadow: 0 0 0 4px var(--light-lighter);
  342. }
  343. /* H5:实心圆 */
  344. .article h5 {
  345. font-size: var(--h5-size) !important;
  346. padding-left: 20px !important;
  347. }
  348. .article h5::before {
  349. content: "";
  350. position: absolute;
  351. left: 0;
  352. top: 50%;
  353. transform: translateY(-50%);
  354. width: 10px;
  355. height: 10px;
  356. border-radius: 50%;
  357. background-color: var(--primary-color);
  358. border: 2px solid var(--primary-color);
  359. transition: all 0.3s ease;
  360. }
  361. .article h5:hover {
  362. color: var(--primary-color);
  363. transform: translateX(6px);
  364. }
  365. .article h5:hover::before {
  366. transform: translateY(-50%) scale(1.3);
  367. box-shadow: 0 0 0 4px var(--light-lighter);
  368. }
  369. /* H6:减号 */
  370. .article h6 {
  371. font-size: var(--h6-size) !important;
  372. padding-left: 20px !important;
  373. }
  374. .article h6::before {
  375. content: "-";
  376. position: absolute;
  377. left: 0;
  378. top: 50%;
  379. transform: translateY(-50%);
  380. color: var(--primary-color);
  381. font-weight: bold;
  382. transition: all 0.3s ease;
  383. }
  384. .article h6:hover {
  385. color: var(--primary-color);
  386. transform: translateX(6px);
  387. }
  388. .article h6:hover::before {
  389. transform: translateY(-50%) scaleX(1.8);
  390. }
  391. /* ----- 段落与列表 ----- */
  392. .article p,
  393. .article ul,
  394. .article ol {
  395. margin-bottom: 1.2em;
  396. color: var(--text-color-secondary);
  397. }
  398. .article li {
  399. margin: 0.4em 0;
  400. }
  401. .article ul ul,
  402. .article ol ol,
  403. .article ul ol,
  404. .article ol ul {
  405. margin-bottom: 0;
  406. }
  407. /* 列表标记颜色 */
  408. .article ul > li::marker,
  409. .article ol > li::marker {
  410. color: var(--primary-color);
  411. }
  412. /* 列表引导线 (可选) */
  413. .article li {
  414. position: relative;
  415. }
  416. .article li::before {
  417. content: "";
  418. position: absolute;
  419. top: 1.2em;
  420. height: calc(100% - 1.5em);
  421. left: -18px;
  422. border-left: 1px solid var(--primary-color);
  423. opacity: 0.3;
  424. pointer-events: none;
  425. }
  426. .article > div > ul > li::before,
  427. .article > div > ol > li::before {
  428. display: none;
  429. }
  430. /* ----- 引用块 ----- */
  431. .article blockquote {
  432. position: relative;
  433. margin: 24px 0;
  434. padding: 18px 20px 18px 48px;
  435. background-color: var(--blockquote-bg) !important;
  436. border: 1px solid color-mix(in srgb, var(--primary-color), transparent 80%);
  437. border-radius: 18px;
  438. color: var(--text-color-secondary);
  439. transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  440. line-height: var(--blockquote-line-height);
  441. }
  442. .article blockquote::before {
  443. content: "✨";
  444. position: absolute;
  445. left: 14px;
  446. top: 18px;
  447. font-size: 24px;
  448. line-height: 1;
  449. font-family: "Segoe UI Emoji", "Apple Color Emoji", sans-serif;
  450. transform: rotate(30deg);
  451. transition: transform 0.3s ease;
  452. }
  453. .article blockquote:hover {
  454. transform: scale(1.01);
  455. border-color: var(--primary-color);
  456. background-color: color-mix(in srgb, var(--primary-color), white 92%);
  457. box-shadow: 0 8px 20px color-mix(in srgb, var(--primary-color), transparent 85%);
  458. }
  459. .article blockquote:hover::before {
  460. transform: rotate(0deg);
  461. text-shadow: 0 0 8px var(--primary-color);
  462. }
  463. .article blockquote p:last-child {
  464. margin-bottom: 0;
  465. }
  466. /* ----- 代码块 (带 Mac 风格圆点) ----- */
  467. .article pre {
  468. position: relative;
  469. background-color: var(--code-block-bg) !important;
  470. border: 1px solid color-mix(in srgb, var(--border-color), transparent 50%) !important;
  471. border-radius: var(--radius-large) !important;
  472. padding: 42px 16px 16px 16px !important;
  473. margin: 24px 0 !important;
  474. overflow-x: auto;
  475. transition: border-color 0.3s ease, box-shadow 0.3s ease;
  476. }
  477. .article pre::before {
  478. content: "";
  479. position: absolute;
  480. top: 0;
  481. left: 0;
  482. width: 100%;
  483. height: 32px;
  484. background-color: color-mix(in srgb, var(--primary-color), transparent 94%);
  485. background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 450 130'%3E%3Cellipse cx='65' cy='65' rx='50' ry='52' fill='%23ed6a5e' stroke='%23dc4a3a' stroke-width='2'/%3E%3Cellipse cx='225' cy='65' rx='50' ry='52' fill='%23f5bd4f' stroke='%23e0a03a' stroke-width='2'/%3E%3Cellipse cx='385' cy='65' rx='50' ry='52' fill='%2361c454' stroke='%2347a03a' stroke-width='2'/%3E%3C/svg%3E");
  486. background-repeat: no-repeat;
  487. background-size: 54px;
  488. background-position: 12px center;
  489. border-bottom: 1px solid color-mix(in srgb, var(--border-color), transparent 70%);
  490. border-radius: var(--radius-large) var(--radius-large) 0 0;
  491. z-index: 5;
  492. }
  493. .article pre:hover {
  494. border-color: var(--primary-color) !important;
  495. box-shadow: 0 6px 16px color-mix(in srgb, var(--primary-color), transparent 85%);
  496. }
  497. .article pre code {
  498. font-family: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", monospace !important;
  499. font-size: 0.9rem;
  500. line-height: var(--code-line-height);
  501. color: var(--code-normal) !important;
  502. background: transparent !important;
  503. border: none !important;
  504. padding: 0 !important;
  505. }
  506. /* 行内代码 */
  507. .article :not(pre) > code {
  508. background-color: var(--code-block-bg) !important;
  509. color: var(--code-keyword) !important;
  510. border: 1px solid var(--border-color) !important;
  511. border-radius: var(--radius-small) !important;
  512. padding: 0.2em 0.5em !important;
  513. font-family: monospace !important;
  514. font-size: 0.9em;
  515. transition: all 0.2s ease;
  516. }
  517. .article :not(pre) > code:hover {
  518. background-color: var(--primary-color) !important;
  519. color: white !important;
  520. border-color: var(--primary-color) !important;
  521. box-shadow: 0 0 10px var(--glow-color);
  522. }
  523. /* ----- 表格 (Markdown 内) ----- */
  524. .article table {
  525. display: block;
  526. width: 100%;
  527. overflow-x: auto;
  528. border-collapse: collapse;
  529. margin: 24px 0;
  530. border-radius: var(--radius-medium);
  531. border: 1px solid var(--table-border);
  532. box-shadow: 0 2px 8px rgba(0,0,0,0.02);
  533. }
  534. .article table th,
  535. .article table td {
  536. padding: 12px 16px;
  537. border: 1px solid var(--table-border);
  538. color: var(--text-color-secondary);
  539. }
  540. .article table th {
  541. background-color: var(--table-th-bg) !important;
  542. color: var(--primary-color) !important;
  543. font-weight: 600;
  544. border-bottom: 2px solid var(--primary-color);
  545. }
  546. .article table tr:nth-child(even) {
  547. background-color: #fff9fc;
  548. }
  549. .article table tbody tr:hover {
  550. background-color: var(--light-lighter);
  551. }
  552. /* ----- 水平分割线 ----- */
  553. .article hr {
  554. border: none;
  555. height: 2px;
  556. background: linear-gradient(to right, transparent, var(--primary-color), transparent);
  557. margin: 32px 0;
  558. position: relative;
  559. }
  560. .article hr::after {
  561. content: "";
  562. position: absolute;
  563. left: 50%;
  564. top: 50%;
  565. transform: translate(-50%, -50%) rotate(45deg);
  566. width: 8px;
  567. height: 8px;
  568. border: 2px solid var(--primary-color);
  569. background-color: white;
  570. border-radius: 2px;
  571. transition: all 0.3s ease;
  572. }
  573. .article hr:hover::after {
  574. transform: translate(-50%, -50%) rotate(225deg) scale(1.5);
  575. background-color: var(--primary-color);
  576. box-shadow: 0 0 10px var(--primary-color);
  577. }
  578. /* ----- 图片 ----- */
  579. .article img {
  580. max-width: 100%;
  581. border-radius: var(--radius-large);
  582. box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);
  583. margin: 24px 0;
  584. border: 2px solid white;
  585. }
  586. /* ----- 任务列表 (复选框) ----- */
  587. .article .task-list-item {
  588. list-style: none;
  589. position: relative;
  590. padding-left: 0;
  591. }
  592. .article input[type="checkbox"] {
  593. appearance: none;
  594. -webkit-appearance: none;
  595. width: var(--checkbox-size);
  596. height: var(--checkbox-size);
  597. border-radius: 50% !important;
  598. border: 2px solid var(--border-color);
  599. background-color: white;
  600. margin-right: 8px;
  601. vertical-align: middle;
  602. position: relative;
  603. top: -2px;
  604. cursor: pointer;
  605. transition: all 0.2s ease;
  606. }
  607. .article input[type="checkbox"]:checked {
  608. background-color: var(--primary-color);
  609. border-color: var(--primary-color);
  610. box-shadow: 0 0 8px var(--glow-color);
  611. }
  612. .article input[type="checkbox"]:checked::after {
  613. content: "";
  614. position: absolute;
  615. left: 4px;
  616. top: 1px;
  617. width: 5px;
  618. height: 9px;
  619. border: solid white;
  620. border-width: 0 2px 2px 0;
  621. transform: rotate(45deg);
  622. }
  623. .article .task-list-item[data-task="/"] input[type="checkbox"]:checked::after {
  624. content: "•";
  625. border: none;
  626. color: white;
  627. font-size: 14px;
  628. line-height: 1;
  629. left: 3px;
  630. top: 0px;
  631. }
  632. /* ----- 链接 (Markdown 内) ----- */
  633. .article a {
  634. color: var(--secondary-color) !important;
  635. text-decoration: none !important;
  636. border-bottom: 1px dotted var(--primary-color);
  637. padding: 0 2px;
  638. }
  639. .article a:hover {
  640. color: var(--link-hover-color) !important;
  641. border-bottom-style: solid;
  642. }
  643. /* ----- 强调与加粗 ----- */
  644. .article strong {
  645. color: var(--text-bold);
  646. font-weight: 700;
  647. }
  648. .article em {
  649. color: var(--secondary-color);
  650. font-style: italic;
  651. }
  652. /* ========== Seafile 右侧大纲 ========== */
  653. .seafile-editor-outline {
  654. background-color: white;
  655. border-radius: var(--radius-large);
  656. padding: 16px;
  657. margin-top: 16px;
  658. box-shadow: 0 4px 12px rgba(0,0,0,0.02);
  659. }
  660. .seafile-editor-outline .outline-h2 {
  661. padding: 6px 12px;
  662. margin: 2px 0;
  663. border-left: 3px solid transparent;
  664. transition: all 0.2s ease;
  665. cursor: pointer;
  666. }
  667. .seafile-editor-outline .outline-h2:hover {
  668. border-left-color: var(--primary-color);
  669. background-color: var(--light-pale);
  670. }
  671. .seafile-editor-outline .outline-h2.active {
  672. border-left-color: var(--primary-color);
  673. background-color: var(--light-lighter);
  674. color: var(--primary-color);
  675. font-weight: 600;
  676. }
  677. /* ========== 最近修改信息 ========== */
  678. #wiki-page-last-modified {
  679. color: var(--text-color-secondary);
  680. font-size: 0.9em;
  681. margin-top: 24px;
  682. padding-top: 12px;
  683. border-top: 1px dashed var(--border-color);
  684. }
  685. /* ========== 全局滚动条美化 ========== */
  686. ::-webkit-scrollbar {
  687. width: 8px;
  688. height: 8px;
  689. }
  690. ::-webkit-scrollbar-track {
  691. background: transparent;
  692. }
  693. ::-webkit-scrollbar-thumb {
  694. background: color-mix(in srgb, var(--primary-color), transparent 70%);
  695. border-radius: 20px;
  696. border: 2px solid transparent;
  697. background-clip: content-box;
  698. }
  699. ::-webkit-scrollbar-thumb:hover {
  700. background: color-mix(in srgb, var(--primary-color), transparent 40%);
  701. }