manifest.css 31 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160
  1. @font-face {
  2. font-family: 'Roboto-Light';
  3. src: url("/fonts/Roboto-Light.ttf") format("truetype"); }
  4. @font-face {
  5. font-family: 'Roboto';
  6. src: url("/fonts/Roboto-Regular.ttf") format("truetype"); }
  7. @font-face {
  8. font-family: 'Roboto';
  9. src: url("/fonts/Roboto-Italic.ttf") format("truetype");
  10. font-style: italic; }
  11. @font-face {
  12. font-family: 'Roboto';
  13. src: url("/fonts/Roboto-Bold.ttf") format("truetype");
  14. font-weight: bold; }
  15. * {
  16. box-sizing: border-box; }
  17. html {
  18. height: 100%; }
  19. body {
  20. position: relative;
  21. height: 100%;
  22. width: 100%;
  23. margin: 0;
  24. font-family: Roboto, "Helvetica Neue", Arial, Helvetica, sans-serif;
  25. font-size: 14px; }
  26. .clearfix:before,
  27. .clearfix:after {
  28. display: table;
  29. content: " "; }
  30. .clearfix:after {
  31. clear: both; }
  32. .hide {
  33. display: none; }
  34. #header {
  35. background-color: #2090ea;
  36. color: white;
  37. transition: background-color 0.5s; }
  38. #header.inactive {
  39. background-color: #f3f3f3;
  40. color: #454545; }
  41. #header h1 {
  42. margin: 0;
  43. line-height: 64px;
  44. padding-left: 20px;
  45. font-size: 22px;
  46. font-weight: normal; }
  47. .conversation-header button,
  48. .title-bar button {
  49. width: 24px;
  50. height: 24px;
  51. line-height: 24px;
  52. padding: 0;
  53. border: 0;
  54. outline: 0; }
  55. button {
  56. cursor: pointer; }
  57. a {
  58. color: #2090ea; }
  59. .inactive button.back {
  60. -webkit-mask: url("/images/back.svg") no-repeat center;
  61. -webkit-mask-size: 100%;
  62. background-color: rgba(0, 0, 0, 0.5); }
  63. .inactive button.back:focus, .inactive button.back:hover {
  64. -webkit-mask: url("/images/back.svg") no-repeat center;
  65. -webkit-mask-size: 100%;
  66. background-color: black; }
  67. button.back {
  68. -webkit-mask: url("/images/back.svg") no-repeat center;
  69. -webkit-mask-size: 100%;
  70. background-color: rgba(255, 255, 255, 0.8); }
  71. button.back:focus, button.back:hover {
  72. -webkit-mask: url("/images/back.svg") no-repeat center;
  73. -webkit-mask-size: 100%;
  74. background-color: white; }
  75. ::-webkit-scrollbar {
  76. width: 10px; }
  77. ::-webkit-scrollbar-thumb {
  78. background: rgba(0, 0, 0, 0.15);
  79. border-radius: 5px; }
  80. ::-webkit-scrollbar-thumb:hover {
  81. background: rgba(0, 0, 0, 0.25); }
  82. .header-buttons {
  83. height: 0; }
  84. .header-buttons.left {
  85. float: left;
  86. padding-left: 10px; }
  87. .header-buttons.right {
  88. float: right;
  89. padding-right: 10px; }
  90. .header-buttons .vertical-align {
  91. height: 64px;
  92. vertical-align: middle;
  93. display: table-cell; }
  94. .inactive .menu .hamburger {
  95. -webkit-mask: url("/images/menu.svg") no-repeat center;
  96. -webkit-mask-size: 100%;
  97. background-color: rgba(0, 0, 0, 0.5); }
  98. .inactive .menu .hamburger:focus, .inactive .menu .hamburger:hover {
  99. -webkit-mask: url("/images/menu.svg") no-repeat center;
  100. -webkit-mask-size: 100%;
  101. background-color: black; }
  102. .menu {
  103. position: relative;
  104. float: right; }
  105. .menu .hamburger {
  106. width: 24px;
  107. height: 24px;
  108. vertical-align: middle;
  109. -webkit-mask: url("/images/menu.svg") no-repeat center;
  110. -webkit-mask-size: 100%;
  111. background-color: rgba(255, 255, 255, 0.8); }
  112. .menu .hamburger:focus, .menu .hamburger:hover {
  113. -webkit-mask: url("/images/menu.svg") no-repeat center;
  114. -webkit-mask-size: 100%;
  115. background-color: white; }
  116. .menu .menu-list {
  117. display: none;
  118. position: absolute;
  119. color: #454545;
  120. z-index: 50;
  121. text-align: initial;
  122. top: 100%;
  123. right: 0;
  124. margin: 0;
  125. padding: 0;
  126. background-color: white;
  127. box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.2); }
  128. .menu .menu-list li {
  129. display: block;
  130. white-space: nowrap;
  131. cursor: pointer;
  132. padding: 5px 15px 5px 10px; }
  133. .menu .menu-list li:hover {
  134. background-color: #f3f3f3; }
  135. .file-input {
  136. position: relative; }
  137. .file-input .choose-file {
  138. cursor: pointer;
  139. padding-left: 10px; }
  140. .file-input .paperclip {
  141. width: 24px;
  142. height: 100%;
  143. -webkit-mask: url("/images/paperclip.svg") no-repeat center;
  144. -webkit-mask-size: 100%;
  145. background-color: #616161;
  146. opacity: 0.5;
  147. transform: rotateZ(-45deg); }
  148. .file-input .paperclip:focus, .file-input .paperclip:hover {
  149. opacity: 1.0; }
  150. .file-input input[type=file] {
  151. display: none;
  152. position: absolute;
  153. width: 100%;
  154. height: 100%;
  155. opacity: 0;
  156. top: 0;
  157. left: 0;
  158. cursor: pointer;
  159. z-index: 1; }
  160. .dropoff {
  161. outline: solid 1px #2090ea; }
  162. img.emoji {
  163. height: 1em;
  164. width: 1em;
  165. margin: 0 .05em 0 .1em;
  166. vertical-align: -0.1em; }
  167. .avatar {
  168. display: inline-block;
  169. height: 44px;
  170. width: 44px;
  171. border-radius: 50%;
  172. background-size: cover;
  173. vertical-align: middle;
  174. text-align: center;
  175. line-height: 44px;
  176. overflow-x: hidden;
  177. text-overflow: ellipsis;
  178. color: white;
  179. font-size: 18px; }
  180. .group-info-input {
  181. background: white; }
  182. .group-info-input .group-avatar {
  183. display: inline-block;
  184. padding: 2px 0px 0px 2px; }
  185. .group-info-input .file-input .thumbnail, .group-info-input .thumbnail .avatar,
  186. .group-info-input img {
  187. height: 54px;
  188. width: 54px;
  189. border-radius: 27px; }
  190. .group-info-input .thumbnail:after {
  191. content: '';
  192. position: absolute;
  193. height: 0;
  194. width: 0;
  195. bottom: 0;
  196. right: 0;
  197. border-bottom: 10px solid #616161;
  198. border-left: 10px solid transparent; }
  199. .group-info-input input.name {
  200. padding: 0.5em;
  201. border: solid 1px #ccc;
  202. border-width: 0 0 1px 0;
  203. width: calc(100% - 84px); }
  204. .group-member-list .members .contact,
  205. .new-group-update .members .contact {
  206. box-shadow: none;
  207. border-bottom: 1px solid #eee; }
  208. .group-member-list .members .contact .last-message, .group-member-list .members .contact .last-timestamp,
  209. .new-group-update .members .contact .last-message,
  210. .new-group-update .members .contact .last-timestamp {
  211. display: none; }
  212. .group-member-list .members .contact .number,
  213. .new-group-update .members .contact .number {
  214. display: none; }
  215. .conversation-list-item {
  216. cursor: pointer; }
  217. .conversation-list-item:hover {
  218. background: #f8f8f8; }
  219. .conversation-list-item .number {
  220. display: none; }
  221. .conversation-list-item .unread-count {
  222. float: right;
  223. margin: 3px 10px 0 20px;
  224. display: inline-block;
  225. padding: 0 3px;
  226. min-width: 21px;
  227. height: 21px;
  228. line-height: 21px;
  229. font-size: 12px;
  230. font-weight: bold;
  231. text-align: center;
  232. border-radius: 5px;
  233. background-color: #2090ea;
  234. color: white;
  235. border: solid 1px rgba(255, 255, 255, 0.6); }
  236. .inactive .contact.selected {
  237. padding-left: 8px;
  238. border-left: 4px solid #2090ea; }
  239. .contact {
  240. position: relative;
  241. padding: 12px;
  242. white-space: nowrap;
  243. overflow: hidden;
  244. background: rgba(255, 255, 255, 0.6);
  245. margin: 1px; }
  246. .contact.selected {
  247. background: #ecf3fc; }
  248. .contact:first-child {
  249. margin-top: 0; }
  250. .contact:last-child::after {
  251. display: none; }
  252. .contact-details {
  253. vertical-align: middle;
  254. display: inline-block;
  255. margin: 0 0 0 8px;
  256. width: calc(100% - 44px - 8px - 4px); }
  257. .contact-details p {
  258. overflow-x: hidden;
  259. text-overflow: ellipsis; }
  260. .contact-details .name {
  261. display: block;
  262. margin: 0;
  263. font-size: 1em;
  264. font-weight: 400;
  265. text-overflow: ellipsis;
  266. overflow-x: hidden; }
  267. .contact-details .number {
  268. color: #616161;
  269. font-size: small; }
  270. .recipients-input {
  271. position: relative; }
  272. .recipients-input .recipients-container {
  273. background-color: white;
  274. padding: 2px;
  275. border-bottom: 1px solid #f2f2f2;
  276. line-height: 24px; }
  277. .recipients-input .recipient {
  278. display: inline-block;
  279. margin: 0 2px 2px 0;
  280. padding: 0 5px;
  281. border-radius: 10px;
  282. background-color: #2090ea;
  283. color: white; }
  284. .recipients-input .recipient.error {
  285. background-color: #f00; }
  286. .recipients-input .recipient .remove {
  287. margin-left: 5px;
  288. padding: 0 2px; }
  289. .recipients-input .results {
  290. position: absolute;
  291. z-index: 10;
  292. margin: 0 0 0 20px;
  293. width: calc(100% - 30px);
  294. max-width: 300px;
  295. max-height: 165px;
  296. overflow-y: auto;
  297. box-shadow: 0px 0px 1px rgba(170, 170, 170, 0.8); }
  298. .recipients-input .results .contact {
  299. cursor: pointer; }
  300. .attachment-preview {
  301. display: inline-block;
  302. position: relative; }
  303. .attachment-preview img {
  304. max-width: 100%; }
  305. .new-conversation .recipients-input .recipients::before {
  306. content: 'To: '; }
  307. .new-group-update .recipients-input .recipients::before {
  308. content: 'Add: '; }
  309. .loading {
  310. position: relative; }
  311. .loading::before {
  312. display: block;
  313. margin: 0px auto;
  314. content: " ";
  315. height: 16px;
  316. width: 16px;
  317. border-radius: 32px;
  318. border: solid 3px;
  319. border-color: #a2d2f4 #a2d2f4 #f3f3f3 #f3f3f3 !important;
  320. animation: rotate 1s linear infinite; }
  321. @keyframes rotate {
  322. to {
  323. transform: rotate(360deg); } }
  324. .modal {
  325. position: absolute;
  326. top: 0;
  327. left: 0;
  328. height: 100%;
  329. width: 100%;
  330. background-color: rgba(0, 0, 0, 0.3);
  331. padding: 0 20px;
  332. z-index: 100; }
  333. .modal .content {
  334. position: relative;
  335. max-width: 350px;
  336. margin: 100px auto;
  337. padding: 1em;
  338. background: white;
  339. border-radius: 5px;
  340. overflow: auto;
  341. box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.2); }
  342. .x {
  343. display: inline-block;
  344. float: right;
  345. cursor: pointer;
  346. border-radius: 50%;
  347. width: 22px;
  348. height: 22px;
  349. padding: 3px;
  350. background: #616161; }
  351. .x:before {
  352. content: '';
  353. display: block;
  354. width: 100%;
  355. height: 100%;
  356. -webkit-mask: url("/images/x.svg") no-repeat center;
  357. -webkit-mask-size: 100%;
  358. background-color: white; }
  359. input[type=text]:active, input[type=text]:focus, input[type=search]:active, input[type=search]:focus, textarea:active, textarea:focus {
  360. outline: 1px solid #2090ea; }
  361. .expiredAlert {
  362. background: #F3F3A7;
  363. padding: 10px;
  364. line-height: 36px; }
  365. .expiredAlert button {
  366. float: right;
  367. border: none;
  368. border-radius: 5px;
  369. color: white;
  370. font-weight: bold;
  371. line-height: 36px;
  372. padding: 0 20px;
  373. background: #2090ea;
  374. margin-left: 20px; }
  375. @keyframes progress-bar-stripes {
  376. from {
  377. background-position: 40px 0; }
  378. to {
  379. background-position: 0 0; } }
  380. .progress-bar-striped {
  381. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.75) 50%, rgba(255, 255, 255, 0.75) 75%, transparent 75%, transparent);
  382. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.75) 50%, rgba(255, 255, 255, 0.75) 75%, transparent 75%, transparent);
  383. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.75) 50%, rgba(255, 255, 255, 0.75) 75%, transparent 75%, transparent);
  384. -webkit-background-size: 40px 40px;
  385. background-size: 40px 40px; }
  386. .progress-bar-striped {
  387. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.75) 50%, rgba(255, 255, 255, 0.75) 75%, transparent 75%, transparent);
  388. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.75) 50%, rgba(255, 255, 255, 0.75) 75%, transparent 75%, transparent);
  389. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.75) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.75) 50%, rgba(255, 255, 255, 0.75) 75%, transparent 75%, transparent); }
  390. .progress-bar.active {
  391. -webkit-animation: progress-bar-stripes 2s linear infinite;
  392. -o-animation: progress-bar-stripes 2s linear infinite;
  393. animation: progress-bar-stripes 2s linear infinite; }
  394. .bar-container {
  395. background: #a2d2f4; }
  396. .bar-container .progress-bar {
  397. height: 100%; }
  398. .debug-log.modal {
  399. padding: 50px; }
  400. .debug-log.modal .content {
  401. margin: 0;
  402. max-width: 100%;
  403. width: 100%;
  404. height: 100%;
  405. display: flex;
  406. flex-direction: column; }
  407. .debug-log.modal .content textarea {
  408. flex-grow: 1;
  409. width: 100%;
  410. resize: none; }
  411. .debug-log .submit {
  412. border-radius: 5px;
  413. border: solid 1px #ccc;
  414. cursor: pointer;
  415. margin: 1em auto;
  416. padding: 1em;
  417. font-family: inherit;
  418. color: #616161;
  419. background: #f3f3f3;
  420. box-shadow: 0 0 10px -5px rgba(97, 97, 97, 0.5); }
  421. .debug-log .submit:hover {
  422. color: black;
  423. box-shadow: 0 0 10px -3px rgba(97, 97, 97, 0.7); }
  424. .debug-log .result {
  425. text-align: center; }
  426. .debug-log .result .input-group {
  427. display: inline-block;
  428. width: 100%;
  429. max-width: 472px; }
  430. .debug-log .result .open {
  431. float: left;
  432. display: inline-block;
  433. width: 72px;
  434. height: 36px;
  435. padding: 5px 23px;
  436. cursor: pointer;
  437. border: solid 1px #ccc;
  438. border-radius: 0 5px 5px 0;
  439. background: #f3f3f3; }
  440. .debug-log .result .open:before {
  441. content: '';
  442. display: block;
  443. width: 24px;
  444. height: 24px;
  445. -webkit-mask: url("/images/open_link.svg") no-repeat center;
  446. -webkit-mask-size: 100%;
  447. background-color: rgba(0, 0, 0, 0.5); }
  448. .debug-log .result .open:before:focus, .debug-log .result .open:before:hover {
  449. -webkit-mask: url("/images/open_link.svg") no-repeat center;
  450. -webkit-mask-size: 100%;
  451. background-color: black; }
  452. .debug-log .result .link {
  453. border-radius: 5px 0 0 5px;
  454. float: left;
  455. width: calc(100% - 72px);
  456. max-width: 400px;
  457. height: 36px;
  458. padding: 0 10px;
  459. outline-offset: -4px;
  460. border: solid 1px #ccc;
  461. border-right: none; }
  462. .conversation-stack,
  463. .new-conversation, .inbox, .gutter {
  464. height: 100%; }
  465. .expired .conversation-stack, .expired .gutter {
  466. height: calc(100% - 56px); }
  467. .scrollable {
  468. height: 100%;
  469. overflow: auto; }
  470. .gutter {
  471. color: #454545;
  472. float: left;
  473. width: 300px; }
  474. .gutter .content {
  475. background-color: #f3f3f3;
  476. height: calc(100% - 64px - 36px); }
  477. .gutter .conversations {
  478. overflow-y: scroll;
  479. height: 100%;
  480. width: 100%; }
  481. .socket-status {
  482. float: right;
  483. line-height: 24px; }
  484. .socket-status * {
  485. display: inline;
  486. padding-left: 20px;
  487. vertical-align: middle; }
  488. .socket-status .connecting .icon {
  489. background-color: #2090ea; }
  490. .socket-status .closing {
  491. background-color: #a2d2f4; }
  492. .socket-status .closed {
  493. background: url("/images/error_red.png") no-repeat left center; }
  494. .conversation-stack {
  495. padding-left: 300px; }
  496. .conversation-stack .conversation {
  497. display: none; }
  498. .conversation-stack .conversation:first-child {
  499. display: block; }
  500. .conversation-header {
  501. height: 64px;
  502. text-align: center;
  503. color: white;
  504. background-color: #999999;
  505. transition: background-color 0.5s;
  506. border-bottom: 1px solid rgba(0, 0, 0, 0.2); }
  507. .conversation-header .avatar {
  508. margin-bottom: -30px;
  509. border: solid 2px white;
  510. z-index: 10;
  511. width: 48px;
  512. height: 48px;
  513. line-height: 44px;
  514. position: relative; }
  515. .inactive .conversation-header {
  516. background-color: #f3f3f3 !important;
  517. color: #454545;
  518. border-color: rgba(0, 0, 0, 0.05); }
  519. .tool-bar {
  520. position: relative; }
  521. .tool-bar .search-icon {
  522. content: '';
  523. display: inline-block;
  524. float: left;
  525. width: 24px;
  526. height: 100%;
  527. -webkit-mask: url("/images/search.svg") no-repeat left center;
  528. -webkit-mask-size: 100%;
  529. background-color: #ccc;
  530. position: absolute;
  531. left: 20px;
  532. top: 0; }
  533. input.search {
  534. border: none;
  535. padding: 0 10px 0 65px;
  536. margin: 0;
  537. outline: 0;
  538. height: 36px;
  539. line-height: 36px;
  540. width: 100%;
  541. border: solid 1px #f3f3f3;
  542. outline-offset: -2px;
  543. font-size: inherit;
  544. position: relative; }
  545. input.search.active {
  546. outline: solid 1px #2090ea; }
  547. input.search::-webkit-search-cancel-button {
  548. -webkit-appearance: none;
  549. display: block;
  550. width: 16px;
  551. height: 16px;
  552. background: url("/images/x.svg") no-repeat center;
  553. background-size: cover; }
  554. input.search::-webkit-search-cancel-button:hover {
  555. cursor: pointer; }
  556. .last-timestamp {
  557. font-size: smaller;
  558. float: right;
  559. margin: 0 10px;
  560. color: #616161; }
  561. .new-contact {
  562. display: none;
  563. cursor: pointer;
  564. opacity: 0.7; }
  565. .new-contact .contact-details .number {
  566. display: block;
  567. font-style: italic;
  568. padding-right: 8px; }
  569. .new-contact.valid {
  570. opacity: 1; }
  571. .index {
  572. color: #454545; }
  573. .index .gutter .new-group-update-form {
  574. display: none;
  575. padding: 0.5em; }
  576. .index .last-message {
  577. margin: 6px 0 0;
  578. font-size: small;
  579. font-weight: 300; }
  580. .index .gutter .timestamp {
  581. position: absolute;
  582. top: 14px;
  583. right: 12px;
  584. color: #616161; }
  585. .conversations .unread .contact-details .name,
  586. .conversations .unread .contact-details .last-message,
  587. .conversations .unread .contact-details .last-timestamp {
  588. font-weight: bold; }
  589. .hint {
  590. margin: 10px;
  591. padding: 1em;
  592. border-radius: 5px;
  593. color: white;
  594. border: 2px dashed white; }
  595. .hint h3 {
  596. margin-top: 5px; }
  597. .hint.firstRun {
  598. position: absolute;
  599. top: 0;
  600. left: 302px;
  601. width: 225px; }
  602. .hint.firstRun:before, .hint.firstRun:after {
  603. content: ' ';
  604. display: block;
  605. position: absolute;
  606. top: 8px;
  607. left: -35px;
  608. width: 0;
  609. height: 0;
  610. border: solid 10px white;
  611. border-color: transparent white transparent transparent;
  612. transform: scaleX(2.5) scaleY(0.75); }
  613. .hint.firstRun:after {
  614. border-color: transparent #2eace0 transparent transparent;
  615. left: -30px; }
  616. .conversation.placeholder {
  617. text-align: center;
  618. padding: 100px 36px;
  619. color: #aaa; }
  620. .contact.placeholder {
  621. position: absolute;
  622. top: 50px;
  623. left: 0;
  624. background: transparent;
  625. color: white;
  626. border: 2px dashed white;
  627. overflow: visible; }
  628. .contact.placeholder p {
  629. color: white; }
  630. .contact.placeholder:before, .contact.placeholder:after {
  631. content: ' ';
  632. display: block;
  633. position: absolute;
  634. top: -35px;
  635. left: 15px;
  636. width: 0;
  637. height: 0;
  638. border: solid 10px white;
  639. border-color: transparent transparent white transparent;
  640. transform: scaleY(2.5) scaleX(0.75); }
  641. .contact.placeholder:after {
  642. border-color: transparent transparent #2eace0 transparent;
  643. top: -30px; }
  644. .conversation-title {
  645. display: block;
  646. line-height: 36px;
  647. white-space: nowrap;
  648. overflow: hidden;
  649. text-overflow: ellipsis;
  650. padding: 0 36px;
  651. -webkit-user-select: text; }
  652. .conversation-name + .conversation-number:before {
  653. content: "\00b7";
  654. font-weight: bold;
  655. padding: 0 5px 0 4px; }
  656. .conversation {
  657. background-color: #ffffff;
  658. height: 100%; }
  659. .conversation .panel {
  660. height: calc(100% - 64px);
  661. overflow-y: scroll; }
  662. .conversation .panel .container {
  663. padding-top: 20px;
  664. max-width: 950px;
  665. margin: 0 auto;
  666. padding: 20px; }
  667. .conversation .main.panel {
  668. display: flex;
  669. flex-direction: column;
  670. overflow: initial; }
  671. .conversation .main.panel .discussion-container {
  672. flex-grow: 1;
  673. position: relative;
  674. max-width: 100%;
  675. margin: 0; }
  676. .conversation .main.panel .discussion-container .bar-container {
  677. height: 5px; }
  678. .conversation .main.panel .discussion-container .message-list {
  679. position: absolute;
  680. top: 0;
  681. height: 100%;
  682. width: 100%;
  683. margin: 0;
  684. padding: 2em 20px 0;
  685. overflow-y: auto; }
  686. .key-verification label {
  687. display: block;
  688. margin-bottom: 10px;
  689. font-size: small; }
  690. .key-verification .key, .key-verification .placeholder {
  691. padding: 0 1em;
  692. -webkit-user-select: text; }
  693. .key-verification .key {
  694. display: inline-block;
  695. font-family: monospace;
  696. padding: 10px;
  697. margin-bottom: 20px;
  698. background: #f3f3f3;
  699. border: solid 1px #d9d9d9;
  700. border-radius: 5px; }
  701. .key-verification .placeholder {
  702. font-weight: bold; }
  703. .message-detail .key-conflict-dialogue {
  704. border-radius: 5px;
  705. margin: 20px 0; }
  706. .message-detail .key-conflict-dialogue .header {
  707. border-radius: 5px 5px 0 0;
  708. background: #F3F3A7;
  709. margin: 0;
  710. padding: 10px 20px; }
  711. .message-detail .key-conflict-dialogue .content {
  712. padding: 20px;
  713. border: 2px solid #F3F3A7; }
  714. .message-detail .key-conflict-dialogue button.resolve {
  715. outline: none;
  716. border: none;
  717. border-radius: 5px;
  718. color: white;
  719. font-weight: bold;
  720. line-height: 36px;
  721. padding: 0 20px;
  722. float: right;
  723. background: #2090ea;
  724. margin-left: 20px; }
  725. .message-detail .key-conflict-dialogue .hideKeys, .message-detail .key-conflict-dialogue .showKeys {
  726. float: right;
  727. line-height: 36px; }
  728. .message-detail .message-container {
  729. background: white;
  730. padding: 20px 0; }
  731. .message-detail .message-container .sender {
  732. display: none; }
  733. .message-detail .info {
  734. padding: 1em; }
  735. .message-detail .info .label {
  736. font-weight: bold;
  737. padding-right: 1em;
  738. vertical-align: top; }
  739. .message-detail .info button {
  740. border: none;
  741. border-radius: 5px;
  742. color: white;
  743. padding: 0.5em;
  744. font-weight: bold; }
  745. .message-detail .info button span {
  746. vertical-align: middle; }
  747. .message-detail .contacts .contact-detail {
  748. padding: 0 36px;
  749. margin-bottom: 5px; }
  750. .message-detail .contacts .contact-detail .error-icon-container {
  751. float: right; }
  752. .message-detail .contacts .contact-detail .error-message {
  753. margin: 6px 0 0;
  754. font-size: small;
  755. font-weight: bold;
  756. color: red; }
  757. .message-detail h3 {
  758. font-size: 1em;
  759. padding: 5px; }
  760. .message-detail button.conflict {
  761. float: right;
  762. background: #d00; }
  763. .message-detail button.cancel {
  764. float: right;
  765. color: #454545;
  766. border: solid 1px #ccc; }
  767. li.entry .error-icon-container {
  768. position: absolute;
  769. top: 0;
  770. left: calc(100% + 5px);
  771. height: 100%; }
  772. li.entry .error-icon-container .error-icon {
  773. cursor: pointer;
  774. display: block;
  775. height: 100%; }
  776. li.entry .error-icon-container .error-message {
  777. display: none;
  778. position: absolute;
  779. background: black;
  780. color: white;
  781. border-radius: 5px;
  782. padding: 0.5em;
  783. font-weight: normal;
  784. bottom: calc(50% + 18px);
  785. left: -84px;
  786. width: 180px;
  787. z-index: 10; }
  788. li.entry .error-icon-container .error-message:before {
  789. display: block;
  790. content: '';
  791. position: absolute;
  792. bottom: -16px;
  793. left: 50%;
  794. border: 6px solid transparent;
  795. border-top: 10px solid #000000; }
  796. li.entry .error-icon-container:hover .error-message {
  797. display: inline-block; }
  798. .error-icon {
  799. display: inline-block;
  800. width: 24px;
  801. height: 24px;
  802. position: relative;
  803. -webkit-mask: url("/images/warning.svg") no-repeat center;
  804. -webkit-mask-size: 100%;
  805. background-color: red; }
  806. .group-update {
  807. font-size: smaller; }
  808. .private .entry .avatar,
  809. .private .sender,
  810. .outgoing .sender {
  811. display: none; }
  812. .sender {
  813. font-size: smaller;
  814. opacity: 0.8;
  815. margin-bottom: 5px;
  816. font-weight: bold; }
  817. .timestamp {
  818. margin-right: 3px;
  819. white-space: nowrap; }
  820. .message-container,
  821. .message-list {
  822. list-style: none; }
  823. .message-container li,
  824. .message-list li {
  825. max-width: 800px;
  826. margin: 0 auto 10px; }
  827. .message-container li::after,
  828. .message-list li::after {
  829. visibility: hidden;
  830. display: block;
  831. font-size: 0;
  832. content: " ";
  833. clear: both;
  834. height: 0; }
  835. .message-container .bubble,
  836. .message-list .bubble {
  837. position: relative;
  838. left: -2px;
  839. display: inline-block;
  840. vertical-align: top;
  841. padding: 9px 12px;
  842. border-radius: 5px;
  843. box-shadow: 0 3px 3px -4px black;
  844. word-wrap: break-word;
  845. margin-left: 8px;
  846. max-width: 30em; }
  847. @media (max-width: 899px) {
  848. .message-container .bubble,
  849. .message-list .bubble {
  850. max-width: calc(100% - 45px - 24px); } }
  851. .message-container .bubble .content,
  852. .message-list .bubble .content {
  853. -webkit-user-select: text;
  854. white-space: pre-wrap; }
  855. .message-container .bubble .content a,
  856. .message-list .bubble .content a {
  857. word-break: break-all; }
  858. .message-container .bubble p,
  859. .message-list .bubble p {
  860. margin: 0; }
  861. .message-container .meta,
  862. .message-list .meta {
  863. font-size: smaller;
  864. margin-top: 3px;
  865. float: right;
  866. text-align: right;
  867. line-height: 18px; }
  868. .message-container .meta .hasRetry + .timestamp:before,
  869. .message-list .meta .hasRetry + .timestamp:before {
  870. content: "\00b7";
  871. font-weight: bold;
  872. padding: 0 5px 0 4px;
  873. text-decoration: none;
  874. opacity: 0.5; }
  875. .message-container .meta .retry,
  876. .message-list .meta .retry {
  877. text-decoration: underline;
  878. cursor: pointer; }
  879. .message-container .meta .hasRetry, .message-container .meta .timestamp, .message-container .meta .status,
  880. .message-list .meta .hasRetry,
  881. .message-list .meta .timestamp,
  882. .message-list .meta .status {
  883. float: left; }
  884. .message-container .meta .timestamp, .message-container .meta .status,
  885. .message-list .meta .timestamp,
  886. .message-list .meta .status {
  887. cursor: pointer;
  888. opacity: 0.5; }
  889. .message-container .meta .timestamp:hover, .message-container .meta .status:hover,
  890. .message-list .meta .timestamp:hover,
  891. .message-list .meta .status:hover {
  892. opacity: 1.0; }
  893. .message-container .status,
  894. .message-list .status {
  895. width: 18px;
  896. height: 18px; }
  897. .message-container .sent .status,
  898. .message-list .sent .status {
  899. display: inline-block;
  900. -webkit-mask: url("/images/check.svg") no-repeat center;
  901. -webkit-mask-size: 100%;
  902. background-color: black; }
  903. .message-container .delivered .status,
  904. .message-list .delivered .status {
  905. display: inline-block;
  906. -webkit-mask: url("/images/double-check.svg") no-repeat center;
  907. -webkit-mask-size: 100%;
  908. background-color: black; }
  909. .message-container .pending .status,
  910. .message-list .pending .status {
  911. display: inline-block;
  912. background: none; }
  913. .message-container .pending .status:before,
  914. .message-list .pending .status:before {
  915. content: '...'; }
  916. .message-container .error .status,
  917. .message-list .error .status {
  918. position: relative;
  919. display: inline-block;
  920. width: 18px;
  921. height: 18px;
  922. opacity: 1 !important;
  923. background: url("/images/error_red.png") center no-repeat;
  924. cursor: pointer;
  925. -webkit-mask: none; }
  926. .message-container .incoming .avatar, .message-container .incoming .bubble,
  927. .message-list .incoming .avatar,
  928. .message-list .incoming .bubble {
  929. float: left; }
  930. .message-container .incoming .bubble,
  931. .message-list .incoming .bubble {
  932. color: white;
  933. background-color: #2090ea; }
  934. .message-container .incoming .bubble .meta,
  935. .message-list .incoming .bubble .meta {
  936. color: white; }
  937. .message-container .incoming .bubble .content::selection, .message-container .incoming .bubble .content a::selection,
  938. .message-list .incoming .bubble .content::selection,
  939. .message-list .incoming .bubble .content a::selection {
  940. color: #454545;
  941. background: white; }
  942. .message-container .incoming .bubble .content::-moz-selection, .message-container .incoming .bubble .content a::-moz-selection,
  943. .message-list .incoming .bubble .content::-moz-selection,
  944. .message-list .incoming .bubble .content a::-moz-selection {
  945. color: #454545;
  946. background: white; }
  947. .message-container .incoming .bubble .attachments a, .message-container .incoming .bubble .content a,
  948. .message-list .incoming .bubble .attachments a,
  949. .message-list .incoming .bubble .content a {
  950. color: #f3f3f3; }
  951. .message-container .outgoing .error-icon-container,
  952. .message-list .outgoing .error-icon-container {
  953. left: auto;
  954. right: calc(100% + 5px); }
  955. .message-container .outgoing .avatar, .message-container .outgoing .bubble,
  956. .message-list .outgoing .avatar,
  957. .message-list .outgoing .bubble {
  958. float: right; }
  959. .message-container .outgoing .bubble,
  960. .message-list .outgoing .bubble {
  961. background-color: #f3f3f3;
  962. clear: left; }
  963. .message-container .control .bubble .content,
  964. .message-list .control .bubble .content {
  965. font-style: italic; }
  966. .message-container .control .bubble::before, .message-container .control .bubble::after,
  967. .message-list .control .bubble::before,
  968. .message-list .control .bubble::after {
  969. display: none; }
  970. .message-container .attachments a,
  971. .message-list .attachments a {
  972. font-style: italic;
  973. display: block;
  974. padding: 1em;
  975. background-color: #ccc; }
  976. .message-container .attachments img, .message-container .attachments audio, .message-container .attachments video,
  977. .message-list .attachments img,
  978. .message-list .attachments audio,
  979. .message-list .attachments video {
  980. max-width: 100%;
  981. max-height: 300px; }
  982. .message-container .attachments video,
  983. .message-list .attachments video {
  984. background: black;
  985. min-height: 300px; }
  986. .message-container .attachments img,
  987. .message-list .attachments img {
  988. cursor: pointer; }
  989. .message-container .outgoing .avatar,
  990. .message-list .outgoing .avatar {
  991. display: none; }
  992. .message-container .end-session,
  993. .message-list .end-session {
  994. font: small;
  995. font-style: italic;
  996. opacity: 0.8; }
  997. .message-container .bubble .content.error-message,
  998. .message-list .bubble .content.error-message {
  999. font-style: italic; }
  1000. .message-container .key-conflict,
  1001. .message-list .key-conflict {
  1002. padding: 15px 10px; }
  1003. .message-container .key-conflict button,
  1004. .message-list .key-conflict button {
  1005. margin-top: 5px; }
  1006. .message-list .avatar,
  1007. .message-container .avatar,
  1008. .key-conflict-dialogue .avatar {
  1009. height: 36px;
  1010. width: 36px;
  1011. line-height: 36px; }
  1012. .bottom-bar {
  1013. box-sizing: content-box;
  1014. padding: 5px 5px 5px 0;
  1015. background: #f3f3f3; }
  1016. .bottom-bar form.active {
  1017. outline: solid 1px #2090ea; }
  1018. .bottom-bar form.send {
  1019. background: #ffffff;
  1020. padding-bottom: 1px; }
  1021. .bottom-bar input, .bottom-bar textarea {
  1022. color: #454545; }
  1023. .bottom-bar .attachment-previews {
  1024. padding: 0 36px; }
  1025. .bottom-bar .attachment-previews .attachment-preview {
  1026. padding: 13px 10px 0; }
  1027. .bottom-bar .attachment-previews img {
  1028. border: 2px solid #ddd;
  1029. border-radius: 5px;
  1030. max-height: 100px; }
  1031. .bottom-bar .attachment-previews .close {
  1032. position: absolute;
  1033. top: 5px;
  1034. right: 2px;
  1035. background: #999; }
  1036. .bottom-bar .attachment-previews .close:hover {
  1037. background: #616161; }
  1038. .bottom-bar .choose-file {
  1039. float: left;
  1040. height: 36px; }
  1041. .bottom-bar .send-message {
  1042. display: block;
  1043. width: calc(100% - 36px);
  1044. max-height: 100px;
  1045. padding: 10px;
  1046. border: 0;
  1047. outline: 0;
  1048. z-index: 5;
  1049. resize: none;
  1050. font-size: 1em;
  1051. font-family: inherit; }
  1052. .toast {
  1053. position: absolute;
  1054. bottom: 0;
  1055. margin: 0 2em 3em;
  1056. padding: 0.5em 1.5em;
  1057. background: rgba(0, 0, 0, 0.75);
  1058. color: white;
  1059. box-shadow: 0 0 5px 0 black;
  1060. border-radius: 5px;
  1061. font-size: small; }
  1062. .confirmation-dialog .content {
  1063. max-width: 350px;
  1064. margin: 100px auto;
  1065. padding: 1em;
  1066. background: white;
  1067. border-radius: 5px;
  1068. overflow: auto;
  1069. box-shadow: 0px 3px 5px 0px rgba(0, 0, 0, 0.2); }
  1070. .confirmation-dialog .content .message {
  1071. text-align: center; }
  1072. .confirmation-dialog .content .buttons {
  1073. margin-top: 10px; }
  1074. .confirmation-dialog .content .buttons button {
  1075. float: right;
  1076. margin-left: 10px;
  1077. background-color: #f3f3f3;
  1078. border-radius: 5px;
  1079. outline: none;
  1080. padding: 5px 8px;
  1081. border: 1px solid #d9d9d9; }
  1082. .confirmation-dialog .content .buttons button:focus {
  1083. border-color: #8d8d8d; }
  1084. .confirmation-dialog .content .buttons button:hover {
  1085. background-color: #d9d9d9;
  1086. border-color: silver; }
  1087. /*# sourceMappingURL=manifest.css.map */