app.css 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. @reference "./tailwind.css";
  2. @font-face {
  3. font-family: 'Inter';
  4. src: url('/assets/fonts/Inter-Variable.ttf');
  5. font-display: swap;
  6. }
  7. @font-face {
  8. font-family: 'Archivo';
  9. src: url('/assets/fonts/Archivo-Variable.ttf');
  10. font-display: swap;
  11. }
  12. @font-face {
  13. font-family: 'Mona Sans';
  14. src: url('/assets/fonts/Mona-Sans.woff2');
  15. font-display: swap;
  16. }
  17. @font-face {
  18. font-family: 'InstrumentSerif';
  19. src: url('/assets/fonts/InstrumentSerif-Regular.ttf');
  20. font-display: swap;
  21. }
  22. html {
  23. word-break: break-word;
  24. }
  25. code {
  26. /* white-space-collapse: preserve !important; */
  27. overflow-x: auto;
  28. width: auto;
  29. }
  30. .font-secondary {
  31. font-family: 'InstrumentSerif', sans-serif;
  32. }
  33. math {
  34. margin-top: 1rem;
  35. }
  36. .hljs {
  37. @apply rounded-lg;
  38. }
  39. input::placeholder {
  40. direction: auto;
  41. }
  42. textarea::placeholder {
  43. direction: auto;
  44. }
  45. .input-prose {
  46. @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
  47. }
  48. .input-prose-sm {
  49. @apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm;
  50. }
  51. .markdown-prose {
  52. @apply prose dark:prose-invert prose-blockquote:border-s-gray-100 prose-blockquote:dark:border-gray-800 prose-blockquote:border-s-2 prose-blockquote:not-italic prose-blockquote:font-normal prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
  53. }
  54. .markdown-prose-xs {
  55. @apply text-xs prose dark:prose-invert prose-blockquote:border-s-gray-100 prose-blockquote:dark:border-gray-800 prose-blockquote:border-s-2 prose-blockquote:not-italic prose-blockquote:font-normal prose-headings:font-semibold prose-hr:my-0 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
  56. }
  57. .markdown a {
  58. @apply underline;
  59. }
  60. .font-primary {
  61. font-family: 'Archivo', sans-serif;
  62. }
  63. .drag-region {
  64. -webkit-app-region: drag;
  65. }
  66. .drag-region a,
  67. .drag-region button {
  68. -webkit-app-region: no-drag;
  69. }
  70. .no-drag-region {
  71. -webkit-app-region: no-drag;
  72. }
  73. li p {
  74. display: inline;
  75. }
  76. ::-webkit-scrollbar-thumb {
  77. --tw-border-opacity: 1;
  78. background-color: rgba(236, 236, 236, 0.8);
  79. border-color: rgba(255, 255, 255, var(--tw-border-opacity));
  80. border-radius: 9999px;
  81. border-width: 1px;
  82. }
  83. /* Dark theme scrollbar styles */
  84. .dark ::-webkit-scrollbar-thumb {
  85. background-color: rgba(42, 42, 42, 0.8); /* Darker color for dark theme */
  86. border-color: rgba(0, 0, 0, var(--tw-border-opacity));
  87. }
  88. ::-webkit-scrollbar {
  89. height: 0.8rem;
  90. width: 0.4rem;
  91. }
  92. ::-webkit-scrollbar-track {
  93. background-color: transparent;
  94. border-radius: 9999px;
  95. }
  96. select {
  97. background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");
  98. background-position: right 0rem center;
  99. background-repeat: no-repeat;
  100. background-size: 1.5em 1.5em;
  101. -webkit-print-color-adjust: exact;
  102. print-color-adjust: exact;
  103. /* padding-right: 2.5rem; */
  104. /* for Firefox */
  105. -moz-appearance: none;
  106. /* for Chrome */
  107. -webkit-appearance: none;
  108. }
  109. @keyframes shimmer {
  110. 0% {
  111. background-position: 200% 0;
  112. }
  113. 100% {
  114. background-position: -200% 0;
  115. }
  116. }
  117. .shimmer {
  118. background: linear-gradient(90deg, #9a9b9e 25%, #2a2929 50%, #9a9b9e 75%);
  119. background-size: 200% 100%;
  120. background-clip: text;
  121. -webkit-background-clip: text;
  122. -webkit-text-fill-color: transparent;
  123. animation: shimmer 4s linear infinite;
  124. color: #818286; /* Fallback color */
  125. }
  126. :global(.dark) .shimmer {
  127. background: linear-gradient(90deg, #818286 25%, #eae5e5 50%, #818286 75%);
  128. background-size: 200% 100%;
  129. background-clip: text;
  130. -webkit-background-clip: text;
  131. -webkit-text-fill-color: transparent;
  132. animation: shimmer 4s linear infinite;
  133. color: #a1a3a7; /* Darker fallback color for dark mode */
  134. }
  135. @keyframes smoothFadeIn {
  136. 0% {
  137. opacity: 0;
  138. transform: translateY(-10px);
  139. }
  140. 100% {
  141. opacity: 1;
  142. transform: translateY(0);
  143. }
  144. }
  145. .status-description {
  146. animation: smoothFadeIn 0.2s forwards;
  147. }
  148. .katex-mathml {
  149. display: none;
  150. }
  151. .scrollbar-hidden:active::-webkit-scrollbar-thumb,
  152. .scrollbar-hidden:focus::-webkit-scrollbar-thumb,
  153. .scrollbar-hidden:hover::-webkit-scrollbar-thumb {
  154. visibility: visible;
  155. }
  156. .scrollbar-hidden::-webkit-scrollbar-thumb {
  157. visibility: hidden;
  158. }
  159. .scrollbar-hidden::-webkit-scrollbar-corner {
  160. display: none;
  161. }
  162. .scrollbar-none::-webkit-scrollbar {
  163. display: none; /* for Chrome, Safari and Opera */
  164. }
  165. .scrollbar-none::-webkit-scrollbar-corner {
  166. display: none;
  167. }
  168. .scrollbar-none {
  169. -ms-overflow-style: none; /* IE and Edge */
  170. scrollbar-width: none; /* Firefox */
  171. }
  172. input::-webkit-outer-spin-button,
  173. input::-webkit-inner-spin-button {
  174. /* display: none; <- Crashes Chrome on hover */
  175. -webkit-appearance: none;
  176. margin: 0; /* <-- Apparently some margin are still there even though it's hidden */
  177. }
  178. input[type='number'] {
  179. -moz-appearance: textfield; /* Firefox */
  180. }
  181. .katex-display {
  182. @apply overflow-y-hidden overflow-x-auto max-w-full;
  183. }
  184. .katex-display::-webkit-scrollbar {
  185. height: 0.4rem;
  186. width: 0.4rem;
  187. }
  188. .katex-display:active::-webkit-scrollbar-thumb,
  189. .katex-display:focus::-webkit-scrollbar-thumb,
  190. .katex-display:hover::-webkit-scrollbar-thumb {
  191. visibility: visible;
  192. }
  193. .katex-display::-webkit-scrollbar-thumb {
  194. visibility: hidden;
  195. }
  196. .katex-display::-webkit-scrollbar-corner {
  197. display: none;
  198. }
  199. .cm-editor {
  200. height: 100%;
  201. width: 100%;
  202. }
  203. .cm-scroller:active::-webkit-scrollbar-thumb,
  204. .cm-scroller:focus::-webkit-scrollbar-thumb,
  205. .cm-scroller:hover::-webkit-scrollbar-thumb {
  206. visibility: visible;
  207. }
  208. .cm-scroller::-webkit-scrollbar-thumb {
  209. visibility: hidden;
  210. }
  211. .cm-scroller::-webkit-scrollbar-corner {
  212. display: none;
  213. }
  214. .cm-editor.cm-focused {
  215. outline: none;
  216. }
  217. .tippy-box[data-theme~='dark'] {
  218. @apply rounded-lg bg-gray-950 text-xs border border-gray-900 shadow-xl;
  219. }
  220. .password {
  221. -webkit-text-security: disc;
  222. }
  223. .codespan {
  224. color: #eb5757;
  225. border-width: 0px;
  226. padding: 3px 8px;
  227. font-size: 0.8em;
  228. font-weight: 600;
  229. @apply rounded-md dark:bg-gray-800 bg-gray-100 mx-0.5;
  230. }
  231. .svelte-flow {
  232. background-color: transparent !important;
  233. }
  234. .svelte-flow__edge > path {
  235. stroke-width: 0.5;
  236. }
  237. .svelte-flow__edge.animated > path {
  238. stroke-width: 2;
  239. @apply stroke-gray-600 dark:stroke-gray-500;
  240. }
  241. .bg-gray-950-90 {
  242. background-color: rgba(var(--color-gray-950, #0d0d0d), 0.9);
  243. }
  244. .ProseMirror {
  245. @apply h-full min-h-fit max-h-full whitespace-pre-wrap;
  246. }
  247. .ProseMirror:focus {
  248. outline: none;
  249. }
  250. .ProseMirror p.is-editor-empty:first-child::before {
  251. content: attr(data-placeholder);
  252. float: left;
  253. color: #adb5bd;
  254. pointer-events: none;
  255. @apply line-clamp-1 absolute;
  256. }
  257. .ai-autocompletion::after {
  258. color: #a0a0a0;
  259. content: attr(data-suggestion);
  260. pointer-events: none;
  261. }
  262. .tiptap > pre > code {
  263. border-radius: 0.4rem;
  264. font-size: 0.85rem;
  265. padding: 0.25em 0.3em;
  266. @apply dark:bg-gray-800 bg-gray-100;
  267. }
  268. .tiptap > pre {
  269. border-radius: 0.5rem;
  270. font-family: 'JetBrainsMono', monospace;
  271. margin: 1.5rem 0;
  272. padding: 0.75rem 1rem;
  273. @apply dark:bg-gray-800 bg-gray-100;
  274. }
  275. .tiptap p code {
  276. color: #eb5757;
  277. border-width: 0px;
  278. padding: 3px 8px;
  279. font-size: 0.8em;
  280. font-weight: 600;
  281. @apply rounded-md dark:bg-gray-800 bg-gray-100 mx-0.5;
  282. }
  283. /* Code styling */
  284. .hljs-comment,
  285. .hljs-quote {
  286. color: #616161;
  287. }
  288. .hljs-variable,
  289. .hljs-template-variable,
  290. .hljs-attribute,
  291. .hljs-tag,
  292. .hljs-regexp,
  293. .hljs-link,
  294. .hljs-name,
  295. .hljs-selector-id,
  296. .hljs-selector-class {
  297. color: #f98181;
  298. }
  299. .hljs-number,
  300. .hljs-meta,
  301. .hljs-built_in,
  302. .hljs-builtin-name,
  303. .hljs-literal,
  304. .hljs-type,
  305. .hljs-params {
  306. color: #fbbc88;
  307. }
  308. .hljs-string,
  309. .hljs-symbol,
  310. .hljs-bullet {
  311. color: #b9f18d;
  312. }
  313. .hljs-title,
  314. .hljs-section {
  315. color: #faf594;
  316. }
  317. .hljs-keyword,
  318. .hljs-selector-tag {
  319. color: #70cff8;
  320. }
  321. .hljs-emphasis {
  322. font-style: italic;
  323. }
  324. .hljs-strong {
  325. font-weight: 700;
  326. }