style.css 29 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574
  1. @import url("https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap");
  2. /* :root {
  3. --colour-1: #ffffff;
  4. --colour-2: #000000;
  5. --colour-3: #000000;
  6. --colour-4: #000000;
  7. --colour-5: #000000;
  8. --colour-6: #000000;
  9. --accent: #ffffff;
  10. --blur-bg: #98989866;
  11. --blur-border: #00000040;
  12. --user-input: #000000;
  13. --conversations: #000000;
  14. } */
  15. :root {
  16. --colour-1: #000000;
  17. --colour-2: #ccc;
  18. --colour-3: #e4d4ff;
  19. --colour-4: #f0f0f0;
  20. --colour-5: #181818;
  21. --colour-6: #242424;
  22. --accent: #8b3dff;
  23. --blur-bg: #16101b66;
  24. --blur-border: #84719040;
  25. --user-input: #ac87bb;
  26. --conversations: #c7a2ff;
  27. --conversations-hover: #c7a2ff4d;
  28. --scrollbar: var(--colour-3);
  29. --scrollbar-thumb: var(--blur-bg);
  30. --button-hover: var(--colour-5);
  31. --top: 50%;
  32. --size: 70vw;
  33. --blur: 35vw; /* Half of 70vw */
  34. --opacity: 0.3;
  35. --gradient: rgba(22, 16, 27, 0.4); /* Transparent dark color */
  36. --background: #16101b; /* Background color */
  37. --font-1: "Inter", sans-serif;
  38. --section-gap: 25px;
  39. --inner-gap: 15px;
  40. --border-radius-1: 8px;
  41. }
  42. * {
  43. margin: 0;
  44. padding: 0;
  45. box-sizing: border-box;
  46. position: relative;
  47. font-family: var(--font-1);
  48. }
  49. html,
  50. body {
  51. scroll-behavior: smooth;
  52. overflow: hidden;
  53. }
  54. body {
  55. background: var(--background);
  56. color: var(--colour-3);
  57. height: 100vh;
  58. }
  59. body:not(.white) a:link,
  60. body:not(.white) a:visited{
  61. color: var(--colour-3);
  62. }
  63. .gradient {
  64. position: absolute;
  65. z-index: -1;
  66. left: 70vw;
  67. border-radius: 50%;
  68. background: radial-gradient(circle at center, var(--accent), var(--gradient));
  69. width: var(--size);
  70. height: var(--size);
  71. top: var(--top);
  72. transform: translate(-50%, -50%);
  73. filter: blur(var(--blur)) opacity(var(--opacity));
  74. animation: zoom_gradient 6s infinite alternate;
  75. display: none;
  76. }
  77. @keyframes zoom_gradient {
  78. 0% {
  79. transform: translate(-50%, -50%) scale(1);
  80. }
  81. 100% {
  82. transform: translate(-50%, -50%) scale(1.2);
  83. }
  84. }
  85. .row {
  86. display: flex;
  87. gap: 10px;
  88. height: 100%;
  89. }
  90. .box {
  91. backdrop-filter: blur(20px);
  92. -webkit-backdrop-filter: blur(20px);
  93. background-color: var(--blur-bg);
  94. height: 100%;
  95. width: 100%;
  96. border-radius: var(--border-radius-1);
  97. border: 1px solid var(--blur-border);
  98. }
  99. .new_version {
  100. position: absolute;
  101. right: 0;
  102. top: 0;
  103. padding: 10px;
  104. font-weight: 500;
  105. background-color: rgba(0, 0, 0, 0.5);
  106. color: var(--colour-3);
  107. border: var(--colour-1) 1px solid;
  108. border-radius: var(--border-radius-1);
  109. }
  110. .white .new_version {
  111. color: var(--colour-1);
  112. }
  113. .new_version a {
  114. color: var(--colour-4);
  115. text-decoration: underline;
  116. }
  117. .conversations {
  118. max-width: 300px;
  119. padding: var(--section-gap);
  120. overflow: auto;
  121. flex-shrink: 0;
  122. display: flex;
  123. flex-direction: column;
  124. justify-content: space-between;
  125. }
  126. .conversation {
  127. width: 100%;
  128. display: flex;
  129. flex-direction: column;
  130. gap: 5px;
  131. }
  132. .conversation #messages {
  133. width: 100%;
  134. height: 100%;
  135. display: flex;
  136. flex-direction: column;
  137. overflow: auto;
  138. overflow-wrap: break-word;
  139. padding-bottom: 10px;
  140. background-color: transparent;
  141. }
  142. .conversation .user-input {
  143. margin-bottom: 4px;
  144. }
  145. .conversation .user-input input {
  146. font-size: 15px;
  147. width: 100%;
  148. height: 100%;
  149. padding: 12px 15px;
  150. background: none;
  151. border: none;
  152. outline: none;
  153. color: var(--colour-3);
  154. }
  155. .conversation .user-input input::placeholder {
  156. color: var(--user-input)
  157. }
  158. .conversations {
  159. display: flex;
  160. flex-direction: column;
  161. gap: 10px;
  162. padding: 10px;
  163. }
  164. .conversations .title {
  165. font-size: 14px;
  166. font-weight: 500;
  167. }
  168. .conversations .convo {
  169. padding: 8px 12px;
  170. display: flex;
  171. gap: 10px;
  172. align-items: center;
  173. user-select: none;
  174. justify-content: space-between;
  175. border: 1px dashed var(--conversations);
  176. border-radius: var(--border-radius-1);
  177. }
  178. .conversations .convo .left {
  179. width: 100%;
  180. cursor: pointer;
  181. display: flex;
  182. align-items: center;
  183. gap: 4px;
  184. }
  185. .conversations .convo .fa-ellipsis-vertical {
  186. position: absolute;
  187. right: 8px;
  188. width: 14px;
  189. text-align: center;
  190. }
  191. .conversations .convo .choise {
  192. position: absolute;
  193. right: 8px;
  194. background-color: var(--blur-bg);
  195. }
  196. .conversations i, .bottom_buttons i, .mem0 button i {
  197. color: var(--conversations);
  198. cursor: pointer;
  199. }
  200. .bottom_buttons i, .mem0 button i {
  201. width: 14px;
  202. }
  203. .provider_forms {
  204. overflow: auto;
  205. width: 100%;
  206. }
  207. #close_provider_forms {
  208. max-width: 210px;
  209. margin-left: auto;
  210. margin-right: 8px;
  211. margin-top: 12px;
  212. }
  213. .convo-title {
  214. color: var(--colour-3);
  215. font-size: 14px;
  216. max-width: 100%;
  217. text-overflow: ellipsis;
  218. overflow: hidden;
  219. white-space: nowrap;
  220. margin-right: 10px;
  221. background-color: transparent;
  222. border: 0;
  223. width: 100%;
  224. }
  225. .convo-title:focus {
  226. outline: 1px solid var(--colour-3) !important;
  227. }
  228. .convo .datetime {
  229. white-space: nowrap;
  230. font-size: 10px;
  231. }
  232. .message {
  233. width: 100%;
  234. overflow-wrap: break-word;
  235. display: flex;
  236. flex-direction: column;
  237. gap: var(--section-gap);
  238. padding: var(--inner-gap) var(--section-gap);
  239. }
  240. .message.print {
  241. height: 100%;
  242. position: absolute;
  243. background-color: #fff;
  244. z-index: 100;
  245. top: 0;
  246. }
  247. .message.regenerate {
  248. background-color: rgba(0, 0, 0, 0.2);
  249. }
  250. .white .message.regenerate {
  251. background-color: var(--colour-4);
  252. }
  253. .message:last-child {
  254. animation: 0.6s show_message;
  255. }
  256. @keyframes show_message {
  257. from {
  258. transform: translateY(10px);
  259. opacity: 0;
  260. }
  261. }
  262. .message .user {
  263. max-width: 48px;
  264. max-height: 48px;
  265. flex-shrink: 0;
  266. }
  267. .message .user img {
  268. width: 100%;
  269. height: 100%;
  270. object-fit: cover;
  271. border-radius: 8px;
  272. outline: 1px solid var(--blur-border);
  273. }
  274. .message .user:after {
  275. content: "63";
  276. position: absolute;
  277. bottom: 0;
  278. right: 0;
  279. height: 60%;
  280. width: 60%;
  281. filter: blur(10px) opacity(0.5);
  282. z-index: 10000;
  283. }
  284. .message .assistant{
  285. max-width: 48px;
  286. max-height: 48px;
  287. flex-shrink: 0;
  288. }
  289. .message .assistant img {
  290. width: 100%;
  291. height: 100%;
  292. object-fit: cover;
  293. border-radius: 8px;
  294. outline: 1px solid var(--blur-border);
  295. }
  296. .message .assistant:after {
  297. content: "63";
  298. position: absolute;
  299. bottom: 0;
  300. right: 0;
  301. height: 60%;
  302. width: 60%;
  303. background: var(--colour-3);
  304. filter: blur(10px) opacity(0.5);
  305. z-index: 10000;
  306. }
  307. .message .content {
  308. display: flex;
  309. flex-direction: column;
  310. gap: 10px;
  311. flex-wrap: wrap;
  312. }
  313. .message .content_inner,
  314. .message .content_inner a:link,
  315. .message .content_inner a:visited{
  316. font-size: 15px;
  317. line-height: 1.3;
  318. }
  319. .message .content_inner pre{
  320. white-space: pre-wrap;
  321. }
  322. .message .content img{
  323. max-width: 400px;
  324. }
  325. .message .content .audio{
  326. display: flex;
  327. }
  328. .message .reasoning_text.final:not(.hidden), .message .reasoning_title {
  329. margin-bottom: var(--inner-gap);
  330. padding-bottom: var(--inner-gap);
  331. border-bottom: 1px solid var(--colour-3);
  332. overflow: hidden;
  333. }
  334. .message .reasoning_text.final {
  335. max-height: 1000px;
  336. transition: max-height 0.25s ease-in;
  337. }
  338. .message .reasoning_text.final.hidden {
  339. transition: max-height 0.15s ease-out;
  340. max-height: 0;
  341. display: block;
  342. overflow: hidden;
  343. }
  344. .message .reasoning_title {
  345. cursor: pointer;
  346. }
  347. .message .user i {
  348. position: absolute;
  349. bottom: -6px;
  350. right: -6px;
  351. z-index: 1000;
  352. }
  353. .message .assistant .fa-phone-arrow-up-right,
  354. .message .assistant .fa-phone-arrow-down-left {
  355. position: absolute;
  356. bottom: -6px;
  357. right: -6px;
  358. z-index: 1000;
  359. }
  360. .message .assistant .fa-xmark,
  361. .message .user .fa-xmark {
  362. position: absolute;
  363. top: -2px;
  364. left: 0px;
  365. z-index: 1000;
  366. display: none;
  367. cursor: pointer;
  368. }
  369. .message .user .fa-xmark {
  370. color: var(--colour-1);
  371. }
  372. .message .count .fa-clipboard,
  373. .message .count .fa-volume-high,
  374. .message .count .fa-rotate,
  375. .message .count .fa-print,
  376. .message .count .fa-whatsapp {
  377. z-index: 1000;
  378. cursor: pointer;
  379. }
  380. .message .count .fa-clipboard,
  381. .message .count .fa-whatsapp {
  382. color: var(--colour-3);
  383. }
  384. .message .count .fa-clipboard.clicked,
  385. .message .count .fa-print.clicked,
  386. .message .count .fa-rotate.clicked,
  387. .message .count .fa-volume-high.active,
  388. .message .count .fa-file-export.clicked,
  389. .message .continue_button.clicked,
  390. .message .regenerate_button.clicked,
  391. .message .options_button.clicked {
  392. color: var(--accent);
  393. }
  394. .message .assistant:hover .fa-xmark,
  395. .message .user:hover .fa-xmark {
  396. display: block;
  397. }
  398. .message .content .provider a,
  399. .message .content .provider {
  400. font-size: 12px;
  401. text-decoration: none;
  402. }
  403. .message .content .provider a {
  404. font-weight: bold;
  405. }
  406. .message .content .count {
  407. font-size: 12px;
  408. display: flex;
  409. flex-direction: row;
  410. }
  411. .message .content .count span {
  412. padding: 0 4px;
  413. }
  414. .media_player {
  415. display: none;
  416. }
  417. .media_player audio {
  418. right: 28px;
  419. position: absolute;
  420. top: -4px;
  421. z-index: 900;
  422. }
  423. .media_player.show {
  424. display: block;
  425. }
  426. .media_player .fa-x {
  427. position: absolute;
  428. right: 8px;
  429. top: 8px;
  430. z-index: 1000;
  431. cursor: pointer;
  432. }
  433. .count_total {
  434. font-size: 12px;
  435. padding-left: 25px;
  436. padding-top: 10px;
  437. }
  438. .new_convo {
  439. padding: 8px 12px;
  440. display: flex;
  441. gap: 18px;
  442. align-items: center;
  443. cursor: pointer;
  444. user-select: none;
  445. background: transparent;
  446. border: 1px solid var(--conversations);
  447. border-radius: var(--border-radius-1);
  448. transition: all 0.2s ease;
  449. }
  450. .new_convo:hover {
  451. box-shadow: inset 0px 0px 20px var(--conversations-hover);
  452. }
  453. .new_convo span {
  454. color: var(--colour-3);
  455. font-size: 14px;
  456. }
  457. .toolbar {
  458. position: relative;
  459. }
  460. #input-count {
  461. width: fit-content;
  462. font-size: 12px;
  463. padding: 6px 6px;
  464. }
  465. input-count .text {
  466. min-width: 12px
  467. }
  468. #input-count .text, #input-count input {
  469. padding: 0 4px;
  470. }
  471. .stop_generating-hidden, .regenerate-hidden {
  472. animation: hide_popup 0.4s;
  473. display: none;
  474. }
  475. .stop_generating, .toolbar .regenerate {
  476. position: absolute;
  477. top: 0;
  478. right: 0;
  479. animation: show_popup 0.4s;
  480. }
  481. .stop_generating button, .toolbar .regenerate button, button.regenerate_button, button.continue_button, button.options_button {
  482. backdrop-filter: blur(20px);
  483. -webkit-backdrop-filter: blur(20px);
  484. background-color: var(--blur-bg);
  485. border-radius: var(--border-radius-1);
  486. border: 1px solid var(--blur-border);
  487. padding: 5px var(--inner-gap);
  488. color: var(--colour-3);
  489. display: flex;
  490. justify-content: center;
  491. align-items: center;
  492. gap: 12px;
  493. cursor: pointer;
  494. height: 28px;
  495. }
  496. .toolbar .regenerate {
  497. left: 50%;
  498. transform: translateX(-50%);
  499. right: auto;
  500. }
  501. .toolbar .regenerate span, .regenerate_button span, .continue_button span, .options_button div {
  502. display: none;
  503. }
  504. .regenerate_button span, .continue_button span, .options_button div {
  505. position: absolute;
  506. height: 20px;
  507. width: 100px;
  508. transition: all 0.1s;
  509. background: var(--button-hover);
  510. margin-top: -30px;
  511. z-index: 1005;
  512. padding: 6px;
  513. }
  514. .options_button div {
  515. display: none;
  516. flex-direction: row;
  517. height: 36px;
  518. width: 120px;
  519. margin-right: 130px;
  520. z-index: 1005;
  521. padding: 10px;
  522. margin-top: -4px;
  523. }
  524. .options_button div span{
  525. height: 20px;
  526. width: 22px;
  527. }
  528. .options_button:hover div {
  529. display: flex;
  530. }
  531. .regenerate_button:hover span, .continue_button:hover span {
  532. display: block;
  533. transition: all 0.3s;
  534. }
  535. @media only screen and (min-width: 40em) {
  536. .stop_generating {
  537. right: 4px;
  538. }
  539. .toolbar .regenerate span {
  540. display: block;
  541. }
  542. }
  543. .toolbar .hide-input {
  544. background: transparent;
  545. border: none;
  546. color: var(--colour-3);
  547. cursor: pointer;
  548. }
  549. @keyframes show_popup {
  550. from {
  551. opacity: 0;
  552. transform: translateY(10px);
  553. }
  554. }
  555. @keyframes hide_popup {
  556. to {
  557. opacity: 0;
  558. transform: translateY(10px);
  559. }
  560. }
  561. .typing {
  562. position: absolute;
  563. top: -25px;
  564. left: 0;
  565. font-size: 14px;
  566. animation: show_popup 0.4s;
  567. }
  568. .typing-hiding {
  569. animation: hide_popup 0.4s;
  570. }
  571. .typing-hidden {
  572. display: none;
  573. }
  574. #image, #file, #camera {
  575. display: none;
  576. }
  577. .file-label,
  578. .micro-label {
  579. cursor: pointer;
  580. position: absolute;
  581. top: 10px;
  582. left: 10px;
  583. }
  584. .file-label:has(> input:valid),
  585. .file-label.selected,
  586. .micro-label.recognition,
  587. #search.active i {
  588. color: var(--accent);
  589. }
  590. #search.active {
  591. border-color: var(--accent);
  592. }
  593. label[for="image"] {
  594. top: 32px;
  595. }
  596. label[for="micro"] {
  597. top: 54px;
  598. }
  599. label[for="camera"] {
  600. top: 74px;
  601. display: none;
  602. }
  603. @media (pointer:none), (pointer:coarse) {
  604. label[for="camera"] {
  605. display: block;
  606. }
  607. }
  608. #messages form {
  609. position: absolute;
  610. width: 100%;
  611. background: var(--button-hover);
  612. z-index: 2000;
  613. }
  614. .buttons input[type="checkbox"],
  615. .settings input[type="checkbox"],
  616. form input[type="checkbox"] {
  617. height: 0;
  618. width: 0;
  619. display: none;
  620. }
  621. .buttons label,
  622. .settings label.toogle,
  623. form label.toogle {
  624. cursor: pointer;
  625. text-indent: -9999px;
  626. width: 50px;
  627. height: 30px;
  628. backdrop-filter: blur(20px);
  629. -webkit-backdrop-filter: blur(20px);
  630. background-color: var(--blur-bg);
  631. border-radius: var(--border-radius-1);
  632. border: 1px solid var(--blur-border);
  633. display: block;
  634. border-radius: 100px;
  635. position: relative;
  636. overflow: hidden;
  637. transition: 0.33s;
  638. min-width: 60px;
  639. margin-left: 0;
  640. }
  641. .buttons label:after,
  642. .settings label.toogle:after,
  643. form label.toogle:after {
  644. content: "";
  645. position: absolute;
  646. top: 50%;
  647. transform: translateY(-50%);
  648. left: 5px;
  649. width: 20px;
  650. height: 20px;
  651. background: var(--colour-3);
  652. border-radius: 90px;
  653. transition: 0.33s;
  654. }
  655. .buttons input:checked+label,
  656. .settings input:checked+label,
  657. form input:checked+label {
  658. background: var(--accent);
  659. }
  660. .settings .bottom_buttons {
  661. flex-direction: column;
  662. }
  663. .settings .bottom_buttons button {
  664. display: inline-block;
  665. max-width: 210px;
  666. width: 100%;
  667. }
  668. .buttons input:checked+label:after,
  669. .settings input:checked+label:after,
  670. form input:checked+label:after {
  671. left: calc(100% - 5px - 20px);
  672. }
  673. .buttons {
  674. display: flex;
  675. align-items: center;
  676. justify-content: left;
  677. width: 100%;
  678. margin-bottom: 4px;
  679. }
  680. .field {
  681. height: fit-content;
  682. display: flex;
  683. gap: var(--inner-gap);
  684. }
  685. .field .about {
  686. font-size: 14px;
  687. color: var(--colour-3);
  688. }
  689. select, input.model {
  690. border-radius: 8px;
  691. backdrop-filter: blur(20px);
  692. cursor: pointer;
  693. background-color: var(--colour-1);
  694. border: 1px solid var(--blur-border);
  695. color: var(--colour-3);
  696. display: block;
  697. position: relative;
  698. overflow: hidden;
  699. outline: none;
  700. padding: 8px 16px;
  701. appearance: none;
  702. width: 132px;
  703. }
  704. .slider {
  705. -webkit-appearance: none;
  706. appearance: none;
  707. width: 100%;
  708. height: 20px;
  709. background: var(--colour-2);
  710. outline: none;
  711. transition: opacity .2s;
  712. border-radius: 10px;
  713. }
  714. .slider::-moz-range-thumb:hover {
  715. background: var(--colour-2);
  716. }
  717. .slider::-moz-range-thumb {
  718. width: 25px;
  719. height: 25px;
  720. background: var(--colour-3);
  721. cursor: pointer;
  722. border-radius: 25px;
  723. }
  724. .buttons button, button.regenerate_button, button.continue_button, button.options_button {
  725. border-radius: 8px;
  726. backdrop-filter: blur(20px);
  727. cursor: pointer;
  728. background-color: var(--colour-1);
  729. border: 1px solid var(--blur-border);
  730. color: var(--colour-3);
  731. padding: 8px;
  732. }
  733. button.regenerate_button, button.continue_button, button.options_button {
  734. display: flex;
  735. margin-top: -8px;
  736. margin-left: 2px;
  737. backdrop-filter: none;
  738. }
  739. .buttons button.pinned span {
  740. max-width: 160px;
  741. overflow: hidden;
  742. text-wrap: nowrap;
  743. margin-right: 16px;
  744. display: block;
  745. text-overflow: ellipsis;
  746. }
  747. .buttons button.pinned i {
  748. position: absolute;
  749. top: 10px;
  750. right: 6px;
  751. }
  752. select:hover,
  753. input.model:hover
  754. .buttons button:hover,
  755. .stop_generating button:hover,
  756. .toolbar .regenerate button:hover,
  757. #send-button:hover {
  758. background-color: var(--button-hover);
  759. }
  760. #provider option:disabled[value], #model option:disabled[value] {
  761. display: none;
  762. }
  763. #chatPrompt{
  764. min-height: 59px;
  765. height: 59px;
  766. resize: vertical;
  767. padding: var(--inner-gap) var(--section-gap);
  768. }
  769. #systemPrompt, #chatPrompt, .settings textarea, form textarea {
  770. font-size: 15px;
  771. width: 100%;
  772. color: var(--colour-3);
  773. outline: none;
  774. transition: max-height 0.15s ease-out;
  775. }
  776. #systemPrompt:focus, #chatPrompt:focus {
  777. min-height: 200px;
  778. max-height: 1000px;
  779. transition: max-height 0.25s ease-in;
  780. }
  781. .pswp {
  782. --pswp-placeholder-bg: #000 !important;
  783. }
  784. .pswp img {
  785. object-fit: contain;
  786. }
  787. .pswp__img--placeholder--blank{
  788. display: none !important;
  789. }
  790. .pswp__custom-caption {
  791. opacity: 0 !important;
  792. background: rgba(0, 0, 0, 0.3);
  793. font-size: 16px;
  794. color: #fff;
  795. width: calc(100% - 32px);
  796. max-width: 400px;
  797. padding: 2px 8px;
  798. border-radius: 4px;
  799. position: absolute;
  800. left: 50%;
  801. bottom: 16px;
  802. transform: translateX(-50%);
  803. max-height: 100px;
  804. overflow: auto;
  805. }
  806. .pswp__custom-caption:hover {
  807. opacity: 1 !important;
  808. }
  809. .pswp__custom-caption a {
  810. color: #fff;
  811. text-decoration: underline;
  812. }
  813. .slide-systemPrompt {
  814. position: absolute;
  815. top: 0;
  816. padding: var(--inner-gap) 10px;
  817. border: none;
  818. background: transparent;
  819. cursor: pointer;
  820. height: 49px;
  821. color: var(--colour-3);
  822. }
  823. @media only screen and (min-width: 40em) {
  824. select, input.model {
  825. width: 200px;
  826. }
  827. .field {
  828. padding-right: 8px
  829. }
  830. .message {
  831. flex-direction: row;
  832. }
  833. .settings .bottom_buttons {
  834. flex-direction: row;
  835. }
  836. .count_total {
  837. padding-left: 98px;
  838. }
  839. body:not(.white) .gradient{
  840. display: block;
  841. }
  842. .settings .label:not([for="systemPrompt"]), form .label {
  843. min-width: 200px;
  844. }
  845. }
  846. .input-area {
  847. display: flex;
  848. align-items: center;
  849. padding: 10px;
  850. }
  851. .info {
  852. padding: 8px 12px;
  853. display: flex;
  854. gap: 18px;
  855. align-items: center;
  856. user-select: none;
  857. background: transparent;
  858. border-radius: var(--border-radius-1);
  859. width: 100%;
  860. cursor: default;
  861. border: 1px dashed var(--conversations)
  862. }
  863. .bottom_buttons {
  864. width: 100%;
  865. display: flex;
  866. flex-direction: column;
  867. gap: 10px;
  868. margin: 4px 0;
  869. }
  870. .bottom_buttons button, .mem0 button {
  871. padding: 8px 12px;
  872. display: flex;
  873. gap: 18px;
  874. align-items: center;
  875. cursor: pointer;
  876. user-select: none;
  877. background: transparent;
  878. border: 1px solid var(--conversations);
  879. border-radius: var(--border-radius-1);
  880. width: 100%;
  881. }
  882. .mem0 button {
  883. width: auto;
  884. }
  885. .bottom_buttons button a,
  886. .bottom_buttons button span,
  887. .bottom_buttons .info a,
  888. .bottom_buttons .info i,
  889. .mem0 button span {
  890. color: var(--colour-3);
  891. font-weight: 500;
  892. }
  893. .conversations .top {
  894. display: flex;
  895. flex-direction: column;
  896. gap: var(--inner-gap);
  897. overflow: auto;
  898. }
  899. .cursor {
  900. line-height: 17px;
  901. margin-left: 3px;
  902. -webkit-animation: blink 0.8s infinite;
  903. animation: blink 0.8s infinite;
  904. width: 7px;
  905. height: 15px;
  906. display: inline-block;
  907. }
  908. @keyframes blink {
  909. 0% {
  910. background: #ffffff00;
  911. }
  912. 50% {
  913. background: var(--colour-3);
  914. }
  915. 100% {
  916. background: #ffffff00;
  917. }
  918. }
  919. @-webkit-keyframes blink {
  920. 0% {
  921. background: #ffffff00;
  922. }
  923. 50% {
  924. background: white;
  925. }
  926. 100% {
  927. background: #ffffff00;
  928. }
  929. }
  930. ol,
  931. ul {
  932. padding-left: 20px;
  933. }
  934. @keyframes spinner {
  935. to {
  936. transform: rotate(360deg);
  937. }
  938. }
  939. .spinner:before {
  940. content: '';
  941. box-sizing: border-box;
  942. position: absolute;
  943. top: 50%;
  944. left: 45%;
  945. width: 20px;
  946. height: 20px;
  947. border-radius: 50%;
  948. border: 1px solid var(--conversations);
  949. border-top-color: white;
  950. animation: spinner .6s linear infinite;
  951. }
  952. .grecaptcha-badge {
  953. visibility: hidden;
  954. }
  955. .mobile-sidebar {
  956. display: none;
  957. position: fixed;
  958. z-index: 1000;
  959. top: 10px;
  960. right: 10px;
  961. width: 40px;
  962. height: 40px;
  963. background-color: var(--blur-bg);
  964. border: 1px solid var(--blur-border);
  965. border-radius: 10px;
  966. backdrop-filter: blur(20px);
  967. -webkit-backdrop-filter: blur(20px);
  968. cursor: pointer;
  969. justify-content: center;
  970. align-items: center;
  971. transition: all 0.3s ease;
  972. padding: 10px 12px;
  973. }
  974. .mobile-sidebar i {
  975. transition: 0.33s;
  976. }
  977. .rotated {
  978. transform: rotate(360deg);
  979. }
  980. .settings h3 {
  981. padding-left: 10px;
  982. padding-top: 10px;
  983. }
  984. @media screen and (max-width: 990px) {
  985. .conversations {
  986. display: none;
  987. width: 100%;
  988. max-width: none;
  989. }
  990. .settings h3 {
  991. padding-left: 54px;
  992. padding-top: 18px;
  993. }
  994. .buttons {
  995. align-items: flex-start;
  996. flex-wrap: wrap;
  997. gap: 8px;
  998. padding-left: 4px;
  999. }
  1000. .mobile-sidebar {
  1001. display: flex;
  1002. }
  1003. #chatPrompt {
  1004. padding-left: 60px;
  1005. }
  1006. .settings h3 {
  1007. text-align: center;
  1008. }
  1009. .field.collapsible {
  1010. flex-direction: column;
  1011. }
  1012. }
  1013. .shown {
  1014. display: flex;
  1015. }
  1016. .conversation .user-input textarea {
  1017. font-size: 15px;
  1018. width: 100%;
  1019. height: 100%;
  1020. padding: 12px var(--inner-gap);
  1021. background: none;
  1022. border: none;
  1023. outline: none;
  1024. color: var(--colour-3);
  1025. resize: vertical;
  1026. max-height: 200px;
  1027. min-height: 100px;
  1028. }
  1029. /* style for hljs copy */
  1030. .hljs-copy-wrapper {
  1031. position: relative;
  1032. overflow: hidden
  1033. }
  1034. .hljs-copy-wrapper:hover .hljs-copy-button,
  1035. .hljs-copy-button:focus {
  1036. transform: translateX(0)
  1037. }
  1038. .hljs-copy-button {
  1039. position: absolute;
  1040. transform: translateX(calc(100% + 1.125em));
  1041. top: 1em;
  1042. right: 1em;
  1043. width: 2rem;
  1044. height: 2rem;
  1045. text-indent: -9999px;
  1046. color: #fff;
  1047. border-radius: .25rem;
  1048. border: 1px solid #ffffff22;
  1049. background-color: #2d2b57;
  1050. background-image: url('data:image/svg+xml;utf-8,<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M6 5C5.73478 5 5.48043 5.10536 5.29289 5.29289C5.10536 5.48043 5 5.73478 5 6V20C5 20.2652 5.10536 20.5196 5.29289 20.7071C5.48043 20.8946 5.73478 21 6 21H18C18.2652 21 18.5196 20.8946 18.7071 20.7071C18.8946 20.5196 19 20.2652 19 20V6C19 5.73478 18.8946 5.48043 18.7071 5.29289C18.5196 5.10536 18.2652 5 18 5H16C15.4477 5 15 4.55228 15 4C15 3.44772 15.4477 3 16 3H18C18.7956 3 19.5587 3.31607 20.1213 3.87868C20.6839 4.44129 21 5.20435 21 6V20C21 20.7957 20.6839 21.5587 20.1213 22.1213C19.5587 22.6839 18.7957 23 18 23H6C5.20435 23 4.44129 22.6839 3.87868 22.1213C3.31607 21.5587 3 20.7957 3 20V6C3 5.20435 3.31607 4.44129 3.87868 3.87868C4.44129 3.31607 5.20435 3 6 3H8C8.55228 3 9 3.44772 9 4C9 4.55228 8.55228 5 8 5H6Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M7 3C7 1.89543 7.89543 1 9 1H15C16.1046 1 17 1.89543 17 3V5C17 6.10457 16.1046 7 15 7H9C7.89543 7 7 6.10457 7 5V3ZM15 3H9V5H15V3Z" fill="white"/></svg>');
  1051. background-repeat: no-repeat;
  1052. background-position: center;
  1053. }
  1054. .hljs-copy-button:hover {
  1055. border-color: #ffffff44
  1056. }
  1057. .hljs-copy-button:active {
  1058. border-color: #ffffff66
  1059. }
  1060. .hljs-copy-button[data-copied="true"] {
  1061. text-indent: 0;
  1062. width: auto;
  1063. background-image: none
  1064. }
  1065. @media(prefers-reduced-motion) {
  1066. .hljs-copy-button {
  1067. transition: none
  1068. }
  1069. }
  1070. .hljs-copy-alert {
  1071. clip: rect(0 0 0 0);
  1072. clip-path: inset(50%);
  1073. height: 1px;
  1074. overflow: hidden;
  1075. position: absolute;
  1076. white-space: nowrap;
  1077. width: 1px
  1078. }
  1079. .visually-hidden {
  1080. clip: rect(0 0 0 0);
  1081. clip-path: inset(50%);
  1082. height: 1px;
  1083. overflow: hidden;
  1084. position: absolute;
  1085. white-space: nowrap;
  1086. width: 1px;
  1087. }
  1088. .hljs-iframe-button, .hljs-iframe-close {
  1089. position: absolute;
  1090. bottom: 1rem;
  1091. right: 1rem;
  1092. padding: 7px;
  1093. border-radius: .25rem;
  1094. border: 1px solid #ffffff22;
  1095. background-color: #2d2b57;
  1096. color: #fff;
  1097. cursor: pointer;
  1098. width: 32px;
  1099. height: 32px;
  1100. }
  1101. .hljs-iframe-button:hover, .hljs-iframe-close:hover {
  1102. border-color: #ffffff44;
  1103. color: #ffffff77;
  1104. }
  1105. .hljs-iframe-container {
  1106. position: fixed;
  1107. position: absolute;
  1108. left: 0;
  1109. width: 100%;
  1110. height: 100%;
  1111. z-index: 1000001;
  1112. background-color: #fff;
  1113. padding: 0;
  1114. margin: 0;
  1115. overflow: hidden;
  1116. }
  1117. .hljs-iframe {
  1118. width: 100%;
  1119. height: 100%;
  1120. padding: 0;
  1121. margin: 0;
  1122. border: none;
  1123. overflow: auto;
  1124. }
  1125. .white {
  1126. --blur-bg: transparent;
  1127. --accent: #007bff;
  1128. --conversations: #0062cc;
  1129. --colour-1: #ffffff;
  1130. --colour-3: #212529;
  1131. --scrollbar: var(--colour-1);
  1132. --scrollbar-thumb: #ccc;
  1133. --button-hover: var(--colour-4);
  1134. --background: transparent;
  1135. }
  1136. .white .message .assistant .fa-xmark {
  1137. color: var(--colour-1);
  1138. }
  1139. .white .message .user .fa-xmark {
  1140. color: var(--colour-3);
  1141. }
  1142. #send-button {
  1143. border: 1px dashed #e4d4ffa6;
  1144. border-radius: 4px;
  1145. cursor: pointer;
  1146. position: absolute;
  1147. bottom: 8px;
  1148. right: 4px;
  1149. padding: 4px;
  1150. }
  1151. #send-button:hover {
  1152. border: 1px solid #e4d4ffc9;
  1153. }
  1154. #send-button i {
  1155. padding: 2px;
  1156. }
  1157. form textarea {
  1158. height: 20px;
  1159. min-height: 20px;
  1160. padding: 0;
  1161. }
  1162. .settings textarea {
  1163. height: 30px;
  1164. min-height: 30px;
  1165. padding: 6px;
  1166. }
  1167. .field a {
  1168. text-wrap: nowrap;
  1169. }
  1170. form .field .fa-xmark {
  1171. line-height: 20px;
  1172. cursor: pointer;
  1173. margin-left: auto;
  1174. margin-right: 16px;
  1175. margin-top: 0;
  1176. }
  1177. form .field.saved .fa-xmark {
  1178. color: var(--accent)
  1179. }
  1180. .settings .field, form .field {
  1181. padding: var(--inner-gap) var(--inner-gap) var(--inner-gap) 0;
  1182. }
  1183. .settings, .log, form {
  1184. width: 100%;
  1185. overflow: auto;
  1186. height: 100%;
  1187. }
  1188. .log {
  1189. white-space: pre-wrap;
  1190. }
  1191. .log.hidden {
  1192. display: none;
  1193. }
  1194. .settings .paper {
  1195. flex-direction: column;
  1196. min-width: 400px;
  1197. }
  1198. .settings .field, form .field {
  1199. margin: var(--inner-gap) 0;
  1200. }
  1201. .settings textarea, form textarea {
  1202. background-color: transparent;
  1203. border: none;
  1204. }
  1205. .settings input, form input {
  1206. background-color: transparent;
  1207. padding: 2px;
  1208. border: none;
  1209. font-size: 15px;
  1210. width: 100%;
  1211. color: var(--colour-3);
  1212. }
  1213. .settings input:focus, form input:focus {
  1214. outline: none;
  1215. }
  1216. .settings .label, form .label, .settings label, form label {
  1217. font-size: 15px;
  1218. margin-left: var(--inner-gap);
  1219. }
  1220. .settings .label, form .label {
  1221. white-space:nowrap;
  1222. line-height: 30px;
  1223. }
  1224. .field.collapsible {
  1225. border: 1px solid var(--blur-border);
  1226. border-radius: var(--border-radius-1);
  1227. overflow: hidden;
  1228. margin-bottom: 10px;
  1229. padding-right: 0;
  1230. }
  1231. .collapsible-header {
  1232. padding: 10px;
  1233. cursor: pointer;
  1234. display: flex;
  1235. justify-content: space-between;
  1236. align-items: center;
  1237. background-color: var(--blur-bg);
  1238. }
  1239. .collapsible-header:hover {
  1240. background-color: var(--button-hover);
  1241. }
  1242. .collapsible-content {
  1243. padding: 0 10px;
  1244. }
  1245. .collapsible-content.api-key {
  1246. width: 100%;
  1247. }
  1248. .collapsible-content.hidden {
  1249. display: none;
  1250. }
  1251. .provider-item {
  1252. padding: 5px 0;
  1253. display: flex;
  1254. justify-content: space-between;
  1255. align-items: center;
  1256. }
  1257. .fa-chevron-down {
  1258. transition: transform 0.3s ease;
  1259. }
  1260. .collapsible-header.active .fa-chevron-down {
  1261. transform: rotate(180deg);
  1262. }
  1263. ::-webkit-scrollbar-track {
  1264. background: var(--scrollbar);
  1265. }
  1266. ::-webkit-scrollbar-thumb {
  1267. background: var(--scrollbar-thumb);
  1268. border-radius: 2px;
  1269. }
  1270. ::-webkit-scrollbar-thumb:hover {
  1271. background: var(--accent);
  1272. }
  1273. .hljs {
  1274. color: #e9e9f4;
  1275. background: #28293629;
  1276. border-radius: var(--border-radius-1);
  1277. border: 1px solid var(--blur-border);
  1278. font-size: 15px;
  1279. }
  1280. #message-input {
  1281. height: 90px;
  1282. flex: 1;
  1283. padding: 10px;
  1284. padding-left: 24px;
  1285. border-radius: 20px;
  1286. font-size: 14px;
  1287. margin-right: 10px;
  1288. outline: none;
  1289. max-height: 200px;
  1290. }
  1291. .hidden, input.hidden {
  1292. display: none;
  1293. }
  1294. .blink {
  1295. animation: blinker 1s step-start infinite;
  1296. }
  1297. @keyframes blinker {
  1298. 50% {
  1299. opacity: 0;
  1300. }
  1301. }
  1302. @media print {
  1303. #chatPrompt:placeholder-shown,
  1304. .conversations,
  1305. .conversation .user-input,
  1306. .conversation .buttons,
  1307. .conversation .toolbar,
  1308. .conversation .slide-systemPrompt,
  1309. .message .count i,
  1310. .message .assistant,
  1311. .message .user {
  1312. display: none;
  1313. }
  1314. body {
  1315. height: auto;
  1316. }
  1317. .box {
  1318. backdrop-filter: none;
  1319. }
  1320. }
  1321. /* Basic adaptation */
  1322. .row {
  1323. flex-wrap: wrap;
  1324. gap: 10px;
  1325. }
  1326. .conversations, .settings, .conversation {
  1327. flex: 1 1 300px;
  1328. min-width: 0;
  1329. height: 100%;
  1330. }
  1331. /* Media queries for mobile devices */
  1332. @media (max-width: 768px) {
  1333. .row {
  1334. flex-direction: column;
  1335. }
  1336. .conversations, .settings {
  1337. width: 100%;
  1338. max-width: 100%;
  1339. margin: 0;
  1340. }
  1341. .conversation {
  1342. order: -1;
  1343. min-height: 80vh;
  1344. }
  1345. }
  1346. @media (max-width: 480px) {
  1347. .info .convo-title {
  1348. font-size: 12px;
  1349. }
  1350. }