common.css 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. @media (prefers-color-scheme: dark) {
  2. html {
  3. background-color: #002b36;
  4. }
  5. html[data-theme='light'] {
  6. background-color: transparent;
  7. }
  8. }
  9. @supports (font-variation-settings: normal) {
  10. html {
  11. font-family: 'Inter var', sans-serif;
  12. }
  13. }
  14. html:not(.is-native-android) {
  15. font-family: var(--ls-font-family), sans-serif, system-ui, -apple-system,
  16. BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans',
  17. serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol !important;
  18. }
  19. /* region Reset top elements */
  20. html {
  21. overflow: hidden;
  22. }
  23. body {
  24. color: var(--lx-gray-12, var(--ls-primary-text-color, hsl(var(--foreground))));
  25. background-color: var(--lx-gray-01, var(--ls-primary-background-color, hsl(var(--background))));
  26. line-height: 1.5;
  27. min-height: 100%;
  28. word-break: break-word; /* compatible for overflow-wrap: anywhere */
  29. }
  30. @layer base {
  31. svg {
  32. pointer-events: none;
  33. }
  34. textarea {
  35. overflow: hidden;
  36. padding: 8px;
  37. border: 1px solid rgba(39, 41, 43, 0.15);
  38. border-radius: var(--ls-border-radius-low);
  39. font-size: 1em;
  40. line-height: 1.5;
  41. width: 100%;
  42. resize: none;
  43. outline: none;
  44. font-weight: inherit;
  45. letter-spacing: inherit;
  46. text-size-adjust: 100%;
  47. background: var(--ls-primary-background-color);
  48. }
  49. ul {
  50. list-style: circle;
  51. margin-left: 1.2em;
  52. }
  53. ol {
  54. list-style: decimal;
  55. margin-left: 1.2em;
  56. }
  57. p {
  58. line-height: 1.5;
  59. margin: 0.5rem 0;
  60. color: var(--ls-primary-text-color);
  61. }
  62. li {
  63. margin: 0.25rem 0;
  64. }
  65. pre {
  66. background: var(--ls-secondary-background-color, #f6f8fa);
  67. margin: 1rem 0;
  68. line-height: 1.45em;
  69. overflow: auto;
  70. }
  71. a {
  72. cursor: pointer;
  73. color: var(--lx-accent-11, var(--ls-link-text-color, hsl(var(--primary)/.8)));
  74. text-decoration: none;
  75. }
  76. a:hover {
  77. color: var(--lx-accent-12, var(--ls-link-text-hover-color, hsl(var(--primary))));
  78. }
  79. code {
  80. font-size: 85%;
  81. }
  82. pre.code {
  83. background: #282a36;
  84. background: var(--ls-secondary-background-color);
  85. color: var(--ls-primary-text-color, #f8f8f2);
  86. }
  87. dl {
  88. margin: 1rem 0;
  89. }
  90. dt {
  91. margin-bottom: 0.25rem;
  92. font-weight: bold;
  93. }
  94. blockquote {
  95. display: block;
  96. text-indent: 0;
  97. padding: 8px 20px;
  98. border-left: 4px solid;
  99. border-left-color: var(--ls-page-blockquote-border-color, hsl(var(--primary)/.4));
  100. background-color: var(--ls-page-blockquote-bg-color, hsl(var(--secondary)));
  101. color: var(--ls-page-blockquote-color, hsl(var(--secondary-foreground)));
  102. margin: 1rem 0;
  103. font-size: 1rem;
  104. }
  105. summary {
  106. outline: none;
  107. }
  108. iframe {
  109. width: 100%;
  110. margin: 1rem 0;
  111. }
  112. img,
  113. video {
  114. margin-left: auto;
  115. margin-right: auto;
  116. }
  117. ::selection {
  118. background: var(--ls-selection-background-color);
  119. color: var(--ls-primary-text-color);
  120. }
  121. ::-moz-selection {
  122. background: var(--ls-selection-background-color);
  123. color: var(--ls-primary-text-color);
  124. }
  125. }
  126. /* endregion */
  127. /** region App utilities **/
  128. .ls-center {
  129. position: absolute;
  130. top: 50%;
  131. left: 50%;
  132. transform: translate(-50%, -50%);
  133. }
  134. li p:first-child,
  135. .block-body p:first-child {
  136. margin-top: 0;
  137. }
  138. li p:last-child,
  139. .block-body p:last-child,
  140. .block-body ul:last-child,
  141. .block-body ol:last-child,
  142. .block-body dl:last-child {
  143. margin-bottom: 0;
  144. }
  145. .bg-base-2 {
  146. background-color: var(--ls-secondary-background-color, #f0f8ff);
  147. }
  148. .bg-base-3 {
  149. background-color: var(--ls-primary-background-color, #fff);
  150. }
  151. .bg-base-4 {
  152. background-color: var(--ls-tertiary-background-color);
  153. }
  154. .pre-white-space {
  155. white-space: pre;
  156. }
  157. .pre-wrap-white-space {
  158. white-space: pre-wrap;
  159. }
  160. .pre-line-white-space {
  161. white-space: pre-line;
  162. }
  163. .cursor-pointer,
  164. .cursor {
  165. cursor: pointer;
  166. }
  167. .external-link {
  168. text-decoration: none;
  169. border-bottom: 1px solid;
  170. &:hover {
  171. cursor: alias;
  172. }
  173. }
  174. .noscroll {
  175. position: fixed;
  176. overflow-y: scroll;
  177. }
  178. .canceled,
  179. .cancelled,
  180. .done {
  181. text-decoration: line-through;
  182. opacity: 0.6;
  183. }
  184. .opacity-30 {
  185. opacity: 0.3;
  186. }
  187. .opacity-70 {
  188. opacity: 0.7;
  189. }
  190. .opacity-80 {
  191. opacity: 0.8;
  192. }
  193. .done > input {
  194. opacity: 1;
  195. }
  196. .page-drop-options {
  197. width: 18em;
  198. }
  199. .fixed-width {
  200. max-width: calc(var(--ls-main-content-max-width) - 30px);
  201. }
  202. .center,
  203. .foldable-title {
  204. margin: 0 auto;
  205. }
  206. .translate-x-5 {
  207. --transform-translate-x: 1.25rem;
  208. }
  209. .done,
  210. .canceled,
  211. .cancelled {
  212. opacity: 0.7;
  213. }
  214. .tip-shadow {
  215. -webkit-filter: drop-shadow(1px 1px 2px rgba(155, 155, 0, 0.8));
  216. filter: drop-shadow(1px 1px 2px rgba(155, 155, 0, 0.8));
  217. }
  218. .admonition-icon {
  219. @apply border-r;
  220. }
  221. i.ti {
  222. /*
  223. compensates the wrong top spacing in the iconfont.
  224. See https://github.com/tabler/tabler-icons/issues/118/
  225. */
  226. transform: translateY(-1px);
  227. }
  228. .dnd-separator {
  229. border-bottom: 3px solid #ccc;
  230. }
  231. .aspect-ratio-square {
  232. padding-top: 100%;
  233. }
  234. .aspect-ratio-16\/9 {
  235. padding-top: 56.25%;
  236. }
  237. .aspect-ratio-4\/3 {
  238. padding-top: 75%;
  239. }
  240. .aspect-ratio-21\/9 {
  241. padding-top: 42.86%;
  242. }
  243. .admonitionblock {
  244. margin: 2rem 0;
  245. }
  246. .abstract {
  247. margin: 2rem 0;
  248. width: 80%;
  249. font-style: italic;
  250. }
  251. .abstract p:last-of-type::before {
  252. content: ' ';
  253. white-space: pre;
  254. }
  255. .dropdown-overflow-auto {
  256. max-height: 400px;
  257. overflow-y: auto;
  258. }
  259. .heading-bg {
  260. border-radius: 50%;
  261. width: 18px;
  262. height: 18px;
  263. &.remove {
  264. @apply border flex items-center justify-center;
  265. border-color: var(--border-color);
  266. }
  267. }
  268. .to-heading-button {
  269. @apply px-1 text-lg !important;
  270. }
  271. /** endregion **/
  272. /* region FIXME: override elements (?) */
  273. h1.title, h1.title input {
  274. @apply mb-4 font-medium;
  275. color: var(--lx-gray-12, var(--ls-title-text-color, hsl(var(--foreground))));
  276. font-size: var(--ls-page-title-size, 32px);
  277. }
  278. .title .page-icon {
  279. margin-right: 12px;
  280. }
  281. .block-highlight,
  282. .content .selected {
  283. transition: background-color 0.2s cubic-bezier(0, 1, 0, 1);
  284. background-color: var(--ls-block-highlight-color, var(--rx-gray-04));
  285. padding: -1px;
  286. }
  287. span.timestamp {
  288. margin: 0 0.25rem;
  289. }
  290. span.priority {
  291. color: #6b7280;
  292. }
  293. .form-checkbox:not(:checked):focus {
  294. box-shadow: none;
  295. }
  296. .form-checkbox:checked:focus {
  297. box-shadow: none;
  298. }
  299. a.nav-item:hover,
  300. a.star-page:hover {
  301. background-color: #00242d;
  302. }
  303. button.menu {
  304. border-right: 1px solid;
  305. border-right-color: var(--ls-secondary-background-color, #f0f8ff);
  306. color: var(--ls-link-text-color, #24292e);
  307. }
  308. .menu-link:hover,
  309. button.pull:hover,
  310. button.menu:focus {
  311. background-color: or(--lx-gray-05, --ls-menu-hover-color, --rx-gray-05);
  312. }
  313. .menu-links-wrapper,
  314. .menu-links-outer {
  315. @apply py-2 rounded-md shadow-lg overflow-y-auto border bg-popover min-w-[12rem];
  316. max-height: calc(100vh - 100px) !important;
  317. }
  318. .menu-backdrop {
  319. @apply w-full h-full fixed top-0 left-0;
  320. z-index: var(--ls-z-index-level-1);
  321. }
  322. .menu-link {
  323. @apply text-popover-foreground/75 select-none hover:text-popover-foreground/100;
  324. @apply text-sm px-2 py-1.5 mx-1 hover:rounded transition-opacity duration-150;
  325. }
  326. .menu-separator {
  327. @apply my-1 opacity-50 border-t;
  328. }
  329. a.login {
  330. color: var(--ls-link-text-color, #444);
  331. }
  332. a.login:hover {
  333. color: var(--ls-link-text-hover-color, #000);
  334. }
  335. a.tooltip-priority {
  336. display: contents;
  337. position: absolute;
  338. left: 0;
  339. }
  340. a.tooltip-priority::after {
  341. content: attr(priority);
  342. margin-right: 10px;
  343. }
  344. a.chosen {
  345. background: var(--ls-a-chosen-bg);
  346. }
  347. a.warning,
  348. span.warning,
  349. div.warning:not(.admonitionblock),
  350. p.warning {
  351. background: var(--ls-warning-background-color);
  352. padding: 0.1em 0.4em;
  353. border-radius: var(--ls-border-radius-low);
  354. color: var(--ls-warning-text-color);
  355. }
  356. .text-warning {
  357. color: var(--ls-warning-text-color);
  358. }
  359. .bg-warning {
  360. background: var(--ls-warning-background-color);
  361. }
  362. a.error,
  363. span.error {
  364. background: var(--ls-error-background-color);
  365. padding: 0.1em 0.4em;
  366. border-radius: var(--ls-border-radius-low);
  367. color: var(--ls-error-text-color);
  368. }
  369. .text-error {
  370. color: var(--ls-error-text-color);
  371. }
  372. .bg-error {
  373. background: var(--ls-error-background-color);
  374. }
  375. .text-success {
  376. color: var(--ls-success-text-color);
  377. }
  378. .bg-success {
  379. background: var(--ls-success-background-color);
  380. }
  381. img.small {
  382. display: inline;
  383. width: 20px;
  384. height: 20px;
  385. margin-top: 0;
  386. margin-bottom: 0;
  387. }
  388. a.tag {
  389. font-size: 0.9em;
  390. text-align: center;
  391. text-decoration: none;
  392. display: inline-block;
  393. cursor: pointer;
  394. padding: 0 2px;
  395. border-radius: 4px;
  396. color: var(--lx-accent-11, var(--ls-tag-text-color, hsl(var(--primary))));
  397. opacity: var(--ls-tag-text-opacity, 0.7);
  398. }
  399. a.tag:hover {
  400. opacity: var(--ls-tag-text-hover-opacity, 1);
  401. text-decoration: underline;
  402. }
  403. svg.note {
  404. color: var(--rx-yellow-08);
  405. }
  406. svg.tip {
  407. color: var(--lx-accent-08, var(--rx-blue-08));
  408. }
  409. /* endregion */
  410. /* region FIXME: CodeMirror override (?) */
  411. .CodeMirror pre.CodeMirror-line,
  412. .CodeMirror-scroll,
  413. .CodeMirror-sizer,
  414. .CodeMirror-gutter,
  415. .CodeMirror-gutters,
  416. .CodeMirror-linenumber {
  417. font-size: 14px;
  418. }
  419. .cm-s-solarized.CodeMirror {
  420. box-shadow: none;
  421. }
  422. /* endregion */
  423. hr {
  424. margin: 2rem 0;
  425. border-color: var(--lx-gray-05, var(--ls-border-color, var(--rx-gray-05)));
  426. }
  427. .resize {
  428. resize: both;
  429. overflow: hidden;
  430. max-width: -webkit-fill-available;
  431. }
  432. /* ideas from https://github.com/PiotrSss/logseq-bujo-theme/blob/main/main.css */
  433. /***************************************************************
  434. ***************************** TOP ******************************
  435. ***************************************************************/
  436. .cp__header-logo,
  437. .fade-link {
  438. opacity: 0.8;
  439. transition: 0.3s;
  440. color: var(--ls-primary-text-color);
  441. }
  442. a.fade-link:hover {
  443. opacity: 1;
  444. }
  445. /* import (arrows) icon */
  446. #head .refresh svg {
  447. height: 20px;
  448. }
  449. .svg-small svg {
  450. transform: scale(0.6);
  451. display: inline;
  452. }
  453. /* < > buttons */
  454. a.navigation {
  455. border-radius: 3px;
  456. transition: 0.3s;
  457. }
  458. /* text mark/highlight */
  459. mark {
  460. background: var(--ls-page-mark-bg-color);
  461. color: var(--ls-page-mark-color);
  462. padding: 2px 4px;
  463. border-radius: 3px;
  464. }
  465. /* page reference */
  466. .page-reference {
  467. border-radius: 3px;
  468. padding: 2px 0px;
  469. transition: 0.3s;
  470. }
  471. .page-reference .bracket {
  472. opacity: 0.3;
  473. }
  474. /* block references */
  475. .block-ref .block-ref {
  476. padding: 6px 5px;
  477. border: none;
  478. }
  479. /* inline code */
  480. :not(pre) > code {
  481. border-radius: 3px;
  482. font-size: 0.9em;
  483. font-style: normal;
  484. font-family: MonoLisa, 'Fira Code', Monaco, Menlo, Consolas, 'COURIER NEW',
  485. monospace;
  486. letter-spacing: 0;
  487. background-color: var(--lx-gray-06, var(--ls-page-inline-code-bg-color, var(--rx-gray-05)));
  488. color: var(--lx-gray-11, var(--ls-page-inline-code-color, var(--rx-gray-11)));
  489. text-rendering: optimizeSpeed;
  490. }
  491. :not(pre):not(mark) > code {
  492. line-height: 1.45;
  493. padding: 3px 5px !important;
  494. border-radius: var(--ls-border-radius-low);
  495. -webkit-border-radius: var(--ls-border-radius-low);
  496. }
  497. mark > code {
  498. padding: 0;
  499. line-height: inherit !important;
  500. background: #fef3ac !important;
  501. color: #262626 !important;
  502. }
  503. b > code {
  504. font-weight: bold !important;
  505. }
  506. i > code {
  507. font-style: italic !important;
  508. }
  509. a {
  510. transition: 0.3s;
  511. }
  512. a.tooltip-priority {
  513. transition: none;
  514. }
  515. .page-reference:hover {
  516. background: var(--lx-accent-04-alpha, var(--ls-secondary-background-color, hsl(var(--primary)/.4)));
  517. }
  518. .references-blocks .page-reference:hover {
  519. background: var(--lx-accent-04-alpha, var(--ls-tertiary-background-color, hsl(var(--primary)/.4)));
  520. }
  521. #head .fade-link {
  522. font-weight: 600;
  523. font-size: 13px;
  524. }
  525. .text-link {
  526. color: var(--ls-primary-text-color);
  527. }
  528. .katex * {
  529. border-color: var(--ls-primary-text-color);
  530. }
  531. #help-latex .katex-html {
  532. text-align: right;
  533. }
  534. a.page-op svg {
  535. transform: scale(0.9);
  536. }
  537. .search-more {
  538. background: var(--ls-a-chosen-bg);
  539. }
  540. .keyboard-shortcut > code {
  541. margin: 2px;
  542. background-color: var(--ls-quaternary-background-color);
  543. padding: 2px 4px !important;
  544. border-radius: 6px;
  545. color: var(--ls-secondary-text-color);
  546. }
  547. html[data-theme='light'] .keyboard-shortcut > code {
  548. box-shadow: inset 0 -1px 0 #433f3855, 0 0 1px 1px #433f3822;
  549. }
  550. html[data-theme='dark'] .keyboard-shortcut > code {
  551. box-shadow: inset 0 -1px 0 var(--ls-primary-background-color),
  552. 0 0 1px 1px rgba(255, 255, 255, 0.2);
  553. }
  554. .ui__modal-panel {
  555. border-radius: 8px;
  556. }
  557. .overflow-y-scroll {
  558. overflow-y: scroll;
  559. }
  560. .text-ellipsis-wrapper {
  561. white-space: nowrap;
  562. overflow: hidden;
  563. text-overflow: ellipsis;
  564. }
  565. .lazy-visibility {
  566. min-width: 1px;
  567. min-height: 1px;
  568. }
  569. .katex .tag {
  570. overflow-x: clip;
  571. }
  572. html.is-mobile {
  573. h1.title {
  574. margin-bottom: 10px;
  575. }
  576. #journals .journal-item:first-child {
  577. margin-top: 5px;
  578. }
  579. main.theme-inner {
  580. @apply overflow-x-hidden;
  581. }
  582. }
  583. @layer base {
  584. .ls-grid-cols {
  585. @apply grid grid-flow-col auto-cols-max;
  586. place-items: center;
  587. }
  588. /* fixes an html2canvas issue */
  589. img {
  590. @apply inline-block;
  591. }
  592. }