From ebdb340a5c5393ff33089de97aa0b50a92630f99 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 19 May 2021 17:31:52 +0530 Subject: [PATCH 001/176] Create a basic HTML export tool with support only for text based events --- package.json | 2 + src/components/views/rooms/RoomHeader.js | 12 + src/i18n/strings/en_EN.json | 1 + src/utils/exportUtils.js | 435 +++++++++++++++++++++++ yarn.lock | 39 +- 5 files changed, 488 insertions(+), 1 deletion(-) create mode 100644 src/utils/exportUtils.js diff --git a/package.json b/package.json index f8d94e2d21..9ac4890465 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "highlight.js": "^10.5.0", "html-entities": "^1.4.0", "is-ip": "^3.1.0", + "jszip": "^3.6.0", "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.20", @@ -98,6 +99,7 @@ "resize-observer-polyfill": "^1.5.1", "rfc4648": "^1.4.0", "sanitize-html": "^2.3.2", + "streamsaver": "^2.0.5", "tar-js": "^0.3.0", "text-encoding-utf-8": "^1.0.2", "url": "^0.11.0", diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 6d3b50c10d..d6b4822cc2 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -32,6 +32,8 @@ import RoomTopic from "../elements/RoomTopic"; import RoomName from "../elements/RoomName"; import {PlaceCallType} from "../../../CallHandler"; import {replaceableComponent} from "../../../utils/replaceableComponent"; +import exportConversationalHistory from '../../../utils/exportUtils'; + @replaceableComponent("views.rooms.RoomHeader") export default class RoomHeader extends React.Component { @@ -117,6 +119,10 @@ export default class RoomHeader extends React.Component { return !(currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0); } + _exportConvertionalHistory = async () => { + exportConversationalHistory(this.props.room); + } + render() { let searchStatus = null; let cancelButton = null; @@ -244,8 +250,14 @@ export default class RoomHeader extends React.Component { title={_t("Video call")} />; } + const exportButton = <AccessibleTooltipButton + className="mx_RoomHeader_button mx_ImageView_button_download" + onClick={this._exportConvertionalHistory} + title={_t("Export conversation")} />; + const rightRow = <div className="mx_RoomHeader_buttons"> + { exportButton } { videoCallButton } { voiceCallButton } { pinnedEventsButton } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d1fe791319..90f3e2d89c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1545,6 +1545,7 @@ "Search": "Search", "Voice call": "Voice call", "Video call": "Video call", + "Export conversation": "Export conversation", "Start a Conversation": "Start a Conversation", "Open dial pad": "Open dial pad", "Invites": "Invites", diff --git a/src/utils/exportUtils.js b/src/utils/exportUtils.js new file mode 100644 index 0000000000..f784c48f8f --- /dev/null +++ b/src/utils/exportUtils.js @@ -0,0 +1,435 @@ +import { MatrixClientPeg } from "../MatrixClientPeg"; +import { arrayFastClone } from "./arrays"; +import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; +import JSZip from "jszip"; +import { textForEvent } from "../TextForEvent"; +import streamSaver from "streamsaver"; + +const wrapHTML = (content, room) => (` + <!DOCTYPE html> + <html> + <head> + <meta charset="utf-8" /> + <title>Exported Data</title> + <meta content="width=device-width, initial-scale=1.0" name="viewport" /> + <link href="css/style.css" rel="stylesheet" /> + <script src="js/script.js" type="text/javascript"></script> + </head> + <body> + <div class="page_wrap"> + <div class="page_header"> + <div class="content"> + <div class="text bold">${room.name}</div> + </div> + </div> + <div class="page_body chat_page"> + <div class="history"> + ${content} + </div> + </div> + </div> + </body> + </html> +`); + + +const getTimelineConversation = (room) => { + if (!room) return; + + const cli = MatrixClientPeg.get(); + + const timelineSet = room.getUnfilteredTimelineSet(); + + const timelineWindow = new TimelineWindow( + cli, timelineSet, + {windowLimit: Number.MAX_VALUE}); + + timelineWindow.load(null, 20); + + const events = timelineWindow.getEvents(); + + // Clone and reverse the events so that we preserve the order + arrayFastClone(events) + .reverse() + .forEach(event => { + cli.decryptEventIfNeeded(event); + }); + + if (!timelineWindow.canPaginate('f')) { + events.push(...timelineSet.getPendingEvents()); + } + + return events; +}; + + +const css = ` +body { + margin: 0; + font: 12px/18px 'Inter', 'Open Sans',"Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif; +} + +strong { + font-weight: 700; +} + +code, kbd, pre, samp { + font-family: Menlo,Monaco,Consolas,"Courier New",monospace; +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} + +pre { + display: block; + margin: 0; + line-height: 1.42857143; + word-break: break-all; + word-wrap: break-word; + color: #333; + background-color: #f5f5f5; + border-radius: 4px; + overflow: auto; + padding: 3px; + border: 1px solid #eee; + max-height: none; + font-size: inherit; +} + +.clearfix:after { + content: " "; + visibility: hidden; + display: block; + height: 0; + clear: both; +} + +.pull_left { + float: left; +} + +.pull_right { + float: right; +} + +.page_wrap { + background-color: #ffffff; + color: #000000; +} + +.page_wrap a { + color: #168acd; + text-decoration: none; +} + +.page_wrap a:hover { + text-decoration: underline; +} + +.page_header { + position: fixed; + z-index: 10; + background-color: #ffffff; + width: 100%; + border-bottom: 1px solid #e3e6e8; +} + +.page_header .content { + width: 480px; + margin: 0 auto; + border-radius: 0 !important; +} + +.page_header a.content { + background-repeat: no-repeat; + background-position: 24px 21px; + background-size: 24px 24px; +} + +.bold { + color: #212121; + font-weight: 700; +} + +.details { + color: #70777b; +} + +.page_header .content .text { + padding: 24px 24px 22px 24px; + font-size: 22px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: center; +} + +.page_header a.content .text { + padding: 24px 24px 22px 82px; +} + +.page_body { + padding-top: 64px; + width: 480px; + margin: 0 auto; +} + +.userpic { + display: block; + border-radius: 50%; + overflow: hidden; +} + +.userpic .initials { + display: block; + color: #fff; + text-align: center; + text-transform: uppercase; + user-select: none; +} + +a.block_link { + display: block; + text-decoration: none !important; + border-radius: 4px; +} + +a.block_link:hover { + text-decoration: none !important; + background-color: #f5f7f8; +} + +.history { + padding: 16px 0; +} + +.message { + margin: 0 -10px; + transition: background-color 2.0s ease; +} + +div.selected { + background-color: rgba(242,246,250,255); + transition: background-color 0.5s ease; +} + +.service { + padding: 10px 24px; +} + +.service .body { + text-align: center; +} + +.message .userpic .initials { + font-size: 16px; +} + +.default { + padding: 10px; +} + +.default.joined { + margin-top: -10px; +} + +.default .from_name { + color: #3892db; + font-weight: 700; + padding-bottom: 5px; +} + +.default .body { + margin-left: 60px; +} + +.default .text { + word-wrap: break-word; + line-height: 150%; +} + +.default .reply_to, +.default .media_wrap { + padding-bottom: 5px; +} + +.default .media { + margin: 0 -10px; + padding: 5px 10px; +} + +.default .media .fill, +.default .media .thumb { + width: 48px; + height: 48px; + border-radius: 50%; +} + +.default .media .fill { + background-repeat: no-repeat; + background-position: 12px 12px; + background-size: 24px 24px; +} + +.default .media .title, +.default .media_poll .question { + padding-top: 4px; + font-size: 14px; +} + +.default .media .description { + color: #000000; + padding-top: 4px; + font-size: 13px; +} + +.default .media .status { + padding-top: 4px; + font-size: 13px; +} + +.default .photo { + display: block; +} +`; + +const userColors = [ + "#64bf47", + "#4f9cd9", + "#9884e8", + "#e671a5", + "#47bcd1", + "#ff8c44", +]; + +const createDiv = (content, id, ...classNames) => { + return `<div class = "${classNames.join(" ")}" id = "${id}" > + ${content} + </div>`; +}; + + +//Get a color associated with a string. This is to map userId to a specific color +const getUserColor = (userId) => { + return userColors[userId.length % 4]; +}; + +const createBody = (event, joined = false) => { + return ` + <div class="message default clearfix ${joined ? `joined` : ``}" id="message2680"> + ${!joined ? `<div class="pull_left userpic_wrap"> + <div class="userpic" style="width: 42px; height: 42px; background-color: ${getUserColor(event.sender.name)}"> + <div class="initials" style="line-height: 42px">${event.sender.name[0]}</div> + </div> + </div>` : ``} + <div class="body"> + <div class="pull_right date details" title="${new Date(event._localTimestamp)}">${new Date(event._localTimestamp).toLocaleTimeString().slice(0, -3)}</div> + ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> + ${event.sender.name} + </div>`: ``} + <div class="text"> ${event.getContent().body} </div> + </div> + </div> + `; +}; + +const replyAnchor = (eventId) => { + return `<a href = "#${eventId}">this message</a>}`; +}; + +const _isReply = (event) => { + const relatesTo = event.getContent()["m.relates_to"]; + const isReply = !!(relatesTo && relatesTo["m.in_reply_to"]); + return isReply; +}; + + +const dateSeparator = (event, prevEvent) => { + const prevDate = prevEvent ? new Date(prevEvent._localTimestamp) : null; + const currDate = new Date(event._localTimestamp); + if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { + return ` + <div class="message service"> + <div class="body details"> + ${new Date(event._localTimestamp) + .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} + </div> + </div> + `; + } + return ""; +}; + +const createHTML = (events, room) => { + let content = ""; + let prevEvent = null; + for (const event of events) { + content += dateSeparator(event, prevEvent); + if (event.getContent().msgtype === "m.text") { + const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" + && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent); + + const body = createBody(event, shouldBeJoined); + + content += body; + } else { + content += ` + <div class="message service" id="${event.getId()}"> + <div class="body details"> + ${textForEvent(event)} + </div> + </div> + `; + } + prevEvent = event; + } + return wrapHTML(content, room); +}; + + +const exportConversationalHistory = async (room) => { + const res = getTimelineConversation(room); + const html = createHTML(res, room); + const zip = new JSZip(); + zip.file("css/style.css", css); + zip.file("index.html", html); + const filename = `matrix-export-${new Date().toISOString()}.zip`; + + //Generate the zip file asynchronously + + const blob = await zip.generateAsync({ type: "blob" }); + + //Create a writable stream to the directory + const fileStream = streamSaver.createWriteStream(filename, blob.size); + const writer = fileStream.getWriter(); + + // console.log(blob.size); + + // Here we chunk the blob into pieces of 10 MiB + const sliceSize = 10 * 1e6; + for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { + // console.log(fPointer); + const blobPiece = blob.slice(fPointer, fPointer + sliceSize); + const reader = new FileReader(); + + const waiter = new Promise((resolve, reject) => { + reader.onloadend = evt => { + const arrayBufferNew = evt.target.result; + const uint8ArrayNew = new Uint8Array(arrayBufferNew); + // Buffer.from(reader.result) + writer.write(uint8ArrayNew); + resolve(); + }; + reader.readAsArrayBuffer(blobPiece); + }); + await waiter; + } + writer.close(); +}; + +export default exportConversationalHistory; diff --git a/yarn.lock b/yarn.lock index 19c0646d32..438cc94f27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4334,6 +4334,11 @@ ignore@^5.1.4, ignore@^5.1.8: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + immutable@^3.7.4: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" @@ -5442,6 +5447,16 @@ jsprim@^1.2.2: array-includes "^3.1.2" object.assign "^4.1.2" +jszip@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.6.0.tgz#839b72812e3f97819cc13ac4134ffced95dd6af9" + integrity sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + set-immediate-shim "~1.0.1" + katex@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/katex/-/katex-0.12.0.tgz#2fb1c665dbd2b043edcf8a1f5c555f46beaa0cb9" @@ -5509,6 +5524,13 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6256,6 +6278,11 @@ pako@^2.0.3: resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.3.tgz#cdf475e31b678565251406de9e759196a0ea7a43" integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6862,7 +6889,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.2: +readable-stream@^2.0.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7301,6 +7328,11 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-immediate-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -7556,6 +7588,11 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +streamsaver@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/streamsaver/-/streamsaver-2.0.5.tgz#3212f0e908fcece5b3a65591094475cf87850d00" + integrity sha512-KIWtBvi8A6FiFZGNSyuIZRZM6C8AvnWTiCx/TYa7so420vC5sQwcBKkdqInuGWoWMfeWy/P+/cRqMtWVf4RW9w== + string-length@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" From 16c55ba92f84334afb1c37ef33e723fff89e5fa3 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 21 May 2021 10:44:38 +0530 Subject: [PATCH 002/176] Use ts instead of age --- src/utils/exportUtils.js | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/utils/exportUtils.js b/src/utils/exportUtils.js index f784c48f8f..1954d64467 100644 --- a/src/utils/exportUtils.js +++ b/src/utils/exportUtils.js @@ -58,7 +58,7 @@ const getTimelineConversation = (room) => { if (!timelineWindow.canPaginate('f')) { events.push(...timelineSet.getPendingEvents()); } - + console.log(events); return events; }; @@ -307,19 +307,13 @@ const userColors = [ "#ff8c44", ]; -const createDiv = (content, id, ...classNames) => { - return `<div class = "${classNames.join(" ")}" id = "${id}" > - ${content} - </div>`; -}; - //Get a color associated with a string. This is to map userId to a specific color const getUserColor = (userId) => { return userColors[userId.length % 4]; }; -const createBody = (event, joined = false) => { +const createMessageBody = (event, joined = false, isReply = false, replyId = null) => { return ` <div class="message default clearfix ${joined ? `joined` : ``}" id="message2680"> ${!joined ? `<div class="pull_left userpic_wrap"> @@ -328,35 +322,35 @@ const createBody = (event, joined = false) => { </div> </div>` : ``} <div class="body"> - <div class="pull_right date details" title="${new Date(event._localTimestamp)}">${new Date(event._localTimestamp).toLocaleTimeString().slice(0, -3)}</div> + <div class="pull_right date details" title="${new Date(event.getTs())}">${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)}</div> ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> ${event.sender.name} </div>`: ``} + ${isReply ? + `<div class="reply_to details"> + In reply to <a href="#${replyId}">this message</a> + </div>`: ``} <div class="text"> ${event.getContent().body} </div> </div> </div> `; }; -const replyAnchor = (eventId) => { - return `<a href = "#${eventId}">this message</a>}`; -}; - -const _isReply = (event) => { +const replyId = (event) => { const relatesTo = event.getContent()["m.relates_to"]; - const isReply = !!(relatesTo && relatesTo["m.in_reply_to"]); - return isReply; + const replyId = relatesTo ? relatesTo["m.in_reply_to"].event_id : null; + return replyId; }; const dateSeparator = (event, prevEvent) => { - const prevDate = prevEvent ? new Date(prevEvent._localTimestamp) : null; - const currDate = new Date(event._localTimestamp); + const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; + const currDate = new Date(event.getTs()); if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { return ` <div class="message service"> <div class="body details"> - ${new Date(event._localTimestamp) + ${new Date(event.getTs()) .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} </div> </div> @@ -370,11 +364,11 @@ const createHTML = (events, room) => { let prevEvent = null; for (const event of events) { content += dateSeparator(event, prevEvent); - if (event.getContent().msgtype === "m.text") { + if (event.getType() === "m.room.message") { const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent); - const body = createBody(event, shouldBeJoined); + const body = createMessageBody(event, shouldBeJoined, !!replyId(event), replyId(event)); content += body; } else { @@ -394,8 +388,8 @@ const createHTML = (events, room) => { const exportConversationalHistory = async (room) => { const res = getTimelineConversation(room); - const html = createHTML(res, room); const zip = new JSZip(); + const html = createHTML(res, room); zip.file("css/style.css", css); zip.file("index.html", html); const filename = `matrix-export-${new Date().toISOString()}.zip`; From cea60ef26c05b11a20d42afb25878b85eab469b6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 21 May 2021 13:18:39 +0530 Subject: [PATCH 003/176] Handle reply checking for encrypted messages --- src/utils/exportUtils.js | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/utils/exportUtils.js b/src/utils/exportUtils.js index 1954d64467..e357ac6575 100644 --- a/src/utils/exportUtils.js +++ b/src/utils/exportUtils.js @@ -175,7 +175,7 @@ pre { .page_body { padding-top: 64px; - width: 480px; + width: 700px; margin: 0 auto; } @@ -239,7 +239,6 @@ div.selected { } .default .from_name { - color: #3892db; font-weight: 700; padding-bottom: 5px; } @@ -336,10 +335,13 @@ const createMessageBody = (event, joined = false, isReply = false, replyId = nul `; }; -const replyId = (event) => { - const relatesTo = event.getContent()["m.relates_to"]; - const replyId = relatesTo ? relatesTo["m.in_reply_to"].event_id : null; - return replyId; + +const baseEventId = (event) => { + const isEncrypted = event.isEncrypted(); + // If encrypted, in_reply_to lies in event.event.content + const content = isEncrypted ? event.event.content : event.getContent(); + const relatesTo = content["m.relates_to"]; + return relatesTo ? relatesTo["m.in_reply_to"].event_id : null; }; @@ -365,11 +367,10 @@ const createHTML = (events, room) => { for (const event of events) { content += dateSeparator(event, prevEvent); if (event.getType() === "m.room.message") { + const replyTo = baseEventId(event); const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" - && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent); - - const body = createMessageBody(event, shouldBeJoined, !!replyId(event), replyId(event)); - + && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent) && !replyTo; + const body = createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); content += body; } else { content += ` @@ -395,9 +396,7 @@ const exportConversationalHistory = async (room) => { const filename = `matrix-export-${new Date().toISOString()}.zip`; //Generate the zip file asynchronously - const blob = await zip.generateAsync({ type: "blob" }); - //Create a writable stream to the directory const fileStream = streamSaver.createWriteStream(filename, blob.size); const writer = fileStream.getWriter(); From 2676e61d698db1ac490f8c374bf3fca221308e7b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 21 May 2021 20:00:01 +0530 Subject: [PATCH 004/176] Embed avatar and chat images into HTML --- src/utils/exportUtils.js | 198 +++++++++++++++++++++++++++------------ 1 file changed, 137 insertions(+), 61 deletions(-) diff --git a/src/utils/exportUtils.js b/src/utils/exportUtils.js index e357ac6575..433600eac4 100644 --- a/src/utils/exportUtils.js +++ b/src/utils/exportUtils.js @@ -4,6 +4,8 @@ import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; import JSZip from "jszip"; import { textForEvent } from "../TextForEvent"; import streamSaver from "streamsaver"; +import { decryptFile } from "./DecryptFile"; +import { mediaFromContent, mediaFromMxc } from "../customisations/Media"; const wrapHTML = (content, room) => (` <!DOCTYPE html> @@ -33,36 +35,6 @@ const wrapHTML = (content, room) => (` `); -const getTimelineConversation = (room) => { - if (!room) return; - - const cli = MatrixClientPeg.get(); - - const timelineSet = room.getUnfilteredTimelineSet(); - - const timelineWindow = new TimelineWindow( - cli, timelineSet, - {windowLimit: Number.MAX_VALUE}); - - timelineWindow.load(null, 20); - - const events = timelineWindow.getEvents(); - - // Clone and reverse the events so that we preserve the order - arrayFastClone(events) - .reverse() - .forEach(event => { - cli.decryptEventIfNeeded(event); - }); - - if (!timelineWindow.canPaginate('f')) { - events.push(...timelineSet.getPendingEvents()); - } - console.log(events); - return events; -}; - - const css = ` body { margin: 0; @@ -297,6 +269,37 @@ div.selected { } `; + +const getTimelineConversation = (room) => { + if (!room) return; + + const cli = MatrixClientPeg.get(); + + const timelineSet = room.getUnfilteredTimelineSet(); + + const timelineWindow = new TimelineWindow( + cli, timelineSet, + {windowLimit: Number.MAX_VALUE}); + + timelineWindow.load(null, 20); + + const events = timelineWindow.getEvents(); + + // Clone and reverse the events so that we preserve the order + arrayFastClone(events) + .reverse() + .forEach(event => { + cli.decryptEventIfNeeded(event); + }); + + if (!timelineWindow.canPaginate('f')) { + events.push(...timelineSet.getPendingEvents()); + } + console.log(events); + return events; +}; + + const userColors = [ "#64bf47", "#4f9cd9", @@ -307,41 +310,50 @@ const userColors = [ ]; -//Get a color associated with a string. This is to map userId to a specific color +//Get a color associated with string length. This is to map userId to a specific color const getUserColor = (userId) => { return userColors[userId.length % 4]; }; -const createMessageBody = (event, joined = false, isReply = false, replyId = null) => { - return ` - <div class="message default clearfix ${joined ? `joined` : ``}" id="message2680"> - ${!joined ? `<div class="pull_left userpic_wrap"> - <div class="userpic" style="width: 42px; height: 42px; background-color: ${getUserColor(event.sender.name)}"> - <div class="initials" style="line-height: 42px">${event.sender.name[0]}</div> - </div> - </div>` : ``} - <div class="body"> - <div class="pull_right date details" title="${new Date(event.getTs())}">${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)}</div> - ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> - ${event.sender.name} - </div>`: ``} - ${isReply ? - `<div class="reply_to details"> - In reply to <a href="#${replyId}">this message</a> - </div>`: ``} - <div class="text"> ${event.getContent().body} </div> - </div> - </div> - `; + +const getUserPic = async (event) => { + const member = event.sender; + if (!member.getMxcAvatarUrl()) { + return ` + <div class="pull_left userpic_wrap"> + <div class="userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}"> + <div class="initials" style="line-height: 42px;" src="users/${member.userId}">${event.sender.name[0]}</div> + </div> + </div> + `; + } else { + const imageUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(42, 42, "crop"); + + if (!avatars.has(member.userId)) { + avatars.set(member.userId, true); + const image = await fetch(imageUrl); + const blob = await image.blob(); + zip.file(`users/${member.userId}`, blob); + } + + return ` + <div class="pull_left userpic_wrap"> + <div class="userpic" style="width: 42px; height: 42px;"> + <img class="initials" style="width: 42px;height: 42px;line-height:42px;" src="users/${member.userId}"/> + </div> + </div> + `; + } }; - +//Gets the event_id of an event to which an event is replied const baseEventId = (event) => { const isEncrypted = event.isEncrypted(); + // If encrypted, in_reply_to lies in event.event.content const content = isEncrypted ? event.event.content : event.getContent(); const relatesTo = content["m.relates_to"]; - return relatesTo ? relatesTo["m.in_reply_to"].event_id : null; + return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; }; @@ -361,16 +373,75 @@ const dateSeparator = (event, prevEvent) => { return ""; }; -const createHTML = (events, room) => { +const getImageData = async (event) => { + let blob; + try { + const isEncrypted = event.isEncrypted(); + const content = event.getContent(); + if (isEncrypted) { + blob = await decryptFile(content.file); + } else { + const media = mediaFromContent(event.getContent()); + const image = await fetch(media.srcHttp); + blob = image.blob(); + } + } catch (err) { + console.log("Error decrypting image"); + } + return blob; +}; + + +const createMessageBody = async (event, joined = false, isReply = false, replyId = null) => { + const userPic = await getUserPic(event); + let messageBody = ""; + switch (event.getContent().msgtype) { + case "m.text": + messageBody = `<div class="text"> ${event.getContent().body} </div>`; + break; + case "m.image": { + messageBody = `<a class="photo_wrap clearfix pull_left" href="images/${event.getId()}.png"> + <img class="photo" src="images/${event.getId()}.png" style="width: 260px; height: 156px"> + </a>`; + const blob = await getImageData(event); + zip.file(`images/${event.getId()}.png`, blob); + } + break; + default: + break; + } + + return ` + <div class="message default clearfix ${joined ? `joined` : ``}" id="message2680"> + ${!joined ? userPic : ``} + <div class="body"> + <div class="pull_right date details" title="${new Date(event.getTs())}">${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)}</div> + ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> + ${event.sender.name} + </div>`: ``} + ${isReply ? + `<div class="reply_to details"> + In reply to <a href="#${replyId}">this message</a> + </div>`: ``} + ${messageBody} + </div> + </div> + `; +}; + + +const createHTML = async (events, room) => { let content = ""; let prevEvent = null; for (const event of events) { content += dateSeparator(event, prevEvent); + if (event.getType() === "m.room.message") { const replyTo = baseEventId(event); const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent) && !replyTo; - const body = createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); + + const body = await createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); content += body; } else { content += ` @@ -387,22 +458,27 @@ const createHTML = (events, room) => { }; +const avatars = new Map(); +let zip; const exportConversationalHistory = async (room) => { const res = getTimelineConversation(room); - const zip = new JSZip(); - const html = createHTML(res, room); - zip.file("css/style.css", css); + zip = new JSZip(); + + const html = await createHTML(res, room, avatars); + zip.file("index.html", html); + zip.file("css/style.css", css); + + avatars.clear(); const filename = `matrix-export-${new Date().toISOString()}.zip`; //Generate the zip file asynchronously const blob = await zip.generateAsync({ type: "blob" }); + //Create a writable stream to the directory const fileStream = streamSaver.createWriteStream(filename, blob.size); const writer = fileStream.getWriter(); - // console.log(blob.size); - // Here we chunk the blob into pieces of 10 MiB const sliceSize = 10 * 1e6; for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { From e59f23880bd1c4fa4355ffd54762120fe6bb7c97 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 21 May 2021 20:25:29 +0530 Subject: [PATCH 005/176] Minor UI changes --- src/utils/exportUtils.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/utils/exportUtils.js b/src/utils/exportUtils.js index 433600eac4..0ab65df911 100644 --- a/src/utils/exportUtils.js +++ b/src/utils/exportUtils.js @@ -281,7 +281,7 @@ const getTimelineConversation = (room) => { cli, timelineSet, {windowLimit: Number.MAX_VALUE}); - timelineWindow.load(null, 20); + timelineWindow.load(null, 30); const events = timelineWindow.getEvents(); @@ -347,7 +347,7 @@ const getUserPic = async (event) => { }; //Gets the event_id of an event to which an event is replied -const baseEventId = (event) => { +const getBaseEventId = (event) => { const isEncrypted = event.isEncrypted(); // If encrypted, in_reply_to lies in event.event.content @@ -401,7 +401,7 @@ const createMessageBody = async (event, joined = false, isReply = false, replyId break; case "m.image": { messageBody = `<a class="photo_wrap clearfix pull_left" href="images/${event.getId()}.png"> - <img class="photo" src="images/${event.getId()}.png" style="width: 260px; height: 156px"> + <img class="photo" src="images/${event.getId()}.png" style="max-width: 600px; max-height: 500px;"> </a>`; const blob = await getImageData(event); zip.file(`images/${event.getId()}.png`, blob); @@ -437,20 +437,21 @@ const createHTML = async (events, room) => { content += dateSeparator(event, prevEvent); if (event.getType() === "m.room.message") { - const replyTo = baseEventId(event); + const replyTo = getBaseEventId(event); const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent) && !replyTo; const body = await createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); content += body; } else { - content += ` + const eventText = textForEvent(event); + content += eventText ? ` <div class="message service" id="${event.getId()}"> <div class="body details"> ${textForEvent(event)} </div> </div> - `; + ` : ""; } prevEvent = event; } From dfb7aa4320834dfc58016a07811f1866e4ebd44b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 22 May 2021 11:32:55 +0530 Subject: [PATCH 006/176] Refactor, move HTML export to a new file and switch to TypeScript --- src/components/views/rooms/RoomHeader.js | 5 +- .../HtmlExport.ts} | 106 +++++++----------- src/utils/exportUtils/exportUtils.js | 56 +++++++++ 3 files changed, 98 insertions(+), 69 deletions(-) rename src/utils/{exportUtils.js => exportUtils/HtmlExport.ts} (80%) create mode 100644 src/utils/exportUtils/exportUtils.js diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index d6b4822cc2..ed2ca07ff5 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -32,7 +32,8 @@ import RoomTopic from "../elements/RoomTopic"; import RoomName from "../elements/RoomName"; import {PlaceCallType} from "../../../CallHandler"; import {replaceableComponent} from "../../../utils/replaceableComponent"; -import exportConversationalHistory from '../../../utils/exportUtils'; +import exportConversationalHistory from '../../../utils/exportUtils/exportUtils'; +import { exportFormats, exportOptions } from '../../../utils/exportUtils/exportUtils'; @replaceableComponent("views.rooms.RoomHeader") @@ -120,7 +121,7 @@ export default class RoomHeader extends React.Component { } _exportConvertionalHistory = async () => { - exportConversationalHistory(this.props.room); + exportConversationalHistory(this.props.room, exportFormats.HTML, exportOptions.TIMELINE); } render() { diff --git a/src/utils/exportUtils.js b/src/utils/exportUtils/HtmlExport.ts similarity index 80% rename from src/utils/exportUtils.js rename to src/utils/exportUtils/HtmlExport.ts index 0ab65df911..1b0d59ab6b 100644 --- a/src/utils/exportUtils.js +++ b/src/utils/exportUtils/HtmlExport.ts @@ -1,13 +1,13 @@ -import { MatrixClientPeg } from "../MatrixClientPeg"; -import { arrayFastClone } from "./arrays"; -import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; -import JSZip from "jszip"; -import { textForEvent } from "../TextForEvent"; -import streamSaver from "streamsaver"; -import { decryptFile } from "./DecryptFile"; -import { mediaFromContent, mediaFromMxc } from "../customisations/Media"; -const wrapHTML = (content, room) => (` +import streamSaver from "streamsaver"; +import JSZip from "jszip"; +import { decryptFile } from "../DecryptFile"; +import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; +import { textForEvent } from "../../TextForEvent"; +import Room from 'matrix-js-sdk/src/models/room'; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; + +const wrapHTML = (content: string, room: Room) => (` <!DOCTYPE html> <html> <head> @@ -270,59 +270,27 @@ div.selected { `; -const getTimelineConversation = (room) => { - if (!room) return; - - const cli = MatrixClientPeg.get(); - - const timelineSet = room.getUnfilteredTimelineSet(); - - const timelineWindow = new TimelineWindow( - cli, timelineSet, - {windowLimit: Number.MAX_VALUE}); - - timelineWindow.load(null, 30); - - const events = timelineWindow.getEvents(); - - // Clone and reverse the events so that we preserve the order - arrayFastClone(events) - .reverse() - .forEach(event => { - cli.decryptEventIfNeeded(event); - }); - - if (!timelineWindow.canPaginate('f')) { - events.push(...timelineSet.getPendingEvents()); - } - console.log(events); - return events; -}; - - const userColors = [ "#64bf47", "#4f9cd9", "#9884e8", - "#e671a5", - "#47bcd1", - "#ff8c44", ]; - //Get a color associated with string length. This is to map userId to a specific color -const getUserColor = (userId) => { +const getUserColor = (userId: string) => { return userColors[userId.length % 4]; }; -const getUserPic = async (event) => { +const getUserPic = async (event: MatrixEvent) => { const member = event.sender; if (!member.getMxcAvatarUrl()) { return ` <div class="pull_left userpic_wrap"> <div class="userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}"> - <div class="initials" style="line-height: 42px;" src="users/${member.userId}">${event.sender.name[0]}</div> + <div class="initials" style="line-height: 42px;" src="users/${member.userId}"> + ${event.sender.name[0]} + </div>; </div> </div> `; @@ -347,7 +315,7 @@ const getUserPic = async (event) => { }; //Gets the event_id of an event to which an event is replied -const getBaseEventId = (event) => { +const getBaseEventId = (event: MatrixEvent) => { const isEncrypted = event.isEncrypted(); // If encrypted, in_reply_to lies in event.event.content @@ -357,7 +325,7 @@ const getBaseEventId = (event) => { }; -const dateSeparator = (event, prevEvent) => { +const dateSeparator = (event: MatrixEvent, prevEvent: MatrixEvent) => { const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; const currDate = new Date(event.getTs()); if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { @@ -373,8 +341,8 @@ const dateSeparator = (event, prevEvent) => { return ""; }; -const getImageData = async (event) => { - let blob; +const getImageData = async (event: MatrixEvent) => { + let blob: Blob; try { const isEncrypted = event.isEncrypted(); const content = event.getContent(); @@ -383,7 +351,7 @@ const getImageData = async (event) => { } else { const media = mediaFromContent(event.getContent()); const image = await fetch(media.srcHttp); - blob = image.blob(); + blob = await image.blob(); } } catch (err) { console.log("Error decrypting image"); @@ -392,7 +360,7 @@ const getImageData = async (event) => { }; -const createMessageBody = async (event, joined = false, isReply = false, replyId = null) => { +const createMessageBody = async (event: MatrixEvent, joined = false, isReply = false, replyId = null) => { const userPic = await getUserPic(event); let messageBody = ""; switch (event.getContent().msgtype) { @@ -400,9 +368,10 @@ const createMessageBody = async (event, joined = false, isReply = false, replyId messageBody = `<div class="text"> ${event.getContent().body} </div>`; break; case "m.image": { - messageBody = `<a class="photo_wrap clearfix pull_left" href="images/${event.getId()}.png"> - <img class="photo" src="images/${event.getId()}.png" style="max-width: 600px; max-height: 500px;"> - </a>`; + messageBody = ` + <a class="photo_wrap clearfix pull_left" href="images/${event.getId()}.png"> + <img class="photo" src="images/${event.getId()}.png" style="max-width: 600px; max-height: 500px;"> + </a>`; const blob = await getImageData(event); zip.file(`images/${event.getId()}.png`, blob); } @@ -412,10 +381,12 @@ const createMessageBody = async (event, joined = false, isReply = false, replyId } return ` - <div class="message default clearfix ${joined ? `joined` : ``}" id="message2680"> + <div class="message default clearfix ${joined ? `joined` : ``}" id="${event.getId()}"> ${!joined ? userPic : ``} <div class="body"> - <div class="pull_right date details" title="${new Date(event.getTs())}">${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)}</div> + <div class="pull_right date details" title="${new Date(event.getTs())}"> + ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} + </div>; ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> ${event.sender.name} </div>`: ``} @@ -430,7 +401,7 @@ const createMessageBody = async (event, joined = false, isReply = false, replyId }; -const createHTML = async (events, room) => { +const createHTML = async (events: MatrixEvent[], room: Room) => { let content = ""; let prevEvent = null; for (const event of events) { @@ -458,19 +429,19 @@ const createHTML = async (events, room) => { return wrapHTML(content, room); }; - const avatars = new Map(); let zip; -const exportConversationalHistory = async (room) => { - const res = getTimelineConversation(room); + +const exportAsHTML = async (res: MatrixEvent[], room: Room) => { zip = new JSZip(); - const html = await createHTML(res, room, avatars); + const html = await createHTML(res, room); zip.file("index.html", html); zip.file("css/style.css", css); avatars.clear(); + const filename = `matrix-export-${new Date().toISOString()}.zip`; //Generate the zip file asynchronously @@ -480,16 +451,17 @@ const exportConversationalHistory = async (room) => { const fileStream = streamSaver.createWriteStream(filename, blob.size); const writer = fileStream.getWriter(); - // Here we chunk the blob into pieces of 10 MiB + // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. + // This can be used to keep track of the progress const sliceSize = 10 * 1e6; for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { // console.log(fPointer); const blobPiece = blob.slice(fPointer, fPointer + sliceSize); const reader = new FileReader(); - const waiter = new Promise((resolve, reject) => { + const waiter = new Promise<void>((resolve, reject) => { reader.onloadend = evt => { - const arrayBufferNew = evt.target.result; + const arrayBufferNew: any = evt.target.result; const uint8ArrayNew = new Uint8Array(arrayBufferNew); // Buffer.from(reader.result) writer.write(uint8ArrayNew); @@ -500,6 +472,6 @@ const exportConversationalHistory = async (room) => { await waiter; } writer.close(); -}; +} -export default exportConversationalHistory; +export default exportAsHTML; diff --git a/src/utils/exportUtils/exportUtils.js b/src/utils/exportUtils/exportUtils.js new file mode 100644 index 0000000000..38abe62d74 --- /dev/null +++ b/src/utils/exportUtils/exportUtils.js @@ -0,0 +1,56 @@ +import { MatrixClientPeg } from "../../MatrixClientPeg"; +import { arrayFastClone } from "../arrays"; +import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; +import exportAsHTML from "./HtmlExport"; + +export const exportFormats = Object.freeze({ + "HTML": "HTML", + "JSON": "JSON", + "LOGS": "LOGS", +}); + +export const exportOptions = Object.freeze({ + "TIMELINE": "TIMELINE", +}); + +const getTimelineConversation = (room) => { + if (!room) return; + + const cli = MatrixClientPeg.get(); + + const timelineSet = room.getUnfilteredTimelineSet(); + + const timelineWindow = new TimelineWindow( + cli, timelineSet, + {windowLimit: Number.MAX_VALUE}); + + timelineWindow.load(null, 20); + + const events = timelineWindow.getEvents(); + + // Clone and reverse the events so that we preserve the order + arrayFastClone(events) + .reverse() + .forEach(event => { + cli.decryptEventIfNeeded(event); + }); + + console.log(events); + return events; +}; + + +const exportConversationalHistory = async (room, format, options) => { + const res = getTimelineConversation(room); + switch (format) { + case exportFormats.HTML: + await exportAsHTML(res, room); + break; + case exportFormats.JSON: + break; + case exportFormats.LOGS: + break; + } +}; + +export default exportConversationalHistory; From 0bf65da70f11921ccd83fda27efac1ce86d8662b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 22 May 2021 11:38:32 +0530 Subject: [PATCH 007/176] Remove unnecessary semicolons --- src/utils/exportUtils/HtmlExport.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 1b0d59ab6b..6ca7f8057b 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -290,7 +290,7 @@ const getUserPic = async (event: MatrixEvent) => { <div class="userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}"> <div class="initials" style="line-height: 42px;" src="users/${member.userId}"> ${event.sender.name[0]} - </div>; + </div> </div> </div> `; @@ -386,7 +386,7 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f <div class="body"> <div class="pull_right date details" title="${new Date(event.getTs())}"> ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} - </div>; + </div> ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> ${event.sender.name} </div>`: ``} From a47117e3b025f1a44f4538be31a7ededd5aca395 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 22 May 2021 11:55:57 +0530 Subject: [PATCH 008/176] Do not process edit events as they are already considered --- src/utils/exportUtils/HtmlExport.ts | 33 +++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 6ca7f8057b..97e97fdc1e 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -324,6 +324,10 @@ const getBaseEventId = (event: MatrixEvent) => { return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; }; +const isEdit = (event: MatrixEvent) => { + if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; + return false; +} const dateSeparator = (event: MatrixEvent, prevEvent: MatrixEvent) => { const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; @@ -383,20 +387,21 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f return ` <div class="message default clearfix ${joined ? `joined` : ``}" id="${event.getId()}"> ${!joined ? userPic : ``} - <div class="body"> - <div class="pull_right date details" title="${new Date(event.getTs())}"> - ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} - </div> - ${!joined ? `<div class="from_name" style="color:${getUserColor(event.sender.name)}"> - ${event.sender.name} - </div>`: ``} + <div class="body"> + <div class="pull_right date details" title="${new Date(event.getTs())}"> + ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} + </div> + ${!joined ? ` + <div class="from_name" style="color:${getUserColor(event.sender.name)}"> + ${event.sender.name} + </div>`: ``} ${isReply ? - `<div class="reply_to details"> - In reply to <a href="#${replyId}">this message</a> - </div>`: ``} + ` <div class="reply_to details"> + In reply to <a href="#${replyId}">this message</a> + </div>`: ``} ${messageBody} - </div> - </div> + </div> + </div> `; }; @@ -405,6 +410,8 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { let content = ""; let prevEvent = null; for (const event of events) { + // As the getContent of the edited event fetches the latest edit, there is no need to process edit events + if (isEdit(event)) continue; content += dateSeparator(event, prevEvent); if (event.getType() === "m.room.message") { @@ -430,7 +437,7 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { }; const avatars = new Map(); -let zip; +let zip: any; const exportAsHTML = async (res: MatrixEvent[], room: Room) => { zip = new JSZip(); From bb81515cdd2131030dbe8d72ad45eaf4e0f9047e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 22 May 2021 12:35:13 +0530 Subject: [PATCH 009/176] Use matrix style class names, modify CSS and some small changes --- src/components/views/rooms/RoomHeader.js | 2 +- src/utils/exportUtils/HtmlExport.ts | 196 ++++++++++------------- 2 files changed, 85 insertions(+), 113 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index ed2ca07ff5..717a5cecb7 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -121,7 +121,7 @@ export default class RoomHeader extends React.Component { } _exportConvertionalHistory = async () => { - exportConversationalHistory(this.props.room, exportFormats.HTML, exportOptions.TIMELINE); + await exportConversationalHistory(this.props.room, exportFormats.HTML, exportOptions.TIMELINE); } render() { diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 97e97fdc1e..d234d22662 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -10,27 +10,26 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; const wrapHTML = (content: string, room: Room) => (` <!DOCTYPE html> <html> - <head> - <meta charset="utf-8" /> - <title>Exported Data</title> - <meta content="width=device-width, initial-scale=1.0" name="viewport" /> - <link href="css/style.css" rel="stylesheet" /> - <script src="js/script.js" type="text/javascript"></script> - </head> - <body> - <div class="page_wrap"> - <div class="page_header"> - <div class="content"> - <div class="text bold">${room.name}</div> + <head> + <meta charset="utf-8" /> + <title>Exported Data</title> + <meta content="width=device-width, initial-scale=1.0" name="viewport" /> + <link href="css/style.css" rel="stylesheet" /> + </head> + <body> + <div class="mx_page_wrap"> + <div class="mx_page_header"> + <div class="mx_content"> + <div class="mx_text mx_bold">${room.name}</div> + </div> + </div> + <div class="mx_page_body mx_chat_page"> + <div class="mx_history"> + ${content} + </div> + </div> </div> - </div> - <div class="page_body chat_page"> - <div class="history"> - ${content} - </div> - </div> - </div> - </body> + </body> </html> `); @@ -41,39 +40,7 @@ body { font: 12px/18px 'Inter', 'Open Sans',"Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif; } -strong { - font-weight: 700; -} - -code, kbd, pre, samp { - font-family: Menlo,Monaco,Consolas,"Courier New",monospace; -} - -code { - padding: 2px 4px; - font-size: 90%; - color: #c7254e; - background-color: #f9f2f4; - border-radius: 4px; -} - -pre { - display: block; - margin: 0; - line-height: 1.42857143; - word-break: break-all; - word-wrap: break-word; - color: #333; - background-color: #f5f5f5; - border-radius: 4px; - overflow: auto; - padding: 3px; - border: 1px solid #eee; - max-height: none; - font-size: inherit; -} - -.clearfix:after { +.mx_clearfix:after { content: " "; visibility: hidden; display: block; @@ -81,29 +48,29 @@ pre { clear: both; } -.pull_left { +.mx_pull_left { float: left; } -.pull_right { +.mx_pull_right { float: right; } -.page_wrap { +.mx_page_wrap { background-color: #ffffff; color: #000000; } -.page_wrap a { +.mx_page_wrap a { color: #168acd; text-decoration: none; } -.page_wrap a:hover { +.mx_page_wrap a:hover { text-decoration: underline; } -.page_header { +.mx_page_header { position: fixed; z-index: 10; background-color: #ffffff; @@ -111,28 +78,28 @@ pre { border-bottom: 1px solid #e3e6e8; } -.page_header .content { +.mx_page_header .mx_content { width: 480px; margin: 0 auto; border-radius: 0 !important; } -.page_header a.content { +.mx_page_header a.mx_content { background-repeat: no-repeat; background-position: 24px 21px; background-size: 24px 24px; } -.bold { +.mx_bold { color: #212121; font-weight: 700; } -.details { +.mx_details { color: #70777b; } -.page_header .content .text { +.mx_page_header .mx_content .mx_text { padding: 24px 24px 22px 24px; font-size: 22px; overflow: hidden; @@ -141,23 +108,23 @@ pre { text-align: center; } -.page_header a.content .text { +.mx_page_header a.mx_content .mx_text { padding: 24px 24px 22px 82px; } -.page_body { +.mx_page_body { padding-top: 64px; width: 700px; margin: 0 auto; } -.userpic { +.mx_userpic { display: block; border-radius: 50%; overflow: hidden; } -.userpic .initials { +.mx_userpic .mx_initials { display: block; color: #fff; text-align: center; @@ -165,106 +132,105 @@ pre { user-select: none; } -a.block_link { +a.mx_block_link { display: block; text-decoration: none !important; border-radius: 4px; } -a.block_link:hover { +a.mx_block_link:hover { text-decoration: none !important; background-color: #f5f7f8; } -.history { +.mx_history { padding: 16px 0; } -.message { +.mx_message { margin: 0 -10px; transition: background-color 2.0s ease; } -div.selected { +div.mx_selected { background-color: rgba(242,246,250,255); transition: background-color 0.5s ease; } -.service { +.mx_service { padding: 10px 24px; } -.service .body { +.mx_service .mx_body { text-align: center; } -.message .userpic .initials { +.mx_message .mx_userpic .mx_initials { font-size: 16px; } -.default { +.mx_default { padding: 10px; } -.default.joined { +.mx_default.mx_joined { margin-top: -10px; } -.default .from_name { +.mx_default .mx_from_name { font-weight: 700; padding-bottom: 5px; } -.default .body { +.mx_default .mx_body { margin-left: 60px; } -.default .text { +.mx_default .mx_text { word-wrap: break-word; line-height: 150%; } -.default .reply_to, -.default .media_wrap { +.mx_default .mx_reply_to, +.mx_default .mx_media_wrap { padding-bottom: 5px; } -.default .media { +.mx_default .mx_media { margin: 0 -10px; padding: 5px 10px; } -.default .media .fill, -.default .media .thumb { +.mx_default .mx_media .mx_fill, +.mx_default .mx_media .mx_thumb { width: 48px; height: 48px; border-radius: 50%; } -.default .media .fill { +.mx_default .mx_media .mx_fill { background-repeat: no-repeat; background-position: 12px 12px; background-size: 24px 24px; } -.default .media .title, -.default .media_poll .question { +.mx_default .mx_media .mx_title { padding-top: 4px; font-size: 14px; } -.default .media .description { +.mx_default .mx_media .mx_description { color: #000000; padding-top: 4px; font-size: 13px; } -.default .media .status { +.mx_default .mx_media .mx_status { padding-top: 4px; font-size: 13px; } -.default .photo { +.mx_default .mx_photo { display: block; } `; @@ -286,9 +252,9 @@ const getUserPic = async (event: MatrixEvent) => { const member = event.sender; if (!member.getMxcAvatarUrl()) { return ` - <div class="pull_left userpic_wrap"> - <div class="userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}"> - <div class="initials" style="line-height: 42px;" src="users/${member.userId}"> + <div class="mx_pull_left mx_userpic_wrap"> + <div class="mx_userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}"> + <div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}"> ${event.sender.name[0]} </div> </div> @@ -305,9 +271,13 @@ const getUserPic = async (event: MatrixEvent) => { } return ` - <div class="pull_left userpic_wrap"> - <div class="userpic" style="width: 42px; height: 42px;"> - <img class="initials" style="width: 42px;height: 42px;line-height:42px;" src="users/${member.userId}"/> + <div class="mx_pull_left mx_userpic_wrap"> + <div class="mx_userpic" style="width: 42px; height: 42px;"> + <img + class="mx_initials" + style="width: 42px;height: 42px;line-height:42px;" + src="users/${member.userId}" + /> </div> </div> `; @@ -334,8 +304,8 @@ const dateSeparator = (event: MatrixEvent, prevEvent: MatrixEvent) => { const currDate = new Date(event.getTs()); if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { return ` - <div class="message service"> - <div class="body details"> + <div class="mx_message mx_service"> + <div class="mx_body mx_details"> ${new Date(event.getTs()) .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} </div> @@ -369,12 +339,16 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f let messageBody = ""; switch (event.getContent().msgtype) { case "m.text": - messageBody = `<div class="text"> ${event.getContent().body} </div>`; + messageBody = `<div class="mx_text"> ${event.getContent().body} </div>`; break; case "m.image": { messageBody = ` - <a class="photo_wrap clearfix pull_left" href="images/${event.getId()}.png"> - <img class="photo" src="images/${event.getId()}.png" style="max-width: 600px; max-height: 500px;"> + <a class="mx_photo_wrap mx_clearfix mx_pull_left" href="images/${event.getId()}.png"> + <img + class="mx_photo" + style="max-width: 600px; max-height: 500px;" + src="images/${event.getId()}.png" + /> </a>`; const blob = await getImageData(event); zip.file(`images/${event.getId()}.png`, blob); @@ -385,18 +359,18 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f } return ` - <div class="message default clearfix ${joined ? `joined` : ``}" id="${event.getId()}"> + <div class="mx_message mx_default mx_clearfix ${joined ? `mx_joined` : ``}" id="${event.getId()}"> ${!joined ? userPic : ``} - <div class="body"> - <div class="pull_right date details" title="${new Date(event.getTs())}"> + <div class="mx_body"> + <div class="mx_pull_right mx_date mx_details" title="${new Date(event.getTs())}"> ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} </div> ${!joined ? ` - <div class="from_name" style="color:${getUserColor(event.sender.name)}"> + <div class="mx_from_name" style="color:${getUserColor(event.sender.name)}"> ${event.sender.name} </div>`: ``} ${isReply ? - ` <div class="reply_to details"> + ` <div class="mx_reply_to mx_details"> In reply to <a href="#${replyId}">this message</a> </div>`: ``} ${messageBody} @@ -424,8 +398,8 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { } else { const eventText = textForEvent(event); content += eventText ? ` - <div class="message service" id="${event.getId()}"> - <div class="body details"> + <div class="mx_message mx_service" id="${event.getId()}"> + <div class="mx_body mx_details"> ${textForEvent(event)} </div> </div> @@ -462,7 +436,6 @@ const exportAsHTML = async (res: MatrixEvent[], room: Room) => { // This can be used to keep track of the progress const sliceSize = 10 * 1e6; for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { - // console.log(fPointer); const blobPiece = blob.slice(fPointer, fPointer + sliceSize); const reader = new FileReader(); @@ -470,7 +443,6 @@ const exportAsHTML = async (res: MatrixEvent[], room: Room) => { reader.onloadend = evt => { const arrayBufferNew: any = evt.target.result; const uint8ArrayNew = new Uint8Array(arrayBufferNew); - // Buffer.from(reader.result) writer.write(uint8ArrayNew); resolve(); }; From e3b0d89ae9f119cf4926aa1d4eef5d0ba4973b60 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 22 May 2021 13:33:13 +0530 Subject: [PATCH 010/176] Add some colours --- src/utils/exportUtils/HtmlExport.ts | 5 ++++- src/utils/exportUtils/exportUtils.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index d234d22662..a6398e05fd 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -240,11 +240,14 @@ const userColors = [ "#64bf47", "#4f9cd9", "#9884e8", + "#fb6238", + "#00cdac", + "#ff5eaa", ]; //Get a color associated with string length. This is to map userId to a specific color const getUserColor = (userId: string) => { - return userColors[userId.length % 4]; + return userColors[userId.length % userColors.length]; }; diff --git a/src/utils/exportUtils/exportUtils.js b/src/utils/exportUtils/exportUtils.js index 38abe62d74..c73fd90a5a 100644 --- a/src/utils/exportUtils/exportUtils.js +++ b/src/utils/exportUtils/exportUtils.js @@ -24,7 +24,7 @@ const getTimelineConversation = (room) => { cli, timelineSet, {windowLimit: Number.MAX_VALUE}); - timelineWindow.load(null, 20); + timelineWindow.load(null, 30); const events = timelineWindow.getEvents(); From 3147acec0cca9a6644874164cb8cb72e44d2c951 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 24 May 2021 18:01:09 +0530 Subject: [PATCH 011/176] Switch completely to TypeScript, updated userColors --- package.json | 1 + src/utils/exportUtils/HtmlExport.ts | 28 +++++++++++-------- .../{exportUtils.js => exportUtils.ts} | 22 +++++++-------- yarn.lock | 5 ++++ 4 files changed, 33 insertions(+), 23 deletions(-) rename src/utils/exportUtils/{exportUtils.js => exportUtils.ts} (76%) diff --git a/package.json b/package.json index 9ac4890465..61b2a27acc 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,7 @@ }, "dependencies": { "@babel/runtime": "^7.12.5", + "@types/streamsaver": "^2.0.0", "await-lock": "^2.1.0", "blueimp-canvas-to-blob": "^3.28.0", "browser-encrypt-attachment": "^0.3.0", diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index a6398e05fd..a8df3180b8 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -1,4 +1,3 @@ - import streamSaver from "streamsaver"; import JSZip from "jszip"; import { decryptFile } from "../DecryptFile"; @@ -237,16 +236,18 @@ div.mx_selected { const userColors = [ - "#64bf47", - "#4f9cd9", - "#9884e8", - "#fb6238", - "#00cdac", - "#ff5eaa", + "#368bd6", + "#ac3ba8", + "#03b381", + "#e64f7a", + "#ff812d", + "#2dc2c5", + "#5c56f5", + "#74d12c", ]; //Get a color associated with string length. This is to map userId to a specific color -const getUserColor = (userId: string) => { +const getUserNameColorClass = (userId: string) => { return userColors[userId.length % userColors.length]; }; @@ -256,7 +257,10 @@ const getUserPic = async (event: MatrixEvent) => { if (!member.getMxcAvatarUrl()) { return ` <div class="mx_pull_left mx_userpic_wrap"> - <div class="mx_userpic" style="width: 42px;height: 42px;background-color: ${getUserColor(member.userId)}"> + <div + class="mx_userpic" + style="width: 42px;height: 42px;background-color: ${getUserNameColorClass(member.userId)}" + > <div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}"> ${event.sender.name[0]} </div> @@ -369,7 +373,7 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} </div> ${!joined ? ` - <div class="mx_from_name" style="color:${getUserColor(event.sender.name)}"> + <div class="mx_from_name" style="color:${getUserNameColorClass(event.sender.name)}"> ${event.sender.name} </div>`: ``} ${isReply ? @@ -414,7 +418,7 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { }; const avatars = new Map(); -let zip: any; +let zip: JSZip; const exportAsHTML = async (res: MatrixEvent[], room: Room) => { zip = new JSZip(); @@ -432,7 +436,7 @@ const exportAsHTML = async (res: MatrixEvent[], room: Room) => { const blob = await zip.generateAsync({ type: "blob" }); //Create a writable stream to the directory - const fileStream = streamSaver.createWriteStream(filename, blob.size); + const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); const writer = fileStream.getWriter(); // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. diff --git a/src/utils/exportUtils/exportUtils.js b/src/utils/exportUtils/exportUtils.ts similarity index 76% rename from src/utils/exportUtils/exportUtils.js rename to src/utils/exportUtils/exportUtils.ts index c73fd90a5a..b5356ca1e5 100644 --- a/src/utils/exportUtils/exportUtils.js +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,19 +1,20 @@ import { MatrixClientPeg } from "../../MatrixClientPeg"; import { arrayFastClone } from "../arrays"; import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; +import Room from 'matrix-js-sdk/src/models/room'; import exportAsHTML from "./HtmlExport"; -export const exportFormats = Object.freeze({ - "HTML": "HTML", - "JSON": "JSON", - "LOGS": "LOGS", -}); +export enum exportFormats { + HTML = "HTML", + JSON = "JSON", + LOGS = "LOGS", +} -export const exportOptions = Object.freeze({ - "TIMELINE": "TIMELINE", -}); +export enum exportOptions { + TIMELINE = "TIMELINE", +} -const getTimelineConversation = (room) => { +const getTimelineConversation = (room: Room) => { if (!room) return; const cli = MatrixClientPeg.get(); @@ -35,12 +36,11 @@ const getTimelineConversation = (room) => { cli.decryptEventIfNeeded(event); }); - console.log(events); return events; }; -const exportConversationalHistory = async (room, format, options) => { +const exportConversationalHistory = async (room: Room, format: string, options) => { const res = getTimelineConversation(room); switch (format) { case exportFormats.HTML: diff --git a/yarn.lock b/yarn.lock index 438cc94f27..982b9e607b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1655,6 +1655,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/streamsaver@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/streamsaver/-/streamsaver-2.0.0.tgz#2a6bdec0389f41a74c60091d37e84f8840d27ac9" + integrity sha512-TzUEZk30QmNaS6GAhcOnH/Cl2mO7HCFhQUr6GpzvuoFziFCxmvuyLftHW79agJpZvIrqti9jSiDHMgflUwbejg== + "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" From 0029bf566b26948acc9a75d62943d997adcceaaa Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 24 May 2021 18:04:03 +0530 Subject: [PATCH 012/176] Small correction --- src/utils/exportUtils/HtmlExport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index a8df3180b8..72f163c5f0 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -3,7 +3,7 @@ import JSZip from "jszip"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; import { textForEvent } from "../../TextForEvent"; -import Room from 'matrix-js-sdk/src/models/room'; +import { Room } from 'matrix-js-sdk/src/models/room'; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; const wrapHTML = (content: string, room: Room) => (` From e6c4ab3993b9ed4e57d6469d4f787d8666543de1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 24 May 2021 19:17:07 +0530 Subject: [PATCH 013/176] Use classes instead of loosely defined functions, use prebuilt function for color binding --- src/utils/exportUtils/HtmlExport.ts | 265 ++++++++++++++++----------- src/utils/exportUtils/exportUtils.ts | 4 +- 2 files changed, 163 insertions(+), 106 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 72f163c5f0..8dbf14f924 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -5,32 +5,7 @@ import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; import { textForEvent } from "../../TextForEvent"; import { Room } from 'matrix-js-sdk/src/models/room'; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; - -const wrapHTML = (content: string, room: Room) => (` - <!DOCTYPE html> - <html> - <head> - <meta charset="utf-8" /> - <title>Exported Data</title> - <meta content="width=device-width, initial-scale=1.0" name="viewport" /> - <link href="css/style.css" rel="stylesheet" /> - </head> - <body> - <div class="mx_page_wrap"> - <div class="mx_page_header"> - <div class="mx_content"> - <div class="mx_text mx_bold">${room.name}</div> - </div> - </div> - <div class="mx_page_body mx_chat_page"> - <div class="mx_history"> - ${content} - </div> - </div> - </div> - </body> - </html> -`); +import { getUserNameColorClass } from "../FormattingUtils"; const css = ` @@ -232,34 +207,128 @@ div.mx_selected { .mx_default .mx_photo { display: block; } + +.mx_from_name.mx_Username_color1{ + color: #368bd6; +} + +.mx_initials_wrap.mx_Username_color1{ + background-color: #368bd6; +} + +.mx_from_name.mx_Username_color2{ + color: #ac3ba8; +} + +.mx_initials_wrap.mx_Username_color2{ + background-color: #ac3ba8; +} + +.mx_from_name.mx_Username_color3{ + color: #03b381; +} + +.mx_initials_wrap.mx_Username_color3{ + background-color: #03b381; +} + +.mx_from_name.mx_Username_color4{ + color: #e64f7a; +} + +.mx_initials_wrap.mx_Username_color4{ + background-color: #e64f7a; +} + +.mx_from_name.mx_Username_color5{ + color: #ff812d; +} + +.mx_initials_wrap.mx_Username_color5{ + background-color: #ff812d; +} + +.mx_from_name.mx_Username_color6{ + color: #2dc2c5; +} + +.mx_initials_wrap.mx_Username_color6{ + background-color: #2dc2c5; +} + +.mx_from_name.mx_Username_color7{ + color: #5c56f5; +} + +.mx_initials_wrap.mx_Username_color7{ + background-color: #5c56f5; +} + +.mx_from_name.mx_Username_color8{ + color: #74d12c; +} + +.mx_initials_wrap.mx_Username_color8{ + background-color: #74d12c; +} `; -const userColors = [ - "#368bd6", - "#ac3ba8", - "#03b381", - "#e64f7a", - "#ff812d", - "#2dc2c5", - "#5c56f5", - "#74d12c", -]; +export default class HTMLExporter { +protected zip: JSZip; +protected res: MatrixEvent[]; +protected room: Room; +protected avatars: Map<string, boolean>; -//Get a color associated with string length. This is to map userId to a specific color -const getUserNameColorClass = (userId: string) => { - return userColors[userId.length % userColors.length]; -}; +constructor(res: MatrixEvent[], room: Room) { + this.res = res; + this.room = room; + this.zip = new JSZip(); + this.avatars = new Map<string, boolean>(); +} + +protected wrapHTML(content: string, room: Room) { + return ` + <!DOCTYPE html> + <html> + <head> + <meta charset="utf-8" /> + <title>Exported Data</title> + <meta content="width=device-width, initial-scale=1.0" name="viewport" /> + <link href="css/style.css" rel="stylesheet" /> + </head> + <body> + <div class="mx_page_wrap"> + <div class="mx_page_header"> + <div class="mx_content"> + <div class="mx_text mx_bold">${room.name}</div> + </div> + </div> + <div class="mx_page_body mx_chat_page"> + <div class="mx_history"> + ${content} + </div> + </div> + </div> + </body> + </html> +` +} -const getUserPic = async (event: MatrixEvent) => { +protected isEdit(event: MatrixEvent) { + if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; + return false; +} + +protected async getUserAvatar(event: MatrixEvent) { const member = event.sender; if (!member.getMxcAvatarUrl()) { return ` <div class="mx_pull_left mx_userpic_wrap"> <div - class="mx_userpic" - style="width: 42px;height: 42px;background-color: ${getUserNameColorClass(member.userId)}" + class="mx_userpic mx_initials_wrap ${getUserNameColorClass(event.getSender())}" + style="width: 42px;height: 42px;" > <div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}"> ${event.sender.name[0]} @@ -270,11 +339,11 @@ const getUserPic = async (event: MatrixEvent) => { } else { const imageUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(42, 42, "crop"); - if (!avatars.has(member.userId)) { - avatars.set(member.userId, true); + if (!this.avatars.has(member.userId)) { + this.avatars.set(member.userId, true); const image = await fetch(imageUrl); const blob = await image.blob(); - zip.file(`users/${member.userId}`, blob); + this.zip.file(`users/${member.userId}`, blob); } return ` @@ -289,40 +358,10 @@ const getUserPic = async (event: MatrixEvent) => { </div> `; } -}; - -//Gets the event_id of an event to which an event is replied -const getBaseEventId = (event: MatrixEvent) => { - const isEncrypted = event.isEncrypted(); - - // If encrypted, in_reply_to lies in event.event.content - const content = isEncrypted ? event.event.content : event.getContent(); - const relatesTo = content["m.relates_to"]; - return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; -}; - -const isEdit = (event: MatrixEvent) => { - if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; - return false; } -const dateSeparator = (event: MatrixEvent, prevEvent: MatrixEvent) => { - const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; - const currDate = new Date(event.getTs()); - if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { - return ` - <div class="mx_message mx_service"> - <div class="mx_body mx_details"> - ${new Date(event.getTs()) - .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} - </div> - </div> - `; - } - return ""; -}; -const getImageData = async (event: MatrixEvent) => { +protected async getImageData(event: MatrixEvent) { let blob: Blob; try { const isEncrypted = event.isEncrypted(); @@ -338,11 +377,36 @@ const getImageData = async (event: MatrixEvent) => { console.log("Error decrypting image"); } return blob; +} + +//Gets the event_id of an event to which an event is replied +protected getBaseEventId = (event: MatrixEvent) => { + const isEncrypted = event.isEncrypted(); + + // If encrypted, in_reply_to lies in event.event.content + const content = isEncrypted ? event.event.content : event.getContent(); + const relatesTo = content["m.relates_to"]; + return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; }; +protected dateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { + const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; + const currDate = new Date(event.getTs()); + if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { + return ` + <div class="mx_message mx_service"> + <div class="mx_body mx_details"> + ${new Date(event.getTs()) + .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} + </div> + </div> + `; + } + return ""; +} -const createMessageBody = async (event: MatrixEvent, joined = false, isReply = false, replyId = null) => { - const userPic = await getUserPic(event); +protected async createMessageBody(event: MatrixEvent, joined = false, isReply = false, replyId = null) { + const userPic = await this.getUserAvatar(event); let messageBody = ""; switch (event.getContent().msgtype) { case "m.text": @@ -357,8 +421,8 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f src="images/${event.getId()}.png" /> </a>`; - const blob = await getImageData(event); - zip.file(`images/${event.getId()}.png`, blob); + const blob = await this.getImageData(event); + this.zip.file(`images/${event.getId()}.png`, blob); } break; default: @@ -373,7 +437,7 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} </div> ${!joined ? ` - <div class="mx_from_name" style="color:${getUserNameColorClass(event.sender.name)}"> + <div class="mx_from_name ${getUserNameColorClass(event.getSender())}"> ${event.sender.name} </div>`: ``} ${isReply ? @@ -384,23 +448,22 @@ const createMessageBody = async (event: MatrixEvent, joined = false, isReply = f </div> </div> `; -}; +} - -const createHTML = async (events: MatrixEvent[], room: Room) => { +protected async createHTML(events: MatrixEvent[], room: Room) { let content = ""; let prevEvent = null; for (const event of events) { // As the getContent of the edited event fetches the latest edit, there is no need to process edit events - if (isEdit(event)) continue; - content += dateSeparator(event, prevEvent); + if (this.isEdit(event)) continue; + content += this.dateSeparator(event, prevEvent); if (event.getType() === "m.room.message") { - const replyTo = getBaseEventId(event); + const replyTo = this.getBaseEventId(event); const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" - && event.sender.userId === prevEvent.sender.userId && !dateSeparator(event, prevEvent) && !replyTo; + && event.sender.userId === prevEvent.sender.userId && !this.dateSeparator(event, prevEvent) && !replyTo; - const body = await createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); + const body = await this.createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); content += body; } else { const eventText = textForEvent(event); @@ -414,26 +477,20 @@ const createHTML = async (events: MatrixEvent[], room: Room) => { } prevEvent = event; } - return wrapHTML(content, room); -}; + return this.wrapHTML(content, room); +} -const avatars = new Map(); -let zip: JSZip; -const exportAsHTML = async (res: MatrixEvent[], room: Room) => { - zip = new JSZip(); +public async export() { + const html = await this.createHTML(this.res, this.room); - const html = await createHTML(res, room); - - zip.file("index.html", html); - zip.file("css/style.css", css); - - avatars.clear(); + this.zip.file("index.html", html); + this.zip.file("css/style.css", css); const filename = `matrix-export-${new Date().toISOString()}.zip`; //Generate the zip file asynchronously - const blob = await zip.generateAsync({ type: "blob" }); + const blob = await this.zip.generateAsync({ type: "blob" }); //Create a writable stream to the directory const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); @@ -459,5 +516,5 @@ const exportAsHTML = async (res: MatrixEvent[], room: Room) => { } writer.close(); } +} -export default exportAsHTML; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index b5356ca1e5..7ace83f06c 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -2,7 +2,7 @@ import { MatrixClientPeg } from "../../MatrixClientPeg"; import { arrayFastClone } from "../arrays"; import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; import Room from 'matrix-js-sdk/src/models/room'; -import exportAsHTML from "./HtmlExport"; +import HTMLExporter from "./HtmlExport"; export enum exportFormats { HTML = "HTML", @@ -44,7 +44,7 @@ const exportConversationalHistory = async (room: Room, format: string, options) const res = getTimelineConversation(room); switch (format) { case exportFormats.HTML: - await exportAsHTML(res, room); + new HTMLExporter(res, room).export(); break; case exportFormats.JSON: break; From 1ee6e42e27d94e45fa033e74ad055ee7a9e19128 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 24 May 2021 19:19:10 +0530 Subject: [PATCH 014/176] Add await --- src/utils/exportUtils/exportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 7ace83f06c..5e1c4fffbb 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -44,7 +44,7 @@ const exportConversationalHistory = async (room: Room, format: string, options) const res = getTimelineConversation(room); switch (format) { case exportFormats.HTML: - new HTMLExporter(res, room).export(); + await new HTMLExporter(res, room).export(); break; case exportFormats.JSON: break; From 136b6db047ec87797b9a12ec03fe750338422ab6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 24 May 2021 20:48:13 +0530 Subject: [PATCH 015/176] Add an abstract exporter base class --- src/utils/exportUtils/Exporter.ts | 7 +++++++ src/utils/exportUtils/HtmlExport.ts | 10 +++------- 2 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 src/utils/exportUtils/Exporter.ts diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts new file mode 100644 index 0000000000..a4e14153c1 --- /dev/null +++ b/src/utils/exportUtils/Exporter.ts @@ -0,0 +1,7 @@ +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import Room from 'matrix-js-sdk/src/models/room'; + +export abstract class Exporter { + constructor(protected res: MatrixEvent[], protected room: Room) {} + abstract export(): Promise<void> +} diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 8dbf14f924..737a7736b4 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -6,7 +6,7 @@ import { textForEvent } from "../../TextForEvent"; import { Room } from 'matrix-js-sdk/src/models/room'; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { getUserNameColorClass } from "../FormattingUtils"; - +import { Exporter } from "./Exporter"; const css = ` body { @@ -273,16 +273,12 @@ div.mx_selected { } `; - -export default class HTMLExporter { +export default class HTMLExporter extends Exporter { protected zip: JSZip; -protected res: MatrixEvent[]; -protected room: Room; protected avatars: Map<string, boolean>; constructor(res: MatrixEvent[], room: Room) { - this.res = res; - this.room = room; + super(res, room); this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); } From 43a111d4c989ecb93fb8f29b158dd8b8f286932e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 24 May 2021 21:20:16 +0530 Subject: [PATCH 016/176] Return blob from export --- src/utils/exportUtils/Exporter.ts | 4 ++-- src/utils/exportUtils/HtmlExport.ts | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index a4e14153c1..c782cc5a63 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,7 +1,7 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import Room from 'matrix-js-sdk/src/models/room'; +import { Room } from "matrix-js-sdk/src/models/room"; export abstract class Exporter { constructor(protected res: MatrixEvent[], protected room: Room) {} - abstract export(): Promise<void> + abstract export(): Promise<Blob>; } diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 737a7736b4..90b65a8e2b 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -511,6 +511,8 @@ public async export() { await waiter; } writer.close(); + + return blob; } } From 7cd3f51c56105d5dcf5af27353fb6ee99d424a9c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 25 May 2021 16:33:01 +0530 Subject: [PATCH 017/176] indent and use double quotes --- src/utils/exportUtils/HtmlExport.ts | 447 ++++++++++++++-------------- 1 file changed, 222 insertions(+), 225 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 90b65a8e2b..894e8571ef 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -3,7 +3,7 @@ import JSZip from "jszip"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; import { textForEvent } from "../../TextForEvent"; -import { Room } from 'matrix-js-sdk/src/models/room'; +import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { getUserNameColorClass } from "../FormattingUtils"; import { Exporter } from "./Exporter"; @@ -274,245 +274,242 @@ div.mx_selected { `; export default class HTMLExporter extends Exporter { -protected zip: JSZip; -protected avatars: Map<string, boolean>; + protected zip: JSZip; + protected avatars: Map<string, boolean>; -constructor(res: MatrixEvent[], room: Room) { - super(res, room); - this.zip = new JSZip(); - this.avatars = new Map<string, boolean>(); -} + constructor(res: MatrixEvent[], room: Room) { + super(res, room); + this.zip = new JSZip(); + this.avatars = new Map<string, boolean>(); + } -protected wrapHTML(content: string, room: Room) { - return ` - <!DOCTYPE html> - <html> - <head> - <meta charset="utf-8" /> - <title>Exported Data</title> - <meta content="width=device-width, initial-scale=1.0" name="viewport" /> - <link href="css/style.css" rel="stylesheet" /> - </head> - <body> - <div class="mx_page_wrap"> - <div class="mx_page_header"> - <div class="mx_content"> - <div class="mx_text mx_bold">${room.name}</div> + protected wrapHTML(content: string, room: Room) { + return ` + <!DOCTYPE html> + <html> + <head> + <meta charset="utf-8" /> + <title>Exported Data</title> + <meta content="width=device-width, initial-scale=1.0" name="viewport" /> + <link href="css/style.css" rel="stylesheet" /> + </head> + <body> + <div class="mx_page_wrap"> + <div class="mx_page_header"> + <div class="mx_content"> + <div class="mx_text mx_bold">${room.name}</div> + </div> + </div> + <div class="mx_page_body mx_chat_page"> + <div class="mx_history"> + ${content} + </div> </div> </div> - <div class="mx_page_body mx_chat_page"> - <div class="mx_history"> - ${content} - </div> + </body> + </html> + ` + } + + protected isEdit(event: MatrixEvent) { + if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; + return false; + } + + protected async getUserAvatar(event: MatrixEvent) { + const member = event.sender; + if (!member.getMxcAvatarUrl()) { + return ` + <div class="mx_pull_left mx_userpic_wrap"> + <div + class="mx_userpic mx_initials_wrap ${getUserNameColorClass(event.getSender())}" + style="width: 42px;height: 42px;" + > + <div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}"> + ${event.sender.name[0]} </div> </div> - </body> - </html> -` -} - - -protected isEdit(event: MatrixEvent) { - if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; - return false; -} - -protected async getUserAvatar(event: MatrixEvent) { - const member = event.sender; - if (!member.getMxcAvatarUrl()) { - return ` - <div class="mx_pull_left mx_userpic_wrap"> - <div - class="mx_userpic mx_initials_wrap ${getUserNameColorClass(event.getSender())}" - style="width: 42px;height: 42px;" - > - <div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}"> - ${event.sender.name[0]} - </div> - </div> - </div> - `; - } else { - const imageUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(42, 42, "crop"); - - if (!this.avatars.has(member.userId)) { - this.avatars.set(member.userId, true); - const image = await fetch(imageUrl); - const blob = await image.blob(); - this.zip.file(`users/${member.userId}`, blob); - } - - return ` - <div class="mx_pull_left mx_userpic_wrap"> - <div class="mx_userpic" style="width: 42px; height: 42px;"> - <img - class="mx_initials" - style="width: 42px;height: 42px;line-height:42px;" - src="users/${member.userId}" - /> - </div> - </div> - `; - } -} - - -protected async getImageData(event: MatrixEvent) { - let blob: Blob; - try { - const isEncrypted = event.isEncrypted(); - const content = event.getContent(); - if (isEncrypted) { - blob = await decryptFile(content.file); - } else { - const media = mediaFromContent(event.getContent()); - const image = await fetch(media.srcHttp); - blob = await image.blob(); - } - } catch (err) { - console.log("Error decrypting image"); - } - return blob; -} - -//Gets the event_id of an event to which an event is replied -protected getBaseEventId = (event: MatrixEvent) => { - const isEncrypted = event.isEncrypted(); - - // If encrypted, in_reply_to lies in event.event.content - const content = isEncrypted ? event.event.content : event.getContent(); - const relatesTo = content["m.relates_to"]; - return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; -}; - -protected dateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { - const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; - const currDate = new Date(event.getTs()); - if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { - return ` - <div class="mx_message mx_service"> - <div class="mx_body mx_details"> - ${new Date(event.getTs()) - .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} - </div> </div> `; - } - return ""; -} - -protected async createMessageBody(event: MatrixEvent, joined = false, isReply = false, replyId = null) { - const userPic = await this.getUserAvatar(event); - let messageBody = ""; - switch (event.getContent().msgtype) { - case "m.text": - messageBody = `<div class="mx_text"> ${event.getContent().body} </div>`; - break; - case "m.image": { - messageBody = ` - <a class="mx_photo_wrap mx_clearfix mx_pull_left" href="images/${event.getId()}.png"> - <img - class="mx_photo" - style="max-width: 600px; max-height: 500px;" - src="images/${event.getId()}.png" - /> - </a>`; - const blob = await this.getImageData(event); - this.zip.file(`images/${event.getId()}.png`, blob); - } - break; - default: - break; - } - - return ` - <div class="mx_message mx_default mx_clearfix ${joined ? `mx_joined` : ``}" id="${event.getId()}"> - ${!joined ? userPic : ``} - <div class="mx_body"> - <div class="mx_pull_right mx_date mx_details" title="${new Date(event.getTs())}"> - ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} - </div> - ${!joined ? ` - <div class="mx_from_name ${getUserNameColorClass(event.getSender())}"> - ${event.sender.name} - </div>`: ``} - ${isReply ? - ` <div class="mx_reply_to mx_details"> - In reply to <a href="#${replyId}">this message</a> - </div>`: ``} - ${messageBody} - </div> - </div> - `; -} - -protected async createHTML(events: MatrixEvent[], room: Room) { - let content = ""; - let prevEvent = null; - for (const event of events) { - // As the getContent of the edited event fetches the latest edit, there is no need to process edit events - if (this.isEdit(event)) continue; - content += this.dateSeparator(event, prevEvent); - - if (event.getType() === "m.room.message") { - const replyTo = this.getBaseEventId(event); - const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" - && event.sender.userId === prevEvent.sender.userId && !this.dateSeparator(event, prevEvent) && !replyTo; - - const body = await this.createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); - content += body; } else { - const eventText = textForEvent(event); - content += eventText ? ` - <div class="mx_message mx_service" id="${event.getId()}"> - <div class="mx_body mx_details"> - ${textForEvent(event)} + const imageUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(42, 42, "crop"); + + if (!this.avatars.has(member.userId)) { + this.avatars.set(member.userId, true); + const image = await fetch(imageUrl); + const blob = await image.blob(); + this.zip.file(`users/${member.userId}`, blob); + } + + return ` + <div class="mx_pull_left mx_userpic_wrap"> + <div class="mx_userpic" style="width: 42px; height: 42px;"> + <img + class="mx_initials" + style="width: 42px;height: 42px;line-height:42px;" + src="users/${member.userId}" + /> </div> </div> - ` : ""; + `; } - prevEvent = event; } - return this.wrapHTML(content, room); -} - -public async export() { - const html = await this.createHTML(this.res, this.room); - - this.zip.file("index.html", html); - this.zip.file("css/style.css", css); - - const filename = `matrix-export-${new Date().toISOString()}.zip`; - - //Generate the zip file asynchronously - const blob = await this.zip.generateAsync({ type: "blob" }); - - //Create a writable stream to the directory - const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); - const writer = fileStream.getWriter(); - - // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. - // This can be used to keep track of the progress - const sliceSize = 10 * 1e6; - for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { - const blobPiece = blob.slice(fPointer, fPointer + sliceSize); - const reader = new FileReader(); - - const waiter = new Promise<void>((resolve, reject) => { - reader.onloadend = evt => { - const arrayBufferNew: any = evt.target.result; - const uint8ArrayNew = new Uint8Array(arrayBufferNew); - writer.write(uint8ArrayNew); - resolve(); - }; - reader.readAsArrayBuffer(blobPiece); - }); - await waiter; + protected async getImageData(event: MatrixEvent) { + let blob: Blob; + try { + const isEncrypted = event.isEncrypted(); + const content = event.getContent(); + if (isEncrypted) { + blob = await decryptFile(content.file); + } else { + const media = mediaFromContent(event.getContent()); + const image = await fetch(media.srcHttp); + blob = await image.blob(); + } + } catch (err) { + console.log("Error decrypting image"); + } + return blob; } - writer.close(); - return blob; -} + //Gets the event_id of an event to which an event is replied + protected getBaseEventId = (event: MatrixEvent) => { + const isEncrypted = event.isEncrypted(); + + // If encrypted, in_reply_to lies in event.event.content + const content = isEncrypted ? event.event.content : event.getContent(); + const relatesTo = content["m.relates_to"]; + return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; + }; + + protected dateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { + const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; + const currDate = new Date(event.getTs()); + if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { + return ` + <div class="mx_message mx_service"> + <div class="mx_body mx_details"> + ${new Date(event.getTs()) + .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} + </div> + </div> + `; + } + return ""; + } + + protected async createMessageBody(event: MatrixEvent, joined = false, isReply = false, replyId = null) { + const userPic = await this.getUserAvatar(event); + let messageBody = ""; + switch (event.getContent().msgtype) { + case "m.text": + messageBody = `<div class="mx_text"> ${event.getContent().body} </div>`; + break; + case "m.image": { + messageBody = ` + <a class="mx_photo_wrap mx_clearfix mx_pull_left" href="images/${event.getId()}.png"> + <img + class="mx_photo" + style="max-width: 600px; max-height: 500px;" + src="images/${event.getId()}.png" + /> + </a>`; + const blob = await this.getImageData(event); + this.zip.file(`images/${event.getId()}.png`, blob); + } + break; + default: + break; + } + + return ` + <div class="mx_message mx_default mx_clearfix ${joined ? `mx_joined` : ``}" id="${event.getId()}"> + ${!joined ? userPic : ``} + <div class="mx_body"> + <div class="mx_pull_right mx_date mx_details" title="${new Date(event.getTs())}"> + ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} + </div> + ${!joined ? ` + <div class="mx_from_name ${getUserNameColorClass(event.getSender())}"> + ${event.sender.name} + </div>`: ``} + ${isReply ? + ` <div class="mx_reply_to mx_details"> + In reply to <a href="#${replyId}">this message</a> + </div>`: ``} + ${messageBody} + </div> + </div> + `; + } + + protected async createHTML(events: MatrixEvent[], room: Room) { + let content = ""; + let prevEvent = null; + for (const event of events) { + // As the getContent of the edited event fetches the latest edit, there is no need to process edit events + if (this.isEdit(event)) continue; + content += this.dateSeparator(event, prevEvent); + + if (event.getType() === "m.room.message") { + const replyTo = this.getBaseEventId(event); + const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" + && event.sender.userId === prevEvent.sender.userId && !this.dateSeparator(event, prevEvent) && !replyTo; + + const body = await this.createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); + content += body; + } else { + const eventText = textForEvent(event); + content += eventText ? ` + <div class="mx_message mx_service" id="${event.getId()}"> + <div class="mx_body mx_details"> + ${textForEvent(event)} + </div> + </div> + ` : ""; + } + prevEvent = event; + } + return this.wrapHTML(content, room); + } + + public async export() { + const html = await this.createHTML(this.res, this.room); + + this.zip.file("index.html", html); + this.zip.file("css/style.css", css); + + const filename = `matrix-export-${new Date().toISOString()}.zip`; + + //Generate the zip file asynchronously + const blob = await this.zip.generateAsync({ type: "blob" }); + + //Create a writable stream to the directory + const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); + const writer = fileStream.getWriter(); + + // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. + // This can be used to keep track of the progress + const sliceSize = 10 * 1e6; + for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { + const blobPiece = blob.slice(fPointer, fPointer + sliceSize); + const reader = new FileReader(); + + const waiter = new Promise<void>((resolve, reject) => { + reader.onloadend = evt => { + const arrayBufferNew: any = evt.target.result; + const uint8ArrayNew = new Uint8Array(arrayBufferNew); + writer.write(uint8ArrayNew); + resolve(); + }; + reader.readAsArrayBuffer(blobPiece); + }); + await waiter; + } + writer.close(); + + return blob; + } } From 0ee290648a746aeda4e2590bb2a9928a637e20c9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 25 May 2021 17:48:08 +0530 Subject: [PATCH 018/176] Add support for firefox --- package.json | 1 + src/utils/exportUtils/HtmlExport.ts | 3 +++ yarn.lock | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/package.json b/package.json index 61b2a27acc..ad7de2941c 100644 --- a/package.json +++ b/package.json @@ -104,6 +104,7 @@ "tar-js": "^0.3.0", "text-encoding-utf-8": "^1.0.2", "url": "^0.11.0", + "web-streams-polyfill": "^3.0.3", "what-input": "^5.2.10", "zxcvbn": "^4.4.2" }, diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 894e8571ef..755792079a 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -7,6 +7,7 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { getUserNameColorClass } from "../FormattingUtils"; import { Exporter } from "./Exporter"; +import * as ponyfill from 'web-streams-polyfill/ponyfill' const css = ` body { @@ -485,6 +486,8 @@ export default class HTMLExporter extends Exporter { //Generate the zip file asynchronously const blob = await this.zip.generateAsync({ type: "blob" }); + //Support for firefox browser + streamSaver.WritableStream = ponyfill.WritableStream //Create a writable stream to the directory const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); const writer = fileStream.getWriter(); diff --git a/yarn.lock b/yarn.lock index 982b9e607b..d2c1a8f71d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8337,6 +8337,11 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" +web-streams-polyfill@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.0.3.tgz#f49e487eedeca47a207c1aee41ee5578f884b42f" + integrity sha512-d2H/t0eqRNM4w2WvmTdoeIvzAUSpK7JmATB8Nr2lb7nQ9BTIJVjbQ/TRFVEh2gUH1HwclPdoPtfMoFfetXaZnA== + webcrypto-core@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.1.8.tgz#91720c07f4f2edd181111b436647ea5a282af0a9" From 0b728ff3900f0506a43452bc647d330920ff63b5 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 25 May 2021 17:52:23 +0530 Subject: [PATCH 019/176] Use double quotes for import --- src/utils/exportUtils/HtmlExport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 755792079a..c21f227c35 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -7,7 +7,7 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { getUserNameColorClass } from "../FormattingUtils"; import { Exporter } from "./Exporter"; -import * as ponyfill from 'web-streams-polyfill/ponyfill' +import * as ponyfill from "web-streams-polyfill/ponyfill" const css = ` body { From 7286aa28e189ba4de903b404a017ab0c5ee3d2cb Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 26 May 2021 10:28:20 +0530 Subject: [PATCH 020/176] Handle audio and video files --- src/HtmlUtils.tsx | 2 +- src/utils/exportUtils/HtmlExport.ts | 49 ++++++++++++++++++++++++---- src/utils/exportUtils/StreamToZip.ts | 17 ++++++++++ 3 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 src/utils/exportUtils/StreamToZip.ts diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index ef5ac383e3..1d5defe45d 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -233,7 +233,7 @@ const transformTags: IExtendedSanitizeOptions["transformTags"] = { // custom to }, }; -const sanitizeHtmlParams: IExtendedSanitizeOptions = { +export const sanitizeHtmlParams: IExtendedSanitizeOptions = { allowedTags: [ 'font', // custom to matrix for IRC-style font coloring 'del', // for markdown diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index c21f227c35..8e6070cff6 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -8,6 +8,8 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { getUserNameColorClass } from "../FormattingUtils"; import { Exporter } from "./Exporter"; import * as ponyfill from "web-streams-polyfill/ponyfill" +import { sanitizeHtmlParams } from "../../HtmlUtils"; +import sanitizeHtml from "sanitize-html"; const css = ` body { @@ -356,7 +358,7 @@ export default class HTMLExporter extends Exporter { } } - protected async getImageData(event: MatrixEvent) { + protected async getMediaBlob(event: MatrixEvent) { let blob: Blob; try { const isEncrypted = event.isEncrypted(); @@ -369,7 +371,7 @@ export default class HTMLExporter extends Exporter { blob = await image.blob(); } } catch (err) { - console.log("Error decrypting image"); + console.log("Error decrypting media"); } return blob; } @@ -405,21 +407,54 @@ export default class HTMLExporter extends Exporter { let messageBody = ""; switch (event.getContent().msgtype) { case "m.text": - messageBody = `<div class="mx_text"> ${event.getContent().body} </div>`; + messageBody = ` + <div class="mx_text"> + ${sanitizeHtml(event.getContent().body, sanitizeHtmlParams)} + </div>`; break; case "m.image": { + const blob = await this.getMediaBlob(event); + const fileName = `${event.getId()}.${blob.type.replace("image/", "")}`; messageBody = ` <a class="mx_photo_wrap mx_clearfix mx_pull_left" href="images/${event.getId()}.png"> <img class="mx_photo" style="max-width: 600px; max-height: 500px;" - src="images/${event.getId()}.png" + src="images/${fileName}" /> </a>`; - const blob = await this.getImageData(event); - this.zip.file(`images/${event.getId()}.png`, blob); - } + this.zip.file(`images/${fileName}`, blob); break; + } + case "m.video": { + const blob = await this.getMediaBlob(event); + const fileName = `${event.getId()}.${blob.type.replace("video/", "")}`; + messageBody = ` + <div class="mx_media_wrap mx_clearfix"> + <video + class="mx_video_file" + src="videos/${fileName}" + style="max-height: 400px; max-width: 600px;" + controls + /> + </div>`; + this.zip.file(`videos/${fileName}`, blob); + break; + } + case "m.audio": { + const blob = await this.getMediaBlob(event); + const fileName = `${event.getId()}.${blob.type.replace("audio/", "")}`; + messageBody = ` + <div class="mx_media_wrap mx_clearfix"> + <audio + class="mx_audio_file" + src="audio/${fileName}" + controls + /> + </div>`; + this.zip.file(`audio/${fileName}`, blob); + break; + } default: break; } diff --git a/src/utils/exportUtils/StreamToZip.ts b/src/utils/exportUtils/StreamToZip.ts new file mode 100644 index 0000000000..769fa91dba --- /dev/null +++ b/src/utils/exportUtils/StreamToZip.ts @@ -0,0 +1,17 @@ +/*Not to be reviewed now*/ +class fileCheckSum { + protected CRC32: number; + public table: any[]; + constructor() { + this.CRC32 = -1 + } + + protected append(data: any[]) { + let crc = this.CRC32 | 0; + const table = this.table; + for (let offset = 0, len = data.length | 0; offset < len; offset++) { + crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF] + } + this.CRC32 = crc + } +} From 334b7ef04a193cb664928e78321fcd12d29e4925 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 26 May 2021 18:00:27 +0530 Subject: [PATCH 021/176] Implement animated scroll to base event for replies --- src/utils/exportUtils/HtmlExport.ts | 29 ++++++++++++++++++++++----- src/utils/exportUtils/StreamToZip.ts | 30 ++++++++++++++-------------- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 8e6070cff6..1e3984e34e 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -39,7 +39,7 @@ body { } .mx_page_wrap a { - color: #168acd; + color: #238CF5; text-decoration: none; } @@ -126,11 +126,11 @@ a.mx_block_link:hover { .mx_message { margin: 0 -10px; - transition: background-color 2.0s ease; + transition: background-color 1.3s ease; } div.mx_selected { - background-color: rgba(242,246,250,255); + background-color: #eeeeee; transition: background-color 0.5s ease; } @@ -276,6 +276,20 @@ div.mx_selected { } `; +const js = ` +function scrollToElement(replyId){ + let el = document.getElementById(replyId); + el.scrollIntoViewIfNeeded({ + behaviour: "smooth", + block: "start", + }); + el.classList.add("mx_selected"); + setTimeout(() => { + el.classList.remove("mx_selected"); + }, 1000); +} +` + export default class HTMLExporter extends Exporter { protected zip: JSZip; protected avatars: Map<string, boolean>; @@ -295,6 +309,7 @@ export default class HTMLExporter extends Exporter { <title>Exported Data</title> <meta content="width=device-width, initial-scale=1.0" name="viewport" /> <link href="css/style.css" rel="stylesheet" /> + <script src="js/script.js"></script> </head> <body> <div class="mx_page_wrap"> @@ -459,6 +474,10 @@ export default class HTMLExporter extends Exporter { break; } + if (isReply) { + messageBody = event.getContent().formatted_body.replace(/<mx-reply>.*<\/mx-reply>/, '') + } + return ` <div class="mx_message mx_default mx_clearfix ${joined ? `mx_joined` : ``}" id="${event.getId()}"> ${!joined ? userPic : ``} @@ -472,7 +491,7 @@ export default class HTMLExporter extends Exporter { </div>`: ``} ${isReply ? ` <div class="mx_reply_to mx_details"> - In reply to <a href="#${replyId}">this message</a> + In reply to <a href="#${replyId}" onclick="scrollToElement('${replyId}')">this message</a> </div>`: ``} ${messageBody} </div> @@ -515,7 +534,7 @@ export default class HTMLExporter extends Exporter { this.zip.file("index.html", html); this.zip.file("css/style.css", css); - + this.zip.file("js/script.js", js); const filename = `matrix-export-${new Date().toISOString()}.zip`; //Generate the zip file asynchronously diff --git a/src/utils/exportUtils/StreamToZip.ts b/src/utils/exportUtils/StreamToZip.ts index 769fa91dba..01a2880386 100644 --- a/src/utils/exportUtils/StreamToZip.ts +++ b/src/utils/exportUtils/StreamToZip.ts @@ -1,17 +1,17 @@ /*Not to be reviewed now*/ -class fileCheckSum { - protected CRC32: number; - public table: any[]; - constructor() { - this.CRC32 = -1 - } +// class fileCheckSum { +// protected CRC32: number; +// public table: any[]; +// constructor() { +// this.CRC32 = -1 +// } - protected append(data: any[]) { - let crc = this.CRC32 | 0; - const table = this.table; - for (let offset = 0, len = data.length | 0; offset < len; offset++) { - crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF] - } - this.CRC32 = crc - } -} +// protected append(data: any[]) { +// let crc = this.CRC32 | 0; +// const table = this.table; +// for (let offset = 0, len = data.length | 0; offset < len; offset++) { +// crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF] +// } +// this.CRC32 = crc +// } +// } From 60ef6f933298dd5da932d30097762d464d4263a6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 27 May 2021 14:06:04 +0530 Subject: [PATCH 022/176] Add emote support and show a toast if the message isn't exported --- src/utils/exportUtils/HtmlExport.ts | 77 +++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts index 1e3984e34e..aaa6d5fadb 100644 --- a/src/utils/exportUtils/HtmlExport.ts +++ b/src/utils/exportUtils/HtmlExport.ts @@ -41,6 +41,7 @@ body { .mx_page_wrap a { color: #238CF5; text-decoration: none; + cursor: pointer; } .mx_page_wrap a:hover { @@ -274,20 +275,78 @@ div.mx_selected { .mx_initials_wrap.mx_Username_color8{ background-color: #74d12c; } + +#snackbar { + display: flex; + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + position: fixed; + z-index: 1; + left: 50%; + bottom: 30px; + font-size: 17px; + padding: 6px 16px; + font-size: 0.875rem; + font-family: "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + line-height: 1.43; + border-radius: 4px; + letter-spacing: 0.01071em; +} + +#snackbar.show { + visibility: visible; + -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s; + animation: fadein 0.5s, fadeout 0.5s 2.5s; +} + +@-webkit-keyframes fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} +} + +@keyframes fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} +} + +@-webkit-keyframes fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} +} + +@keyframes fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} +} `; const js = ` function scrollToElement(replyId){ let el = document.getElementById(replyId); - el.scrollIntoViewIfNeeded({ - behaviour: "smooth", - block: "start", - }); + if(!el) { + showToast("The message you're looking for wasn't exported"); + return; + }; + el.scrollIntoView({ behavior: 'smooth', block: 'center' }); el.classList.add("mx_selected"); setTimeout(() => { el.classList.remove("mx_selected"); }, 1000); } + +function showToast(text) { + let el = document.getElementById("snackbar"); + el.innerHTML = text; + el.className = "show"; + setTimeout(() => { + el.className = el.className.replace("show", ""); + }, 2000); +} ` export default class HTMLExporter extends Exporter { @@ -324,6 +383,7 @@ export default class HTMLExporter extends Exporter { </div> </div> </div> + <div id="snackbar"/> </body> </html> ` @@ -427,6 +487,13 @@ export default class HTMLExporter extends Exporter { ${sanitizeHtml(event.getContent().body, sanitizeHtmlParams)} </div>`; break; + case "m.emote": + messageBody = ` + <div class="mx_text"> + * ${event.sender ? event.sender.name : event.getSender()} + ${sanitizeHtml(event.getContent().body, sanitizeHtmlParams)} + </div>`; + break; case "m.image": { const blob = await this.getMediaBlob(event); const fileName = `${event.getId()}.${blob.type.replace("image/", "")}`; @@ -491,7 +558,7 @@ export default class HTMLExporter extends Exporter { </div>`: ``} ${isReply ? ` <div class="mx_reply_to mx_details"> - In reply to <a href="#${replyId}" onclick="scrollToElement('${replyId}')">this message</a> + In reply to <a onclick="scrollToElement('${replyId}')">this message</a> </div>`: ``} ${messageBody} </div> From 573a3ca98342e98815d441ba0c0bb50c17ab33b9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 19:01:32 +0530 Subject: [PATCH 023/176] Rewrite export tool to use existing components to render output, use existing source URLs for media --- src/components/structures/MessagePanel.js | 2 +- src/components/views/elements/ReplyThread.js | 12 +- .../views/messages/DateSeparator.js | 5 + src/components/views/rooms/EventTile.tsx | 21 +- src/utils/exportUtils/HtmlExport.ts | 639 ------------------ src/utils/exportUtils/HtmlExport.tsx | 242 +++++++ src/utils/exportUtils/exportCSS.ts | 62 ++ src/utils/exportUtils/exportJS.ts | 32 + 8 files changed, 367 insertions(+), 648 deletions(-) delete mode 100644 src/utils/exportUtils/HtmlExport.ts create mode 100644 src/utils/exportUtils/HtmlExport.tsx create mode 100644 src/utils/exportUtils/exportCSS.ts create mode 100644 src/utils/exportUtils/exportJS.ts diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js index d1071a9e19..3f06b23074 100644 --- a/src/components/structures/MessagePanel.js +++ b/src/components/structures/MessagePanel.js @@ -41,7 +41,7 @@ const continuedTypes = ['m.sticker', 'm.room.message']; // check if there is a previous event and it has the same sender as this event // and the types are the same/is in continuedTypes and the time between them is <= CONTINUATION_MAX_INTERVAL -function shouldFormContinuation(prevEvent, mxEvent) { +export function shouldFormContinuation(prevEvent, mxEvent) { // sanity check inputs if (!prevEvent || !prevEvent.sender || !mxEvent.sender) return false; // check if within the max continuation period diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index 870803995d..018c5d1e6e 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -46,6 +46,7 @@ export default class ReplyThread extends React.Component { permalinkCreator: PropTypes.instanceOf(RoomPermalinkCreator).isRequired, // Specifies which layout to use. layout: LayoutPropType, + isExporting: PropTypes.bool, }; static contextType = MatrixClientContext; @@ -67,6 +68,9 @@ export default class ReplyThread extends React.Component { }; this.unmounted = false; + + if (this.props.isExporting) return; + this.context.on("Event.replaced", this.onEventReplaced); this.room = this.context.getRoom(this.props.parentEv.getRoomId()); this.room.on("Room.redaction", this.onRoomRedaction); @@ -212,12 +216,13 @@ export default class ReplyThread extends React.Component { }; } - static makeThread(parentEv, onHeightChanged, permalinkCreator, ref, layout) { + static makeThread(parentEv, onHeightChanged, permalinkCreator, ref, layout, isExporting) { if (!ReplyThread.getParentEventId(parentEv)) { return <div className="mx_ReplyThread_wrapper_empty" />; } return <ReplyThread parentEv={parentEv} + isExporting={isExporting} onHeightChanged={onHeightChanged} ref={ref} permalinkCreator={permalinkCreator} @@ -366,6 +371,11 @@ export default class ReplyThread extends React.Component { }) } </blockquote>; + } else if (this.props.isExporting) { + const eventId = ReplyThread.getParentEventId(this.props.parentEv); + header = <p style={{ marginTop: -5, marginBottom: 5 }}> + In reply to <a className="mx_reply_anchor" scroll-to={`${eventId}`}>this message</a> + </p>; } else if (this.state.loading) { const Spinner = sdk.getComponent("elements.Spinner"); header = <Spinner w={16} h={16} />; diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index 82ce8dc4ae..2aba0eaef8 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -37,10 +37,15 @@ function getdaysArray() { export default class DateSeparator extends React.Component { static propTypes = { ts: PropTypes.number.isRequired, + isExporting: PropTypes.bool, }; getLabel() { const date = new Date(this.props.ts); + + // During the time the archive is being viewed, a specific day might not make sense, so we return the full date + if (this.props.isExporting) return formatFullDateNoTime(date); + const today = new Date(); const yesterday = new Date(); const days = getdaysArray(); diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 19c5a7acaa..ff10b3255a 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -249,6 +249,8 @@ interface IProps { // for now. tileShape?: 'notif' | 'file_grid' | 'reply' | 'reply_preview'; + isExporting?: boolean; + // show twelve hour timestamps isTwelveHour?: boolean; @@ -405,6 +407,8 @@ export default class EventTile extends React.Component<IProps, IState> { // TODO: [REACT-WARNING] Move into constructor // eslint-disable-next-line camelcase UNSAFE_componentWillMount() { + // Context isn't propagated through renderToStaticMarkup so we'll have to explicitly set it during export + if (this.props.isExporting) this.context = MatrixClientPeg.get(); this.verifyEvent(this.props.mxEvent); } @@ -607,6 +611,7 @@ export default class EventTile extends React.Component<IProps, IState> { } shouldHighlight() { + if (this.props.isExporting) return false; const actions = this.context.getPushActionsForEvent(this.props.mxEvent.replacingEvent() || this.props.mxEvent); if (!actions || !actions.tweaks) { return false; } @@ -951,7 +956,8 @@ export default class EventTile extends React.Component<IProps, IState> { } const MessageActionBar = sdk.getComponent('messages.MessageActionBar'); - const actionBar = !isEditing ? <MessageActionBar + const showMessageActionBar = !isEditing && !this.props.isExporting; + const actionBar = showMessageActionBar ? <MessageActionBar mxEvent={this.props.mxEvent} reactions={this.state.reactions} permalinkCreator={this.props.permalinkCreator} @@ -1127,6 +1133,7 @@ export default class EventTile extends React.Component<IProps, IState> { this.props.permalinkCreator, this.replyThread, this.props.layout, + this.props.isExporting, ); // tab-index=-1 to allow it to be focusable but do not add tab stop for it, primarily for screen readers @@ -1169,11 +1176,11 @@ export default class EventTile extends React.Component<IProps, IState> { // XXX this'll eventually be dynamic based on the fields once we have extensible event types const messageTypes = ['m.room.message', 'm.sticker']; -function isMessageEvent(ev) { +function isMessageEvent(ev: MatrixEvent): boolean { return (messageTypes.includes(ev.getType())); } -export function haveTileForEvent(e) { +export function haveTileForEvent(e: MatrixEvent): boolean { // Only messages have a tile (black-rectangle) if redacted if (e.isRedacted() && !isMessageEvent(e)) return false; @@ -1244,11 +1251,11 @@ class E2ePadlock extends React.Component<IE2ePadlockProps, IE2ePadlockState> { } onHoverStart = () => { - this.setState({hover: true}); + this.setState({ hover: true }); }; onHoverEnd = () => { - this.setState({hover: false}); + this.setState({ hover: false }); }; render() { @@ -1286,11 +1293,11 @@ class SentReceipt extends React.PureComponent<ISentReceiptProps, ISentReceiptSta } onHoverStart = () => { - this.setState({hover: true}); + this.setState({ hover: true }); }; onHoverEnd = () => { - this.setState({hover: false}); + this.setState({ hover: false }); }; render() { diff --git a/src/utils/exportUtils/HtmlExport.ts b/src/utils/exportUtils/HtmlExport.ts deleted file mode 100644 index aaa6d5fadb..0000000000 --- a/src/utils/exportUtils/HtmlExport.ts +++ /dev/null @@ -1,639 +0,0 @@ -import streamSaver from "streamsaver"; -import JSZip from "jszip"; -import { decryptFile } from "../DecryptFile"; -import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; -import { textForEvent } from "../../TextForEvent"; -import { Room } from "matrix-js-sdk/src/models/room"; -import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import { getUserNameColorClass } from "../FormattingUtils"; -import { Exporter } from "./Exporter"; -import * as ponyfill from "web-streams-polyfill/ponyfill" -import { sanitizeHtmlParams } from "../../HtmlUtils"; -import sanitizeHtml from "sanitize-html"; - -const css = ` -body { - margin: 0; - font: 12px/18px 'Inter', 'Open Sans',"Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif; -} - -.mx_clearfix:after { - content: " "; - visibility: hidden; - display: block; - height: 0; - clear: both; -} - -.mx_pull_left { - float: left; -} - -.mx_pull_right { - float: right; -} - -.mx_page_wrap { - background-color: #ffffff; - color: #000000; -} - -.mx_page_wrap a { - color: #238CF5; - text-decoration: none; - cursor: pointer; -} - -.mx_page_wrap a:hover { - text-decoration: underline; -} - -.mx_page_header { - position: fixed; - z-index: 10; - background-color: #ffffff; - width: 100%; - border-bottom: 1px solid #e3e6e8; -} - -.mx_page_header .mx_content { - width: 480px; - margin: 0 auto; - border-radius: 0 !important; -} - -.mx_page_header a.mx_content { - background-repeat: no-repeat; - background-position: 24px 21px; - background-size: 24px 24px; -} - -.mx_bold { - color: #212121; - font-weight: 700; -} - -.mx_details { - color: #70777b; -} - -.mx_page_header .mx_content .mx_text { - padding: 24px 24px 22px 24px; - font-size: 22px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - text-align: center; -} - -.mx_page_header a.mx_content .mx_text { - padding: 24px 24px 22px 82px; -} - -.mx_page_body { - padding-top: 64px; - width: 700px; - margin: 0 auto; -} - -.mx_userpic { - display: block; - border-radius: 50%; - overflow: hidden; -} - -.mx_userpic .mx_initials { - display: block; - color: #fff; - text-align: center; - text-transform: uppercase; - user-select: none; -} - -a.mx_block_link { - display: block; - text-decoration: none !important; - border-radius: 4px; -} - -a.mx_block_link:hover { - text-decoration: none !important; - background-color: #f5f7f8; -} - -.mx_history { - padding: 16px 0; -} - -.mx_message { - margin: 0 -10px; - transition: background-color 1.3s ease; -} - -div.mx_selected { - background-color: #eeeeee; - transition: background-color 0.5s ease; -} - -.mx_service { - padding: 10px 24px; -} - -.mx_service .mx_body { - text-align: center; -} - -.mx_message .mx_userpic .mx_initials { - font-size: 16px; -} - -.mx_default { - padding: 10px; -} - -.mx_default.mx_joined { - margin-top: -10px; -} - -.mx_default .mx_from_name { - font-weight: 700; - padding-bottom: 5px; -} - -.mx_default .mx_body { - margin-left: 60px; -} - -.mx_default .mx_text { - word-wrap: break-word; - line-height: 150%; -} - -.mx_default .mx_reply_to, -.mx_default .mx_media_wrap { - padding-bottom: 5px; -} - -.mx_default .mx_media { - margin: 0 -10px; - padding: 5px 10px; -} - -.mx_default .mx_media .mx_fill, -.mx_default .mx_media .mx_thumb { - width: 48px; - height: 48px; - border-radius: 50%; -} - -.mx_default .mx_media .mx_fill { - background-repeat: no-repeat; - background-position: 12px 12px; - background-size: 24px 24px; -} - -.mx_default .mx_media .mx_title { - padding-top: 4px; - font-size: 14px; -} - -.mx_default .mx_media .mx_description { - color: #000000; - padding-top: 4px; - font-size: 13px; -} - -.mx_default .mx_media .mx_status { - padding-top: 4px; - font-size: 13px; -} - -.mx_default .mx_photo { - display: block; -} - -.mx_from_name.mx_Username_color1{ - color: #368bd6; -} - -.mx_initials_wrap.mx_Username_color1{ - background-color: #368bd6; -} - -.mx_from_name.mx_Username_color2{ - color: #ac3ba8; -} - -.mx_initials_wrap.mx_Username_color2{ - background-color: #ac3ba8; -} - -.mx_from_name.mx_Username_color3{ - color: #03b381; -} - -.mx_initials_wrap.mx_Username_color3{ - background-color: #03b381; -} - -.mx_from_name.mx_Username_color4{ - color: #e64f7a; -} - -.mx_initials_wrap.mx_Username_color4{ - background-color: #e64f7a; -} - -.mx_from_name.mx_Username_color5{ - color: #ff812d; -} - -.mx_initials_wrap.mx_Username_color5{ - background-color: #ff812d; -} - -.mx_from_name.mx_Username_color6{ - color: #2dc2c5; -} - -.mx_initials_wrap.mx_Username_color6{ - background-color: #2dc2c5; -} - -.mx_from_name.mx_Username_color7{ - color: #5c56f5; -} - -.mx_initials_wrap.mx_Username_color7{ - background-color: #5c56f5; -} - -.mx_from_name.mx_Username_color8{ - color: #74d12c; -} - -.mx_initials_wrap.mx_Username_color8{ - background-color: #74d12c; -} - -#snackbar { - display: flex; - visibility: hidden; - min-width: 250px; - margin-left: -125px; - background-color: #333; - color: #fff; - text-align: center; - position: fixed; - z-index: 1; - left: 50%; - bottom: 30px; - font-size: 17px; - padding: 6px 16px; - font-size: 0.875rem; - font-family: "Roboto", "Helvetica", "Arial", sans-serif; - font-weight: 400; - line-height: 1.43; - border-radius: 4px; - letter-spacing: 0.01071em; -} - -#snackbar.show { - visibility: visible; - -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s; - animation: fadein 0.5s, fadeout 0.5s 2.5s; -} - -@-webkit-keyframes fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 30px; opacity: 1;} -} - -@keyframes fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 30px; opacity: 1;} -} - -@-webkit-keyframes fadeout { - from {bottom: 30px; opacity: 1;} - to {bottom: 0; opacity: 0;} -} - -@keyframes fadeout { - from {bottom: 30px; opacity: 1;} - to {bottom: 0; opacity: 0;} -} -`; - -const js = ` -function scrollToElement(replyId){ - let el = document.getElementById(replyId); - if(!el) { - showToast("The message you're looking for wasn't exported"); - return; - }; - el.scrollIntoView({ behavior: 'smooth', block: 'center' }); - el.classList.add("mx_selected"); - setTimeout(() => { - el.classList.remove("mx_selected"); - }, 1000); -} - -function showToast(text) { - let el = document.getElementById("snackbar"); - el.innerHTML = text; - el.className = "show"; - setTimeout(() => { - el.className = el.className.replace("show", ""); - }, 2000); -} -` - -export default class HTMLExporter extends Exporter { - protected zip: JSZip; - protected avatars: Map<string, boolean>; - - constructor(res: MatrixEvent[], room: Room) { - super(res, room); - this.zip = new JSZip(); - this.avatars = new Map<string, boolean>(); - } - - protected wrapHTML(content: string, room: Room) { - return ` - <!DOCTYPE html> - <html> - <head> - <meta charset="utf-8" /> - <title>Exported Data</title> - <meta content="width=device-width, initial-scale=1.0" name="viewport" /> - <link href="css/style.css" rel="stylesheet" /> - <script src="js/script.js"></script> - </head> - <body> - <div class="mx_page_wrap"> - <div class="mx_page_header"> - <div class="mx_content"> - <div class="mx_text mx_bold">${room.name}</div> - </div> - </div> - <div class="mx_page_body mx_chat_page"> - <div class="mx_history"> - ${content} - </div> - </div> - </div> - <div id="snackbar"/> - </body> - </html> - ` - } - - protected isEdit(event: MatrixEvent) { - if (event.getType() === "m.room.message" && event.getContent().hasOwnProperty("m.new_content")) return true; - return false; - } - - protected async getUserAvatar(event: MatrixEvent) { - const member = event.sender; - if (!member.getMxcAvatarUrl()) { - return ` - <div class="mx_pull_left mx_userpic_wrap"> - <div - class="mx_userpic mx_initials_wrap ${getUserNameColorClass(event.getSender())}" - style="width: 42px;height: 42px;" - > - <div class="mx_initials" style="line-height: 42px;" src="users/${member.userId}"> - ${event.sender.name[0]} - </div> - </div> - </div> - `; - } else { - const imageUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(42, 42, "crop"); - - if (!this.avatars.has(member.userId)) { - this.avatars.set(member.userId, true); - const image = await fetch(imageUrl); - const blob = await image.blob(); - this.zip.file(`users/${member.userId}`, blob); - } - - return ` - <div class="mx_pull_left mx_userpic_wrap"> - <div class="mx_userpic" style="width: 42px; height: 42px;"> - <img - class="mx_initials" - style="width: 42px;height: 42px;line-height:42px;" - src="users/${member.userId}" - /> - </div> - </div> - `; - } - } - - protected async getMediaBlob(event: MatrixEvent) { - let blob: Blob; - try { - const isEncrypted = event.isEncrypted(); - const content = event.getContent(); - if (isEncrypted) { - blob = await decryptFile(content.file); - } else { - const media = mediaFromContent(event.getContent()); - const image = await fetch(media.srcHttp); - blob = await image.blob(); - } - } catch (err) { - console.log("Error decrypting media"); - } - return blob; - } - - //Gets the event_id of an event to which an event is replied - protected getBaseEventId = (event: MatrixEvent) => { - const isEncrypted = event.isEncrypted(); - - // If encrypted, in_reply_to lies in event.event.content - const content = isEncrypted ? event.event.content : event.getContent(); - const relatesTo = content["m.relates_to"]; - return (relatesTo && relatesTo["m.in_reply_to"]) ? relatesTo["m.in_reply_to"]["event_id"] : null; - }; - - protected dateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { - const prevDate = prevEvent ? new Date(prevEvent.getTs()) : null; - const currDate = new Date(event.getTs()); - if (!prevDate || currDate.setHours(0, 0, 0, 0) !== prevDate.setHours(0, 0, 0, 0)) { - return ` - <div class="mx_message mx_service"> - <div class="mx_body mx_details"> - ${new Date(event.getTs()) - .toLocaleString("en-us", {year: "numeric", month: "long", day: "numeric" })} - </div> - </div> - `; - } - return ""; - } - - protected async createMessageBody(event: MatrixEvent, joined = false, isReply = false, replyId = null) { - const userPic = await this.getUserAvatar(event); - let messageBody = ""; - switch (event.getContent().msgtype) { - case "m.text": - messageBody = ` - <div class="mx_text"> - ${sanitizeHtml(event.getContent().body, sanitizeHtmlParams)} - </div>`; - break; - case "m.emote": - messageBody = ` - <div class="mx_text"> - * ${event.sender ? event.sender.name : event.getSender()} - ${sanitizeHtml(event.getContent().body, sanitizeHtmlParams)} - </div>`; - break; - case "m.image": { - const blob = await this.getMediaBlob(event); - const fileName = `${event.getId()}.${blob.type.replace("image/", "")}`; - messageBody = ` - <a class="mx_photo_wrap mx_clearfix mx_pull_left" href="images/${event.getId()}.png"> - <img - class="mx_photo" - style="max-width: 600px; max-height: 500px;" - src="images/${fileName}" - /> - </a>`; - this.zip.file(`images/${fileName}`, blob); - break; - } - case "m.video": { - const blob = await this.getMediaBlob(event); - const fileName = `${event.getId()}.${blob.type.replace("video/", "")}`; - messageBody = ` - <div class="mx_media_wrap mx_clearfix"> - <video - class="mx_video_file" - src="videos/${fileName}" - style="max-height: 400px; max-width: 600px;" - controls - /> - </div>`; - this.zip.file(`videos/${fileName}`, blob); - break; - } - case "m.audio": { - const blob = await this.getMediaBlob(event); - const fileName = `${event.getId()}.${blob.type.replace("audio/", "")}`; - messageBody = ` - <div class="mx_media_wrap mx_clearfix"> - <audio - class="mx_audio_file" - src="audio/${fileName}" - controls - /> - </div>`; - this.zip.file(`audio/${fileName}`, blob); - break; - } - default: - break; - } - - if (isReply) { - messageBody = event.getContent().formatted_body.replace(/<mx-reply>.*<\/mx-reply>/, '') - } - - return ` - <div class="mx_message mx_default mx_clearfix ${joined ? `mx_joined` : ``}" id="${event.getId()}"> - ${!joined ? userPic : ``} - <div class="mx_body"> - <div class="mx_pull_right mx_date mx_details" title="${new Date(event.getTs())}"> - ${new Date(event.getTs()).toLocaleTimeString().slice(0, -3)} - </div> - ${!joined ? ` - <div class="mx_from_name ${getUserNameColorClass(event.getSender())}"> - ${event.sender.name} - </div>`: ``} - ${isReply ? - ` <div class="mx_reply_to mx_details"> - In reply to <a onclick="scrollToElement('${replyId}')">this message</a> - </div>`: ``} - ${messageBody} - </div> - </div> - `; - } - - protected async createHTML(events: MatrixEvent[], room: Room) { - let content = ""; - let prevEvent = null; - for (const event of events) { - // As the getContent of the edited event fetches the latest edit, there is no need to process edit events - if (this.isEdit(event)) continue; - content += this.dateSeparator(event, prevEvent); - - if (event.getType() === "m.room.message") { - const replyTo = this.getBaseEventId(event); - const shouldBeJoined = prevEvent && prevEvent.getContent().msgtype === "m.text" - && event.sender.userId === prevEvent.sender.userId && !this.dateSeparator(event, prevEvent) && !replyTo; - - const body = await this.createMessageBody(event, shouldBeJoined, !!replyTo, replyTo); - content += body; - } else { - const eventText = textForEvent(event); - content += eventText ? ` - <div class="mx_message mx_service" id="${event.getId()}"> - <div class="mx_body mx_details"> - ${textForEvent(event)} - </div> - </div> - ` : ""; - } - prevEvent = event; - } - return this.wrapHTML(content, room); - } - - public async export() { - const html = await this.createHTML(this.res, this.room); - - this.zip.file("index.html", html); - this.zip.file("css/style.css", css); - this.zip.file("js/script.js", js); - const filename = `matrix-export-${new Date().toISOString()}.zip`; - - //Generate the zip file asynchronously - const blob = await this.zip.generateAsync({ type: "blob" }); - - //Support for firefox browser - streamSaver.WritableStream = ponyfill.WritableStream - //Create a writable stream to the directory - const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); - const writer = fileStream.getWriter(); - - // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. - // This can be used to keep track of the progress - const sliceSize = 10 * 1e6; - for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { - const blobPiece = blob.slice(fPointer, fPointer + sliceSize); - const reader = new FileReader(); - - const waiter = new Promise<void>((resolve, reject) => { - reader.onloadend = evt => { - const arrayBufferNew: any = evt.target.result; - const uint8ArrayNew = new Uint8Array(arrayBufferNew); - writer.write(uint8ArrayNew); - resolve(); - }; - reader.readAsArrayBuffer(blobPiece); - }); - await waiter; - } - writer.close(); - - return blob; - } -} - diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx new file mode 100644 index 0000000000..22cf04669b --- /dev/null +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -0,0 +1,242 @@ +import React from "react" +import streamSaver from "streamsaver"; +import JSZip from "jszip"; +import { decryptFile } from "../DecryptFile"; +import { mediaFromContent } from "../../customisations/Media"; +import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { Exporter } from "./Exporter"; +import * as ponyfill from "web-streams-polyfill/ponyfill" +import { renderToStaticMarkup } from 'react-dom/server' +import { Layout } from "../../settings/Layout"; +import { shouldFormContinuation } from "../../components/structures/MessagePanel"; +import { wantsDateSeparator } from "../../DateUtils"; +import { RoomPermalinkCreator } from "../permalinks/Permalinks"; +import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventTile"; +import DateSeparator from "../../components/views/messages/DateSeparator"; +import exportCSS from "./exportCSS"; +import exportJS from "./exportJS"; + +export default class HTMLExporter extends Exporter { + protected zip: JSZip; + protected avatars: Map<string, boolean>; + + constructor(res: MatrixEvent[], room: Room) { + super(res, room); + this.zip = new JSZip(); + this.avatars = new Map<string, boolean>(); + } + + protected wrapHTML(content: string, room: Room) { + return ` + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <link href="css/style.css" rel="stylesheet" /> + <script src="js/script.js"></script> + <title>Exported Data</title> + </head> + <body style="height: 100vh;"> + <section + id="matrixchat" + style="height: 100%; overflow: auto" + class="notranslate" + > + <div class="mx_MatrixChat_wrapper" aria-hidden="false"> + <div class="mx_MatrixChat"> + <main class="mx_RoomView"> + <div class="mx_RoomHeader light-panel"> + <div class="mx_RoomHeader_wrapper" aria-owns="mx_RightPanel"> + <div class="mx_RoomHeader_avatar"> + <div class="mx_DecoratedRoomAvatar"> + <span class="mx_BaseAvatar" role="presentation" + ><span + class="mx_BaseAvatar_initial" + aria-hidden="true" + style=" + font-size: 20.8px; + width: 32px; + line-height: 32px; + " + >G</span + ><img + class="mx_BaseAvatar_image" + alt="" + aria-hidden="true" + style="width: 32px; height: 32px" + /></span> + </div> + </div> + <div class="mx_RoomHeader_name"> + <div + dir="auto" + class="mx_RoomHeader_nametext" + title="${room.name}" + > + ${room.name} + </div> + </div> + <div class="mx_RoomHeader_topic" dir="auto"></div> + </div> + </div> + <div class="mx_MainSplit"> + <div class="mx_RoomView_body"> + <div + class="mx_RoomView_timeline mx_RoomView_timeline_rr_enabled" + > + <div + class=" + mx_AutoHideScrollbar + mx_ScrollPanel + mx_RoomView_messagePanel + mx_GroupLayout + " + > + <div class="mx_RoomView_messageListWrapper"> + <ol + class="mx_RoomView_MessageList" + aria-live="polite" + role="list" + > + ${content} + </ol> + </div> + </div> + </div> + <div class="mx_RoomView_statusArea"> + <div class="mx_RoomView_statusAreaBox"> + <div class="mx_RoomView_statusAreaBox_line"></div> + </div> + </div> + </div> + </div> + </main> + </div> + </div> + </section> + <div id="snackbar"/> + </body> + </html>` + } + + // will be used in the future + protected async getMediaBlob(event: MatrixEvent) { + let blob: Blob; + try { + const isEncrypted = event.isEncrypted(); + const content = event.getContent(); + if (isEncrypted) { + blob = await decryptFile(content.file); + } else { + const media = mediaFromContent(event.getContent()); + const image = await fetch(media.srcHttp); + blob = await image.blob(); + } + } catch (err) { + console.log("Error decrypting media"); + } + return blob; + } + + protected getDateSeparator(event: MatrixEvent) { + const ts = event.getTs(); + const dateSeparator = <li key={ts}><DateSeparator isExporting={true} key={ts} ts={ts} /></li>; + return renderToStaticMarkup(dateSeparator); + } + + protected _wantsDateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { + if (prevEvent == null) return true; + return wantsDateSeparator(prevEvent.getDate(), event.getDate()); + } + + protected async createMessageBody(mxEv: MatrixEvent, joined = false) { + const eventTile = <li id={mxEv.getId()}> + <EventTile + mxEvent={mxEv} + continuation={joined} + isRedacted={mxEv.isRedacted()} + replacingEventId={mxEv.replacingEventId()} + isExporting={true} + readReceipts={null} + readReceiptMap={null} + showUrlPreview={false} + checkUnmounting={() => false} + isTwelveHour={false} + last={false} + lastInSection={false} + permalinkCreator={new RoomPermalinkCreator(this.room)} + lastSuccessful={false} + isSelectedEvent={false} + getRelationsForEvent={null} + showReactions={false} + layout={Layout.Group} + enableFlair={false} + showReadReceipts={false} + /> + </li> + return renderToStaticMarkup(eventTile); + } + + protected async createHTML(events: MatrixEvent[], room: Room) { + let content = ""; + let prevEvent = null; + for (const event of events) { + if (!haveTileForEvent(event)) continue; + + content += this._wantsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; + + if (event.getType() === "m.room.message") { + const shouldBeJoined = !this._wantsDateSeparator(event, prevEvent) + && shouldFormContinuation(prevEvent, event); + const body = await this.createMessageBody(event, shouldBeJoined); + content += body; + } + prevEvent = event; + } + return this.wrapHTML(content, room); + } + + public async export() { + const html = await this.createHTML(this.res, this.room); + this.zip.file("index.html", html); + this.zip.file("css/style.css", exportCSS); + this.zip.file("js/script.js", exportJS); + + const filename = `matrix-export-${new Date().toISOString()}.zip`; + + //Generate the zip file asynchronously + const blob = await this.zip.generateAsync({ type: "blob" }); + + //Support for firefox browser + streamSaver.WritableStream = ponyfill.WritableStream + //Create a writable stream to the directory + const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); + const writer = fileStream.getWriter(); + + // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. + // This can be used to keep track of the progress + const sliceSize = 10 * 1e6; + for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { + const blobPiece = blob.slice(fPointer, fPointer + sliceSize); + const reader = new FileReader(); + + const waiter = new Promise<void>((resolve, reject) => { + reader.onloadend = evt => { + const arrayBufferNew: any = evt.target.result; + const uint8ArrayNew = new Uint8Array(arrayBufferNew); + writer.write(uint8ArrayNew); + resolve(); + }; + reader.readAsArrayBuffer(blobPiece); + }); + await waiter; + } + writer.close(); + + return blob; + } +} + diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts new file mode 100644 index 0000000000..5a63802097 --- /dev/null +++ b/src/utils/exportUtils/exportCSS.ts @@ -0,0 +1,62 @@ +/* eslint-disable max-len */ +const lightCSS = ` +@charset "utf-8";@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Regular.4232a67.woff2) format("woff2"),url(../../fonts/Inter/Inter-Regular.3a1908c.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Italic.b791861.woff2) format("woff2"),url(../../fonts/Inter/Inter-Italic.b13e6fe.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Medium.027d14e.woff2) format("woff2"),url(../../fonts/Inter/Inter-Medium.d1f6b6e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-MediumItalic.8154ac2.woff2) format("woff2"),url(../../fonts/Inter/Inter-MediumItalic.1912849.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBold.0802d48.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBold.8357f92.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBoldItalic.10a60d8.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBoldItalic.1c70752.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Bold.fc28dff.woff2) format("woff2"),url(../../fonts/Inter/Inter-Bold.025b6f2.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-BoldItalic.2129bd0.woff2) format("woff2"),url(../../fonts/Inter/Inter-BoldItalic.80f8542.woff) format("woff")}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.2aafaa1.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-display:swap;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.5476fd3.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.6bc411a.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.000abc6.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.hljs-addition{background:#dfd}.hljs-deletion{background:#fdd}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.mx_LeftPanel{background-image:unset;background-image:var(--avatar-url,unset);background-repeat:no-repeat;background-size:cover;background-position:0 0}.mx_GroupFilterPanel,.mx_SpacePanel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.mx_LeftPanel .mx_LeftPanel_roomListContainer{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}.mx_RoomSublist_showNButton{background-color:transparent!important}a:hover,a:link,a:visited{text-decoration:none}:root{font-size:10px;--transition-short:.1s;--transition-standard:.3s}@media (prefers-reduced-motion){:root{--transition-short:0;--transition-standard:0}}html{height:100%;overflow:hidden}body{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.5rem;background-color:#fff;color:#2e2f32;border:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code,pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji;font-size:100%!important}.error,.text-error,.text-warning,.warning{color:#ff4b55}.text-success{color:#0dbd8b}.text-muted{color:#61708b}b{font-weight:700}h2{color:#2e2f32;font-weight:400;font-size:1.8rem;margin-top:16px;margin-bottom:16px}a:hover,a:link,a:visited{color:#238cf5}input[type=password],input[type=search],input[type=text]{padding:9px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;font-weight:600;min-width:0}input[type=search].mx_textinput_icon,input[type=text].mx_textinput_icon{padding-left:36px;background-repeat:no-repeat;background-position:10px}input[type=search].mx_textinput_icon.mx_textinput_search,input[type=text].mx_textinput_icon.mx_textinput_search{background-image:url(../../img/feather-customised/search-input.044bfa7.svg)}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1}input::-ms-input-placeholder,textarea::-ms-input-placeholder{opacity:1}input::placeholder,textarea::placeholder{opacity:1}input[type=password],input[type=text],textarea{background-color:transparent;color:#2e2f32}textarea{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;color:#2e2f32}input[type=password]:focus,input[type=text]:focus,textarea:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}:focus:not(.focus-visible){outline:none}.mx_Dialog .mx_textinput>input[type=search],.mx_Dialog .mx_textinput>input[type=text],.mx_MatrixChat .mx_textinput>input[type=search],.mx_MatrixChat .mx_textinput>input[type=text]{border:none;-webkit-box-flex:1;-ms-flex:1;flex:1;color:#2e2f32}.mx_Dialog .mx_textinput,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text],.mx_MatrixChat .mx_textinput,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:transparent;color:#9fa9ba;border-radius:4px;border:1px solid rgba(46,47,50,.1);margin:9px}.mx_Dialog .mx_textinput,.mx_MatrixChat .mx_textinput{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dialog .mx_textinput input::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder,.mx_MatrixChat .mx_textinput input::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder,.mx_MatrixChat .mx_textinput input::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder,.mx_MatrixChat .mx_textinput input:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder,.mx_MatrixChat .mx_textinput input::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder,.mx_MatrixChat .mx_textinput input::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder{color:rgba(159,169,186,.75)}.dark-panel{background-color:#f2f5f8}.dark-panel .mx_textinput,.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#fff;border:none}.light-panel .mx_textinput,.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#f2f5f8;border:none}::-moz-focus-inner{border:0}#mx_theme_accentColor{color:#0dbd8b}#mx_theme_secondaryAccentColor{color:#f2f5f8}#mx_theme_tertiaryAccentColor{color:#d3efe1}.mx_Dialog_wrapper{position:fixed;z-index:4000;top:0;left:0;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_Dialog{background-color:#fff;color:#747474;z-index:4012;font-weight:300;font-size:1.5rem;position:relative;padding:24px;max-height:80%;-webkit-box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);border-radius:8px;overflow-y:auto}.mx_Dialog_fixedWidth{width:60vw;max-width:704px}.mx_Dialog_staticWrapper .mx_Dialog{z-index:4010}.mx_Dialog_background{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(46,48,51,.38);opacity:.8;z-index:4011}.mx_Dialog_background.mx_Dialog_staticBackground{z-index:4009}.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background{opacity:.4}.mx_Dialog_lightbox .mx_Dialog_background{opacity:.95;background-color:#000}.mx_Dialog_lightbox .mx_Dialog{border-radius:0;background-color:transparent;width:100%;height:100%;max-width:100%;max-height:100%;pointer-events:none;padding:0}.mx_Dialog_header{position:relative;margin-bottom:10px}.mx_Dialog_titleImage{vertical-align:sub;width:25px;height:25px;margin-left:-2px;margin-right:4px}.mx_Dialog_title{font-size:2.2rem;font-weight:600;line-height:3.6rem;color:#45474a}.mx_Dialog_header.mx_Dialog_headerWithButton>.mx_Dialog_title{text-align:center}.mx_Dialog_header.mx_Dialog_headerWithCancel>.mx_Dialog_title{margin-right:20px}.mx_Dialog_title.danger{color:#ff4b55}.mx_Dialog_cancelButton{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px;right:0}.mx_Dialog_content{margin:24px 0 68px;font-size:1.4rem;color:#2e2f32;word-wrap:break-word}.mx_Dialog_buttons{margin-top:20px;text-align:right}.mx_Dialog_buttons .mx_Dialog_buttons_additive{float:left}.mx_Dialog_buttons button,.mx_Dialog_buttons input[type=submit],.mx_Dialog button,.mx_Dialog input[type=submit]{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-left:0;margin-right:8px;font-weight:600;border:1px solid #0dbd8b;color:#0dbd8b;background-color:#fff;font-family:inherit}.mx_Dialog button:last-child{margin-right:0}.mx_Dialog_buttons button:focus,.mx_Dialog_buttons input[type=submit]:focus,.mx_Dialog button:focus,.mx_Dialog input[type=submit]:focus{-webkit-filter:brightness(105%);filter:brightness(105%)}.mx_Dialog_buttons button.mx_Dialog_primary,.mx_Dialog_buttons input[type=submit].mx_Dialog_primary,.mx_Dialog button.mx_Dialog_primary,.mx_Dialog input[type=submit].mx_Dialog_primary{color:#fff;background-color:#0dbd8b;min-width:156px}.mx_Dialog_buttons button.danger,.mx_Dialog_buttons input[type=submit].danger,.mx_Dialog button.danger,.mx_Dialog input[type=submit].danger{background-color:#ff4b55;border:1px solid #ff4b55;color:#fff}.mx_Dialog button.warning,.mx_Dialog input[type=submit].warning{border:1px solid #ff4b55;color:#ff4b55}.mx_Dialog_buttons button:disabled,.mx_Dialog_buttons input[type=submit]:disabled,.mx_Dialog button:disabled,.mx_Dialog input[type=submit]:disabled{background-color:#747474;border:1px solid #747474;opacity:.7}.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog{width:auto;border-radius:8px;padding:0;-webkit-box-shadow:none;box-shadow:none;overflow-x:hidden;overflow-y:hidden}.mx_GeneralButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;display:inline;margin:auto}.mx_linkButton{cursor:pointer;color:#0dbd8b}.mx_TextInputDialog_label{text-align:left;padding-bottom:12px}.mx_TextInputDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;font-size:1.5rem;padding:0 1.5em}.mx_button_row{margin-top:69px}.mx_Username_color1{color:#368bd6}.mx_Username_color2{color:#ac3ba8}.mx_Username_color3{color:#0dbd8b}.mx_Username_color4{color:#e64f7a}.mx_Username_color5{color:#ff812d}.mx_Username_color6{color:#2dc2c5}.mx_Username_color7{color:#5c56f5}.mx_Username_color8{color:#74d12c}.mx_Tooltip_dark .mx_Tooltip_chevron:after{border-right-color:#27303a}html{scrollbar-color:rgba(0,0,0,.2) transparent}*{scrollbar-width:thin}::-webkit-scrollbar{width:6px;height:6px;background-color:transparent}::-webkit-scrollbar-thumb{border-radius:3px;background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar:hover{scrollbar-color:rgba(0,0,0,.2) transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar{background-color:transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar{overflow-x:hidden;overflow-y:auto;overflow-y:overlay;-ms-overflow-style:-ms-autohiding-scrollbar}.mx_AutoHideScrollbar::-webkit-scrollbar,.mx_AutoHideScrollbar::-webkit-scrollbar-thumb{background-color:transparent}.mx_AutoHideScrollbar{scrollbar-color:transparent transparent}.mx_CompatibilityPage{width:100%;height:100%;background-color:#e55}.mx_CompatibilityPage_box{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;width:500px;height:300px;border:1px solid;padding:10px;background-color:#fcc}.mx_ContextualMenu_wrapper{position:fixed;z-index:5000}.mx_ContextualMenu_background{position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;z-index:5000}.mx_ContextualMenu{border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);background-color:#fff;color:#2e2f32;position:absolute;font-size:1.4rem;z-index:5001}.mx_ContextualMenu_right{right:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_right{right:8px}.mx_ContextualMenu_chevron_right{position:absolute;right:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_left{left:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_left{left:8px}.mx_ContextualMenu_chevron_left{position:absolute;left:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_top{top:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_top{top:8px}.mx_ContextualMenu_chevron_top{position:absolute;left:0;top:-8px;width:0;height:0;border-left:8px solid transparent;border-bottom:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_bottom{bottom:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom{bottom:8px}.mx_ContextualMenu_chevron_bottom{position:absolute;left:0;bottom:-8px;width:0;height:0;border-left:8px solid transparent;border-top:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_spinner{display:block;margin:0 auto}.mx_CreateRoom{width:960px;margin-left:auto;margin-right:auto;color:#2e2f32}.mx_CreateRoom input,.mx_CreateRoom textarea{border-radius:3px;border:1px solid #c7c7c7;font-weight:300;font-size:1.3rem;padding:9px;margin-top:6px}.mx_CreateRoom_description{width:330px}.mx_CustomRoomTagPanel{background-color:hsla(0,0%,91%,.77);max-height:40vh}.mx_CustomRoomTagPanel_scroller{max-height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CustomRoomTagPanel .mx_AccessibleButton{margin:0 auto;width:40px;padding:10px 0 9px;position:relative}.mx_CustomRoomTagPanel .mx_BaseAvatar_image{-webkit-box-sizing:border-box;box-sizing:border-box;width:40px;height:40px}.mx_CustomRoomTagPanel .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before{content:"";height:56px;background-color:#238cf5;width:5px;position:absolute;left:-9px;border-radius:0 3px 3px 0;top:5px}.mx_FilePanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_FilePanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_FilePanel .mx_RoomView_MessageList{width:100%}.mx_FilePanel .mx_EventTile_avatar,.mx_FilePanel .mx_RoomView_MessageList h2{display:none}.mx_FilePanel .mx_EventTile{word-break:break-word;margin-top:32px}.mx_FilePanel .mx_EventTile .mx_MImageBody{margin-right:0}.mx_FilePanel .mx_EventTile .mx_MFileBody{line-height:2.4rem}.mx_FilePanel .mx_EventTile .mx_MFileBody_download{padding-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.4rem;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#747474}.mx_FilePanel .mx_EventTile .mx_MImageBody_size{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;font-size:1.4rem;text-align:right;white-space:nowrap}.mx_FilePanel .mx_EventTile_senderDetails{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:-2px}.mx_FilePanel .mx_EventTile_senderDetailsLink{text-decoration:none}.mx_FilePanel .mx_EventTile .mx_SenderProfile{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;line-height:normal;padding:0;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MessageTimestamp{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;text-align:right;visibility:visible;position:static;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile_line{margin-right:0;padding-left:0}.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_FilePanel_empty:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_GenericErrorPage{width:100%;height:100%;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GenericErrorPage_box{display:inline;width:500px;min-height:125px;border:1px solid #f22;padding:10px 10px 20px;background-color:#fcc}.mx_GroupFilterPanel{-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:hsla(0,0%,91%,.77);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:0}.mx_GroupFilterPanel_items_selected{cursor:pointer}.mx_GroupFilterPanel .mx_GroupFilterPanel_divider{height:0;width:90%;border:none;border-bottom:1px solid #8d99a5}.mx_GroupFilterPanel .mx_GroupFilterPanel_scroller{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:6px}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer>div{margin:6px 0}.mx_GroupFilterPanel .mx_TagTile{position:relative}.mx_GroupFilterPanel .mx_TagTile .mx_BetaDot{position:absolute;right:-13px;top:-11px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype{padding:3px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype{background-color:#fff;border-radius:6px}.mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before{background-color:#2e2f32}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon{background-color:rgba(92,100,112,.2);border-radius:48px}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before{background-color:#5c6470}.mx_TagTile_homeIcon{width:32px;height:32px;position:relative}.mx_TagTile_homeIcon:before{-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:21px;mask-size:21px;content:"";display:inline-block;width:32px;height:32px;position:absolute;top:calc(50% - 16px);left:calc(50% - 16px)}.mx_GroupFilterPanel .mx_TagTile_plus{margin-bottom:12px;height:32px;width:32px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative;display:block!important}.mx_GroupFilterPanel .mx_TagTile_plus:before{background-color:#5c6470;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before{content:"";height:100%;background-color:#0dbd8b;width:4px;position:absolute;left:-12px;border-radius:0 3px 3px 0}.mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_TagTile_tooltip{position:relative;top:-30px;left:5px}.mx_TagTile_context_button{min-width:15px;height:15px;position:absolute;right:-5px;top:-8px;border-radius:8px;background-color:#dbdbdb;color:#000;font-weight:600;font-size:1rem;text-align:center;padding-top:1px;padding-left:4px;padding-right:4px}.mx_TagTile_avatar{position:relative}.mx_TagTile_badge{position:absolute;right:-4px;top:-2px;border-radius:8px;color:#fff;font-weight:600;font-size:1.4rem;padding:0 5px;background-color:#61708b}.mx_TagTile_badgeHighlight{background-color:#ff4b55}.mx_GroupView{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_GroupView_error{margin:auto}.mx_GroupView_header{min-height:52px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:10px;padding-left:19px}.mx_GroupView_header_view{border-bottom:1px solid transparent;padding-bottom:0;padding-right:8px}.mx_GroupView_header_avatar,.mx_GroupView_header_info{display:table-cell;vertical-align:middle}.mx_GroupHeader_button{position:relative;margin-left:5px;margin-right:5px;cursor:pointer;height:20px;width:20px}.mx_GroupHeader_button:before{content:"";position:absolute;height:20px;width:20px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_GroupHeader_editButton:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_GroupHeader_shareButton:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_GroupView_hostingSignup img{margin-left:5px}.mx_GroupView_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_GroupView_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable){color:#0dbd8b;cursor:pointer}.mx_GroupView_avatarPicker{position:relative}.mx_GroupView_avatarPicker_edit{position:absolute;top:50px;left:15px}.mx_GroupView_avatarPicker .mx_Spinner{width:48px;height:48px!important}.mx_GroupView_header_leftCol{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.mx_GroupView_header_rightCol{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupView_textButton{display:inline-block}.mx_GroupView_header_groupid{font-weight:400;font-size:medium;padding-left:10px}.mx_GroupView_header_name{vertical-align:middle;width:100%;height:31px;color:#2e2f32;font-weight:700;font-size:2.2rem;padding-right:16px}.mx_GroupView_header_name,.mx_GroupView_header_shortDesc{overflow:hidden;padding-left:19px;text-overflow:ellipsis;border-bottom:1px solid transparent}.mx_GroupView_header_shortDesc{vertical-align:bottom;float:left;max-height:42px;color:#a2a2a2;font-weight:300;font-size:1.3rem;margin-right:16px}.mx_GroupView_avatarPicker_label{cursor:pointer}.mx_GroupView_cancelButton{padding-left:8px}.mx_GroupView_cancelButton img{position:relative;top:5px}.mx_GroupView input[type=radio]{margin:10px 10px 0}.mx_GroupView_label_text{display:inline-block;max-width:80%;vertical-align:.1em;line-height:2em}.mx_GroupView_body{margin:0 24px}.mx_GroupView_body,.mx_GroupView_rooms{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_GroupView_rooms{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView h3{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;margin-bottom:10px}.mx_GroupView_rooms_header .mx_AccessibleButton{padding-left:14px;margin-bottom:14px;height:24px}.mx_GroupView_group{border-top:1px solid transparent}.mx_GroupView_group_disabled{opacity:.3;pointer-events:none}.mx_GroupView_rooms_header_addRow_button{display:inline-block}.mx_GroupView_rooms_header_addRow_button object{pointer-events:none}.mx_GroupView_rooms_header_addRow_label{display:inline-block;vertical-align:top;line-height:2.4rem;padding-left:28px;color:#0dbd8b}.mx_GroupView_rooms .mx_RoomDetailList{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border-top:1px solid transparent;padding-top:10px;word-break:break-word}.mx_GroupView .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_GroupView_membershipSection{color:#888;margin-top:10px}.mx_GroupView_membershipSubSection{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:8px}.mx_GroupView_membershipSubSection .mx_Spinner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_GroupView_membershipSection_description{line-height:3.4rem}.mx_GroupView_membershipSection_description .mx_BaseAvatar{margin-right:10px}.mx_GroupView_membershipSection .mx_GroupView_textButton{margin-right:0;margin-top:0;margin-left:8px}.mx_GroupView_memberSettings_toggle label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView_memberSettings input{margin-right:6px}.mx_GroupView_featuredThings{margin-top:20px}.mx_GroupView_featuredThings_header{font-weight:700;font-size:120%;margin-bottom:20px}.mx_GroupView_featuredThings_category{font-weight:700;font-size:110%;margin-top:10px}.mx_GroupView_featuredThings_container{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_GroupView_featuredThing,.mx_GroupView_featuredThings_addButton{display:table-cell;text-align:center;width:100px;margin:0 20px}.mx_GroupView_featuredThing{position:relative}.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton{position:absolute;top:-7px;right:11px;opacity:.4}.mx_GroupView_featuredThing .mx_BaseAvatar{vertical-align:baseline;vertical-align:initial}.mx_GroupView_featuredThings_addButton object{pointer-events:none}.mx_GroupView_featuredThing_name{word-wrap:break-word}.mx_GroupView_uploadInput{display:none}.mx_GroupView_body .mx_AutoHideScrollbar>*{margin:11px 50px 50px 68px}.mx_GroupView_groupDesc textarea{width:100%;max-width:100%;height:150px}.mx_GroupView_changeDelayWarning,.mx_GroupView_groupDesc_placeholder{background-color:#f7f7f7;color:#888;border-radius:10px;text-align:center;margin:20px 0}.mx_GroupView_groupDesc_placeholder{padding:100px 20px;cursor:pointer}.mx_GroupView_changeDelayWarning{padding:40px 20px}.mx_GroupView .mx_MemberInfo .mx_AutoHideScrollbar>:not(.mx_MemberInfo_avatar){padding-left:16px;padding-right:16px}.mx_HeaderButtons{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_buttons+.mx_HeaderButtons:before{content:unset}.mx_HeaderButtons:before{content:"";background-color:#91a1c0;opacity:.5;margin:6px 8px;border-radius:1px;width:1px}.mx_HomePage{max-width:960px;width:100%;height:100%;margin-left:auto;margin-right:auto}.mx_HomePage_default{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HomePage_default .mx_HomePage_default_wrapper{margin:auto}.mx_HomePage_default img{height:48px}.mx_HomePage_default h1{font-weight:600;font-size:3.2rem;line-height:4.4rem;margin-bottom:4px}.mx_HomePage_default h4{margin-top:4px;font-weight:600;font-size:1.8rem;line-height:2.5rem;color:#61708b}.mx_HomePage_default .mx_MiniAvatarUploader{margin:0 auto}.mx_HomePage_default .mx_HomePage_default_buttons{margin:60px auto 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton{padding:73px 8px 15px;width:160px;height:132px;margin:20px;position:relative;display:inline-block;border-radius:8px;vertical-align:top;word-break:break-word;-webkit-box-sizing:border-box;box-sizing:border-box;font-weight:600;font-size:1.5rem;line-height:2rem;color:#fff;background-color:#0dbd8b}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before{top:20px;left:60px;width:40px;height:40px;content:"";position:absolute;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_sendDm:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_createGroup:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_LeftPanel{background-color:hsla(0,0%,96.1%,.9);min-width:206px;max-width:50%;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:56px;flex-basis:56px;height:100%;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer,.mx_LeftPanel .mx_LeftPanel_roomListContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanel .mx_LeftPanel_roomListContainer{background-color:hsla(0,0%,96.1%,.9);-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{padding:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer{overflow-y:hidden;overflow-x:scroll;margin:12px 12px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));mask-image:linear-gradient(90deg,transparent,#000 5%)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,#000,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,#000,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{margin-left:12px;margin-right:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton{-ms-flex-preferred-size:0;flex-basis:0;margin:0;width:0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton:before,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton:before{content:none}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{width:32px;height:32px;border-radius:8px;background-color:rgba(141,151,165,.2);position:relative;margin-left:8px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton:before{content:"";position:absolute;top:8px;left:8px;width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton.mx_LeftPanel_exploreButton_space:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListFilterCount{font-size:1.3rem;font-weight:600;margin-left:12px;margin-top:14px;margin-bottom:-4px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper{overflow:hidden;margin-top:10px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom{padding-bottom:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop{padding-top:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_actualRoomListContainer{position:relative;height:100%}.mx_LeftPanel.mx_LeftPanel_minimized{min-width:unset;width:unset!important}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer{width:68px}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{margin-left:0;margin-top:8px;background-color:transparent}.mx_LeftPanelWidget{margin-left:8px;margin-bottom:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:24px;color:#8d99a5;margin-top:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn.mx_LeftPanelWidget_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column;overflow:visible}.mx_LeftPanelWidget .mx_AppTileFullWidth,.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanelWidget .mx_AppTileFullWidth{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;overflow:hidden;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle{cursor:ns-resize;border-radius:3px;width:unset!important;height:4px!important;position:absolute;top:-24px!important;left:calc(50% - 32px)!important;right:calc(50% - 32px)!important}.mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton{margin-left:8px;margin-right:7px;position:relative;width:24px;height:24px;border-radius:32px}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg);background:#61708b}.mx_LeftPanelWidget_maximizeButtonTooltip{margin-top:-3px}.mx_MainSplit{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:0;min-height:0;height:100%}.mx_MainSplit>.mx_RightPanel_ResizeWrapper{padding:5px;margin-left:8px;height:calc(100vh - 51px)}.mx_MainSplit>.mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle{top:50%!important;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px!important;width:4px!important;border-radius:4px!important;background-color:#2e2f32;opacity:.8}.mx_MatrixChat_splash{position:relative;height:100%}.mx_MatrixChat_splashButtons{text-align:center;width:100%;position:absolute;bottom:30px}.mx_MatrixChat_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%}.mx_MatrixToolbar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;height:40px}.mx_MatrixChat{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_MatrixChat_syncError{color:#fff;background-color:#df2a8b;border-radius:5px;display:table;padding:30px;position:absolute;top:100px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.mx_MatrixChat>:not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle){background-color:#fff;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;height:100%}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover{position:relative}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover:before{position:absolute;left:6px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:" ";background-color:#2e2f32;opacity:.8}.mx_MyGroups{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MyGroups .mx_BetaCard{margin:0 72px;max-width:760px}.mx_MyGroups .mx_RoomHeader_simpleHeader{margin-left:0}.mx_MyGroups_header{margin-left:2px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_MyGroups>:not(.mx_RoomHeader):not(.mx_BetaCard){max-width:960px;margin:40px}.mx_MyGroups_headerCard{-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%;margin-bottom:30px;min-width:400px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:13px;height:40px;width:40px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before{background-color:#5c6470;-webkit-mask:url(../../img/icons-create-room.817ede2.svg);mask:url(../../img/icons-create-room.817ede2.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_MyGroups_headerCard_header{font-weight:700;margin-bottom:10px}.mx_MyGroups_headerCard_content{padding-right:15px}.mx_MyGroups_joinBox{visibility:hidden;height:0;margin:0}.mx_MyGroups_content{margin-left:2px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_MyGroups_scrollable{overflow-y:inherit}.mx_MyGroups_placeholder{background-color:#f7f7f7;color:#888;line-height:40rem;border-radius:10px;text-align:center}.mx_MyGroups_joinedGroups{border-top:1px solid transparent;overflow-x:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}.mx_MyGroups_joinedGroups .mx_GroupTile{min-width:300px;max-width:33%;-webkit-box-flex:1;-ms-flex:1 0 300px;flex:1 0 300px;height:75px;margin:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer}.mx_GroupTile_avatar{cursor:-webkit-grab,-webkit-grab;cursor:grab,-webkit-grab}.mx_GroupTile_profile{margin-left:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GroupTile_profile .mx_GroupTile_desc,.mx_GroupTile_profile .mx_GroupTile_groupId,.mx_GroupTile_profile .mx_GroupTile_name{padding-right:10px}.mx_GroupTile_profile .mx_GroupTile_name{margin:0;font-size:1.5rem}.mx_GroupTile_profile .mx_GroupTile_groupId{font-size:1.3rem;opacity:.7}.mx_GroupTile_profile .mx_GroupTile_desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.3rem;max-height:36px;overflow:hidden}.mx_NonUrgentToastContainer{position:absolute;bottom:30px;left:28px;z-index:101}.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast{padding:10px 12px;border-radius:8px;width:320px;font-size:1.3rem;margin-top:8px;background-color:#17191c;color:#fff}.mx_NotificationPanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationPanel .mx_RoomView_MessageList{width:100%}.mx_NotificationPanel .mx_RoomView_MessageList h2{margin-left:0}.mx_NotificationPanel .mx_EventTile{word-break:break-word;position:relative;padding-bottom:18px}.mx_NotificationPanel .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after{position:absolute;bottom:0;left:0;right:0;background-color:#8d99a5;height:1px;opacity:.4;content:""}.mx_NotificationPanel .mx_EventTile_roomName{font-weight:700;font-size:1.4rem}.mx_NotificationPanel .mx_EventTile_roomName>*{vertical-align:middle}.mx_NotificationPanel .mx_EventTile_roomName>.mx_BaseAvatar{margin-right:8px}.mx_NotificationPanel .mx_EventTile_roomName a{color:#2e2f32}.mx_NotificationPanel .mx_EventTile_avatar{display:none}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp,.mx_NotificationPanel .mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.2rem;display:inline;padding-left:0}.mx_NotificationPanel .mx_EventTile_senderDetails{padding-left:36px;position:relative}.mx_NotificationPanel .mx_EventTile_senderDetails a{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_EventTile_roomName a,.mx_NotificationPanel .mx_EventTile_senderDetails a{text-decoration:none!important}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp{visibility:visible;position:static;display:inline}.mx_NotificationPanel .mx_EventTile_line{margin-right:0;padding:0 0 0 36px}.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_NotificationPanel .mx_EventTile_content{margin-right:0}.mx_NotificationPanel_empty:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RightPanel{overflow-x:hidden;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:8px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.mx_RightPanel .mx_RoomView_MessageList{padding:14px 18px}.mx_RightPanel_header{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;border-bottom:1px solid transparent;-webkit-box-flex:0;-ms-flex:0 0 52px;flex:0 0 52px}.mx_RightPanel_headerButtonGroup{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#fff;padding:0 9px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RightPanel_headerButton{cursor:pointer;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1px;margin-right:1px;height:32px;width:32px;position:relative;border-radius:100%}.mx_RightPanel_headerButton:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RightPanel_headerButton:hover{background:rgba(13,189,139,.1)}.mx_RightPanel_headerButton:hover:before{background-color:#0dbd8b}.mx_RightPanel_notifsButton:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomSummaryButton:before{-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_groupMembersButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomsButton:before{-webkit-mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_headerButton_highlight:before{background-color:#0dbd8b!important}.mx_RightPanel_headerButton_badge{font-size:.8rem;border-radius:8px;color:#fff;background-color:#0dbd8b;font-weight:700;position:absolute;top:-4px;left:20px;padding:2px 4px}.mx_RightPanel_collapsebutton{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;height:16px;border:none}.mx_RightPanel .mx_GroupRoomList,.mx_RightPanel .mx_MemberInfo,.mx_RightPanel .mx_MemberList,.mx_RightPanel_blank{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RightPanel .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:auto}.mx_RightPanel_empty{margin-right:-28px}.mx_RightPanel_empty h2{font-weight:700;margin:16px 0}.mx_RightPanel_empty h2,.mx_RightPanel_empty p{font-size:1.4rem}.mx_RightPanel_empty:before{content:"";display:block;margin:11px auto 29px;height:42px;width:42px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_RightPanel_scopeHeader{margin:24px;text-align:center;font-weight:600;font-size:1.8rem;line-height:2.2rem}.mx_RightPanel_scopeHeader .mx_BaseAvatar{margin-right:8px;vertical-align:middle}.mx_RightPanel_scopeHeader .mx_BaseAvatar_image{border-radius:8px}.mx_RoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_RoomDirectory_dialog{height:100%;flex-direction:column}.mx_RoomDirectory,.mx_RoomDirectory_dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory{margin-bottom:12px;color:#2e2f32;word-break:break-word}.mx_RoomDirectory,.mx_RoomDirectory_list{flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_RoomDirectory_list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory_list .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomDirectory_listheader{display:block;margin-top:13px}.mx_RoomDirectory_searchbox{-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important}.mx_RoomDirectory_listheader .mx_NetworkDropdown{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.mx_RoomDirectory_tableWrapper{overflow-y:auto;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomDirectory_table{color:#2e2f32;display:grid;font-size:1.2rem;grid-template-columns:-webkit-max-content auto -webkit-max-content -webkit-max-content -webkit-max-content;grid-template-columns:max-content auto max-content max-content max-content;grid-row-gap:24px;row-gap:24px;text-align:left;width:100%}.mx_RoomDirectory_roomAvatar{padding:2px 14px 0 0}.mx_RoomDirectory_roomMemberCount{-ms-flex-item-align:center;align-self:center;color:#747474;padding:3px 10px 0}.mx_RoomDirectory_roomMemberCount:before{background-color:#747474;display:inline-block;vertical-align:text-top;margin-right:2px;content:"";-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;width:16px;height:16px}.mx_RoomDirectory_join,.mx_RoomDirectory_preview{-ms-flex-item-align:center;align-self:center;white-space:nowrap}.mx_RoomDirectory_name{display:inline-block;font-size:1.8rem;font-weight:600}.mx_RoomDirectory_perms{display:inline-block}.mx_RoomDirectory_perm{border-radius:10px;display:inline-block;height:20px;line-height:2rem;padding:0 5px;color:#fff;background-color:#aaa}.mx_RoomDirectory_topic{cursor:auto;color:#747474;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.mx_RoomDirectory_alias{font-size:1.2rem;color:#a2a2a2}.mx_RoomDirectory_table tr{padding-bottom:10px;cursor:pointer}.mx_RoomDirectory .mx_RoomView_MessageList{padding:0}.mx_RoomDirectory>span{font-size:1.5rem;margin-top:0}.mx_RoomDirectory>span .mx_AccessibleButton{padding:0}.mx_RoomSearch{-webkit-box-flex:1;-ms-flex:1;flex:1;border-radius:8px;background-color:rgba(141,151,165,.2);border:1px solid transparent;height:28px;padding:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSearch .mx_RoomSearch_icon{width:16px;height:16px;-webkit-mask:url(../../img/element-icons/roomlist/search.3774248.svg);mask:url(../../img/element-icons/roomlist/search.3774248.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-left:7px}.mx_RoomSearch .mx_RoomSearch_input{border:none!important;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important;padding:0;height:100%;width:100%;font-size:1.2rem;line-height:1.6rem}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder{color:#8d99a5!important}.mx_RoomSearch.mx_RoomSearch_hasQuery{border-color:#737d8c}.mx_RoomSearch.mx_RoomSearch_focused{-webkit-box-shadow:0 0 4px 4px rgba(0,132,255,.5);box-shadow:0 0 4px 4px rgba(0,132,255,.5);border-color:transparent}.mx_RoomSearch.mx_RoomSearch_focused,.mx_RoomSearch.mx_RoomSearch_hasQuery{background-color:#fff}.mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton,.mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton{width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-right:8px}.mx_RoomSearch .mx_RoomSearch_clearButton{width:0;height:0}.mx_RoomSearch.mx_RoomSearch_minimized{border-radius:32px;height:auto;width:auto;padding:8px}.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon{margin-left:0}.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){margin-left:65px;min-height:50px}.mx_RoomStatusBar_typingIndicatorAvatars{width:52px;margin-top:-1px;text-align:left}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image{margin-right:-12px;border:1px solid #fff}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial{padding-left:1px;padding-top:1px}.mx_RoomStatusBar_typingIndicatorRemaining{display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center;position:absolute}.mx_RoomStatusBar_scrollDownIndicator{cursor:pointer;padding-left:1px}.mx_RoomStatusBar_unreadMessagesBar{padding-top:10px;color:#ff4b55;cursor:pointer}.mx_RoomStatusBar_connectionLostBar{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:19px;min-height:58px}.mx_RoomStatusBar_unsentMessages>div[role=alert]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:70px;margin:12px;padding-left:16px;background-color:#f3f8fd;border-radius:4px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge{margin-right:12px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge{width:24px!important;height:24px!important;border-radius:24px!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge .mx_NotificationBadge_count{font-size:1.6rem!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle{color:#ff4b55;font-size:1.5rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription{font-size:1.2rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:right;margin-right:22px;color:#61708b}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton{padding:5px 10px 5px 28px;display:inline-block;position:relative}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:nth-child(2){border-left:1px solid #e3e8f0}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:before{content:"";position:absolute;left:10px;background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);width:12px;height:16px;top:calc(50% - 8px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn{padding-left:34px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;top:calc(50% - 9px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner{vertical-align:middle;margin-right:5px;top:1px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner+span{margin-right:10px}.mx_RoomStatusBar_connectionLostBar img{padding-left:10px;padding-right:10px;vertical-align:middle;float:left}.mx_RoomStatusBar_connectionLostBar_title{color:#ff4b55}.mx_RoomStatusBar_connectionLostBar_desc{color:#2e2f32;font-size:1.3rem;opacity:.5;padding-bottom:20px}.mx_RoomStatusBar_resend_link{color:#2e2f32!important;text-decoration:underline!important;cursor:pointer}.mx_RoomStatusBar_typingBar{height:50px;line-height:5rem;color:#2e2f32;opacity:.5;overflow-y:hidden;display:block}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){min-height:40px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator{margin-top:10px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar{height:40px;line-height:4rem}.mx_RoomView{word-wrap:break-word;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@-webkit-keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}@keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}.mx_RoomView_fileDropTarget{min-width:0;width:100%;height:100%;font-size:1.8rem;text-align:center;pointer-events:none;background-color:#fff;opacity:.95;position:absolute;z-index:3000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-animation:mx_RoomView_fileDropTarget_animation;animation:mx_RoomView_fileDropTarget_animation;-webkit-animation-duration:.5s;animation-duration:.5s}@-webkit-keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}@keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}.mx_RoomView_fileDropTarget_image{-webkit-animation:mx_RoomView_fileDropTarget_image_animation;animation:mx_RoomView_fileDropTarget_image_animation;-webkit-animation-duration:.5s;animation-duration:.5s;margin-bottom:16px}.mx_RoomView_auxPanel{min-width:0;width:100%;margin:0 auto;overflow:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomView_auxPanel_fullHeight{position:absolute;top:0;bottom:0;left:0;right:0;z-index:3000;background-color:#fff}.mx_RoomView_auxPanel_hiddenHighlights{border-bottom:1px solid transparent;padding:10px 26px;color:#ff4b55;cursor:pointer}.mx_RoomView_auxPanel_apps{max-width:1920px!important}.mx_RoomView .mx_MainSplit,.mx_RoomView_messagePanel{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomView_messagePanel{width:100%;overflow-y:auto;overflow-anchor:none}.mx_RoomView_messagePanelSearchSpinner{-webkit-box-flex:1;-ms-flex:1;flex:1;background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-position:center 367px;background-size:25px;background-repeat:no-repeat;position:relative}.mx_RoomView_messagePanelSearchSpinner:before{background-color:#888;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:50px;mask-size:50px;content:"";position:absolute;top:286px;left:0;right:0;height:50px}.mx_RoomView_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_RoomView_body .mx_RoomView_messagePanel,.mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner,.mx_RoomView_body .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_RoomView_body .mx_RoomView_timeline{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomView_statusArea{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;max-height:0;background-color:#fff;z-index:1000;overflow:hidden;-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.mx_RoomView_statusArea_expanded{max-height:100px}.mx_RoomView_statusAreaBox{margin:auto;min-height:50px}.mx_RoomView_statusAreaBox_line{margin-left:65px;border-top:1px solid transparent;height:1px}.mx_RoomView_messageListWrapper{min-height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomView_searchResultsPanel a{text-decoration:none;color:inherit}.mx_RoomView_empty{font-size:1.3rem;padding:0 24px;margin-right:30px;text-align:center;margin-bottom:80px}.mx_RoomView_MessageList{list-style-type:none;padding:18px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_RoomView_MessageList li{clear:both}li.mx_RoomView_myReadMarker_container{height:0;margin:0;padding:0;border:0}hr.mx_RoomView_myReadMarker{border-top:1px solid #0dbd8b;border-bottom:1px solid #0dbd8b;margin-top:0;position:relative;top:-1px;z-index:1;-webkit-transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;width:99%;opacity:1}.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner{background-color:#fff}.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename{color:#fff;opacity:1}.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line{margin-top:2px;border:none;height:0}.mx_RoomView_inCall .mx_MessageComposer_wrapper{border-top:2px hidden;padding-top:1px}.mx_RoomView_voipChevron{position:absolute;bottom:-11px;right:11px}.mx_RoomView_voipButton{float:right;margin-right:13px;margin-top:13px;cursor:pointer}.mx_RoomView_voipButton object{pointer-events:none}.mx_RoomView .mx_MessageComposer{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:2px}.mx_RoomView_ongoingConfCallNotification{width:100%;text-align:center;background-color:#ff4b55;color:#fff;font-weight:700;padding:6px 0;cursor:pointer}.mx_RoomView_ongoingConfCallNotification a{color:#fff!important}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox{min-height:42px}.mx_ScrollPanel .mx_RoomView_MessageList{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_SearchBox{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0}.mx_SearchBox.mx_SearchBox_blurred:not(:hover){background-color:transparent}.mx_SearchBox .mx_SearchBox_closeButton{cursor:pointer;background-image:url(../../img/icons-close.11ff07c.svg);background-repeat:no-repeat;width:16px;height:16px;background-position:50%;padding:9px}.mx_SpacePanel{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;background-color:hsla(0,0%,91%,.77);padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:8px 8px 16px 0}.mx_SpacePanel .mx_SpacePanel_toggleCollapse{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:40px;height:40px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:32px;mask-size:32px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;margin-left:16px;margin-bottom:12px;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg);mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg)}.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.mx_SpacePanel ul{margin:0;list-style:none;padding:0}.mx_SpacePanel ul>.mx_SpaceItem{padding-left:16px}.mx_SpacePanel .mx_SpaceButton_toggleCollapse{cursor:pointer}.mx_SpacePanel .mx_SpaceTreeLevel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:250px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_SpacePanel .mx_SpaceItem{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow{-ms-flex-item-align:baseline;align-self:baseline}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceButton>.mx_SpaceButton_toggleCollapse{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceTreeLevel{display:none}.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces)>.mx_SpaceButton{margin-left:16px;min-width:40px}.mx_SpacePanel .mx_SpaceButton{border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 4px 4px 0;width:100%}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow .mx_SpaceButton_selectionWrapper{padding:1px;border:3px solid #737d8c}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:12px;padding:4px}.mx_SpacePanel .mx_SpaceButton:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{width:100%;padding-right:16px;overflow:hidden}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:8px;white-space:nowrap;display:block;text-overflow:ellipsis;overflow:hidden;padding-right:8px;font-size:1.4rem;line-height:1.8rem}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse{width:16px;height:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon{width:32px;min-width:32px;height:32px;border-radius:8px;position:relative}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before{position:absolute;content:"";width:32px;height:32px;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:18px;mask-size:18px}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before{background-color:#3f3d3d;-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg)}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon{background-color:#0dbd8b;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before{background-color:#fff;-webkit-mask-image:url(../../img/element-icons/plus.62cc275.svg);mask-image:url(../../img/element-icons/plus.62cc275.svg);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon{background-color:#c1c6cd}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image{border-radius:8px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;display:none;position:absolute;right:4px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);background:#2e2f32}.mx_SpacePanel .mx_SpacePanel_badgeContainer{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge{margin:0 2px}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 7px}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer{right:0;top:0}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge{background-clip:padding-box}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 -1px 0 0;border:3px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_2char,.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_3char{margin:-5px -5px 0 0;border:2px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton.mx_SpaceButton_active .mx_SpacePanel_badgeContainer{right:-3px;top:-3px}.mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer{position:absolute;right:4px}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer{width:0;height:0;display:none}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton{display:block}.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton,.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton.mx_SpaceButton_active:before{height:32px}.mx_SpacePanel>.mx_AutoHideScrollbar>ul{padding-left:0}.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header{margin:12px 16px;font-weight:600;font-size:1.5rem;line-height:1.8rem}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton{color:#0dbd8b}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton .mx_SpacePanel_iconInvite:before{background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_SpacePanel_sharePublicSpace{margin:0}.mx_SpaceRoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_SpaceRoomDirectory{height:100%;margin-bottom:12px;color:#2e2f32;word-break:break-word;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_SpaceRoomDirectory,.mx_SpaceRoomDirectory .mx_Dialog_title,.mx_SpaceRoomView_landing .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar{margin-right:12px;-ms-flex-item-align:center;align-self:center}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory .mx_Dialog_title>div>h1,.mx_SpaceRoomView_landing .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_SpaceRoomDirectory .mx_Dialog_title>div>div,.mx_SpaceRoomView_landing .mx_Dialog_title>div>div{font-weight:400;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link,.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link{padding:0}.mx_SpaceRoomDirectory .mx_SearchBox,.mx_SpaceRoomView_landing .mx_SearchBox{margin:24px 0 16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults{text-align:center}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults>div,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults>div{font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:32px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton{padding:4px 12px;font-weight:400}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton{margin-left:16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline{padding:3px 12px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader>span,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader>span{margin-left:auto}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error{position:relative;font-weight:600;color:#ff4b55;font-size:1.5rem;line-height:1.8rem;margin:20px auto 12px;padding-left:24px;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before{content:"";position:absolute;height:16px;width:16px;left:0;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_SpaceRoomDirectory_list{margin-top:16px;padding-bottom:40px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>h3{display:inline;font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>span{margin-left:8px;font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle{position:absolute;left:-1px;top:10px;height:16px;width:16px;border-radius:4px;background-color:#fff}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before{content:"";position:absolute;top:0;left:0;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-size:16px;mask-size:16px;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children{position:relative;padding-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile{position:relative;padding:8px 16px;border-radius:8px;min-height:56px;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:20px auto -webkit-max-content;grid-template-columns:20px auto max-content;grid-column-gap:8px;grid-row-gap:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar{grid-row:1;grid-column:1}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name{font-weight:600;font-size:1.5rem;line-height:1.8rem;grid-row:1;grid-column:2}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip{display:inline;margin-left:12px;color:#8d99a5;font-size:1.2rem;line-height:1.5rem}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon{margin-right:4px;position:relative;vertical-align:text-top}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon:before{position:absolute;top:0;left:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_info{font-size:1.4rem;line-height:1.8rem;color:#737d8c;grid-row:2;grid-column:1/3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions{text-align:right;margin-left:20px;grid-column:3;grid-row:1/3}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton{line-height:2.4rem;padding:4px 16px;display:inline-block;visibility:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_primary_outline{padding:3px 16px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_Checkbox{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;margin-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover{background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover .mx_AccessibleButton{visibility:visible}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before{content:"";position:absolute;background-color:hsla(0,0%,91%,.77);width:1px;height:100%;left:6px;top:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_actions .mx_SpaceRoomDirectory_actionsText{font-weight:400;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_SpaceRoomDirectory_list>hr{border:none;height:1px;background-color:rgba(141,151,165,.2);margin:20px 0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom{display:block;margin:16px auto 0;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child{padding:80px 60px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-height:100%;overflow-y:auto}.mx_SpaceRoomView .mx_MainSplit>div:first-child h1{margin:0;font-size:2.4rem;font-weight:600;color:#2e2f32;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_description{font-size:1.5rem;color:#737d8c;margin-top:12px;margin-bottom:24px;max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace .mx_AddExistingToSpace_content{height:calc(100vh - 360px);max-height:400px}.mx_SpaceRoomView .mx_MainSplit>div:first-child:not(.mx_SpaceRoomView_landing) .mx_SpaceFeedbackPrompt{width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons{display:block;margin-top:44px;width:428px;text-align:right}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons .mx_AccessibleButton_hasKind{padding:8px 22px;margin-left:16px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons input.mx_AccessibleButton{border:none}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field+.mx_Field{margin-top:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceRoomView .mx_SpaceRoomView_preview{padding:32px 24px!important;margin:auto;max-width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:2px 15px 30px rgba(0,0,0,.48);box-shadow:2px 15px 30px rgba(0,0,0,.48);border-radius:8px;position:relative}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill{position:absolute;right:24px;top:32px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt{font-weight:600;font-size:1.4rem;line-height:2.4rem;color:#2e2f32;margin-top:24px;position:relative;padding-left:24px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt .mx_AccessibleButton_kind_link{display:inline;padding:0;font-size:inherit;line-height:inherit}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt:before{content:"";position:absolute;height:2.4rem;width:20px;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);background-color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;font-size:1.5rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div{margin-left:8px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_name{line-height:1.8rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_mxid{line-height:2.4rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name{margin:20px 0!important}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic{font-size:1.4rem;line-height:2.2rem;color:#737d8c;margin:20px 0;max-height:160px;overflow-y:auto}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons{margin-top:20px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton{width:200px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 0}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name{margin:24px 0 16px;font-size:1.5rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name>span{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow{margin-top:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow>h1{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_inviter .mx_BaseAvatar{margin-right:4px;vertical-align:middle}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_info{display:inline-block;margin:0 auto 0 0}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile{display:inline-block;margin-right:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile .mx_FacePile_faces{cursor:pointer}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton{position:relative;padding:4px 18px 4px 40px;line-height:2.4rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton:before{position:absolute;content:"";left:8px;height:16px;width:16px;background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton{position:relative;margin-left:16px;width:24px;height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton:before{position:absolute;content:"";left:0;top:0;height:24px;width:24px;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic{font-size:1.5rem;margin-top:12px;margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>hr{border:none;height:1px;background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox{margin:0 0 20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt{margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt+hr{display:none}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>span{color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_justMeButton:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer{padding:58px 16px 16px;position:relative;border-radius:8px;background-color:#f3f8fd;max-width:428px;margin:20px 0 30px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer .mx_BetaCard_betaPill{position:absolute;left:16px;top:16px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons{color:#737d8c;margin-top:28px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton{position:relative;display:inline-block;padding-left:32px;line-height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton:before{content:"";position:absolute;height:24px;width:24px;top:0;left:0;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:32px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_SpaceRoomView_inviteTeammates_inviteDialogButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView_info{color:#737d8c;font-size:1.5rem;line-height:2.4rem;margin:20px 0}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public{padding-left:20px;position:relative}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{position:absolute;content:"";width:20px;height:20px;top:0;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{-webkit-mask-size:12px;mask-size:12px;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before{-webkit-mask-size:14px;mask-size:14px;-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link{color:inherit;position:relative;padding-left:16px}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before{content:"·";position:absolute;left:6px}.mx_SpaceFeedbackPrompt{margin-top:18px;margin-bottom:12px}.mx_SpaceFeedbackPrompt>hr{border:none;border-top:1px solid #e7e7e7;margin-bottom:12px}.mx_SpaceFeedbackPrompt>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:1.5rem;line-height:2.4rem}.mx_SpaceFeedbackPrompt>div>span{color:#737d8c;position:relative;padding-left:32px;font-size:inherit;line-height:inherit;margin-right:auto}.mx_SpaceFeedbackPrompt>div>span:before{content:"";position:absolute;left:0;top:2px;height:20px;width:20px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link{color:#0dbd8b;position:relative;padding:0 0 0 24px;margin-left:8px;font-size:inherit;line-height:inherit}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link:before{content:"";position:absolute;left:0;height:16px;width:16px;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);-webkit-mask-position:center;mask-position:center}.mx_TabbedView{padding:0 0 0 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;bottom:0;left:0;right:0;margin:8px 0 0}.mx_TabbedView_tabLabels{width:170px;max-width:170px;color:#45474a;position:fixed}.mx_TabbedView_tabLabel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:text-top;cursor:pointer;padding:8px 0;border-radius:8px;font-size:1.3rem;position:relative}.mx_TabbedView_tabLabel_active{background-color:#0dbd8b;color:#fff}.mx_TabbedView_maskedIcon{margin-left:8px;margin-right:16px;width:16px;height:16px;display:inline-block}.mx_TabbedView_maskedIcon:before{display:inline-block;background-color:#454545;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;width:16px;height:16px;-webkit-mask-position:center;mask-position:center;content:""}.mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon:before{background-color:#fff}.mx_TabbedView_tabLabel_text{vertical-align:middle}.mx_TabbedView_tabPanel{margin-left:240px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_TabbedView_tabPanel,.mx_TabbedView_tabPanelContent{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-height:0}.mx_TabbedView_tabPanelContent{overflow:auto}.mx_ToastContainer{position:absolute;top:0;left:70px;z-index:101;padding:4px;display:grid;grid-template-rows:1fr 14px 6px}.mx_ToastContainer.mx_ToastContainer_stacked:before{content:"";margin:0 4px;grid-row:2/4}.mx_ToastContainer .mx_Toast_toast,.mx_ToastContainer.mx_ToastContainer_stacked:before{grid-column:1;background-color:#f2f5f8;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.5);box-shadow:0 4px 20px rgba(0,0,0,.5);border-radius:8px}.mx_ToastContainer .mx_Toast_toast{grid-row:1/3;color:#2e2f32;overflow:hidden;display:grid;grid-template-columns:22px 1fr;grid-column-gap:8px;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;padding:8px}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before{content:"";width:22px;height:22px;grid-column:1;grid-row:1;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-size:100%;background-repeat:no-repeat}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title{grid-column:2}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon){padding-left:12px}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title{grid-column:1/-1}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description,.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{padding-right:8px}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2{grid-column:1/3;grid-row:1;margin:0;font-size:1.5rem;font-weight:600;display:inline;width:auto;vertical-align:middle}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title span{padding-left:8px;float:right;font-size:1.2rem;line-height:2.2rem;color:#61708b}.mx_ToastContainer .mx_Toast_toast .mx_Toast_body{grid-column:1/3;grid-row:2}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons{float:right;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_FormButton{min-width:96px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description{max-width:272px;overflow:hidden;text-overflow:ellipsis;margin:4px 0 11px;font-size:1.2rem}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description .mx_AccessibleButton_kind_link{font-size:inherit;padding:0}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a{text-decoration:none}.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail{color:#737d8c}.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID{font-size:1rem}.mx_UploadBar{padding-left:65px;position:relative}.mx_UploadBar .mx_ProgressBar{width:calc(100% - 40px)}.mx_UploadBar_filename{margin-top:5px;color:#61708b;position:relative;padding-left:22px;font-size:1.5rem;vertical-align:middle}.mx_UploadBar_filename:before{content:"";height:18px;width:18px;left:0;-webkit-mask-image:url(../../img/element-icons/upload.e2a53e0.svg);mask-image:url(../../img/element-icons/upload.e2a53e0.svg)}.mx_UploadBar_cancel,.mx_UploadBar_filename:before{position:absolute;top:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#61708b}.mx_UploadBar_cancel{right:0;height:16px;width:16px;margin-right:16px;-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg)}.mx_UserMenu{padding-right:6px}.mx_UserMenu.mx_UserMenu_prototype{margin-bottom:6px;padding-right:0}.mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons{margin-right:2px}.mx_UserMenu.mx_UserMenu_prototype:after{content:"";border-bottom:1px solid #2e2f32;opacity:.2;display:block;padding-top:8px}.mx_UserMenu .mx_UserMenu_headerButtons{width:16px;height:16px;position:relative;display:block}.mx_UserMenu .mx_UserMenu_headerButtons:before{content:"";width:16px;height:16px;position:absolute;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_UserMenu .mx_UserMenu_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer{position:relative;margin-right:8px;height:32px;padding:3px 0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer .mx_UserMenu_userAvatar{border-radius:32px;-o-object-fit:cover;object-fit:cover}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName,.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName{display:block}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName{color:#61708b;font-size:1.3rem;line-height:1.8rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName{font-weight:600;font-size:1.5rem;line-height:2rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd{width:24px;height:24px;margin-right:8px;position:relative}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before{content:"";position:absolute;width:24px;height:24px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_UserMenu.mx_UserMenu_minimized{padding-right:0}.mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer{margin-right:0}.mx_UserMenu_contextMenu{width:258px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype{padding-bottom:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header{padding-bottom:0;padding-top:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header:nth-child(n+2){padding-top:8px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr{width:85%;opacity:.2;border:none;border-bottom:1px solid #2e2f32}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList{margin-top:4px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList:before{border:none}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList>.mx_AccessibleButton{padding-top:2px;padding-bottom:2px}.mx_UserMenu_contextMenu.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{padding-top:16px;padding-bottom:16px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header{padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:calc(100% - 40px)}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name *{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_displayName{font-weight:700;font-size:1.5rem;line-height:2rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_userId{font-size:1.5rem;line-height:2.4rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_themeButton{min-width:32px;max-width:32px;width:32px;height:32px;margin-left:8px;border-radius:32px;background-color:#e3e8f0;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts,.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink{padding-top:0}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts{display:inline-block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span{font-weight:600;display:block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span+span{margin-top:8px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts .mx_AccessibleButton_kind_link{font-weight:400;font-size:inherit;padding:0}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon{width:16px;height:16px;display:block}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;display:block;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before{-webkit-mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg);mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before{-webkit-mask-image:url(../../img/element-icons/brands/element.182040d.svg);mask-image:url(../../img/element-icons/brands/element.182040d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before{-webkit-mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg);mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before{-webkit-mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg);mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_ViewSource_separator{clear:both;border-bottom:1px solid #e5e5e5;padding-top:.7em;padding-bottom:.7em}.mx_ViewSource_heading{font-size:1.7rem;font-weight:400;color:#2e2f32;margin-top:.7em}.mx_ViewSource pre{text-align:left;font-size:1.2rem;padding:.5em 1em;word-wrap:break-word;white-space:pre-wrap}.mx_ViewSource_details{margin-top:.8em}.mx_CompleteSecurity_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CompleteSecurity_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_CompleteSecurity_heroIcon{width:128px;height:128px;position:relative;margin:0 auto}.mx_CompleteSecurity_body{font-size:1.5rem}.mx_CompleteSecurity_waiting{color:#8d99a5}.mx_CompleteSecurity_actionRow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:2.8rem}.mx_CompleteSecurity_actionRow .mx_AccessibleButton{-webkit-margin-start:18px;margin-inline-start:18px}.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning{color:#ff4b55}.mx_Login_submit{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;width:100%;margin-top:24px;margin-bottom:24px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.mx_Login_submit:disabled{opacity:.3;cursor:default}.mx_Login_loader{display:inline;position:relative;top:2px;left:8px}.mx_Login_loader .mx_Spinner{display:inline}.mx_Login_loader .mx_Spinner img{width:16px;height:16px}.mx_Login_error{color:#ff4b55;font-weight:700;text-align:center;margin-top:12px;margin-bottom:12px}.mx_Login_error.mx_Login_serverError{text-align:left;font-weight:400}.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal{color:#ff8d13}.mx_Login_type_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#232f32}.mx_Login_type_container .mx_Field{margin:0}.mx_Login_type_label{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Login_underlinedServerName{width:-webkit-max-content;width:-moz-max-content;width:max-content;border-bottom:1px dashed #0dbd8b}div.mx_AccessibleButton_kind_link.mx_Login_forgot{display:block;margin:0 auto;font-size:inherit;padding:0}div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_AuthBody{width:500px;font-size:1.2rem;color:#61708b;background-color:#fff;border-radius:0 4px 4px 0;padding:25px 60px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody h2{font-size:2.4rem;font-weight:600;margin-top:8px;color:#232f32}.mx_AuthBody h3{font-size:1.4rem;font-weight:600;color:#61708b}.mx_AuthBody h3.mx_AuthBody_centered{text-align:center}.mx_AuthBody a:hover,.mx_AuthBody a:link,.mx_AuthBody a:visited{color:#0dbd8b;text-decoration:none}.mx_AuthBody input[type=password],.mx_AuthBody input[type=text]{color:#232f32}.mx_AuthBody .mx_Field input,.mx_AuthBody .mx_Field select{color:#232f32;background-color:#fff}.mx_AuthBody .mx_Field label{color:#232f32}.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown)+label,.mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown)+label{background-color:#fff}.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder)+label,.mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder)+label{background-color:#fff}.mx_AuthBody .mx_Field_labelAlwaysTopLeft label,.mx_AuthBody .mx_Field input:focus+label,.mx_AuthBody .mx_Field input:not(:placeholder-shown)+label,.mx_AuthBody .mx_Field select+label,.mx_AuthBody .mx_Field textarea:focus+label,.mx_AuthBody .mx_Field textarea:not(:placeholder-shown)+label{background-color:#fff}.mx_AuthBody input.error{color:#ff4b55}.mx_AuthBody .mx_Field input{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody .mx_Field_select:before{background-color:#232f32}.mx_AuthBody .mx_Dropdown{color:#232f32}.mx_AuthBody .mx_Dropdown_arrow{background:#232f32}.mx_AuthBody .mx_Dropdown_menu{background-color:#fff}.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_AuthBody_fieldRow{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.mx_AuthBody_fieldRow>.mx_Field{margin:0 5px}.mx_AuthBody_fieldRow>.mx_Field:first-child{margin-left:0}.mx_AuthBody_fieldRow>.mx_Field:last-child{margin-right:0}.mx_AuthBody_paddedFooter{height:80px;padding-top:28px;text-align:center}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title{margin-top:16px;font-size:1.5rem;line-height:2.4rem}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title .mx_InlineSpinner img{vertical-align:sub;margin-right:5px}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle{margin-top:8px;font-size:1rem;line-height:1.4rem}.mx_AuthBody_changeFlow{display:block;text-align:center;width:100%}.mx_AuthBody_changeFlow>a{font-weight:600}.mx_SSOButtons+.mx_AuthBody_changeFlow{margin-top:24px}.mx_AuthBody_spinner{margin:1em 0}@media only screen and (max-width:480px){.mx_AuthBody{border-radius:4px;width:auto;max-width:500px;padding:10px}}.mx_AuthButtons{min-height:24px;height:unset!important;padding-top:13px!important;padding-bottom:14px!important;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_AuthButtons_loginButton_wrapper{text-align:center;width:100%}.mx_AuthButtons_loginButton,.mx_AuthButtons_registerButton{margin-top:3px;height:40px;border:0;border-radius:40px;margin-left:4px;margin-right:4px;min-width:80px;background-color:#0dbd8b;color:#fff;cursor:pointer;font-size:1.5rem;padding:0 11px;word-break:break-word}.mx_AuthFooter{text-align:center;width:100%;font-size:1.4rem;opacity:.72;padding:20px 0;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.8)));background:linear-gradient(transparent,rgba(0,0,0,.8))}.mx_AuthFooter a:hover,.mx_AuthFooter a:link,.mx_AuthFooter a:visited{color:#fff;margin:0 22px}.mx_AuthHeader{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:206px;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:480px){.mx_AuthHeader{display:none}}.mx_AuthHeaderLogo{margin-top:15px;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 25px}.mx_AuthHeaderLogo img{width:100%}@media only screen and (max-width:480px){.mx_AuthHeaderLogo{display:none}}.mx_AuthPage{width:100%;min-height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:#2e3649}.mx_AuthPage,.mx_AuthPage_modal{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AuthPage_modal{margin:100px auto auto;border-radius:4px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.33);box-shadow:0 2px 4px 0 rgba(0,0,0,.33);background-color:hsla(0,0%,96.1%,.9)}@media only screen and (max-width:480px){.mx_AuthPage_modal{margin-top:0}}.mx_CompleteSecurityBody{width:600px;color:#232f32;background-color:#fff;border-radius:4px;padding:20px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_CompleteSecurityBody h2{font-size:2.4rem;font-weight:600;margin-top:0}.mx_CompleteSecurityBody h3{font-size:1.4rem;font-weight:600}.mx_CompleteSecurityBody a:hover,.mx_CompleteSecurityBody a:link,.mx_CompleteSecurityBody a:visited{color:#0dbd8b;text-decoration:none}.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option{padding:0 3px}.mx_CountryDropdown .mx_Dropdown_arrow{padding-right:3px}.mx_CountryDropdown_shortOption{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;height:100%}.mx_CountryDropdown_option,.mx_CountryDropdown_shortOption{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CountryDropdown_option{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_InteractiveAuthEntryComponents_emailWrapper{padding-right:100px;position:relative;margin-top:32px;margin-bottom:32px}.mx_InteractiveAuthEntryComponents_emailWrapper:after,.mx_InteractiveAuthEntryComponents_emailWrapper:before{position:absolute;width:116px;height:116px;content:"";right:-10px}.mx_InteractiveAuthEntryComponents_emailWrapper:before{background-color:rgba(244,246,250,.91);border-radius:50%;top:-20px}.mx_InteractiveAuthEntryComponents_emailWrapper:after{background-image:url(../../img/element-icons/email-prompt.1d04dfe.svg);background-repeat:no-repeat;background-position:50%;background-size:contain;top:-25px}.mx_InteractiveAuthEntryComponents_msisdnWrapper{text-align:center}.mx_InteractiveAuthEntryComponents_msisdnEntry{font-size:200%;font-weight:700;border:1px solid #c7c7c7;border-radius:3px;width:6em}.mx_InteractiveAuthEntryComponents_msisdnEntry:focus{border:1px solid #0dbd8b}.mx_InteractiveAuthEntryComponents_msisdnSubmit{margin-top:4px;margin-bottom:5px}.mx_InteractiveAuthEntryComponents_termsSubmit{margin-top:20px;margin-bottom:5px;display:block;width:100%}.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled{background-color:#747474;cursor:default}.mx_InteractiveAuthEntryComponents_termsSubmit:disabled{background-color:#92caad;cursor:default}.mx_InteractiveAuthEntryComponents_termsPolicy{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_InteractiveAuthEntryComponents_passwordSection{width:300px}.mx_InteractiveAuthEntryComponents_sso_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:20px}.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton{margin-left:5px}.mx_AuthBody_language{width:100%}.mx_AuthBody_language .mx_Dropdown_input{border:none;font-size:1.4rem;font-weight:600;color:#4e5054;width:auto}.mx_AuthBody_language .mx_Dropdown_arrow{background:#4e5054}progress.mx_PassphraseField_progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;border:0;height:4px;position:absolute;top:-12px;border-radius:"2px"}progress.mx_PassphraseField_progress::-moz-progress-bar{border-radius:"2px"}progress.mx_PassphraseField_progress::-webkit-progress-bar,progress.mx_PassphraseField_progress::-webkit-progress-value{border-radius:"2px"}progress.mx_PassphraseField_progress{color:#ff4b55}progress.mx_PassphraseField_progress::-moz-progress-bar{background-color:#ff4b55}progress.mx_PassphraseField_progress::-webkit-progress-value{background-color:#ff4b55}progress.mx_PassphraseField_progress[value="2"],progress.mx_PassphraseField_progress[value="3"]{color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar,progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar{background-color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value,progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value{background-color:#ff812d}progress.mx_PassphraseField_progress[value="4"]{color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar{background-color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value{background-color:#0dbd8b}.mx_Welcome{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount{display:none}.mx_Welcome .mx_AuthBody_language{width:160px;margin-bottom:10px}.mx_BaseAvatar{position:relative;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_BaseAvatar_initial{position:absolute;left:0;color:#fff;text-align:center;speak:none;pointer-events:none;font-weight:400}.mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover;border-radius:125px;vertical-align:top;background-color:#fff}.mx_DecoratedRoomAvatar,.mx_ExtraTile{position:relative}.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar,.mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar{-webkit-mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon{position:absolute;bottom:-2px;right:-2px;margin:4px;width:8px;height:8px;border-radius:50%}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before{content:"";width:8px;height:8px;position:absolute;border-radius:8px}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before{-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before{background-color:#e3e8f0}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before{background-color:#0dbd8b}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before{background-color:#d9b072}.mx_DecoratedRoomAvatar .mx_NotificationBadge,.mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer,.mx_ExtraTile .mx_NotificationBadge,.mx_ExtraTile .mx_RoomTile_badgeContainer{position:absolute;top:0;right:0;height:18px;width:18px}.mx_MessageComposer_avatar .mx_BaseAvatar{padding:2px;border:1px solid transparent;border-radius:100%}.mx_MessageComposer_avatar .mx_BaseAvatar_initial{left:2px}.mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar{border-color:#0dbd8b}@-webkit-keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}@keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}.mx_PulsedAvatar img{-webkit-animation:shadow-pulse 1s infinite;animation:shadow-pulse 1s infinite}.mx_WidgetAvatar{border-radius:4px}.mx_BetaCard{margin-bottom:20px;padding:24px;background-color:#f4f6fa;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_BetaCard>div .mx_BetaCard_title{font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32;margin:4px 0 14px}.mx_BetaCard>div .mx_BetaCard_title .mx_BetaCard_betaPill{margin-left:12px}.mx_BetaCard>div .mx_BetaCard_caption{font-size:1.5rem;line-height:2rem;color:#737d8c;margin-bottom:20px}.mx_BetaCard>div .mx_AccessibleButton{display:block;margin:12px 0;padding:7px 40px;width:auto}.mx_BetaCard>div .mx_BetaCard_disclaimer{font-size:1.2rem;line-height:1.5rem;color:#737d8c;margin-top:20px}.mx_BetaCard>img{margin:auto 0 auto 20px;width:300px;-o-object-fit:contain;object-fit:contain;height:100%}.mx_BetaCard_betaPill{background-color:#238cf5;padding:4px 10px;border-radius:8px;text-transform:uppercase;font-size:12px;line-height:15px;color:#fff;display:inline-block;vertical-align:text-bottom}.mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable{cursor:pointer}.mx_BetaDot{border-radius:50%;margin:10px;height:12px;width:12px;-webkit-transform:scale(1);transform:scale(1);background:#238cf5;-webkit-box-shadow:0 0 0 0 #238cf5;box-shadow:0 0 0 0 #238cf5;-webkit-animation:mx_Beta_bluePulse 2s infinite;animation:mx_Beta_bluePulse 2s infinite;-webkit-animation-iteration-count:20;animation-iteration-count:20}@-webkit-keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}@keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}.mx_CallContextMenu_item{width:205px;height:40px;padding-left:16px;line-height:40px;vertical-align:center}.mx_IconizedContextMenu{min-width:146px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList>*{padding-left:20px;padding-right:20px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst:before,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:nth-child(n+2):before{border-top:1px solid #2e2f32;opacity:.1;content:"";width:100%;position:absolute;left:0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child .mx_AccessibleButton:first-child{border-radius:8px 8px 0 0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:last-child .mx_AccessibleButton:last-child{border-radius:0 0 8px 8px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton{padding-top:12px;padding-bottom:12px;text-decoration:none;color:#2e2f32;font-size:1.5rem;line-height:2.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton:hover{background-color:#f5f8fa}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_AccessibleButton_disabled{opacity:.5;cursor:not-allowed}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton img{width:16px;min-width:16px;max-width:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton span.mx_IconizedContextMenu_label{width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon+.mx_IconizedContextMenu_label{padding-left:14px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon{position:relative;width:16px;height:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{color:#ff4b55!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_icon:before{background-color:#ff4b55}.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton,.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton{color:#0dbd8b!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_icon:before{background-color:#0dbd8b}.mx_IconizedContextMenu.mx_IconizedContextMenu_compact .mx_IconizedContextMenu_optionList>*{padding:8px 16px 8px 11px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked{margin-left:16px;margin-right:-5px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before{-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_MessageContextMenu{padding:6px}.mx_MessageContextMenu_field{display:block;padding:3px 6px;cursor:pointer;white-space:nowrap}.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet{font-weight:700}.mx_StatusMessageContextMenu{padding:10px}.mx_StatusMessageContextMenu_form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}input.mx_StatusMessageContextMenu_message{border-radius:4px;border:1px solid #e7e7e7;padding:6.5px 11px;background-color:#fff;font-weight:400;margin:0 0 10px}.mx_StatusMessageContextMenu_message::-webkit-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-moz-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message:-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::placeholder{color:#61708b}.mx_StatusMessageContextMenu_actionContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_StatusMessageContextMenu_clear,.mx_StatusMessageContextMenu_submit{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;-ms-flex-item-align:start;align-self:start;font-size:1.2rem;padding:6px 1em;border:1px solid transparent;margin-right:10px}.mx_StatusMessageContextMenu_submit[disabled]{opacity:.49}.mx_StatusMessageContextMenu_clear{color:#ff4b55;background-color:transparent;border:1px solid #ff4b55}.mx_StatusMessageContextMenu_actionContainer .mx_Spinner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_TagTileContextMenu_item{padding:8px 20px 8px 8px;cursor:pointer;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.6rem}.mx_TagTileContextMenu_item:before{content:"";height:15px;width:15px;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;margin-right:8px}.mx_TagTileContextMenu_viewCommunity:before{-webkit-mask-image:url(../../img/element-icons/view-community.0cad1a5.svg);mask-image:url(../../img/element-icons/view-community.0cad1a5.svg)}.mx_TagTileContextMenu_hideCommunity:before{-webkit-mask-image:url(../../img/element-icons/hide.2b52315.svg);mask-image:url(../../img/element-icons/hide.2b52315.svg)}.mx_TagTileContextMenu_separator{margin-top:0;margin-bottom:0;border-style:none;border-top:1px solid;border-color:#e7e7e7}.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AddExistingToSpace .mx_SearchBox{margin:0 0 15px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults{display:block;margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child){margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section>h3{margin:0;color:#737d8c;font-size:1.2rem;font-weight:600;line-height:1.5rem}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_DecoratedRoomAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_AddExistingToSpace_entry_name{font-size:1.5rem;line-height:30px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_Checkbox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar_image{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental{position:relative;border-radius:8px;margin:12px 0;padding:8px 8px 8px 42px;background-color:#f3f8fd;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before{content:"";position:absolute;left:10px;top:calc(50% - 8px);height:16px;width:16px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar{height:8px;width:100%;border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-moz-progress-bar{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-bar,.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-value{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_AddExistingToSpace_progressText{margin-top:8px;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span>*{vertical-align:middle}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error{padding-left:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error>img{-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorHeading{font-weight:600;font-size:1.5rem;line-height:1.8rem;color:#ff4b55}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorCaption{margin-top:4px;font-size:1.2rem;line-height:1.5rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton{display:inline-block;-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_primary{padding:8px 36px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton{margin-left:12px;padding-left:24px;position:relative}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton:before{content:"";position:absolute;background-color:#2e2f32;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;left:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_link{padding:0}.mx_AddExistingToSpaceDialog{width:480px;color:#2e2f32;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-height:0;height:80vh}.mx_AddExistingToSpaceDialog,.mx_AddExistingToSpaceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px;margin:0;vertical-align:unset}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:auto 16px auto 5px;vertical-align:middle}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div .mx_AddExistingToSpaceDialog_onlySpace{color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input{border:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option{padding-left:0;-webkit-box-flex:unset;-ms-flex:unset;flex:unset;height:unset;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option .mx_BaseAvatar{display:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive{color:#0dbd8b;padding-right:32px;position:relative}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive:before{content:"";width:20px;height:20px;top:8px;right:0;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace{display:contents}.mx_AddressPickerDialog a:hover,.mx_AddressPickerDialog a:link,.mx_AddressPickerDialog a:visited{color:#0dbd8b;text-decoration:none}.mx_AddressPickerDialog_input,.mx_AddressPickerDialog_input:focus{height:26px;font-size:1.4rem;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;padding-left:12px;padding-right:12px;margin:0!important;border:0!important;outline:0!important;width:1000%;resize:none;overflow:hidden;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;word-wrap:nowrap}.mx_AddressPickerDialog .mx_Dialog_content{min-height:50px}.mx_AddressPickerDialog_inputContainer{border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 4px;max-height:150px;overflow-x:hidden;overflow-y:auto}.mx_AddressPickerDialog_error{margin-top:10px;color:#ff4b55}.mx_AddressPickerDialog_cancel{position:absolute;right:11px;top:13px;cursor:pointer}.mx_AddressPickerDialog_cancel object{pointer-events:none}.mx_AddressPickerDialog_identityServer{margin-top:1em}.mx_AnalyticsModal table{margin:10px 0}.mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading{color:#2e2f32;font-size:1.4rem;line-height:2rem;margin-bottom:24px}.mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link{padding:0;font-size:inherit;line-height:inherit}.mx_BugReportDialog .mx_BugReportDialog_download .mx_AccessibleButton_kind_link{padding-left:0}.mx_ChangelogDialog_content{max-height:300px;overflow:auto}.mx_ChangelogDialog_li{padding:.2em}.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles{margin-top:24px}.mx_ChatCreateOrReuseDialog .mx_Dialog_content{margin-bottom:24px;min-height:100px}.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge{display:none}.mx_ChatCreateOrReuseDialog_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ChatCreateOrReuseDialog_profile_name{padding:14px}.mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth{width:360px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content{margin-bottom:0}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people{position:relative;margin-bottom:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people .mx_AccessibleButton{display:inline-block;background-color:#ddd;border-radius:4px;padding:3px 5px;font-size:1.2rem;float:right}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_morePeople{margin-top:8px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person{position:relative;margin-top:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person>*{vertical-align:middle}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_Checkbox{position:absolute;right:0;top:calc(50% - 8px);width:16px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers{display:inline-block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers>*{display:block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personName{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_primaryButton{display:block;font-size:1.3rem;line-height:20px;height:20px;margin-top:24px}.mx_ConfirmUserActionDialog .mx_Dialog_content{min-height:48px;margin-bottom:24px}.mx_ConfirmUserActionDialog_avatar{float:left;margin-right:20px;margin-top:-2px}.mx_ConfirmUserActionDialog_name{font-size:1.8rem}.mx_ConfirmUserActionDialog_userId{font-size:1.3rem}.mx_ConfirmUserActionDialog_reasonField{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#2e2f32;background-color:#fff;border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 16px;margin-bottom:24px;width:90%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:12px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName{-ms-flex-preferred-size:66.66%;flex-basis:66.66%;padding-right:100px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_Field input{font-size:1.6rem;line-height:2rem}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext{display:block;color:#61708b;margin-bottom:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext:last-child{margin-top:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error{color:#ff4b55}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId{position:relative}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId .mx_InfoTooltip{float:right}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_AccessibleButton{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar{-ms-flex-preferred-size:33.33%;flex-basis:33.33%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer{margin-top:12px;margin-bottom:20px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_avatar,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>b,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_CreateGroupDialog_inputRow{margin-top:10px;margin-bottom:10px}.mx_CreateGroupDialog_label{text-align:left;padding-bottom:12px}.mx_CreateGroupDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_CreateGroupDialog_input_hasPrefixAndSuffix{border-radius:0}.mx_CreateGroupDialog_input_group{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateGroupDialog_prefix,.mx_CreateGroupDialog_suffix{padding:0 5px;line-height:3.7rem;background-color:#e3e8f0;border:1px solid #e7e7e7;text-align:center}.mx_CreateGroupDialog_prefix{border-right:0;border-radius:3px 0 0 3px}.mx_CreateGroupDialog_suffix{border-left:0;border-radius:0 3px 3px 0}.mx_CreateRoomDialog_details{margin-top:15px}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary{outline:none;list-style:none;font-weight:600;cursor:pointer;color:#0dbd8b}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary::-webkit-details-marker{display:none}.mx_CreateRoomDialog_details>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin:5px 0}.mx_CreateRoomDialog_details>div input[type=checkbox]{margin-right:10px}.mx_CreateRoomDialog_label{text-align:left;padding-bottom:12px}.mx_CreateRoomDialog_input_container{padding-right:20px}.mx_CreateRoomDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff;width:100%}.mx_CreateRoomDialog_aliasContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin:10px 0}.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField{margin:0}.mx_CreateRoomDialog.mx_Dialog_fixedWidth{width:450px}.mx_CreateRoomDialog .mx_Dialog_content{margin-bottom:40px}.mx_CreateRoomDialog .mx_Field_input label,.mx_CreateRoomDialog p{color:#61708b}.mx_CreateRoomDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateRoomDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateRoomDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateRoomDialog .mx_CreateRoomDialog_topic{margin-bottom:36px}.mx_CreateRoomDialog .mx_Dialog_content>.mx_SettingsFlag{margin-top:24px}.mx_CreateRoomDialog p{margin:0 85px 0 0;font-size:1.2rem}.mx_DeactivateAccountDialog .mx_Dialog_content{margin-bottom:30px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section{margin-top:60px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field{width:300px}.mx_DevTools_content{margin:10px 0}.mx_DevTools_ServersInRoomList_button{cursor:default!important}.mx_DevTools_RoomStateExplorer_query{margin-bottom:10px}.mx_DevTools_RoomStateExplorer_button,.mx_DevTools_ServersInRoomList_button{margin-bottom:10px;width:100%}.mx_DevTools_label_left{float:left}.mx_DevTools_label_right{float:right}.mx_DevTools_label_bottom{clear:both;border-bottom:1px solid #e5e5e5}.mx_DevTools_inputRow{display:table-row}.mx_DevTools_inputLabelCell{display:table-cell;font-weight:700;padding-right:24px}.mx_DevTools_inputCell{display:table-cell;width:240px}.mx_DevTools_inputCell input{display:inline-block;border:0;border-bottom:1px solid hsla(0,0%,59.2%,.5);padding:0;width:240px;color:rgba(74,74,74,.9);font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.6rem}.mx_DevTools_textarea{font-size:1.2rem;max-width:684px;min-height:250px;padding:10px}.mx_DevTools_eventTypeStateKeyGroup{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_DevTools_content .mx_Field_input:first-of-type{margin-right:42px}.mx_DevTools_tgl{display:none}.mx_DevTools_tgl,.mx_DevTools_tgl *,.mx_DevTools_tgl+.mx_DevTools_tgl-btn,.mx_DevTools_tgl:after,.mx_DevTools_tgl :after,.mx_DevTools_tgl:before,.mx_DevTools_tgl :before{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::-moz-selection,.mx_DevTools_tgl::-moz-selection,.mx_DevTools_tgl ::-moz-selection,.mx_DevTools_tgl:after::-moz-selection,.mx_DevTools_tgl :after::-moz-selection,.mx_DevTools_tgl:before::-moz-selection,.mx_DevTools_tgl :before::-moz-selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::selection,.mx_DevTools_tgl::selection,.mx_DevTools_tgl ::selection,.mx_DevTools_tgl:after::selection,.mx_DevTools_tgl :after::selection,.mx_DevTools_tgl:before::selection,.mx_DevTools_tgl :before::selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn{outline:0;display:block;width:7em;height:2em;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{position:relative;display:block;content:"";width:50%;height:100%}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after{left:0}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{display:none}.mx_DevTools_tgl:checked+.mx_DevTools_tgl-btn:after{left:50%}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn{padding:2px;-webkit-transition:all .2s ease;transition:all .2s ease;font-family:sans-serif;-webkit-perspective:100px;perspective:100px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{display:inline-block;-webkit-transition:all .4s ease;transition:all .4s ease;width:100%;text-align:center;position:absolute;line-height:2em;font-weight:700;color:#fff;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:4px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after{content:attr(data-tg-on);background:#02c66f;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{background:#ff3a19;content:attr(data-tg-off)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:active:before{-webkit-transform:rotateY(-20deg);transform:rotateY(-20deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:before{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:after{-webkit-transform:rotateY(0);transform:rotateY(0);left:0;background:#7fc6a6}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:active:after{-webkit-transform:rotateY(20deg);transform:rotateY(20deg)}.mx_DevTools_VerificationRequest{border:1px solid #ccc;border-radius:3px;padding:1px 5px;margin-bottom:6px;font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji}.mx_DevTools_VerificationRequest dl{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:0}.mx_DevTools_VerificationRequest dd{grid-column-start:2}.mx_DevTools_VerificationRequest dd:empty{color:#666}.mx_DevTools_VerificationRequest dd:empty:after{content:"(empty)"}.mx_DevTools_VerificationRequest dt{font-weight:700;grid-column-start:1}.mx_DevTools_VerificationRequest dt:after{content:":"}.mx_DevTools_SettingsExplorer table{width:100%;table-layout:fixed;border-collapse:collapse}.mx_DevTools_SettingsExplorer table th{border-bottom:1px solid #0dbd8b;text-align:left}.mx_DevTools_SettingsExplorer table td,.mx_DevTools_SettingsExplorer table th{width:360px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_DevTools_SettingsExplorer table td+td,.mx_DevTools_SettingsExplorer table th+th{width:auto}.mx_DevTools_SettingsExplorer table tr:hover{background-color:rgba(13,189,139,.5)}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable{background-color:#0dbd8b}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable{background-color:#ff4b55}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit{float:right;margin-right:16px}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning{border:2px solid #ff4b55;border-radius:4px;padding:4px;margin-bottom:8px}.mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth{width:360px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content{margin-bottom:12px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_AccessibleButton.mx_AccessibleButton_kind_primary{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_rowAvatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer{margin-top:20px;margin-bottom:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_avatar,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip{margin-left:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>b,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_FeedbackDialog hr{margin:24px 0;border-color:#e7e7e7}.mx_FeedbackDialog .mx_Dialog_content{margin-bottom:24px}.mx_FeedbackDialog .mx_Dialog_content>h2{margin-bottom:32px}.mx_FeedbackDialog .mx_FeedbackDialog_section{position:relative;padding-left:52px}.mx_FeedbackDialog .mx_FeedbackDialog_section>p{color:#8d99a5}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link,.mx_FeedbackDialog .mx_FeedbackDialog_section a{color:#0dbd8b;text-decoration:underline}.mx_FeedbackDialog .mx_FeedbackDialog_section:after,.mx_FeedbackDialog .mx_FeedbackDialog_section:before{content:"";position:absolute;width:40px;height:40px;left:0;top:0}.mx_FeedbackDialog .mx_FeedbackDialog_section:before{background-color:#c1c6cd;border-radius:20px}.mx_FeedbackDialog .mx_FeedbackDialog_section:after{background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after{-webkit-mask-image:url(../../img/feather-customised/bug.3dc7afa.svg);mask-image:url(../../img/feather-customised/bug.3dc7afa.svg)}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:20px;-webkit-transition:font-size 1s,border .5s;transition:font-size 1s,border .5s;border-radius:50%;border:2px solid transparent;margin-top:12px;margin-bottom:24px;vertical-align:top;cursor:pointer}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton input[type=radio]+div{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_content{background:#c1c6cd;width:40px;height:40px;text-align:center;line-height:40px;border-radius:20px;margin:5px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_spacer{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton+.mx_RadioButton{margin-left:16px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked{font-size:24px;border-color:#0dbd8b}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_GroupAddressPicker_checkboxContainer{margin-top:10px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HostSignupDialog{width:90vw;max-width:580px;height:80vh;max-height:600px;background-color:#fff}.mx_HostSignupDialog .mx_HostSignupDialog_info{text-align:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_content_top{margin-bottom:24px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs{text-align:left;padding-left:25%;padding-right:25%}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons{margin-bottom:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons button{padding:12px;margin:0 16px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img{padding-right:5px}.mx_HostSignupDialog iframe{width:100%;height:100%;border:none;background-color:#fff;min-height:540px}.mx_HostSignupDialog_text_dark{color:#2e2f32}.mx_HostSignupDialog_text_light{color:#737d8c}.mx_HostSignup_maximize_button{-webkit-mask:url(../../img/feather-customised/maximise.dc32127.svg);mask:url(../../img/feather-customised/maximise.dc32127.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:10px}.mx_HostSignup_maximize_button,.mx_HostSignup_minimize_button{width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px}.mx_HostSignup_minimize_button{-webkit-mask:url(../../img/feather-customised/minimise.aec9142.svg);mask:url(../../img/feather-customised/minimise.aec9142.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:25px}.mx_HostSignup_persisted{width:90vw;max-width:580px;height:80vh;max-height:600px;top:0;left:0;position:fixed;display:none}.mx_HostSignupDialog_minimized{position:fixed;bottom:80px;right:26px;width:314px;height:217px;overflow:hidden}.mx_HostSignupDialog_minimized.mx_Dialog{padding:12px}.mx_HostSignupDialog_minimized .mx_Dialog_title{text-align:left!important;padding-left:20px;font-size:1.5rem}.mx_HostSignupDialog_minimized iframe{width:100%;height:100%;border:none;background-color:#fff}.mx_IncomingSasDialog_opponentProfile_image{position:relative}.mx_IncomingSasDialog_opponentProfile h2{display:inline-block;margin-left:10px}.mx_InviteDialog_addressBar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_InviteDialog_addressBar .mx_InviteDialog_editor{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;background-color:#f3f8fd;border-radius:4px;min-height:25px;padding-left:8px;overflow-x:hidden;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile{margin:6px 6px 0 0;display:inline-block;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.mx_InviteDialog_addressBar .mx_InviteDialog_editor>input[type=text]{margin:6px 0!important;height:24px;line-height:2.4rem;font-size:1.4rem;padding-left:12px;border:0!important;outline:0!important;resize:none;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:40%;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important}.mx_InviteDialog_addressBar .mx_InviteDialog_goButton{min-width:48px;margin-left:10px;height:25px;line-height:2.5rem}.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner{width:20px;height:20px;margin-left:5px;display:inline-block;vertical-align:middle}.mx_InviteDialog_section{padding-bottom:10px}.mx_InviteDialog_section h3{font-size:1.2rem;color:#61708b;font-weight:700;text-transform:uppercase}.mx_InviteDialog_section .mx_InviteDialog_subname{margin-bottom:10px;margin-top:-10px;font-size:1.2rem;color:#61708b}.mx_InviteDialog_roomTile{cursor:pointer;padding:5px 10px}.mx_InviteDialog_roomTile:hover{background-color:#f3f8fd;border-radius:4px}.mx_InviteDialog_roomTile *{vertical-align:middle}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack{display:inline-block;position:relative;width:36px;height:36px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack>*{position:absolute;top:0;left:0}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected{width:36px;height:36px;border-radius:36px;background-color:#368bd6;display:inline-block;position:relative}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before{content:"";width:24px;height:24px;grid-column:1;grid-row:1;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;position:absolute;top:6px;left:6px;background-color:#fff}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack{display:inline-block}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time{text-align:right;font-size:1.2rem;color:#61708b;float:right;line-height:3.6rem}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight{font-weight:900}.mx_InviteDialog_userTile{margin-right:8px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill{background-color:#368bd6;border-radius:12px;display:inline-block;height:24px;line-height:2.4rem;padding-left:8px;padding-right:8px;color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_avatar{border-radius:20px;position:relative;left:-5px;top:2px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_name,.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill img.mx_InviteDialog_userTile_avatar{vertical-align:top}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_threepidAvatar{background-color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove{display:inline-block;margin-left:4px}.mx_InviteDialog{height:590px;padding-left:20px}.mx_InviteDialog_userSections{margin-top:10px;overflow-y:auto;padding-right:45px;height:455px}.mx_InviteDialog_addressBar,.mx_InviteDialog_helpText{margin-right:45px}.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link{padding:0}.mx_KeyboardShortcutsDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:-50px;max-height:1100px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category{width:33.3333%;margin:0 0 40px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category>div{padding-left:5px}.mx_KeyboardShortcutsDialog h3{margin:0 0 10px}.mx_KeyboardShortcutsDialog h5{margin:15px 0 5px;font-weight:400}.mx_KeyboardShortcutsDialog kbd{padding:5px;border-radius:4px;background-color:#f3f8fd;margin-right:5px;min-width:20px;text-align:center;display:inline-block;border:1px solid #e9edf1;-webkit-box-shadow:0 2px #e9edf1;box-shadow:0 2px #e9edf1;margin-bottom:4px;text-transform:capitalize}.mx_KeyboardShortcutsDialog kbd+kbd{margin-left:5px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div{display:inline}.mx_MessageEditHistoryDialog .mx_Dialog_header>.mx_Dialog_title{text-align:center}.mx_MessageEditHistoryDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:60vh}.mx_MessageEditHistoryDialog_scrollPanel{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_MessageEditHistoryDialog_error{color:#ff4b55;text-align:center}.mx_MessageEditHistoryDialog_edits{list-style-type:none;font-size:1.4rem;padding:0;color:#2e2f32}.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion,.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion{padding:0 2px}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion{color:#ff4c55;background-color:rgba(255,76,85,.1);text-decoration:line-through}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion{color:#1aa97b;background-color:rgba(26,169,123,.1);text-decoration:underline}.mx_MessageEditHistoryDialog_edits .mx_EventTile_content,.mx_MessageEditHistoryDialog_edits .mx_EventTile_line{margin-right:0}.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton{font-size:1rem;padding:0 8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning{margin-bottom:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning>img{vertical-align:middle;margin-right:8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons{float:right;margin-top:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:8px}.mx_ModalWidgetDialog iframe{width:100%;height:450px;border:0;border-radius:8px}.mx_NewSessionReviewDialog_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:0}.mx_NewSessionReviewDialog_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_NewSessionReviewDialog_deviceName{font-weight:600}.mx_NewSessionReviewDialog_deviceID{font-size:1.2rem;color:#8d99a5}.mx_RegistrationEmailPromptDialog{width:417px}.mx_RegistrationEmailPromptDialog .mx_Dialog_content{margin-bottom:24px;color:#8d99a5}.mx_RegistrationEmailPromptDialog .mx_Dialog_primary{width:100%}.mx_RoomSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_RoomSettingsDialog_rolesIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg);mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg)}.mx_RoomSettingsDialog_notificationsIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomSettingsDialog_bridgesIcon:before{-webkit-mask-image:url(../../img/feather-customised/bridge.b2ca042.svg);mask-image:url(../../img/feather-customised/bridge.b2ca042.svg)}.mx_RoomSettingsDialog_warningIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg);mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg)}.mx_RoomSettingsDialog .mx_Dialog_title{-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0 auto;padding-right:80px}.mx_RoomSettingsDialog .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{-webkit-mask:url(../../img/feather-customised/image.a8671b8.svg);mask:url(../../img/feather-customised/image.a8671b8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center}.mx_RoomSettingsDialog_BridgeList{padding:0}.mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton{display:inline;margin:0;padding:0}.mx_RoomSettingsDialog_BridgeList li{list-style-type:none;padding:5px;margin-bottom:8px;border:1px solid transparent;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon{float:left;padding-right:10px}.mx_RoomSettingsDialog_BridgeList li .column-icon *{border-radius:5px;border:1px solid #e3e8f0}.mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon{width:48px;height:48px;background:#e3e8f0;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon{float:left;margin-right:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img{border-radius:5px;border-width:1px;border-color:transparent}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span{left:auto}.mx_RoomSettingsDialog_BridgeList li .column-data{display:inline-block;width:85%}.mx_RoomSettingsDialog_BridgeList li .column-data>h3{margin-top:0;margin-bottom:0;font-size:16pt;color:#2e2f32}.mx_RoomSettingsDialog_BridgeList li .column-data>*{margin-top:4px;margin-bottom:0}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details{color:#2e2f32;font-weight:600}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details .channel{margin-left:5px}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata{color:#61708b;margin-bottom:0;overflow-y:visible;text-overflow:ellipsis;white-space:normal;padding:0}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata>li{padding:0;border:0}.mx_RoomUpgradeDialog{padding-right:70px}.mx_RoomUpgradeWarningDialog{max-width:38vw;width:38vw}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag{font-weight:700}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:8px;float:right}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content{padding-right:85px;color:#2e2f32}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr{border-color:#2e2f32;opacity:.1;border-bottom:none}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul{padding:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n+2){margin-top:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timestamp{display:inline-block;width:115px;color:#61708b;line-height:24px;vertical-align:top}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline{display:inline-block;width:calc(100% - 155px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_timeline_header span{margin-left:8px;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn{position:relative;margin-top:8px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_ServerOfflineDialog_content_context_txn_desc{width:calc(100% - 100px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_AccessibleButton{float:right;padding:0}.mx_ServerPickerDialog{width:468px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ServerPickerDialog .mx_Dialog_content{margin-bottom:0}.mx_ServerPickerDialog .mx_Dialog_content>p{color:#737d8c;font-size:1.4rem;margin:16px 0}.mx_ServerPickerDialog .mx_Dialog_content>p:first-of-type{margin-bottom:40px}.mx_ServerPickerDialog .mx_Dialog_content>p:last-of-type{margin:0 24px 24px}.mx_ServerPickerDialog .mx_Dialog_content>h4{font-size:1.5rem;font-weight:600;color:#737d8c;margin-left:8px}.mx_ServerPickerDialog .mx_Dialog_content>a{color:#0dbd8b;margin-left:8px}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserverRadio input[type=radio]+div{margin-top:auto;margin-bottom:auto}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver{border-top:none;border-left:none;border-right:none;border-radius:unset}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>input{padding-left:0}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>label{margin-left:0}.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary{width:calc(100% - 64px);margin:0 8px;padding:15px 18px}.mx_SetEmailDialog_email_input{border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:rgba(74,74,74,.9);background-color:#fff;font-size:1.5rem;width:100%;max-width:280px;margin-bottom:10px}.mx_SetEmailDialog_email_input:focus{outline:none;-webkit-box-shadow:none;box-shadow:none;border:1px solid #0dbd8b}.mx_RoomSettingsDialog,.mx_UserSettingsDialog{width:90vw;max-width:1000px;height:80vh}.mx_RoomSettingsDialog .mx_TabbedView,.mx_UserSettingsDialog .mx_TabbedView{top:65px}.mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab,.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab{-webkit-box-sizing:border-box;box-sizing:border-box;min-width:580px;padding-right:100px;padding-bottom:100px}.mx_RoomSettingsDialog .mx_Dialog_title,.mx_UserSettingsDialog .mx_Dialog_title{margin-bottom:24px}.mx_ShareDialog hr{margin-top:25px;margin-bottom:25px;border-color:#747474}.mx_ShareDialog_content{margin:10px 0}.mx_ShareDialog_matrixto{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:30px;padding:10px}.mx_ShareDialog_matrixto a{text-decoration:none}.mx_ShareDialog_matrixto_link{-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.mx_ShareDialog_matrixto_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_ShareDialog_matrixto_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_ShareDialog_split{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_ShareDialog_qrcode_container{float:left;height:256px;width:256px;margin-right:64px}.mx_ShareDialog_qrcode_container+.mx_ShareDialog_social_container{width:299px}.mx_ShareDialog_social_container{display:inline-block}.mx_ShareDialog_social_icon{display:inline-grid;margin-right:10px;margin-bottom:10px}.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2{margin-bottom:2px}.mx_SlashCommandHelpDialog .mx_Dialog_content{margin-top:12px;margin-bottom:34px}.mx_SpaceSettingsDialog{width:480px;color:#2e2f32}.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceSettingsDialog .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:16px}.mx_SpaceSettingsDialog .mx_AccessibleButton_kind_danger{margin-top:28px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:64px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton{display:inline-block}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton_kind_link{margin-left:auto}.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind{padding:8px 22px}.mx_TabbedIntegrationManagerDialog .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none;position:relative}.mx_TabbedIntegrationManagerDialog_container{position:absolute;top:0;bottom:0;left:0;right:0}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager{width:100%;height:100%;border-top:1px solid #0dbd8b}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_TabbedIntegrationManagerDialog_tab{display:inline-block;border:1px solid #0dbd8b;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;padding:10px 8px;margin-right:5px}.mx_TabbedIntegrationManagerDialog_currentTab{background-color:#0dbd8b;color:#fff}.mx_TermsDialog_forIntegrationManager .mx_Dialog{width:60%;height:70%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_TermsDialog_termsTableHeader{font-weight:700;text-align:left}.mx_TermsDialog_termsTable{font-size:1.2rem;width:100%}.mx_TermsDialog_service,.mx_TermsDialog_summary{padding-right:10px}.mx_TermsDialog_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;width:10px;height:10px}.mx_UntrustedDeviceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon{margin-left:0}.mx_UploadConfirmDialog_fileIcon{margin-right:5px}.mx_UploadConfirmDialog_previewOuter{text-align:center}.mx_UploadConfirmDialog_previewInner{display:inline-block;text-align:left}.mx_UploadConfirmDialog_imagePreview{max-height:300px;max-width:100%;border-radius:4px;border:1px solid #c1c1c1}.mx_UserSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserSettingsDialog_appearanceIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg);mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg)}.mx_UserSettingsDialog_voiceIcon:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_UserSettingsDialog_bellIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserSettingsDialog_preferencesIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg);mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg)}.mx_UserSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserSettingsDialog_helpIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/help.68b703f.svg);mask-image:url(../../img/element-icons/settings/help.68b703f.svg)}.mx_UserSettingsDialog_labsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg);mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg)}.mx_UserSettingsDialog_mjolnirIcon:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_UserSettingsDialog_flairIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/flair.4227a88.svg);mask-image:url(../../img/element-icons/settings/flair.4227a88.svg)}.mx_WidgetCapabilitiesPromptDialog .text-muted{font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content{margin-bottom:16px}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap{margin-top:20px;font-size:1.5rem;line-height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap .mx_WidgetCapabilitiesPromptDialog_byline{color:#61708b;margin-left:26px;font-size:1.2rem;line-height:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons{margin-top:40px}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag{line-height:calc(1.4rem + 14px);color:#61708b;font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px;width:3.2rem;height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 1.5rem)}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch .mx_ToggleSwitch_ball{width:1.5rem;height:1.5rem;border-radius:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_AccessSecretStorageDialog_reset{position:relative;padding-left:24px;margin-top:7px}.mx_AccessSecretStorageDialog_reset:before{content:"";display:inline-block;position:absolute;height:16px;width:16px;left:0;top:2px;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link{color:#ff4b55}.mx_AccessSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_AccessSecretStorageDialog_resetBadge:before{background-image:url(../../img/element-icons/warning-badge.de1033e.svg);background-size:24px;background-color:transparent}.mx_AccessSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_AccessSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_AccessSecretStorageDialog_keyStatus{height:30px}.mx_AccessSecretStorageDialog_passPhraseInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_AccessSecretStorageDialog_recoveryKeyEntry{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText{margin:16px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback:before{content:"";display:inline-block;vertical-align:bottom;width:20px;height:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;margin-right:5px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid{color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid{color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput{display:none}.mx_CreateCrossSigningDialog{width:560px}.mx_CreateCrossSigningDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateCrossSigningDialog .mx_Dialog_title,.mx_CreateKeyBackupDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateKeyBackupDialog_primaryContainer{padding:20px}.mx_CreateKeyBackupDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateKeyBackupDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_CreateKeyBackupDialog_passPhraseInput{-webkit-box-flex:0;-ms-flex:none;flex:none;width:250px;border:1px solid #0dbd8b;border-radius:5px;padding:10px;margin-bottom:1em}.mx_CreateKeyBackupDialog_passPhraseMatch{margin-left:20px}.mx_CreateKeyBackupDialog_recoveryKeyHeader{margin-bottom:1em}.mx_CreateKeyBackupDialog_recoveryKeyContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateKeyBackupDialog_recoveryKey{width:262px;padding:20px;color:#888;background-color:#f7f7f7;margin-right:12px}.mx_CreateKeyBackupDialog_recoveryKeyButtons{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateKeyBackupDialog_recoveryKeyButtons button{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap}.mx_CreateKeyBackupDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog{width:560px}.mx_CreateSecretStorageDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateSecretStorageDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateSecretStorageDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateSecretStorageDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_centeredBody,.mx_CreateSecretStorageDialog_centeredTitle{text-align:center}.mx_CreateSecretStorageDialog_primaryContainer{padding-top:20px}.mx_CreateSecretStorageDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton{margin-bottom:16px;padding:11px}.mx_CreateSecretStorageDialog_optionTitle{color:#45474a;font-weight:600;font-size:1.8rem;padding-bottom:10px}.mx_CreateSecretStorageDialog_optionIcon{display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_optionIcon_securePhrase{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_optionIcon_secureBackup{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Field.mx_CreateSecretStorageDialog_passPhraseField{margin-top:0}.mx_CreateSecretStorageDialog_passPhraseMatch{width:200px;margin-left:20px}.mx_CreateSecretStorageDialog_recoveryKeyContainer{width:380px;margin-left:auto;margin-right:auto}.mx_CreateSecretStorageDialog_recoveryKey{font-weight:700;text-align:center;padding:20px;color:#888;background-color:#f7f7f7;border-radius:6px;word-spacing:1em;margin-bottom:20px}.mx_CreateSecretStorageDialog_recoveryKeyButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton{width:160px;padding-left:0;padding-right:0;white-space:nowrap}.mx_CreateSecretStorageDialog_continueSpinner{margin-top:33px;text-align:right}.mx_CreateSecretStorageDialog_continueSpinner img{width:20px;height:20px}.mx_KeyBackupFailedDialog .mx_Dialog_title{margin-bottom:32px}.mx_KeyBackupFailedDialog_title{position:relative;padding-left:45px;padding-bottom:10px}.mx_KeyBackupFailedDialog_title:before{-webkit-mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;content:"";position:absolute;top:-6px;right:0;bottom:0;left:0}.mx_KeyBackupFailedDialog .mx_Dialog_buttons{margin-top:36px}.mx_RestoreKeyBackupDialog_keyStatus{height:30px}.mx_RestoreKeyBackupDialog_primaryContainer{padding:20px}.mx_RestoreKeyBackupDialog_passPhraseInput,.mx_RestoreKeyBackupDialog_recoveryKeyInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_RestoreKeyBackupDialog_content>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:110px}.mx_NetworkDropdown{height:32px;position:relative;padding-right:32px;margin-left:auto;margin-right:9px;margin-top:12px}.mx_NetworkDropdown,.mx_NetworkDropdown .mx_AccessibleButton{width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_NetworkDropdown_menu{min-width:204px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border:1px solid #c1c1c1;background-color:#fff;max-height:calc(100vh - 20px);overflow-y:auto}.mx_NetworkDropdown_menu_network{font-weight:700}.mx_NetworkDropdown_server{padding:12px 0;border-bottom:1px solid #9fa9ba}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title{padding:0 10px;font-size:1.5rem;font-weight:600;line-height:2rem;margin-bottom:4px;position:relative}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton{position:absolute;display:inline;right:10px;height:16px;width:16px;margin-top:2px}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton:after{content:"";position:absolute;width:16px;height:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle{padding:0 10px;font-size:1rem;line-height:1.4rem;margin-top:-4px;margin-bottom:4px;color:#61708b}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network{font-size:1.2rem;line-height:1.6rem;padding:4px 10px;cursor:pointer;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network[aria-checked=true]:after{content:"";position:absolute;width:16px;height:16px;right:10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_NetworkDropdown_server_add:hover,.mx_NetworkDropdown_server_network:hover{background-color:#f3f8fd}.mx_NetworkDropdown_server_add{padding:16px 10px 16px 32px;position:relative;border-radius:0 0 4px 4px}.mx_NetworkDropdown_server_add:before{content:"";position:absolute;width:16px;height:16px;left:7px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);background-color:#61708b}.mx_NetworkDropdown_handle{position:relative}.mx_NetworkDropdown_handle:after{content:"";position:absolute;width:26px;height:26px;right:-27.5px;top:-3px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);background-color:#2e2f32}.mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server{color:#61708b;font-size:1.2rem}.mx_NetworkDropdown_dialog .mx_Dialog{width:45vw}.mx_AccessibleButton{cursor:pointer}.mx_AccessibleButton_disabled{cursor:default}.mx_AccessibleButton_hasKind{padding:7px 18px;text-align:center;border-radius:8px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:1.4rem}.mx_AccessibleButton_kind_primary{color:#fff;background-color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary_outline{color:#0dbd8b;background-color:#fff;border:1px solid #0dbd8b;font-weight:600}.mx_AccessibleButton_kind_secondary{color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled,.mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm{padding:5px 12px;color:#fff;background-color:#0dbd8b}.mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_kind_danger{color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_outline{color:#ff4b55;background-color:#fff;border:1px solid #ff4b55}.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled{color:#f5b6bb;border-color:#f5b6bb}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm{padding:5px 12px;color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_link{color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm{padding:5px 12px;color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AddressSelector{position:absolute;background-color:#fff;width:485px;max-height:116px;overflow-y:auto;border-radius:3px;border:1px solid #0dbd8b;cursor:pointer;z-index:1}.mx_AddressSelector.mx_AddressSelector_empty{display:none}.mx_AddressSelector_addressListElement .mx_AddressTile{background-color:#fff;border:1px solid #fff}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected{background-color:#f2f5f8}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile{background-color:#f2f5f8;border:1px solid #f2f5f8}.mx_AddressTile{display:inline-block;border-radius:3px;background-color:rgba(74,73,74,.1);border:1px solid #e7e7e7;line-height:2.6rem;color:#2e2f32;font-size:1.4rem;font-weight:400;margin-right:4px}.mx_AddressTile.mx_AddressTile_error{background-color:rgba(255,0,100,.1);color:#ff4b55;border-color:#ff4b55}.mx_AddressTile_network{padding-right:4px}.mx_AddressTile_avatar,.mx_AddressTile_network{display:inline-block;position:relative;padding-left:2px;vertical-align:middle}.mx_AddressTile_avatar{padding-right:7px}.mx_AddressTile_mx{display:inline-block;margin:0;border:0;padding:0}.mx_AddressTile_name{display:inline-block;padding-right:4px;font-weight:600;overflow:hidden;height:26px;vertical-align:middle}.mx_AddressTile_name.mx_AddressTile_justified{width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_id{display:inline-block;padding-right:11px}.mx_AddressTile_id.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknownMx{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_unknownMxl.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_email{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_email.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknown{display:inline-block;padding-right:11px}.mx_AddressTile_unknown.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_dismiss{display:inline-block;padding-right:11px;padding-left:1px;cursor:pointer}.mx_AddressTile_dismiss object{pointer-events:none}.mx_DesktopBuildsNotice{text-align:center;padding:0 16px}.mx_DesktopBuildsNotice>*{vertical-align:middle}.mx_DesktopBuildsNotice>img{margin-right:8px}.mx_desktopCapturerSourcePicker{overflow:hidden}.mx_desktopCapturerSourcePicker_tabLabels{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 0 8px}.mx_desktopCapturerSourcePicker_tabLabel,.mx_desktopCapturerSourcePicker_tabLabel_selected{width:100%;text-align:center;border-radius:8px;padding:8px 0;font-size:1.3rem}.mx_desktopCapturerSourcePicker_tabLabel_selected{background-color:#0dbd8b;color:#fff}.mx_desktopCapturerSourcePicker_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:500px;overflow:overlay}.mx_desktopCapturerSourcePicker_stream_button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:8px;border-radius:4px}.mx_desktopCapturerSourcePicker_stream_button:focus,.mx_desktopCapturerSourcePicker_stream_button:hover{background:#fff}.mx_desktopCapturerSourcePicker_stream_thumbnail{margin:4px;width:312px}.mx_desktopCapturerSourcePicker_stream_name{margin:0 4px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:312px}.mx_DirectorySearchBox{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:9px;padding-right:9px}.mx_DirectorySearchBox_joinButton{display:table-cell;padding:3px 10px;background-color:#f2f5f8;border-radius:3px;background-image:url(../../img/icon-return.cb24475.svg);background-position:8px 70%;background-repeat:no-repeat;text-indent:18px;font-weight:600;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.mx_DirectorySearchBox_clear{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:10px;mask-size:10px;width:15px;height:15px;cursor:pointer}.mx_Dropdown{position:relative;color:#2e2f32}.mx_Dropdown_disabled{opacity:.3}.mx_Dropdown_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:3px;border:1px solid #c7c7c7;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_Dropdown_input.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_Dropdown_input:focus{border-color:#238cf5}.mx_Dropdown_input.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_Dropdown_arrow{width:10px;height:6px;padding-right:9px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_Dropdown_option{height:35px;line-height:3.5rem;padding-left:8px;padding-right:8px}.mx_Dropdown_input>.mx_Dropdown_option{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dropdown_input>.mx_Dropdown_option,.mx_Dropdown_option div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_Dropdown_option .mx_Dropdown_option_emoji,.mx_Dropdown_option img{margin:5px;width:16px;vertical-align:middle}.mx_Dropdown_option_emoji{font-size:1.6rem;line-height:1.6rem}input.mx_Dropdown_option,input.mx_Dropdown_option:focus{font-weight:400;border:0;padding-top:0;padding-bottom:0;width:60%}.mx_Dropdown_menu{position:absolute;left:-1px;right:-1px;top:100%;z-index:2;margin:0;padding:0;border-radius:3px;border:1px solid #238cf5;background-color:#fff;max-height:200px;overflow-y:auto}.mx_Dropdown_menu .mx_Dropdown_option{height:auto;min-height:35px}.mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_Dropdown_searchPrompt{font-weight:400;margin-left:5px;margin-bottom:5px}.mx_EditableItemList{margin-top:12px;margin-bottom:10px}.mx_EditableItem{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:5px}.mx_EditableItem_delete{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;margin-right:5px;cursor:pointer;vertical-align:middle;width:14px;height:14px;-webkit-mask-image:url(../../img/feather-customised/cancel.23c2689.svg);mask-image:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#ff4b55;-webkit-mask-size:100%;mask-size:100%}.mx_EditableItem_email{vertical-align:middle}.mx_EditableItem_promptText{margin-right:10px;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_EditableItem_confirmBtn{margin-right:5px}.mx_EditableItem_item{-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;width:calc(100% - 14px);overflow-x:hidden;text-overflow:ellipsis}.mx_EditableItemList_label{margin-bottom:5px}.mx_ErrorBoundary{width:100%;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_ErrorBoundary,.mx_ErrorBoundary_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ErrorBoundary_body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:400px}.mx_ErrorBoundary_body .mx_AccessibleButton{margin-top:5px}.mx_EventListSummary{position:relative}.mx_TextualEvent.mx_EventListSummary_summary{font-size:1.4rem;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_EventListSummary_avatars{display:inline-block;margin-right:8px;padding-top:8px;line-height:1.2rem}.mx_EventListSummary_avatars .mx_BaseAvatar{margin-right:-4px;cursor:pointer}.mx_EventListSummary_toggle{color:#0dbd8b;cursor:pointer;float:right;margin-right:10px;margin-top:8px}.mx_EventListSummary_line{border-bottom:1px solid transparent;margin-left:63px;line-height:3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_line{line-height:2.2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle{margin-top:3px}.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary{font-size:1.3rem}.mx_FacePile .mx_FacePile_faces{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;vertical-align:middle}.mx_FacePile .mx_FacePile_faces>.mx_FacePile_face+.mx_FacePile_face{margin-right:-8px}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image{border:1px solid #fff}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial{margin:1px}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more{position:relative;border-radius:100%;width:30px;height:30px;background-color:hsla(0,0%,91%,.77)}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before{content:"";z-index:1;position:absolute;top:0;left:0;height:inherit;width:inherit;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_FacePile .mx_FacePile_summary{margin-left:12px;font-size:1.4rem;line-height:2.4rem;color:#8d99a5}.mx_Field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;position:relative;margin:1em 0;border-radius:4px;-webkit-transition:border-color .25s;transition:border-color .25s;border:1px solid #e7e7e7}.mx_Field_prefix{border-right:1px solid #e7e7e7}.mx_Field_postfix{border-left:1px solid #e7e7e7}.mx_Field input,.mx_Field select,.mx_Field textarea{font-weight:400;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;border:none;border-radius:4px;padding:8px 9px;color:#2e2f32;background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_Field select{-moz-appearance:none;-webkit-appearance:none}.mx_Field_select:before{content:"";position:absolute;top:15px;right:10px;width:10px;height:6px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;z-index:1;pointer-events:none}.mx_Field:focus-within{border-color:#238cf5}.mx_Field input:focus,.mx_Field select:focus,.mx_Field textarea:focus{outline:0}.mx_Field input::-webkit-input-placeholder,.mx_Field textarea::-webkit-input-placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-moz-placeholder,.mx_Field textarea::-moz-placeholder{-moz-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:-ms-input-placeholder,.mx_Field textarea:-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-ms-input-placeholder,.mx_Field textarea::-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::placeholder,.mx_Field textarea::placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-moz-placeholder,.mx_Field textarea:placeholder-shown:focus::-moz-placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus:-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-moz-placeholder-shown:focus::placeholder,.mx_Field textarea:-moz-placeholder-shown:focus::placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-ms-input-placeholder:focus::placeholder,.mx_Field textarea:-ms-input-placeholder:focus::placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::placeholder,.mx_Field textarea:placeholder-shown:focus::placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field label{-webkit-transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;color:#2e2f32;background-color:transparent;font-size:1.4rem;position:absolute;left:0;top:0;margin:7px 8px;padding:2px;pointer-events:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 20px)}.mx_Field input:not(:-moz-placeholder-shown)+label,.mx_Field textarea:not(:-moz-placeholder-shown)+label{-moz-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:not(:-ms-input-placeholder)+label,.mx_Field textarea:not(:-ms-input-placeholder)+label{-ms-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field_labelAlwaysTopLeft label,.mx_Field input:focus+label,.mx_Field input:not(:placeholder-shown)+label,.mx_Field select+label,.mx_Field textarea:focus+label,.mx_Field textarea:not(:placeholder-shown)+label{-webkit-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:focus+label,.mx_Field select:focus+label,.mx_Field textarea:focus+label{color:#238cf5}.mx_Field input:disabled,.mx_Field input:disabled+label,.mx_Field select:disabled,.mx_Field select:disabled+label,.mx_Field textarea:disabled,.mx_Field textarea:disabled+label{background-color:#fff;color:#888}.mx_Field_valid.mx_Field,.mx_Field_valid.mx_Field:focus-within{border-color:#0dbd8b}.mx_Field_valid.mx_Field:focus-within label,.mx_Field_valid.mx_Field label{color:#0dbd8b}.mx_Field_invalid.mx_Field,.mx_Field_invalid.mx_Field:focus-within{border-color:#ff4b55}.mx_Field_invalid.mx_Field:focus-within label,.mx_Field_invalid.mx_Field label{color:#ff4b55}.mx_Field_tooltip{margin-top:-12px;margin-left:4px;width:200px}.mx_Field_tooltip.mx_Field_valid{-webkit-animation:mx_fadeout 1s 2s forwards;animation:mx_fadeout 1s 2s forwards}.mx_Field .mx_Dropdown_input{border:initial;border-radius:0;border-radius:initial}.mx_Field .mx_CountryDropdown{width:7.8rem}.mx_FormButton{line-height:1.6rem;padding:5px 15px;font-size:1.2rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_FormButton:not(:last-child){margin-right:8px}.mx_FormButton.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_FormButton.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_FormButton.mx_AccessibleButton_kind_secondary{color:#737d8c;border:1px solid #737d8c;background-color:unset}.mx_ImageView{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView,.mx_ImageView_image_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%}.mx_ImageView_image_wrapper{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_ImageView_image{pointer-events:all;-ms-flex-negative:0;flex-shrink:0}.mx_ImageView_panel{width:100%;height:68px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_ImageView_info_wrapper,.mx_ImageView_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_info_wrapper{pointer-events:all;padding-left:32px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#fff}.mx_ImageView_info{padding-left:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView_info_sender{font-weight:700}.mx_ImageView_toolbar{padding-right:16px;pointer-events:all;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_button{margin-left:24px;display:block}.mx_ImageView_button:before{content:"";height:22px;width:22px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;display:block;background-color:#c1c6cd}.mx_ImageView_button_rotateCW:before{-webkit-mask-image:url(../../img/image-view/rotate-cw.60d903e.svg);mask-image:url(../../img/image-view/rotate-cw.60d903e.svg)}.mx_ImageView_button_rotateCCW:before{-webkit-mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg);mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg)}.mx_ImageView_button_zoomOut:before{-webkit-mask-image:url(../../img/image-view/zoom-out.8506f80.svg);mask-image:url(../../img/image-view/zoom-out.8506f80.svg)}.mx_ImageView_button_zoomIn:before{-webkit-mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg);mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg)}.mx_ImageView_button_download:before{-webkit-mask-image:url(../../img/image-view/download.2eac468.svg);mask-image:url(../../img/image-view/download.2eac468.svg)}.mx_ImageView_button_more:before{-webkit-mask-image:url(../../img/image-view/more.0427c6c.svg);mask-image:url(../../img/image-view/more.0427c6c.svg)}.mx_ImageView_button_close{border-radius:100%;background:#21262c}.mx_ImageView_button_close:before{width:32px;height:32px;-webkit-mask-image:url(../../img/image-view/close.97d1731.svg);mask-image:url(../../img/image-view/close.97d1731.svg);-webkit-mask-size:40%;mask-size:40%}.mx_InfoTooltip_icon,.mx_InfoTooltip_icon:before{width:16px;height:16px;display:inline-block}.mx_InfoTooltip_icon:before{background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/info.dc07e19.svg);mask-image:url(../../img/element-icons/info.dc07e19.svg)}.mx_InlineSpinner{display:inline}.mx_InlineSpinner_spin img{margin:0 6px;vertical-align:-3px}.mx_InviteReason{position:relative;margin-bottom:1em}.mx_InviteReason .mx_InviteReason_reason{visibility:visible}.mx_InviteReason .mx_InviteReason_view{display:none;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;color:#737d8c}.mx_InviteReason .mx_InviteReason_view:before{content:"";margin-right:8px;background-color:#737d8c;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_InviteReason_hidden .mx_InviteReason_reason{visibility:hidden}.mx_InviteReason_hidden .mx_InviteReason_view{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ManageIntegsButton_error{position:relative;float:right;cursor:not-allowed}.mx_ManageIntegsButton_error img{position:absolute;right:-5px;top:-5px}.mx_ManageIntegsButton_errorPopup{position:absolute;top:110%;left:-275%;width:550%;padding:30%;font-size:10pt;line-height:1.5em;border-radius:5px;background-color:#0dbd8b;color:#fff;text-align:center;z-index:1000}.mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup{display:none}.mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup{display:inline}.mx_MiniAvatarUploader{position:relative;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_MiniAvatarUploader .mx_Tooltip{display:inline-block;position:absolute;z-index:unset;width:-webkit-max-content;width:-moz-max-content;width:max-content;left:72px;top:0}.mx_MiniAvatarUploader:after,.mx_MiniAvatarUploader:before{content:"";position:absolute;height:26px;width:26px;right:-6px;bottom:-6px}.mx_MiniAvatarUploader:before{background-color:#fff;border-radius:50%;z-index:1}.mx_MiniAvatarUploader:after{background-color:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg);-webkit-mask-size:16px;mask-size:16px;z-index:2}.mx_MiniAvatarUploader.mx_MiniAvatarUploader_busy:after{background:url(../../img/spinner.0b29ec9.gif) no-repeat 50%;background-size:80%;-webkit-mask:unset;mask:unset}.mx_MiniAvatarUploader_input{display:none}.mx_PowerSelector{width:100%}.mx_PowerSelector .mx_Field input,.mx_PowerSelector .mx_Field select{-webkit-box-sizing:border-box;box-sizing:border-box}progress.mx_ProgressBar{height:6px;width:60px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:6px}progress.mx_ProgressBar::-moz-progress-bar{border-radius:6px}progress.mx_ProgressBar::-webkit-progress-bar,progress.mx_ProgressBar::-webkit-progress-value{border-radius:6px}progress.mx_ProgressBar{color:#0dbd8b}progress.mx_ProgressBar::-moz-progress-bar{background-color:#0dbd8b}progress.mx_ProgressBar::-webkit-progress-value{background-color:#0dbd8b}progress.mx_ProgressBar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar::-webkit-progress-bar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar ::-webkit-progress-value{-webkit-transition:width 1s;transition:width 1s}progress.mx_ProgressBar ::-moz-progress-bar{-moz-transition:padding-bottom 1s;transition:padding-bottom 1s;padding-bottom:var(--value);transform-origin:0 0;transform:rotate(-90deg) translateX(-15px);padding-left:15px;height:0}.mx_QRCode img{border-radius:8px}.mx_ReplyThread{margin-top:0}.mx_ReplyThread .mx_DateSeparator{font-size:1em!important;margin-top:0;margin-bottom:0;padding-bottom:1px;bottom:-5px}.mx_ReplyThread_show{cursor:pointer}blockquote.mx_ReplyThread{margin-left:0;padding-left:10px;border-left:4px solid #ddd}.mx_ResizeHandle{cursor:row-resize;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;z-index:100}.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -5px;padding:0 5px;cursor:col-resize}.mx_ResizeHandle.mx_ResizeHandle_vertical{margin:-5px 0;padding:5px 0;cursor:row-resize}.mx_MatrixChat>.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -10px 0 0;padding:0 8px 0 0}.mx_ResizeHandle>div{background:transparent}.mx_ResizeHandle.mx_ResizeHandle_horizontal>div{width:1px;height:100%}.mx_ResizeHandle.mx_ResizeHandle_vertical>div{height:1px}.mx_AtRoomPill,.mx_GroupPill,.mx_RoomPill,.mx_UserPill{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle;border-radius:1.6rem;line-height:1.5rem;padding-left:0}a.mx_Pill{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 1ch)}.mx_Pill{padding:.1rem .4em .1rem .1rem;vertical-align:text-top;line-height:1.7rem}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_GroupPill{color:#fff;background-color:#aaa}.mx_EventTile_content .markdown-body a.mx_Pill{text-decoration:none}.mx_EventTile_content .markdown-body a.mx_UserPill,.mx_UserPill{color:#2e2f32;background-color:rgba(0,0,0,.1)}.mx_UserPill_selected{background-color:#0dbd8b!important}.mx_EventTile_content .markdown-body a.mx_AtRoomPill,.mx_EventTile_content .mx_AtRoomPill,.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me,.mx_MessageComposer_input .mx_AtRoomPill{color:#fff;background-color:#ff4b55}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_EventTile_content .markdown-body a.mx_RoomPill,.mx_GroupPill,.mx_RoomPill{color:#fff;background-color:#aaa}.mx_EventTile_body .mx_GroupPill,.mx_EventTile_body .mx_RoomPill,.mx_EventTile_body .mx_UserPill{cursor:pointer}.mx_AtRoomPill .mx_BaseAvatar,.mx_GroupPill .mx_BaseAvatar,.mx_RoomPill .mx_BaseAvatar,.mx_UserPill .mx_BaseAvatar{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:10rem;margin-right:.24rem}.mx_Markdown_BOLD{font-weight:700}.mx_Markdown_ITALIC{font-style:italic}.mx_Markdown_CODE{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.mx_Markdown_HR{display:block;background:#e9e9e9}.mx_Markdown_STRIKETHROUGH{text-decoration:line-through}.mx_RoleButton{margin-left:4px;margin-right:4px;cursor:pointer;display:inline-block}.mx_RoleButton object{pointer-events:none}.mx_RoleButton_tooltip{display:inline-block;position:relative;top:-25px;left:6px}.mx_RoomAliasField{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;min-width:0;max-width:100%}.mx_RoomAliasField input{width:150px;padding-left:0;padding-right:0}.mx_RoomAliasField input::-webkit-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-moz-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input:-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::placeholder{color:#888;font-weight:400}.mx_RoomAliasField .mx_Field_postfix,.mx_RoomAliasField .mx_Field_prefix{color:#888;border-left:none;border-right:none;font-weight:600;padding:9px 10px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomAliasField .mx_Field_postfix{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 180px)}.mx_SSOButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_SSOButtons .mx_SSOButtons_row+.mx_SSOButtons_row{margin-top:16px}.mx_SSOButtons .mx_SSOButton{position:relative;width:100%;padding:7px 32px;text-align:center;border-radius:8px;display:inline-block;font-size:1.4rem;font-weight:600;border:1px solid #e7e7e7;color:#2e2f32}.mx_SSOButtons .mx_SSOButton>img{-o-object-fit:contain;object-fit:contain;position:absolute;left:8px;top:4px}.mx_SSOButtons .mx_SSOButton_default{color:#0dbd8b;background-color:#fff;border-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary{color:#fff;background-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_mini{-webkit-box-sizing:border-box;box-sizing:border-box;width:50px;height:50px;min-width:50px;padding:12px}.mx_SSOButtons .mx_SSOButton_mini>img{left:12px;top:12px}.mx_SSOButtons .mx_SSOButton_mini+.mx_SSOButton_mini{margin-left:16px}.mx_ServerPicker{margin-bottom:14px;border-bottom:1px solid rgba(141,151,165,.2);display:grid;grid-template-columns:auto -webkit-min-content;grid-template-columns:auto min-content;grid-template-rows:auto auto auto;font-size:1.4rem;line-height:2rem}.mx_ServerPicker>h3{font-weight:600;margin:0 0 20px;grid-column:1;grid-row:1}.mx_ServerPicker .mx_ServerPicker_help{width:20px;height:20px;background-color:#c1c6cd;border-radius:10px;grid-column:2;grid-row:1;margin-left:auto;text-align:center;color:#fff;font-size:16px;position:relative}.mx_ServerPicker .mx_ServerPicker_help:before{content:"";width:24px;height:24px;position:absolute;top:-2px;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/i.80d84f3.svg);mask-image:url(../../img/element-icons/i.80d84f3.svg);background:#fff}.mx_ServerPicker .mx_ServerPicker_server{color:#232f32;grid-column:1;grid-row:2;margin-bottom:16px}.mx_ServerPicker .mx_ServerPicker_change{padding:0;font-size:inherit;grid-column:2;grid-row:2}.mx_ServerPicker .mx_ServerPicker_desc{margin-top:-12px;color:#8d99a5;grid-column:1/2;grid-row:3;margin-bottom:16px}.mx_ServerPicker_helpDialog .mx_Dialog_content{width:456px}.mx_Slider{position:relative;margin:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Slider_dotContainer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_Slider_bar,.mx_Slider_dotContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_Slider_bar{-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;height:1em;width:100%;padding:0 .5em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Slider_bar>hr{width:100%;height:.4em;background-color:#c1c9d6;border:0}.mx_Slider_selection{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:calc(100% - 1em);height:1em;position:absolute;pointer-events:none}.mx_Slider_selectionDot{position:absolute;width:1.1em;height:1.1em;background-color:#0dbd8b;border-radius:50%;-webkit-box-shadow:0 0 6px #d3d3d3;box-shadow:0 0 6px #d3d3d3;z-index:10}.mx_Slider_selection>hr{margin:0;border:.2em solid #0dbd8b}.mx_Slider_dot{height:1em;width:1em;border-radius:50%;background-color:#c1c9d6;z-index:0}.mx_Slider_dotActive{background-color:#0dbd8b}.mx_Slider_dotValue{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#c1c9d6}.mx_Slider_labelContainer{width:1em}.mx_Slider_label{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;left:-50%}.mx_Spinner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_MatrixChat_middlePanel .mx_Spinner{height:auto}.mx_Checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Checkbox input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0}.mx_Checkbox input[type=checkbox]+label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;-ms-flex-negative:0;flex-shrink:0;height:1.6rem;width:1.6rem;size:.5rem;border:.15rem solid rgba(97,112,139,.5);-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:.4rem}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background img{display:none;height:100%;width:100%;-webkit-filter:invert(100%);filter:invert(100%)}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background{background:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background img{display:block}.mx_Checkbox input[type=checkbox]+label>:not(.mx_Checkbox_background){margin-left:10px}.mx_Checkbox input[type=checkbox]:disabled+label{opacity:.5;cursor:not-allowed}.mx_Checkbox input[type=checkbox]:checked:disabled+label>.mx_Checkbox_background{background-color:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton{position:relative;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_RadioButton,.mx_RadioButton>.mx_RadioButton_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_RadioButton>.mx_RadioButton_content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:8px;margin-right:8px}.mx_RadioButton .mx_RadioButton_spacer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.6rem;width:1.6rem}.mx_RadioButton>input[type=radio]{margin:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mx_RadioButton>input[type=radio]+div{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;height:1.6rem;width:1.6rem;margin-left:2px;border:.15rem solid #61708b;border-radius:1.6rem}.mx_RadioButton>input[type=radio]+div>div{-webkit-box-sizing:border-box;box-sizing:border-box;height:.8rem;width:.8rem;border-radius:.8rem}.mx_RadioButton>input[type=radio].focus-visible+div{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_RadioButton>input[type=radio].focus-visible+div{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton>input[type=radio]:checked+div{border-color:#0dbd8b}.mx_RadioButton>input[type=radio]:checked+div>div{background:#0dbd8b}.mx_RadioButton>input[type=radio]:disabled+div,.mx_RadioButton>input[type=radio]:disabled+div+span{opacity:.5;cursor:not-allowed}.mx_RadioButton>input[type=radio]:disabled+div{border-color:#61708b}.mx_RadioButton>input[type=radio]:checked:disabled+div>div{background-color:#61708b}.mx_RadioButton_outlined{border:1px solid #e3e8f0;border-radius:8px}.mx_RadioButton_checked{border-color:#0dbd8b}.mx_SyntaxHighlight{background:none!important;color:#747474!important}.mx_TextWithTooltip_tooltip{display:none}.mx_ToggleSwitch{-webkit-transition:background-color .2s ease-out .1s;transition:background-color .2s ease-out .1s;width:4.4rem;height:2rem;border-radius:1.5rem;padding:2px;background-color:#c1c9d6;opacity:.5}.mx_ToggleSwitch_enabled{cursor:pointer;opacity:1}.mx_ToggleSwitch.mx_ToggleSwitch_on{background-color:#0dbd8b}.mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 2rem)}.mx_ToggleSwitch_ball{position:relative;width:2rem;height:2rem;border-radius:2rem;background-color:#fff;-webkit-transition:left .15s ease-out .1s;transition:left .15s ease-out .1s;left:0}@-webkit-keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@-webkit-keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}@keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}.mx_Tooltip_chevron{position:absolute;left:-7px;top:10px;width:0;height:0;border-top:7px solid transparent;border-right:7px solid #e7e7e7;border-bottom:7px solid transparent}.mx_Tooltip_chevron:after{content:"";width:0;height:0;border-top:6px solid transparent;border-right:6px solid #fff;border-bottom:6px solid transparent;position:absolute;top:-6px;left:1px}.mx_Tooltip{position:fixed;border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);z-index:6000;padding:10px;pointer-events:none;line-height:1.4rem;font-size:1.2rem;font-weight:500;max-width:200px;word-break:break-word;margin-right:50px;background-color:#27303a;color:#fff;border:0;text-align:center}.mx_Tooltip,.mx_Tooltip .mx_Tooltip_chevron{display:none}.mx_Tooltip.mx_Tooltip_visible{-webkit-animation:mx_fadein .2s forwards;animation:mx_fadein .2s forwards}.mx_Tooltip.mx_Tooltip_invisible{-webkit-animation:mx_fadeout .1s forwards;animation:mx_fadeout .1s forwards}.mx_Field_tooltip{background-color:#fff;color:#2e2f32;border:1px solid #e7e7e7;text-align:unset}.mx_Field_tooltip .mx_Tooltip_chevron{display:unset}.mx_Tooltip_title{font-weight:600}.mx_Tooltip_sub{opacity:.7;margin-top:4px}.mx_TooltipButton{display:inline-block;width:11px;height:11px;margin-left:5px;border:2px solid #dbdbdb;border-radius:20px;color:#dbdbdb;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in;opacity:.6;line-height:1.1rem;text-align:center;cursor:pointer}.mx_TooltipButton:hover{opacity:1}.mx_TooltipButton_container{position:relative;top:-18px;left:4px}.mx_TooltipButton_helpText{width:400px;text-align:start;line-height:17px!important}.mx_Validation{position:relative}.mx_Validation_details{padding-left:20px;margin:0}.mx_Validation_description+.mx_Validation_details{margin:1em 0 0}.mx_Validation_detail{position:relative;font-weight:400;list-style:none;margin-bottom:.5em}.mx_Validation_detail:last-child{margin-bottom:0}.mx_Validation_detail:before{content:"";position:absolute;width:14px;height:14px;top:0;left:-18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_Validation_detail.mx_Validation_valid{color:#0dbd8b}.mx_Validation_detail.mx_Validation_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_Validation_detail.mx_Validation_invalid{color:#ff4b55}.mx_Validation_detail.mx_Validation_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_EmojiPicker{width:340px;height:450px;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.mx_EmojiPicker_header{padding:4px 8px 0;border-bottom:1px solid #e9edf1}.mx_EmojiPicker_anchor{padding:8px 8px 6px;border:none;border-bottom:2px solid transparent;background-color:transparent;border-radius:4px 4px 0 0;width:36px;height:38px}.mx_EmojiPicker_anchor:not(:disabled){cursor:pointer}.mx_EmojiPicker_anchor:not(:disabled):hover{background-color:#ddd;border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_anchor:before{background-color:#2e2f32;content:"";display:inline-block;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:100%;height:100%}.mx_EmojiPicker_anchor:disabled:before{background-color:#ddd}.mx_EmojiPicker_anchor_activity:before{-webkit-mask-image:url(../../img/emojipicker/activity.921ec9f.svg);mask-image:url(../../img/emojipicker/activity.921ec9f.svg)}.mx_EmojiPicker_anchor_custom:before{-webkit-mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg);mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg)}.mx_EmojiPicker_anchor_flags:before{-webkit-mask-image:url(../../img/emojipicker/flags.1a8855e.svg);mask-image:url(../../img/emojipicker/flags.1a8855e.svg)}.mx_EmojiPicker_anchor_foods:before{-webkit-mask-image:url(../../img/emojipicker/foods.c6b220a.svg);mask-image:url(../../img/emojipicker/foods.c6b220a.svg)}.mx_EmojiPicker_anchor_nature:before{-webkit-mask-image:url(../../img/emojipicker/nature.6540b99.svg);mask-image:url(../../img/emojipicker/nature.6540b99.svg)}.mx_EmojiPicker_anchor_objects:before{-webkit-mask-image:url(../../img/emojipicker/objects.4d34f58.svg);mask-image:url(../../img/emojipicker/objects.4d34f58.svg)}.mx_EmojiPicker_anchor_people:before{-webkit-mask-image:url(../../img/emojipicker/people.e918580.svg);mask-image:url(../../img/emojipicker/people.e918580.svg)}.mx_EmojiPicker_anchor_places:before{-webkit-mask-image:url(../../img/emojipicker/places.7310322.svg);mask-image:url(../../img/emojipicker/places.7310322.svg)}.mx_EmojiPicker_anchor_recent:before{-webkit-mask-image:url(../../img/emojipicker/recent.13b42e2.svg);mask-image:url(../../img/emojipicker/recent.13b42e2.svg)}.mx_EmojiPicker_anchor_symbols:before{-webkit-mask-image:url(../../img/emojipicker/symbols.15a557d.svg);mask-image:url(../../img/emojipicker/symbols.15a557d.svg)}.mx_EmojiPicker_anchor_visible{border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_search{margin:8px;border-radius:4px;border:1px solid #e7e7e7;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_EmojiPicker_search input{-webkit-box-flex:1;-ms-flex:1;flex:1;border:none;padding:8px 12px;border-radius:4px 0}.mx_EmojiPicker_search button{border:none;background-color:inherit;margin:0;padding:8px;-ms-flex-item-align:center;align-self:center;width:32px;height:32px}.mx_EmojiPicker_search_clear{cursor:pointer}.mx_EmojiPicker_search_icon{width:16px;margin:8px}.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear){pointer-events:none}.mx_EmojiPicker_search_icon:after{-webkit-mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:#2e2f32;content:"";display:inline-block;width:100%;height:100%}.mx_EmojiPicker_search_clear:after{-webkit-mask-image:url(../../img/emojipicker/delete.f7344c5.svg);mask-image:url(../../img/emojipicker/delete.f7344c5.svg)}.mx_EmojiPicker_category{padding:0 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_category_label{width:304px}.mx_EmojiPicker_list{width:304px;padding:0;margin:0}.mx_EmojiPicker_item_wrapper{display:inline-block;list-style:none;width:38px;cursor:pointer}.mx_EmojiPicker_item{display:inline-block;font-size:2rem;padding:5px;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-radius:4px}.mx_EmojiPicker_item:hover{background-color:#ddd}.mx_EmojiPicker_item_selected{color:rgba(0,0,0,.5);border:1px solid #0dbd8b;padding:4px}.mx_EmojiPicker_category_label,.mx_EmojiPicker_preview_name{font-size:1.6rem;font-weight:600;margin:0}.mx_EmojiPicker_footer{border-top:1px solid #e9edf1;min-height:72px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_preview_emoji{font-size:3.2rem;padding:8px 16px}.mx_EmojiPicker_preview_text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_name{text-transform:capitalize}.mx_EmojiPicker_shortcode{color:#747474;font-size:1.4rem}.mx_EmojiPicker_shortcode:after,.mx_EmojiPicker_shortcode:before{content:":"}.mx_EmojiPicker_quick{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.mx_EmojiPicker_quick_header .mx_EmojiPicker_name{margin-right:4px}.mx_GroupPublicity_toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:8px}.mx_GroupPublicity_toggle .mx_GroupTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.mx_GroupPublicity_toggle .mx_ToggleSwitch{float:right}.mx_GroupRoomTile{position:relative;color:#2e2f32;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupRoomList_wrapper{padding:10px}.mx_GroupUserSettings_groupPublicity_scrollbox{height:200px;border:1px solid transparent;border-radius:3px;overflow:hidden}.mx_CreateEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg)}.mx_DateSeparator{clear:both;margin:4px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.4rem;color:#9e9e9e}.mx_DateSeparator>hr{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:0;border:none;border-bottom:1px solid transparent}.mx_DateSeparator>div{margin:0 25px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_EventTileBubble{background-color:#f2f5f8;padding:10px;border-radius:8px;margin:10px auto;max-width:75%;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:24px minmax(0,1fr) -webkit-min-content;grid-template-columns:24px minmax(0,1fr) min-content}.mx_EventTileBubble:after,.mx_EventTileBubble:before{position:relative;grid-column:1;grid-row:1/3;width:16px;height:16px;content:"";top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;margin-top:4px}.mx_EventTileBubble .mx_EventTileBubble_subtitle,.mx_EventTileBubble .mx_EventTileBubble_title{overflow-wrap:break-word}.mx_EventTileBubble .mx_EventTileBubble_title{font-weight:600;font-size:1.5rem;grid-column:2;grid-row:1}.mx_EventTileBubble .mx_EventTileBubble_subtitle{font-size:1.2rem;grid-column:2;grid-row:2}.mx_MEmoteBody{white-space:pre-wrap}.mx_MEmoteBody_sender{cursor:pointer}.mx_MFileBody_download{color:#0dbd8b}.mx_MFileBody_download .mx_MFileBody_download_icon{width:12px;height:12px;-webkit-mask-size:12px;mask-size:12px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/download.4f331f0.svg);mask-image:url(../../img/download.4f331f0.svg);background-color:#0dbd8b;display:inline-block}.mx_MFileBody_download a{color:#0dbd8b;text-decoration:none;cursor:pointer}.mx_MFileBody_download object{margin-left:-16px;padding-right:4px;margin-top:-4px;vertical-align:middle;pointer-events:none}.mx_MFileBody_download iframe{margin:0;padding:0;border:none;width:100%;height:1.5em}.mx_MFileBody_info{background-color:#e3e8f0;border-radius:12px;width:243px;padding:6px 12px;color:#737d8c}.mx_MFileBody_info .mx_MFileBody_info_icon{background-color:#fff;border-radius:20px;display:inline-block;width:32px;height:32px;position:relative;vertical-align:middle;margin-right:12px}.mx_MFileBody_info .mx_MFileBody_info_icon:before{content:"";-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg);mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg);background-color:#737d8c;width:13px;height:15px;position:absolute;top:8px;left:9px}.mx_MFileBody_info .mx_MFileBody_info_filename{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;display:inline-block;width:calc(100% - 44px);vertical-align:middle}.mx_MImageBody{display:block;margin-right:34px}.mx_MImageBody_thumbnail{position:absolute;width:100%;height:100%;left:0;top:0;border-radius:4px}.mx_MImageBody_thumbnail_container{overflow:hidden;position:relative}.mx_MImageBody_thumbnail_spinner{position:absolute;left:50%;top:50%}.mx_MImageBody_thumbnail_spinner>*{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.mx_MImageBody_gifLabel{position:absolute;display:block;top:0;left:14px;padding:5px;border-radius:5px;background:rgba(0,0,0,.7);border:2px solid rgba(0,0,0,.2);color:#fff;pointer-events:none}.mx_HiddenImagePlaceholder{position:absolute;left:0;top:0;bottom:0;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;cursor:pointer;background-color:#f3f8fd}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button{color:#0dbd8b}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span.mx_HiddenImagePlaceholder_eye{margin-right:8px;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span:not(.mx_HiddenImagePlaceholder_eye){vertical-align:text-bottom}.mx_EventTile:hover .mx_HiddenImagePlaceholder{background-color:#fff}.mx_MJitsiWidgetEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_MNoticeBody{white-space:pre-wrap;opacity:.6}.mx_MStickerBody_wrapper{padding:20px 0}.mx_MStickerBody_tooltip{position:absolute;top:50%}.mx_MStickerBody_hidden{max-width:220px;text-decoration:none;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MTextBody{white-space:pre-wrap}span.mx_MVideoBody video.mx_MVideoBody{max-width:100%;height:auto;border-radius:4px}.mx_MVoiceMessageBody{display:inline-block}.mx_MessageActionBar{position:absolute;visibility:hidden;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;height:24px;line-height:2.4rem;border-radius:4px;background:#fff;top:-26px;right:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_MessageActionBar:before{content:"";position:absolute;width:calc(66px + 100%);height:calc(20px + 100%);top:-12px;left:-58px;z-index:-1;cursor:auto}.mx_MessageActionBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageActionBar>:hover{border-color:#ddd;z-index:1}.mx_MessageActionBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageActionBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageActionBar>:only-child{border-radius:3px}.mx_MessageActionBar_maskButton{width:27px}.mx_MessageActionBar_maskButton:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-size:18px;mask-size:18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageActionBar_reactButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_MessageActionBar_replyButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg);mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg)}.mx_MessageActionBar_editButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg);mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg)}.mx_MessageActionBar_optionsButton:after{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_MessageActionBar_resendButton:after{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg)}.mx_MessageActionBar_cancelButton:after{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageTimestamp{color:#acacac;font-size:1rem;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mx_MjolnirBody{opacity:.4}.mx_ReactionsRow{margin:6px 0;color:#2e2f32}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton{position:relative;display:inline-block;visibility:hidden;width:24px;height:24px;vertical-align:middle;margin-left:4px}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before{content:"";position:absolute;height:100%;width:100%;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active{visibility:visible}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before,.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before{background-color:#2e2f32}.mx_EventTile:hover .mx_ReactionsRow_addReactionButton{visibility:visible}.mx_ReactionsRow_showAll{text-decoration:none;font-size:1.2rem;line-height:2rem;margin-left:4px;vertical-align:middle}.mx_ReactionsRow_showAll:link,.mx_ReactionsRow_showAll:visited{color:#8d99a5}.mx_ReactionsRow_showAll:hover{color:#2e2f32}.mx_ReactionsRowButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid #e9edf1;border-radius:10px;background-color:#f3f8fd;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.mx_ReactionsRowButton:hover{border-color:#ddd}.mx_ReactionsRowButton.mx_ReactionsRowButton_selected{background-color:#e9fff9;border-color:#0dbd8b}.mx_ReactionsRowButton.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_ReactionsRowButton .mx_ReactionsRowButton_content{max-width:100px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:4px}.mx_RedactedBody{white-space:pre-wrap;color:#61708b;vertical-align:middle;padding-left:20px;position:relative}.mx_RedactedBody:before{height:14px;width:14px;background-color:#61708b;-webkit-mask-image:url(../../img/feather-customised/trash.custom.1e6ecd4.svg);mask-image:url(../../img/feather-customised/trash.custom.1e6ecd4.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;content:"";position:absolute;top:1px;left:0}.mx_RoomAvatarEvent{opacity:.5;overflow-y:hidden}.mx_RoomAvatarEvent_avatar{display:inline;position:relative;top:5px}.mx_SenderProfile_name{font-weight:600}.mx_TextualEvent{opacity:.5;overflow-y:hidden}.mx_UnknownBody{white-space:pre-wrap}.mx_EventTile_content.mx_ViewSourceEvent{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:.6;font-size:1.2rem}.mx_EventTile_content.mx_ViewSourceEvent code,.mx_EventTile_content.mx_ViewSourceEvent pre{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EventTile_content.mx_ViewSourceEvent pre{line-height:1.2;margin:3.5px 0}.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle{width:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;visibility:hidden;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle{-webkit-mask-position:0 bottom;mask-position:0 bottom;margin-bottom:7px;-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle{visibility:visible}.mx_cryptoEvent.mx_cryptoEvent_icon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_cryptoEvent.mx_cryptoEvent_icon:after,.mx_cryptoEvent.mx_cryptoEvent_icon:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_cryptoEvent.mx_cryptoEvent_icon:after{background-color:#91a1c0}.mx_cryptoEvent.mx_cryptoEvent_icon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_cryptoEvent.mx_cryptoEvent_icon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_cryptoEvent .mx_cryptoEvent_buttons,.mx_cryptoEvent .mx_cryptoEvent_state{grid-column:3;grid-row:1/3}.mx_cryptoEvent .mx_cryptoEvent_buttons{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_cryptoEvent .mx_cryptoEvent_state{width:130px;padding:10px 20px;margin:auto 0;text-align:center;color:#8d99a5;overflow-wrap:break-word;font-size:1.2rem}.mx_BaseCard{padding:0 8px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_BaseCard .mx_BaseCard_header{margin:8px 0}.mx_BaseCard .mx_BaseCard_header>h2{margin:0 44px;font-size:1.8rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{position:absolute;background-color:rgba(141,151,165,.2);height:20px;width:20px;margin:12px;top:0;border-radius:10px}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{content:"";position:absolute;height:20px;width:20px;top:0;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#91a1c0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back{left:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-size:22px;mask-size:22px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{right:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg);-webkit-mask-size:8px;mask-size:8px}.mx_BaseCard .mx_AutoHideScrollbar{margin-right:-8px;padding-right:8px;min-height:0;width:100%;height:100%}.mx_BaseCard .mx_BaseCard_Group{margin:20px 0 16px}.mx_BaseCard .mx_BaseCard_Group>*{margin-left:12px;margin-right:12px}.mx_BaseCard .mx_BaseCard_Group>h1{color:#8d99a5;font-size:1.2rem;font-weight:500}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button{padding:10px 38px 10px 12px;margin:0;position:relative;font-size:1.3rem;height:20px;line-height:20px;border-radius:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover{background-color:rgba(141,151,165,.1)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after{content:"";position:absolute;top:10px;right:6px;height:20px;width:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled{padding-right:12px}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled:after{content:unset}.mx_BaseCard .mx_BaseCard_footer{padding-top:4px;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary{color:#737d8c;background-color:rgba(141,151,165,.2);font-weight:600;font-size:1.4rem}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_FilePanel.mx_BaseCard,.mx_MemberList.mx_BaseCard,.mx_NotificationPanel.mx_BaseCard,.mx_UserInfo.mx_BaseCard{padding:32px 0 0}.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar,.mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{margin-right:unset;padding-right:unset}.mx_EncryptionInfo_spinner .mx_Spinner{margin-top:25px;margin-bottom:15px}.mx_EncryptionInfo_spinner{text-align:center}.mx_RoomSummaryCard .mx_BaseCard_header{text-align:center;margin-top:20px}.mx_RoomSummaryCard .mx_BaseCard_header h2{font-weight:600;font-size:1.8rem;margin:12px 0 4px}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias{font-size:1.3rem;color:#737d8c}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias,.mx_RoomSummaryCard .mx_BaseCard_header h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee{display:inline-block;position:relative;width:54px;height:54px;border-radius:50%;background-color:#737d8c;margin-top:-3px;margin-left:-10px;border:3px solid #f2f5f8}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee:before{content:"";position:absolute;top:13px;left:13px;height:28px;width:28px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/e2e/disabled.6c5c6be.svg);mask-image:url(../../img/e2e/disabled.6c5c6be.svg);background-color:#fff}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal{background-color:#424446}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified:before{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning{background-color:#ff4b55}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning:before{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button{padding-left:44px}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button:before{content:"";position:absolute;top:8px;left:10px;height:24px;width:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button{padding:0;height:auto;color:#8d99a5}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app{padding:10px 48px 10px 12px;text-overflow:ellipsis;overflow:hidden}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app .mx_BaseAvatar_image{vertical-align:top;margin-right:12px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app span{color:#2e2f32}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{position:absolute;top:0;height:100%;width:24px;padding:12px 4px;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:hover:after,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:hover:after{content:"";position:absolute;height:24px;width:24px;top:8px;left:0;border-radius:12px;background-color:rgba(141,151,165,.1)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{content:"";position:absolute;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{right:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{-webkit-mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg);mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options{right:48px;display:none}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after{opacity:.2}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned .mx_RoomSummaryCard_app_pinToggle:before{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_icon_app{padding-right:72px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_app_options{display:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:before{content:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:after{top:8px;pointer-events:none}.mx_RoomSummaryCard .mx_AccessibleButton_kind_link{padding:0;margin-top:12px;margin-bottom:12px;font-size:1.3rem;font-weight:600}.mx_RoomSummaryCard_icon_people:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_RoomSummaryCard_icon_files:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_RoomSummaryCard_icon_share:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_RoomSummaryCard_icon_settings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserInfo.mx_BaseCard{padding-top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;font-size:1.2rem}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel{cursor:pointer;position:absolute;top:0;border-radius:4px;background-color:#f2f5f8;margin:9px;z-index:1}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div{height:16px;width:16px;padding:4px;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:7px center;mask-position:7px center;background-color:#91a1c0}.mx_UserInfo.mx_BaseCard h2{font-size:1.8rem;font-weight:600;margin:18px 0 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container{padding:8px 16px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator{border-bottom:1px solid rgba(46,47,50,.1)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer{padding-top:0;padding-bottom:0;margin-bottom:8px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer{width:154px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge{display:none}.mx_UserInfo.mx_BaseCard .mx_RoomTile_name{width:160px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar{margin:24px 32px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div{max-width:30vh;margin:0 auto;-webkit-transition:.5s;transition:.5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div{padding-top:100%;position:relative}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div *{border-radius:100%;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:6rem!important;width:100%!important;-webkit-transition:font-size .5s;transition:font-size .5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_UserInfo.mx_BaseCard h3{text-transform:uppercase;color:#8d99a5;font-weight:600;font-size:1.2rem;margin:4px 0}.mx_UserInfo.mx_BaseCard p{margin:5px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile{text-align:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.8rem;line-height:2.5rem;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;word-break:break-all;text-overflow:ellipsis}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon{margin-top:3px;margin-right:4px;min-width:18px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus{margin-top:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField{margin:6px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField,.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{margin:11px 0 12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_Field{margin:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field{cursor:pointer;color:#0dbd8b;line-height:1.6rem;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator){padding-top:16px;padding-bottom:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator)>:not(h3){margin-left:8px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device{display:-webkit-box;display:-ms-flexbox;display:flex;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_verified .mx_UserInfo_device_trusted{color:#0dbd8b}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_unverified .mx_UserInfo_device_trusted{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device .mx_UserInfo_device_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:5px;word-break:break-word}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px 5px 0 0;width:12px;height:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:11px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind{padding:8px 18px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton,.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton{display:block;margin:16px 0 8px}.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton+.mx_AccessibleButton{margin:8px 0}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar>div{max-width:72px;margin:0 auto}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_BaseAvatar_initial{font-size:40px!important}.mx_VerificationPanel_reciprocate_section .mx_E2EIcon,.mx_VerificationPanel_verified_section .mx_E2EIcon{margin:20px auto!important}.mx_UserInfo .mx_EncryptionPanel_cancel{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#61708b;cursor:pointer;position:absolute;z-index:100;top:14px;right:14px}.mx_UserInfo .mx_VerificationPanel_qrCode{padding:4px 4px 0;background:#fff;border-radius:4px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;margin:0 auto!important}.mx_UserInfo .mx_VerificationPanel_qrCode canvas{height:auto!important;width:100%!important;max-width:240px}.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_FormButton{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px;display:block;margin:10px 0}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:10px;margin-bottom:10px;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText{width:50px;vertical-align:middle;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption{background-color:#f3f8fd;border-radius:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;max-width:310px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas{width:220px!important;height:220px!important;background-color:#fff;border-radius:4px;vertical-align:middle;text-align:center;padding:10px}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p{margin-top:0;font-weight:700}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText{font-size:1.4rem;margin:30px 0;text-align:center}.mx_CompleteSecurity_body .mx_VerificationPanel_verified_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton{float:right}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton{margin-left:10px;padding:7px 40px}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_WidgetCard{height:100%;display:contents}.mx_WidgetCard .mx_AppTileFullWidth{max-width:unset;height:100%;border:0}.mx_WidgetCard .mx_BaseCard_header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_WidgetCard .mx_BaseCard_header>h2{margin-right:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton{position:relative;margin-right:44px;height:20px;width:20px;min-width:20px;padding:0}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before{content:"";position:absolute;width:20px;height:20px;top:0;left:4px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);background-color:#737d8c}.mx_WidgetCard_maxPinnedTooltip{background-color:#ff4b55;color:#fff}.mx_AliasSettings_editable{border:0;border-bottom:1px solid #c7c7c7;padding:0;min-width:240px}.mx_AliasSettings_editable:focus{border-bottom:1px solid #0dbd8b;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_AliasSettings summary{cursor:pointer;color:#0dbd8b;font-weight:600;list-style:none}.mx_AliasSettings summary::-webkit-details-marker{display:none}.mx_AliasSettings .mx_AliasSettings_localAliasHeader{margin-top:35px}.mx_AppsDrawer{margin:5px 5px 5px 18px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer{width:100%;height:10px;margin-top:-3px;display:block;position:relative}.mx_AppsDrawer .mx_AppsContainer_resizerHandle{cursor:ns-resize;width:100%!important;height:100%!important;position:absolute;bottom:0!important}.mx_AppsDrawer .mx_AppsContainer_resizerHandle:after{content:"";position:absolute;border-radius:3px;top:6px;bottom:0;left:calc(50% - 32px);right:calc(50% - 32px)}.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after{opacity:.8;background:#2e2f32}.mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before{position:absolute;left:3px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:"";background-color:#2e2f32;opacity:.8}.mx_AppsContainer_resizer{margin-bottom:8px}.mx_AppsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_AppsContainer .mx_AppTile:first-of-type{border-left-width:8px;border-radius:10px 0 0 10px}.mx_AppsContainer .mx_AppTile:last-of-type{border-right-width:8px;border-radius:0 10px 10px 0}.mx_AppsContainer .mx_ResizeHandle_horizontal{position:relative}.mx_AppsContainer .mx_ResizeHandle_horizontal>div{width:0}.mx_AppsDrawer_2apps .mx_AppTile{width:50%}.mx_AppsDrawer_2apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppsDrawer_3apps .mx_AppTile{width:33%}.mx_AppsDrawer_3apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppTile{width:50%;min-width:240px;border-color:#f2f5f8;border-style:solid;border-width:8px 5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#f2f5f8}.mx_AppTileFullWidth{width:100%!important;border:5px solid #f2f5f8;border-radius:8px;background-color:#f2f5f8}.mx_AppTile_mini,.mx_AppTileFullWidth{margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AppTile_mini{width:100%;height:200px}.mx_AppTile .mx_AppTile_persistedWrapper,.mx_AppTile_mini .mx_AppTile_persistedWrapper,.mx_AppTileFullWidth .mx_AppTile_persistedWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTile_persistedWrapper div{width:100%;height:100%}.mx_AppTileMenuBar{margin:0;font-size:1.2rem;background-color:#f2f5f8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%;padding-top:2px;padding-bottom:8px}.mx_AppTileMenuBarTitle{line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_AppTileMenuBarTitle .mx_WidgetAvatar{margin-right:12px}.mx_AppTileMenuBarTitle>:last-child{margin-left:9px}.mx_AppTileMenuBarWidgets{float:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AppTileMenuBar_iconButton{width:12px;height:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;background-color:#212121;margin:0 3px}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout{-webkit-mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg);mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg)}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_AppTileBody{height:100%;background-color:#fff}.mx_AppTileBody,.mx_AppTileBody_mini{width:100%;overflow:hidden;border-radius:8px}.mx_AppTileBody_mini{height:200px}.mx_AppTile .mx_AppTileBody,.mx_AppTile_mini .mx_AppTileBody_mini,.mx_AppTileFullWidth .mx_AppTileBody{height:inherit;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTileBody_mini iframe,.mx_AppTileBody iframe{border:none;width:100%;height:100%}.mx_AppTileBody iframe{overflow:hidden;padding:0;margin:0;display:block}.mx_AppPermissionWarning{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.6rem}.mx_AppPermissionWarning_row{margin-bottom:12px}.mx_AppPermissionWarning_smallText{font-size:1.2rem}.mx_AppPermissionWarning_bolder{font-weight:600}.mx_AppPermissionWarning h4{margin:0;padding:0}.mx_AppPermissionWarning_helpIcon{margin-top:1px;margin-right:2px;width:10px;height:10px;display:inline-block}.mx_AppPermissionWarning_helpIcon:before{display:inline-block;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:12px;mask-size:12px;width:12px;height:12px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg);mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg)}.mx_AppPermissionWarning_tooltip{-webkit-box-shadow:none;box-shadow:none;background-color:#27303a;color:#fff;border:none;border-radius:3px;padding:6px 8px}.mx_AppPermissionWarning_tooltip ul{list-style-position:inside;padding-left:2px;margin-left:0}.mx_AppLoading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;position:relative;height:100%;background-color:#fff!important;border-radius:8px}.mx_AppLoading .mx_Spinner{position:absolute;top:0;bottom:0;left:0;right:0}.mx_AppLoading_spinner_fadeIn{-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:.5s;animation-delay:.5s;-webkit-animation-name:mx_AppLoading_spinner_fadeIn_animation;animation-name:mx_AppLoading_spinner_fadeIn_animation}@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}@keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}.mx_AppLoading iframe{display:none}.mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper{z-index:1}.mx_Autocomplete{position:absolute;bottom:0;z-index:1001;width:100%;background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_Autocomplete_ProviderSection{border-bottom:1px solid transparent}.mx_Autocomplete_Completion_block{height:34px;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_block *{margin:0 3px}.mx_Autocomplete_Completion_pill{-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2rem;height:3.4rem;padding:.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_pill>*{margin-right:.3rem}.mx_Autocomplete_Completion_subtitle{font-style:italic;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Autocomplete_Completion_description{color:grey}.mx_Autocomplete_Completion_container_pill{margin:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_Autocomplete_Completion.selected,.mx_Autocomplete_Completion:hover{background:#f2f5f8;outline:none}.mx_Autocomplete_provider_name{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.m_RoomView_auxPanel_stateViews{padding:5px 5px 5px 19px;border-bottom:1px solid transparent}.m_RoomView_auxPanel_stateViews_span a{text-decoration:none;color:inherit}.m_RoomView_auxPanel_stateViews_span[data-severity=warning]{font-weight:700;color:orange}.m_RoomView_auxPanel_stateViews_span[data-severity=alert]{font-weight:700;color:red}.m_RoomView_auxPanel_stateViews_span[data-severity=normal]{font-weight:400}.m_RoomView_auxPanel_stateViews_span[data-severity=notice]{font-weight:400;color:#a2a2a2}.m_RoomView_auxPanel_stateViews_delim{padding:0 5px;color:#a2a2a2}.mx_BasicMessageComposer{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_inputEmpty>:first-child:before{content:var(--placeholder);opacity:.333;width:0;height:0;overflow:visible;display:inline-block;pointer-events:none;white-space:nowrap}@-webkit-keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_BasicMessageComposer .mx_BasicMessageComposer_input{white-space:pre-wrap;word-wrap:break-word;outline:none;overflow-x:hidden}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill:before,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill:before{content:var(--avatar-letter);width:1.6rem;height:1.6rem;margin-right:.24rem;background:var(--avatar-background),#fff;color:#fff;background-repeat:no-repeat;background-size:1.6rem;border-radius:1.6rem;text-align:center;font-weight:400;line-height:1.6rem;font-size:1.04rem}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled{pointer-events:none}.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper{position:relative;height:0}.mx_E2EIcon{width:16px;height:16px;margin:0 9px;position:relative;display:block}.mx_E2EIcon_normal:after,.mx_E2EIcon_normal:before,.mx_E2EIcon_verified:after,.mx_E2EIcon_verified:before,.mx_E2EIcon_warning:after,.mx_E2EIcon_warning:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_E2EIcon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_E2EIcon:before,.mx_E2EIcon_bordered{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_E2EIcon_bordered{background-color:#f3f8fd}.mx_E2EIcon_bordered:after{-webkit-mask-size:75%;mask-size:75%}.mx_E2EIcon_bordered:before{-webkit-mask-size:65%;mask-size:65%}.mx_E2EIcon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_E2EIcon_normal:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_E2EIcon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_EditMessageComposer{padding:3px;margin:-7px -10px -5px;overflow:visible!important}.mx_EditMessageComposer .mx_BasicMessageComposer_input{border-radius:4px;border:1px solid transparent;background-color:#fff;max-height:200px;padding:3px 6px}.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus{border-color:rgba(13,189,139,.5)}.mx_EditMessageComposer .mx_EditMessageComposer_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;left:0;background:#f3f8fd;z-index:100;right:0;margin:0 -110px 0 0;padding:5px 147px 5px 5px}.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton{margin-left:5px;padding:5px 40px}.mx_EventTile_last .mx_EditMessageComposer_buttons{position:static;margin-right:-147px}.mx_EntityTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32;cursor:pointer}.mx_EntityTile .mx_E2EIcon{margin:0;position:absolute;bottom:2px;right:7px}.mx_EntityTile:hover{padding-right:30px;position:relative}.mx_EntityTile:hover:before{content:"";position:absolute;top:calc(50% - 8px);right:-8px;-webkit-mask:url(../../img/member_chevron.4163a20.png);mask:url(../../img/member_chevron.4163a20.png);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:16px;height:16px;background-color:#91a1c0}.mx_EntityTile .mx_PresenceLabel{display:none}.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel{display:block}.mx_EntityTile_invite{display:table-cell;vertical-align:middle;margin-left:10px;width:26px}.mx_EntityTile_avatar,.mx_GroupRoomTile_avatar{padding:4px 12px 4px 3px;position:relative}.mx_EntityTile_name,.mx_GroupRoomTile_name{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow:hidden;font-size:1.4rem;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile_details{overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EntityTile_ellipsis .mx_EntityTile_name,.mx_EntityTile_invitePlaceholder .mx_EntityTile_name{font-style:italic;color:#2e2f32}.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar,.mx_EntityTile_offline_beenactive .mx_EntityTile_name,.mx_EntityTile_unavailable .mx_EntityTile_avatar,.mx_EntityTile_unavailable .mx_EntityTile_name{opacity:.5}.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar,.mx_EntityTile_offline_neveractive .mx_EntityTile_name,.mx_EntityTile_unknown .mx_EntityTile_avatar,.mx_EntityTile_unknown .mx_EntityTile_name{opacity:.25}.mx_EntityTile_subtext{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_EntityTile_power{-webkit-padding-start:6px;padding-inline-start:6px;font-size:1rem;color:#8d99a5;max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile:hover .mx_EntityTile_power{display:none}.mx_EventTile{max-width:100%;clear:both;padding-top:18px;font-size:1.4rem;position:relative}.mx_EventTile.mx_EventTile_info{padding-top:1px}.mx_EventTile_avatar{top:14px;left:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:.6rem;left:64px}.mx_EventTile_continuation{padding-top:0!important}.mx_EventTile_continuation.mx_EventTile_isEditing{padding-top:5px!important;margin-top:-5px}.mx_EventTile_isEditing{background-color:#f3f8fd}.mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.4rem;display:inline-block;overflow:hidden;cursor:pointer;padding-bottom:0;padding-top:0;margin:0;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 64px)}.mx_EventTile .mx_SenderProfile .mx_Flair{opacity:.7;margin-left:5px;display:inline-block;vertical-align:top;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile .mx_SenderProfile .mx_Flair img{vertical-align:-2px;margin-right:2px;border-radius:8px}.mx_EventTile_isEditing .mx_MessageTimestamp{visibility:hidden!important}.mx_EventTile .mx_MessageTimestamp{display:block;visibility:hidden;white-space:nowrap;left:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile_continuation .mx_EventTile_line{clear:both}.mx_EventTile_line,.mx_EventTile_reply{position:relative;padding-left:64px;border-radius:4px}.mx_EventListSummary .mx_EventTile_line,.mx_RoomView_timeline_rr_enabled .mx_EventTile_line{margin-right:110px}.mx_EventTile_bubbleContainer{display:grid;grid-template-columns:1fr 100px}.mx_EventTile_bubbleContainer .mx_EventTile_line{margin-right:0;grid-column:1/3;padding:0!important}.mx_EventTile_bubbleContainer .mx_EventTile_msgOption{grid-column:2}.mx_EventTile_reply{margin-right:10px}.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji{font-size:48px!important;line-height:57px!important}.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp{visibility:visible}.mx_EventTile_selected>div>a>.mx_MessageTimestamp{left:3px;width:auto}.mx_EventTile.focus-visible:focus-within>div>a>.mx_MessageTimestamp,.mx_EventTile.mx_EventTile_actionBarFocused>div>a>.mx_MessageTimestamp,.mx_EventTile:hover>div>a>.mx_MessageTimestamp,.mx_EventTile_last>div>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.focus-visible:focus-within>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.mx_EventTile_actionBarFocused>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile:hover>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile_last>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_ReplyThread .mx_EventTile>a>.mx_MessageTimestamp{visibility:visible}.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar,.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar,.mx_EventTile:hover .mx_MessageActionBar,[data-whatinput=keyboard] .mx_EventTile:focus-within .mx_MessageActionBar{visibility:visible}.mx_EventTile_selected>.mx_EventTile_line{border-left:4px solid #0dbd8b;padding-left:60px;background-color:#f6f7f8}.mx_EventTile_highlight,.mx_EventTile_highlight .markdown-body{color:#ff4b55}.mx_EventTile_highlight .markdown-body .mx_EventTile_line,.mx_EventTile_highlight .mx_EventTile_line{background-color:#fff8e3}.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile.focus-visible:focus-within .mx_EventTile_line,.mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line,.mx_EventTile:hover .mx_EventTile_line{background-color:#f6f7f8}.mx_EventTile_searchHighlight{border-radius:5px;padding-left:2px;padding-right:2px;cursor:pointer}.mx_EventTile_searchHighlight,.mx_EventTile_searchHighlight a{background-color:#0dbd8b;color:#fff}.mx_EventTile_receiptSending:before,.mx_EventTile_receiptSent:before{background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;width:14px;height:14px;content:"";position:absolute;top:0;left:0;right:0}.mx_EventTile_receiptSent:before{-webkit-mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg);mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg)}.mx_EventTile_receiptSending:before{-webkit-mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg);mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg)}.mx_EventTile_contextual{opacity:.4}.mx_EventTile_msgOption{float:right;text-align:right;position:relative;width:90px;height:1px;margin-right:10px}.mx_EventTile_msgOption a{text-decoration:none}.mx_EventTile_readAvatars{position:relative;display:inline-block;width:14px;height:14px;top:-2.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_EventTile_readAvatars .mx_BaseAvatar{position:absolute;display:inline-block;height:1.4rem;width:1.4rem;-webkit-transition:left .1s ease-out,top .3s ease-out;transition:left .1s ease-out,top .3s ease-out;-webkit-transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out;transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out}.mx_EventTile_readAvatarRemainder{color:#acacac;font-size:1.1rem;position:absolute}.mx_EventTile_content{display:block;overflow-y:hidden;overflow-x:hidden;margin-right:34px}.mx_EventTile_body{overflow-y:hidden}.mx_EventTile_spoiler{cursor:pointer}.mx_EventTile_spoiler_reason{color:#acacac;font-size:1.1rem}.mx_EventTile_spoiler_content{-webkit-filter:blur(5px) saturate(.1) sepia(1);filter:blur(5px) saturate(.1) sepia(1);-webkit-transition-duration:.5s;transition-duration:.5s}.mx_EventTile_spoiler.visible>.mx_EventTile_spoiler_content{-webkit-filter:none;filter:none}.mx_EventTile_e2eIcon{position:absolute;top:6px;left:44px;width:14px;height:14px;display:block;bottom:0;right:0;opacity:.2;background-repeat:no-repeat;background-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-size:contain;mask-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_EventTile_e2eIcon:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_EventTile_e2eIcon_undecryptable:after,.mx_EventTile_e2eIcon_unverified:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_undecryptable,.mx_EventTile_e2eIcon_unverified{opacity:1}.mx_EventTile_e2eIcon_unknown:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unknown{opacity:1}.mx_EventTile_e2eIcon_unencrypted:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unencrypted{opacity:1}.mx_EventTile_e2eIcon_unauthenticated:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_EventTile_e2eIcon_unauthenticated{opacity:1}.mx_EventTile_keyRequestInfo{font-size:1.2rem}.mx_EventTile_keyRequestInfo_text{opacity:.5}.mx_EventTile_keyRequestInfo_text a{color:#2e2f32;text-decoration:underline;cursor:pointer}.mx_EventTile_keyRequestInfo_tooltip_contents p{text-align:auto;margin-left:3px;margin-right:3px}.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child{margin-top:0}.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child{margin-bottom:0}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:60px}.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{border-left:4px solid #76cfa5}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line{border-left:4px solid #e8bf37}.mx_EventTile:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile:hover .mx_EventTile_e2eIcon{opacity:1}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>a>.mx_MessageTimestamp{width:38px}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>.mx_EventTile_e2eIcon{display:block;left:41px}.mx_EventTile_content .mx_EventTile_edited{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.2rem;color:#9e9e9e;display:inline-block;margin-left:9px;cursor:pointer}.mx_EventTile_body pre{border:1px solid transparent}.mx_EventTile_content .markdown-body{font-family:inherit!important;white-space:normal!important;line-height:inherit!important;color:inherit;font-size:1.4rem}.mx_EventTile_content .markdown-body code,.mx_EventTile_content .markdown-body pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji!important;color:#333}.mx_EventTile_content .markdown-body pre{overflow-x:overlay;overflow-y:visible}.mx_EventTile_content .markdown-body code{background-color:#f8f8f8}.mx_EventTile_lineNumbers{float:left;margin:0 .5em 0 -1.5em;color:grey}.mx_EventTile_lineNumber{text-align:right;display:block;padding-left:1em}.mx_EventTile_collapsedCodeBlock{max-height:30vh}.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre,.mx_EventTile:hover .mx_EventTile_body pre{border:1px solid #e5e5e5}.mx_EventTile_pre_container{position:relative}.mx_EventTile_button{position:absolute;display:inline-block;visibility:hidden;cursor:pointer;top:8px;right:8px;width:19px;height:19px;background-color:#2e2f32}.mx_EventTile_buttonBottom{top:33px}.mx_EventTile_copyButton{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg)}.mx_EventTile_collapseButton{-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_collapseButton,.mx_EventTile_expandButton{-webkit-mask-size:75%;mask-size:75%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_EventTile_expandButton{-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_expandButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_expandButton{visibility:visible}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2,.mx_EventTile_content .markdown-body h3,.mx_EventTile_content .markdown-body h4,.mx_EventTile_content .markdown-body h5,.mx_EventTile_content .markdown-body h6{font-family:inherit!important;color:inherit}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2{font-size:1.5em;border-bottom:none!important}.mx_EventTile_content .markdown-body a{color:#238cf5}.mx_EventTile_content .markdown-body .hljs{display:inline!important}.mx_EventTile_tileError{color:red;text-align:center;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line{padding-left:0;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line span{padding:4px 8px}.mx_EventTile_tileError a{margin-left:1em}@media only screen and (max-width:480px){.mx_EventTile_line,.mx_EventTile_reply{padding-left:0;margin-right:0}.mx_EventTile_content{margin-top:10px;margin-right:0}}.mx_GroupLayout .mx_EventTile>.mx_SenderProfile{line-height:2rem;margin-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_line{padding-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_avatar{position:absolute}.mx_GroupLayout .mx_EventTile .mx_MessageTimestamp{position:absolute;width:46px}.mx_GroupLayout .mx_EventTile .mx_EventTile_line,.mx_GroupLayout .mx_EventTile .mx_EventTile_reply{padding-top:1px;padding-bottom:3px;line-height:2.2rem}.mx_GroupLayout .mx_EventTile_info .mx_EventTile_line{padding-left:82px}.mx_MatrixChat_useCompactLayout .mx_EventTile{padding-top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info{padding-top:0;font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote{padding-top:8px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply{padding-top:0;padding-bottom:1px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation{padding-top:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon{top:3px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars{top:-2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body blockquote,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body dl,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ol,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body p,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body pre,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body table,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ul{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2{margin-top:6px}.mx_IRCLayout{--name-width:70px;line-height:1.8rem!important}.mx_IRCLayout .mx_EventTile>a{text-decoration:none}.mx_IRCLayout .mx_EventTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding-top:0}.mx_IRCLayout .mx_EventTile>*{margin-right:5px}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;-ms-flex-negative:0;flex-shrink:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption .mx_EventTile_readAvatars{top:.2rem}.mx_IRCLayout .mx_EventTile>.mx_SenderProfile{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-ms-flex-negative:0;flex-shrink:0;width:var(--name-width);text-overflow:ellipsis;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_IRCLayout .mx_EventTile .mx_EventTile_line,.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-width:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;position:relative;top:0;left:0;-ms-flex-negative:0;flex-shrink:0;height:1.8rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar,.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar>*{height:1.4rem!important;width:1.4rem!important;font-size:1rem!important;line-height:1.5rem!important}.mx_IRCLayout .mx_EventTile .mx_MessageTimestamp{font-size:1rem;width:45px;text-align:right}.mx_IRCLayout .mx_EventTile>.mx_EventTile_e2eIcon{position:absolute;right:unset;left:unset;top:0;padding:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.8rem;background-position:50%}.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_ReplyThread_wrapper_empty,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent{display:inline-block}.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons{position:relative}.mx_IRCLayout .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:calc(var(--name-width) + 19px)}.mx_IRCLayout blockquote{margin:0}.mx_IRCLayout .mx_EventListSummary>.mx_EventTile_line{padding-left:calc(var(--name-width) + 74px)}.mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars{padding:0;margin:0 9px 0 0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{left:calc(var(--name-width) + 24px);top:0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line{left:calc(var(--name-width) + 24px)}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent{line-height:1.8rem}.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:0;border-left:0}.mx_IRCLayout .mx_SenderProfile_hover{background-color:#fff;overflow:hidden}.mx_IRCLayout .mx_SenderProfile_hover>span{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_IRCLayout .mx_SenderProfile_hover>span>.mx_SenderProfile_name{overflow:hidden;text-overflow:ellipsis;min-width:var(--name-width);text-align:end}.mx_IRCLayout .mx_SenderProfile:hover{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_IRCLayout .mx_SenderProfile_hover:hover{overflow:visible;width:max(auto,100%);z-index:10}.mx_IRCLayout .mx_ReplyThread{margin:0}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile{width:unset;max-width:var(--name-width)}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover{background:transparent}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover>span>.mx_SenderProfile_name{min-width:inherit}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:0}.mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp{width:auto}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon{position:relative;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mx_IRCLayout .mx_ProfileResizer{position:absolute;height:100%;width:15px;left:calc(80px + var(--name-width));cursor:col-resize;z-index:100}.mx_IRCLayout .mx_Flair>img{height:1.4rem!important;width:1.4rem!important}.mx_JumpToBottomButton{z-index:1000;position:absolute;bottom:12px;right:24px;width:38px;height:50px;text-align:center}.mx_JumpToBottomButton_badge{position:relative;top:-12px;border-radius:16px;font-weight:700;font-size:1.2rem;line-height:1.4rem;text-align:center;display:inline-block;padding:0 4px;color:#fff;background-color:#61708b}.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge{color:#f2f5f8;background-color:#ff4b55}.mx_JumpToBottomButton_scrollDown{position:relative;height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_JumpToBottomButton_scrollDown:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b}.mx_LinkPreviewWidget{margin-top:15px;margin-right:15px;margin-bottom:15px;display:-webkit-box;display:-ms-flexbox;display:flex;border-left:4px solid #ddd;color:#888}.mx_LinkPreviewWidget_image{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;margin-left:15px;text-align:center;cursor:pointer}.mx_LinkPreviewWidget_caption{margin-left:15px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_LinkPreviewWidget_title{display:inline;font-weight:700;white-space:normal}.mx_LinkPreviewWidget_siteName{display:inline}.mx_LinkPreviewWidget_description{margin-top:8px;white-space:normal;word-wrap:break-word}.mx_LinkPreviewWidget_cancel{cursor:pointer;width:18px;height:18px}.mx_LinkPreviewWidget_cancel img{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;visibility:hidden}.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel img,.mx_LinkPreviewWidget_cancel.focus-visible:focus img{visibility:visible}.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget{margin-top:6px;margin-bottom:6px}.mx_MemberInfo{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;margin-top:8px}.mx_MemberInfo,.mx_MemberInfo_name{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_MemberInfo_name{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MemberInfo_name>.mx_E2EIcon{margin-right:0}.mx_MemberInfo_cancel{height:16px;width:16px;padding:10px 0 10px 10px;cursor:pointer;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:16px center;mask-position:16px center;background-color:#91a1c0}.mx_MemberInfo_name h2{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-x:auto;max-height:50px}.mx_MemberInfo h2{font-size:1.8rem;font-weight:600;margin:16px 0 16px 15px}.mx_MemberInfo_container{margin:0 16px 16px}.mx_MemberInfo .mx_RoomTile_nameContainer{width:154px}.mx_MemberInfo .mx_RoomTile_badge{display:none}.mx_MemberInfo .mx_RoomTile_name{width:160px}.mx_MemberInfo_avatar{background:hsla(0,0%,91%,.77);margin-bottom:16px}.mx_MemberInfo_avatar>img{height:auto;width:100%;max-height:30vh;-o-object-fit:contain;object-fit:contain;display:block}.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_MemberInfo_profile{margin-bottom:16px}.mx_MemberInfo h3{text-transform:uppercase;color:#9fa9ba;font-weight:700;font-size:1.2rem;margin:4px 0}.mx_MemberInfo_profileField{font-size:1.5rem;position:relative}.mx_MemberInfo_buttons{margin-bottom:16px}.mx_MemberInfo_field{cursor:pointer;font-size:1.5rem;color:#2e2f32;margin-left:8px;line-height:2.3rem}.mx_MemberInfo_createRoom{cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 8px}.mx_MemberInfo_createRoom_label{width:auto!important;cursor:pointer}.mx_MemberInfo label{font-size:1.3rem}.mx_MemberInfo label .mx_MemberInfo_label_text{display:inline-block;max-width:180px;vertical-align:text-top}.mx_MemberInfo input[type=radio]{vertical-align:-2px;margin-right:5px;margin-left:8px}.mx_MemberInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_MemberInfo .mx_MemberInfo_scrollContainer{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_GroupMemberList,.mx_GroupRoomList,.mx_MemberList{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.mx_GroupMemberList .mx_Spinner,.mx_GroupRoomList .mx_Spinner,.mx_MemberList .mx_Spinner{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.mx_GroupMemberList .mx_SearchBox,.mx_GroupRoomList .mx_SearchBox,.mx_MemberList .mx_SearchBox{margin-bottom:5px}.mx_GroupMemberList h2,.mx_GroupRoomList h2,.mx_MemberList h2{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;padding-left:3px;padding-right:12px;margin-top:8px;margin-bottom:4px}.mx_GroupMemberList .mx_AutoHideScrollbar,.mx_GroupRoomList .mx_AutoHideScrollbar,.mx_MemberList .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_GroupMemberList .mx_RightPanel_scopeHeader,.mx_GroupRoomList .mx_RightPanel_scopeHeader,.mx_MemberList .mx_RightPanel_scopeHeader{margin-top:-8px}.mx_GroupMemberList_query,.mx_GroupRoomList_query{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_MemberList_chevron{position:absolute;right:35px;margin-top:-15px}.mx_MemberList_border{overflow-y:auto;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.mx_MemberList_query{height:16px}.mx_MemberList_query[type=text]{font-size:1.2rem}.mx_MemberList_wrapper{padding:10px}.mx_MemberList_invite{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;background-color:#0dbd8b;border-radius:4px;margin:5px 9px 9px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;font-weight:600}.mx_MemberList_invite.mx_AccessibleButton_disabled{background-color:#888;cursor:not-allowed}.mx_MemberList_invite span{padding:8px 0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_MemberList_invite span:before{content:"";display:inline-block;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px}.mx_MemberList_inviteCommunity span:before{-webkit-mask-image:url(../../img/icon-invite-people.d82f491.svg);mask-image:url(../../img/icon-invite-people.d82f491.svg)}.mx_MemberList_addRoomToCommunity span:before{-webkit-mask-image:url(../../img/icons-room-add.bd36e26.svg);mask-image:url(../../img/icons-room-add.bd36e26.svg)}.mx_MessageComposer_wrapper{vertical-align:middle;margin:auto;border-top:1px solid transparent;position:relative;padding-left:82px;padding-right:6px}.mx_MessageComposer_replaced_wrapper{margin-left:auto;margin-right:auto}.mx_MessageComposer_replaced_valign{height:60px;display:table-cell;vertical-align:middle}.mx_MessageComposer_roomReplaced_icon{float:left;margin-right:20px;margin-top:5px;width:31px;height:31px}.mx_MessageComposer_roomReplaced_header{font-weight:700}.mx_MessageComposer_autocomplete_wrapper{position:relative;height:0}.mx_MessageComposer_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.mx_MessageComposer .mx_MessageComposer_avatar{position:absolute;left:26px}.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar{display:block}.mx_MessageComposer_composecontrols{width:100%}.mx_MessageComposer_e2eIcon.mx_E2EIcon{position:absolute;left:60px;margin-right:0;margin-left:3px;width:12px;height:12px}.mx_MessageComposer_noperm_error{width:100%;height:60px;font-style:italic;color:#888;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MessageComposer_input_wrapper{cursor:text}.mx_MessageComposer_input,.mx_MessageComposer_input_wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MessageComposer_input{vertical-align:middle;min-height:60px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;font-size:1.4rem;margin-right:6px}.mx_MessageComposer_editor{width:100%;max-height:120px;min-height:19px;overflow-y:auto;overflow-x:hidden;word-break:break-word}.mx_MessageComposer_editor>:first-child{margin-top:0!important}.mx_MessageComposer_editor>:last-child{margin-bottom:0!important}@keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_MessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_MessageComposer_input blockquote{color:#777;margin:0 0 16px;padding:0 15px;border-left:4px solid #ddd}.mx_MessageComposer_input pre{background-color:rgba(0,0,0,.04);border-radius:3px;padding:10px}.mx_MessageComposer_input textarea{display:block;width:100%;padding:0;margin-top:6px;margin-bottom:6px;border:0;resize:none;outline:none;-webkit-box-shadow:none;box-shadow:none;color:#2e2f32;background-color:#fff;font-size:1.4rem;max-height:120px;overflow:auto;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji}.mx_MessageComposer_input textarea::-moz-placeholder{line-height:100%;color:#0dbd8b;opacity:1}.mx_MessageComposer_input textarea::-webkit-input-placeholder{color:#0dbd8b}.mx_MessageComposer_button_highlight{background:rgba(13,189,139,.25)}.mx_MessageComposer_button_highlight:before{background-color:#0dbd8b!important}.mx_MessageComposer_button{position:relative;margin-right:6px;cursor:pointer;height:26px;width:26px;border-radius:100%}.mx_MessageComposer_button:before{content:"";position:absolute;top:3px;left:3px;height:20px;width:20px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_MessageComposer_button:hover{background:rgba(13,189,139,.1)}.mx_MessageComposer_button:hover:before{background-color:#0dbd8b}.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before{background-color:#ff4b55}.mx_MessageComposer_upload:before{-webkit-mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg);mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg)}.mx_MessageComposer_voiceMessage:before{-webkit-mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg);mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg)}.mx_MessageComposer_emoji:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_MessageComposer_stickers:before{-webkit-mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg);mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg)}.mx_MessageComposer_sendMessage{cursor:pointer;position:relative;margin-right:6px;width:32px;height:32px;border-radius:100%;background-color:#0dbd8b}.mx_MessageComposer_sendMessage:before{position:absolute;height:16px;width:16px;top:8px;left:9px;-webkit-mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;background-color:#fff;content:""}.mx_MessageComposer_formatting{cursor:pointer;margin:0 11px;width:24px;height:18px}.mx_MessageComposer_formatbar_wrapper{width:100%;background-color:#fff;-webkit-box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08)}.mx_MessageComposer_formatbar{margin:auto;display:-webkit-box;display:-ms-flexbox;display:flex;height:30px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:62px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1rem;color:#888}.mx_MessageComposer_formatbar *{margin-right:4px}.mx_MessageComposer_format_button,.mx_MessageComposer_formatbar_cancel,.mx_MessageComposer_formatbar_markdown{cursor:pointer}.mx_MessageComposer_formatbar_cancel{margin-right:22px}.mx_MessageComposer_formatbar_markdown{height:17px;width:30px;margin-right:64px}.mx_MessageComposer_input_markdownIndicator{height:10px;width:12px;padding:4px 4px 4px 0}.mx_MessageComposer_formatbar_markdown,.mx_MessageComposer_input_markdownIndicator{cursor:pointer;-webkit-mask-image:url(../../img/markdown.6905ba8.svg);mask-image:url(../../img/markdown.6905ba8.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#c1c6cd}.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled,.mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled{opacity:.2}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input{min-height:50px}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error{height:50px}.mx_MessageComposerFormatBar{display:none;width:130px;height:24px;position:absolute;cursor:pointer;border-radius:4px;background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1000}.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown{display:block}.mx_MessageComposerFormatBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageComposerFormatBar>:hover{border-color:#ddd;z-index:1}.mx_MessageComposerFormatBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageComposerFormatBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageComposerFormatBar>:only-child{border-radius:3px}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button{width:27px;height:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:none;vertical-align:middle}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg);mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconItalic:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg);mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconStrikethrough:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg);mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconQuote:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg);mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg);mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg)}.mx_MessageComposerFormatBar_buttonTooltip{white-space:nowrap;font-size:1.3rem;font-weight:600;min-width:54px;text-align:center}.mx_MessageComposerFormatBar_buttonTooltip .mx_MessageComposerFormatBar_tooltipShortcut{font-size:.9rem;opacity:.7}.mx_NewRoomIntro{margin:40px 0 48px 64px}.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):after,.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):before{content:unset}.mx_NewRoomIntro .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_NewRoomIntro .mx_NewRoomIntro_buttons{margin-top:28px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton{line-height:2.4rem;display:inline-block}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:12px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before{content:"";display:inline-block;background-color:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px;vertical-align:text-bottom}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_NewRoomIntro>h2{margin-top:24px;font-size:2.4rem;font-weight:600}.mx_NewRoomIntro>p{margin:0;font-size:1.5rem;color:#737d8c}.mx_NotificationBadge:not(.mx_NotificationBadge_visible){display:none}.mx_NotificationBadge.mx_NotificationBadge_visible{background-color:#61708b;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted{background-color:#ff4b55}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot{background-color:#2e2f32;width:6px;height:6px;border-radius:6px}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char{width:1.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char{width:2.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count{font-size:1rem;line-height:1.4rem;color:#fff}.mx_PinnedEventTile{min-height:40px;margin-bottom:5px;width:100%;border-radius:5px}.mx_PinnedEventTile:hover{background-color:#f6f7f8}.mx_PinnedEventTile .mx_PinnedEventTile_sender,.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{color:#868686;font-size:.8em;vertical-align:top;display:inline-block;padding-bottom:3px}.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{padding-left:15px;display:none}.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar{float:left;margin-right:10px}.mx_PinnedEventTile_actions{float:right;margin-right:10px;display:none}.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp{display:inline-block}.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions{display:block}.mx_PinnedEventTile_unpinButton{display:inline-block;cursor:pointer;margin-left:10px}.mx_PinnedEventTile_gotoButton{display:inline-block;font-size:.7em}.mx_PinnedEventTile_message{margin-left:50px;position:relative;top:0;left:0}.mx_PinnedEventsPanel{border-top:1px solid transparent}.mx_PinnedEventsPanel_body{max-height:300px;overflow-y:auto;padding-bottom:15px}.mx_PinnedEventsPanel_header{margin:0;padding-top:8px;padding-bottom:15px}.mx_PinnedEventsPanel_cancel{margin:12px;float:right;display:inline-block}.mx_PresenceLabel{font-size:1.1rem;opacity:.5}.mx_ReplyPreview{background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_ReplyPreview_section{border-bottom:1px solid transparent}.mx_ReplyPreview_header{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.mx_ReplyPreview_title{float:left}.mx_ReplyPreview_cancel{float:right;cursor:pointer}.mx_ReplyPreview_clear{clear:both}.mx_RoomBreadcrumbs{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb{margin-right:8px;width:32px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter{margin-left:-40px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active{margin-left:0;-webkit-transition:margin-left .64s cubic-bezier(.66,.02,.36,1);transition:margin-left .64s cubic-bezier(.66,.02,.36,1)}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder{font-weight:600;font-size:1.4rem;line-height:32px;height:32px}.mx_RoomBreadcrumbs_Tooltip{margin-left:-42px;margin-top:-42px}.mx_RoomHeader{-webkit-box-flex:0;-ms-flex:0 0 50px;flex:0 0 50px;border-bottom:1px solid transparent;background-color:#fff}.mx_RoomHeader .mx_RoomHeader_e2eIcon{height:12px;width:12px}.mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon{margin:0;position:absolute;height:12px;width:12px}.mx_RoomHeader_wrapper{margin:auto;height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:0;padding:0 10px 0 18px}.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large{margin:0}.mx_RoomHeader_spinner{-webkit-box-flex:1;-ms-flex:1;flex:1;height:36px;padding-left:12px;padding-right:12px}.mx_RoomHeader_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-right:8px;margin-top:-5px}.mx_RoomHeader_textButton_danger{background-color:#ff4b55}.mx_RoomHeader_cancelButton{cursor:pointer;padding-left:12px;padding-right:12px}.mx_RoomHeader_buttons{background-color:#fff}.mx_RoomHeader_buttons,.mx_RoomHeader_info{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_info{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomHeader_simpleHeader{line-height:5.2rem;color:#45474a;font-size:1.8rem;font-weight:600;overflow:hidden;margin-left:63px;text-overflow:ellipsis;width:100%}.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton{float:right}.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon{margin-left:14px;margin-right:24px;vertical-align:-4px}.mx_RoomHeader_name{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;overflow:hidden;color:#45474a;font-weight:600;font-size:1.8rem;margin:0 7px;border-bottom:1px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_nametext{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mx_RoomHeader_settingsHint{color:#a2a2a2!important}.mx_RoomHeader_searchStatus{font-weight:400;opacity:.6}.mx_RoomHeader_avatar,.mx_RoomHeader_avatarPicker,.mx_RoomHeader_avatarPicker_edit,.mx_RoomHeader_avatarPicker_remove,.mx_RoomHeader_name{cursor:pointer}.mx_RoomHeader_avatarPicker_remove{position:absolute;top:-11px;right:-9px}.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable){color:#0dbd8b}.mx_RoomHeader_placeholder{color:#a2a2a2!important}.mx_RoomHeader_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_RoomHeader_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_RoomHeader_topic{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#9e9e9e;font-weight:400;font-size:1.3rem;margin:4px 7px 0;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid transparent;line-height:1.2em;max-height:2.4em}.mx_RoomHeader_avatar{-webkit-box-flex:0;-ms-flex:0;flex:0;margin:0 6px 0 7px;position:relative}.mx_RoomHeader_avatar .mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover}.mx_RoomHeader_avatarPicker{position:relative}.mx_RoomHeader_avatarPicker_edit{position:absolute;left:16px;top:18px}.mx_RoomHeader_avatarPicker_edit>label{cursor:pointer}.mx_RoomHeader_avatarPicker_edit>input{display:none}.mx_RoomHeader_button{position:relative;margin-left:1px;margin-right:1px;cursor:pointer;height:32px;width:32px;border-radius:100%}.mx_RoomHeader_button:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RoomHeader_button:hover{background:rgba(13,189,139,.1)}.mx_RoomHeader_button:hover:before{background-color:#0dbd8b}.mx_RoomHeader_forgetButton:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg);width:26px}.mx_RoomHeader_appsButton:before{-webkit-mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg);mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg)}.mx_RoomHeader_appsButton_highlight:before{background-color:#0dbd8b}.mx_RoomHeader_searchButton:before{-webkit-mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg);mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg)}.mx_RoomHeader_voiceCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center}.mx_RoomHeader_videoCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_RoomHeader_showPanel{height:16px}.mx_RoomHeader_voipButton{display:table-cell}.mx_RoomHeader_voipButtons{margin-top:18px}.mx_RoomHeader_pinnedButton:before{-webkit-mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg);mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg)}.mx_RoomHeader_pinsIndicator{position:absolute;right:0;bottom:4px;width:8px;height:8px;border-radius:8px;background-color:#8d99a5}.mx_RoomHeader_pinsIndicatorUnread{background-color:#ff4b55}@media only screen and (max-width:480px){.mx_RoomHeader_wrapper{padding:0}.mx_RoomHeader{overflow:hidden}}.mx_RoomList{padding-right:7px}.mx_RoomList_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_RoomList_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_RoomList_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_iconBrowse:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomList_iconDialpad:before{-webkit-mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg);mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg)}.mx_RoomList_explorePrompt{margin:4px 12px;padding-top:12px;border-top:1px solid #e7e7e7;font-size:1.4rem}.mx_RoomList_explorePrompt div:first-child{font-weight:600;line-height:1.8rem;color:#2e2f32}.mx_RoomList_explorePrompt .mx_AccessibleButton{color:#2e2f32;position:relative;padding:8px 8px 8px 32px;font-size:inherit;margin-top:12px;display:block;text-align:start;background-color:rgba(141,151,165,.2);border-radius:4px}.mx_RoomList_explorePrompt .mx_AccessibleButton:before{content:"";width:16px;height:16px;position:absolute;top:8px;left:8px;background:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomPreviewBar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-align-items:center}.mx_RoomPreviewBar h3{font-size:1.8rem;font-weight:600}.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomPreviewBar .mx_RoomPreviewBar_message p,.mx_RoomPreviewBar h3{word-break:break-all;word-break:break-word}.mx_RoomPreviewBar .mx_Spinner{width:auto;height:auto;margin:10px 10px 10px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer{font-size:1.2rem;line-height:2rem}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner{vertical-align:middle;display:inline-block}.mx_RoomPreviewBar_actions,.mx_RoomPreviewBar_message{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomPreviewBar_message{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.mx_RoomPreviewBar_message p{overflow-wrap:break-word}.mx_RoomPreviewBar_panel{padding:8px 8px 8px 20px;border-top:1px solid transparent;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:3px 8px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions>*{margin-left:12px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message>*{margin:4px}.mx_RoomPreviewBar_dialog{margin:auto;-webkit-box-sizing:content;box-sizing:content;width:400px;border-radius:4px;padding:20px;text-align:center}.mx_RoomPreviewBar_dialog,.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message>*{margin:5px 0 20px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton{padding:7px 50px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions>*{margin-top:12px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-bottom:7px}.mx_RoomPreviewBar_inviter{font-weight:600}a.mx_RoomPreviewBar_inviter{text-decoration:underline;cursor:pointer}.mx_RoomSublist{margin-left:8px;margin-bottom:4px}.mx_RoomSublist.mx_RoomSublist_hidden{display:none}.mx_RoomSublist .mx_RoomSublist_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:8px;max-height:24px;color:#8d99a5}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky{position:fixed;height:32px;width:calc(100% - 22px)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer .mx_NotificationBadge{margin-left:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_NotificationBadge{margin-right:4px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{margin-left:8px;position:relative;width:24px;height:24px;border-radius:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:hover{background:rgba(141,151,165,.2)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{visibility:hidden;width:0;margin:0}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg);mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_RoomSublist:first-child .mx_RoomSublist_headerContainer{height:0;padding-bottom:4px}.mx_RoomSublist .mx_RoomSublist_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist .mx_RoomSublist_resizeBox,.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;overflow:hidden}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-ms-flex-direction:column;flex-direction:column;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles_showNButton{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles{-webkit-box-flex:0;-ms-flex:0 0 4px;flex:0 0 4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle{cursor:ns-resize;border-radius:3px;max-width:64px;height:4px!important;position:relative!important;bottom:0!important}.mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_resizerHandle,.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_RoomSublist .mx_RoomSublist_showNButton{cursor:pointer;font-size:1.3rem;line-height:1.8rem;color:#737d8c;height:24px;padding-bottom:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{position:relative;width:18px;height:18px;margin-left:12px;margin-right:16px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;left:-1px}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron,.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showMoreButtonChevron{-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:focus-within .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;width:24px;margin-left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer{height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;-ms-flex-item-align:end;align-self:flex-end;margin-right:0}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;max-width:100%}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;visibility:visible;width:32px!important;height:32px!important;margin-left:0!important;background-color:rgba(141,151,165,.2);margin-top:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{top:8px;left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{margin-right:12px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton{height:16px}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;position:absolute;bottom:48px;right:0;width:16px;height:16px;border-radius:0;z-index:1;background-color:hsla(0,0%,96.1%,.9)}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton:before,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton:before{top:0;left:0}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton{bottom:8px}.mx_RoomSublist_contextMenu{padding:20px 16px;width:250px}.mx_RoomSublist_contextMenu hr{margin-top:16px;margin-bottom:16px;margin-right:16px;border:1px solid #2e2f32;opacity:.1}.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title{font-size:1.5rem;line-height:2rem;font-weight:600;margin-bottom:4px}.mx_RoomSublist_contextMenu .mx_Checkbox,.mx_RoomSublist_contextMenu .mx_RadioButton{margin-top:8px}.mx_RoomSublist_addRoomTooltip{margin-top:-3px}.mx_RoomSublist_skeletonUI{position:relative;margin-left:4px;height:288px}.mx_RoomSublist_skeletonUI:before{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(180deg,#fff,hsla(0,0%,100%,0));width:100%;height:100%;content:"";position:absolute;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y;-webkit-mask-size:auto 48px;mask-size:auto 48px;-webkit-mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg);mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg)}.mx_RoomTile{margin-bottom:4px;padding:4px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomTile.mx_RoomTile_hasMenuOpen,.mx_RoomTile.mx_RoomTile_selected,.mx_RoomTile:focus-within,.mx_RoomTile:hover{background-color:#fff;border-radius:8px}.mx_RoomTile .mx_DecoratedRoomAvatar,.mx_RoomTile .mx_RoomTile_avatarContainer{margin-right:8px}.mx_RoomTile .mx_RoomTile_nameContainer{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:0;margin-right:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview,.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{margin:0 2px;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{font-size:1.4rem;line-height:1.8rem}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents{font-weight:600}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview{font-size:1.3rem;line-height:1.8rem;color:#737d8c}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview{margin-top:-4px}.mx_RoomTile .mx_RoomTile_notificationsButton{margin-left:4px}.mx_RoomTile .mx_RoomTile_badgeContainer{height:16px;margin:auto 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge{margin-right:2px}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot{margin-left:5px;margin-right:7px}.mx_RoomTile .mx_RoomTile_menuButton,.mx_RoomTile .mx_RoomTile_notificationsButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;position:relative;display:none}.mx_RoomTile .mx_RoomTile_menuButton:before,.mx_RoomTile .mx_RoomTile_notificationsButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_RoomTile .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show{display:block}.mx_RoomTile .mx_RoomTile_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer{width:0;height:0;display:none}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_notificationsButton{display:block}.mx_RoomTile.mx_RoomTile_minimized{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar,.mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer{margin-right:0}.mx_RoomTile_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomTile_iconBellDot:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg);mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg)}.mx_RoomTile_iconBellCrossed:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_RoomTile_iconBellMentions:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg);mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before{-webkit-mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg);mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before{-webkit-mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg);mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_RoomUpgradeWarningBar{max-height:235px;background-color:#f7f7f7;padding-left:20px;padding-right:20px;overflow:scroll}.mx_RoomUpgradeWarningBar_wrapped{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center}.mx_RoomUpgradeWarningBar_header{color:#ff4b55;font-weight:700}.mx_RoomUpgradeWarningBar_body{color:#ff4b55}.mx_RoomUpgradeWarningBar_upgradelink{color:#ff4b55;text-decoration:underline}.mx_RoomUpgradeWarningBar_small{color:#888;font-size:70%}.mx_SearchBar{height:56px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid transparent}.mx_SearchBar .mx_SearchBar_input{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;margin-left:22px}.mx_SearchBar .mx_SearchBar_searchButton{cursor:pointer;width:37px;height:37px;background-color:#0dbd8b;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_SearchBar .mx_SearchBar_buttons{display:inherit}.mx_SearchBar .mx_SearchBar_button{border:0;margin:0 0 0 22px;padding:5px;font-size:1.5rem;cursor:pointer;color:#2e2f32;border-bottom:2px solid #0dbd8b;font-weight:600}.mx_SearchBar .mx_SearchBar_unselected{color:#9fa9ba;border-color:transparent}.mx_SearchBar .mx_SearchBar_cancel{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;padding:9px;margin:0 12px 0 3px;cursor:pointer}.mx_SendMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;font-size:1.4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;min-width:0}.mx_SendMessageComposer,.mx_SendMessageComposer .mx_BasicMessageComposer{-webkit-box-flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_SendMessageComposer .mx_BasicMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;min-height:50px}.mx_SendMessageComposer .mx_BasicMessageComposer .mx_BasicMessageComposer_input{padding:3px 0;margin:auto 0;max-height:140px;overflow-y:auto}.mx_Stickers_content{overflow:hidden}.mx_Stickers_content_container{overflow:hidden;height:300px}#mx_persistedElement_stickerPicker .mx_AppTileFullWidth{height:unset;-webkit-box-sizing:border-box;box-sizing:border-box;border-left:none;border-right:none;border-bottom:none}#mx_persistedElement_stickerPicker .mx_AppTileMenuBar{padding:0}#mx_persistedElement_stickerPicker iframe{height:283px}.mx_Stickers_contentPlaceholder{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mx_Stickers_contentPlaceholder p{max-width:200px}.mx_Stickers_addLink{display:inline;cursor:pointer;color:#0dbd8b}.mx_Stickers_hideStickers{z-index:2001}.mx_TopUnreadMessagesBar{z-index:1000;position:absolute;top:24px;right:24px;width:38px}.mx_TopUnreadMessagesBar:after{content:"";position:absolute;top:-8px;left:10.5px;width:4px;height:4px;border-radius:16px;background-color:#f2f5f8;border:6px solid #0dbd8b;pointer-events:none}.mx_TopUnreadMessagesBar_scrollUp{height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_TopUnreadMessagesBar_scrollUp:before{content:"";position:absolute;width:36px;height:36px;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_TopUnreadMessagesBar_markAsRead{display:block;width:18px;height:18px;background:#fff;border:1.3px solid #61708b;border-radius:10px;margin:5px auto}.mx_TopUnreadMessagesBar_markAsRead:before{content:"";position:absolute;width:18px;height:18px;-webkit-mask-image:url(../../img/cancel.4b9715b.svg);mask-image:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:10px;mask-size:10px;-webkit-mask-position:4px 4px;mask-position:4px 4px;background:#61708b}.mx_VoiceRecordComposerTile_stop{width:28px;height:28px;border:2px solid #e3e8f0;border-radius:32px;margin-right:16px;position:relative}.mx_VoiceRecordComposerTile_stop:after{content:"";width:14px;height:14px;position:absolute;top:7px;left:7px;border-radius:2px;background-color:#ff4b55}.mx_VoiceRecordComposerTile_delete{width:14px;height:18px;vertical-align:middle;margin-right:11px;background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer{margin:6px 12px 6px 6px;position:relative}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording{padding-left:22px}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before{-webkit-animation:recording-pulse 2s infinite;animation:recording-pulse 2s infinite;content:"";background-color:#ff4b55;width:10px;height:10px;position:absolute;left:12px;top:18px;border-radius:10px}@-webkit-keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}@keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}.mx_WhoIsTypingTile{margin-left:-18px;padding-top:18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_WhoIsTypingTile_avatars{-webkit-box-flex:0;-ms-flex:0 0 83px;flex:0 0 83px;text-align:center}.mx_WhoIsTypingTile_avatars>:not(:first-child){margin-left:-12px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial{padding-top:1px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar{border:1px solid #fff;border-radius:40px}.mx_WhoIsTypingTile_remainingAvatarPlaceholder{position:relative;display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center}.mx_WhoIsTypingTile_label{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:1.4rem;font-weight:600;color:#9e9e9e}.mx_WhoIsTypingTile_label>span{background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-size:25px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:15px;display:block}.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile{padding-top:4px}.mx_AvatarSetting_avatar{width:90px;min-width:90px;height:90px;margin-top:8px;position:relative}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover{-webkit-transition:opacity .08s cubic-bezier(.46,.03,.52,.96);transition:opacity .08s cubic-bezier(.46,.03,.52,.96);position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;line-height:90px;text-align:center}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover>span{color:#fff;position:relative;font-weight:500}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg{position:absolute;top:0;bottom:0;left:0;right:0;opacity:.5;background-color:#2e2f32;border-radius:90px}.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering .mx_AvatarSetting_hover{opacity:1}.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) .mx_AvatarSetting_hover{opacity:0}.mx_AvatarSetting_avatar>*{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-top:8px}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm{width:100%}.mx_AvatarSetting_avatar>img{cursor:pointer;-o-object-fit:cover;object-fit:cover}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder,.mx_AvatarSetting_avatar>img{display:block;height:90px;width:inherit;border-radius:90px;cursor:pointer}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{background-color:#2e2f32;-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton{width:32px;height:32px;border-radius:32px;background-color:#e7e7e7;position:absolute;bottom:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before{content:"";display:block;width:100%;height:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:55%;mask-size:55%;background-color:#2e2f32;-webkit-mask-image:url(../../img/feather-customised/edit.fd55ec2.svg);mask-image:url(../../img/feather-customised/edit.fd55ec2.svg)}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder{background-color:#f4f6fa}.mx_CrossSigningPanel_statusList{border-spacing:0}.mx_CrossSigningPanel_statusList td{padding:0}.mx_CrossSigningPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_CrossSigningPanel_buttonRow{margin:1em 0}.mx_CrossSigningPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_DevicesPanel{display:table;table-layout:fixed;width:880px;border-spacing:10px}.mx_DevicesPanel_header{display:table-header-group;font-weight:700}.mx_DevicesPanel_header>.mx_DevicesPanel_deviceButtons{height:48px}.mx_DevicesPanel_header>div{display:table-cell;vertical-align:middle}.mx_DevicesPanel_header .mx_DevicesPanel_deviceName{width:50%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen{width:30%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons{width:20%}.mx_DevicesPanel_device{display:table-row}.mx_DevicesPanel_device>div{display:table-cell}.mx_DevicesPanel_myDevice{font-weight:700}.mx_E2eAdvancedPanel_settingLongDescription{margin-right:150px}.mx_ExistingEmailAddress{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingEmailAddress_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingEmailAddress_email,.mx_ExistingEmailAddress_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingEmailAddress_confirmBtn{margin-left:5px}.mx_IntegrationManager .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none}.mx_IntegrationManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_IntegrationManager_loading h3{text-align:center}.mx_IntegrationManager_error{text-align:center;padding-top:20px}.mx_IntegrationManager_error h3{color:#ff4b55}.mx_UserNotifSettings_tableRow{display:table-row}.mx_UserNotifSettings_inputCell{display:table-cell;padding-bottom:8px;padding-right:8px;width:16px}.mx_UserNotifSettings_labelCell{padding-bottom:8px;width:400px;display:table-cell}.mx_UserNotifSettings_pushRulesTableWrapper{padding-bottom:8px}.mx_UserNotifSettings_pushRulesTable{width:100%;table-layout:fixed}.mx_UserNotifSettings_pushRulesTable thead{font-weight:700}.mx_UserNotifSettings_pushRulesTable tbody th{font-weight:400}.mx_UserNotifSettings_pushRulesTable tbody th:first-child{text-align:left}.mx_UserNotifSettings_keywords{cursor:pointer;color:#0dbd8b}.mx_UserNotifSettings_devicesTable td{padding-left:20px;padding-right:20px}.mx_UserNotifSettings_notifTable{display:table;position:relative}.mx_UserNotifSettings_notifTable .mx_Spinner{position:absolute}.mx_NotificationSound_soundUpload{display:none}.mx_NotificationSound_browse{color:#0dbd8b;border:1px solid #0dbd8b;background-color:transparent}.mx_NotificationSound_save{margin-left:5px;color:#fff;background-color:#0dbd8b}.mx_NotificationSound_resetSound{margin-top:5px;color:#fff;border:#ff4b55;background-color:#ff4b55}.mx_ExistingPhoneNumber{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingPhoneNumber_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingPhoneNumber_address,.mx_ExistingPhoneNumber_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingPhoneNumber_confirmBtn{margin-left:5px}.mx_ExistingPhoneNumber_verification{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ExistingPhoneNumber_verification .mx_Field{margin:0 0 0 1em}.mx_PhoneNumbers_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_PhoneNumbers_input>.mx_Field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_PhoneNumbers_country{width:80px}.mx_ProfileSettings_controls_topic>textarea{resize:vertical}.mx_ProfileSettings_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ProfileSettings_controls{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:54px}.mx_ProfileSettings_controls .mx_SettingsTab_subheading{margin-top:0}.mx_ProfileSettings_controls .mx_Field #profileTopic{height:4em}.mx_ProfileSettings_controls .mx_Field:first-child{margin-top:0}.mx_ProfileSettings_hostingSignup{margin-left:20px}.mx_ProfileSettings_hostingSignup img{margin-left:5px}.mx_ProfileSettings_avatarUpload{display:none}.mx_ProfileSettings_profileForm{margin-right:100px;border-bottom:1px solid #e7e7e7}.mx_ProfileSettings_buttons{margin-top:10px;margin-bottom:28px}.mx_ProfileSettings_buttons>.mx_AccessibleButton_kind_link{padding-left:0}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigInvalid,.mx_SecureBackupPanel_sigValid{font-weight:700}.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigValid{color:#76cfa5}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_sigInvalid{color:#ba6363}.mx_SecureBackupPanel_deviceName{font-style:italic}.mx_SecureBackupPanel_buttonRow{margin:1em 0}.mx_SecureBackupPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_SecureBackupPanel_statusList{border-spacing:0}.mx_SecureBackupPanel_statusList td{padding:0}.mx_SecureBackupPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_SetIdServer .mx_Field_input{margin-right:100px}.mx_SetIdServer_tooltip{max-width:120px}.mx_SetIntegrationManager{margin-top:10px;margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading{margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading>.mx_SettingsTab_subheading{display:inline-block;padding-left:5px}.mx_SetIntegrationManager .mx_ToggleSwitch{display:inline-block;float:right;top:9px;margin-right:100px}.mx_ExistingSpellCheckLanguage{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingSpellCheckLanguage_language{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_GeneralUserSettingsTab_spellCheckLanguageInput{margin-top:1em;margin-bottom:1em}.mx_SpellCheckLanguages{margin-right:100px}.mx_UpdateCheckButton_summary{margin-left:16px}.mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link{padding:0}.mx_SettingsTab{color:#61708b}.mx_SettingsTab_warningText{color:#ff4b55}.mx_SettingsTab_heading{font-size:2rem;font-weight:600;color:#2e2f32;margin-bottom:10px}.mx_SettingsTab_heading:nth-child(n+2){margin-top:30px}.mx_SettingsTab_subheading{font-size:1.6rem;display:block;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-weight:600;color:#2e2f32;margin-bottom:10px;margin-top:12px}.mx_SettingsTab_subsectionText{color:#61708b;font-size:1.4rem;display:block;margin:10px 100px 10px 0}.mx_SettingsTab_section{margin-bottom:24px}.mx_SettingsTab_section .mx_SettingsFlag{margin-right:100px;margin-bottom:10px}.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag{margin-right:0!important}.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label{vertical-align:middle;display:inline-block;font-size:1.4rem;color:#2e2f32;max-width:calc(100% - 4.8rem);-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:10px}.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch{float:right}.mx_SettingsTab_linkBtn{cursor:pointer;color:#0dbd8b;word-break:break-all}.mx_SettingsTab a{color:#238cf5}.mx_GeneralRoomSettingsTab_profileSection{margin-top:10px}.mx_RolesRoomSettingsTab ul{margin-bottom:0}.mx_RolesRoomSettingsTab_unbanBtn{margin-right:10px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_warning{display:block}.mx_SecurityRoomSettingsTab_warning img{vertical-align:middle;margin-right:5px;margin-left:3px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_encryptionSection{margin-bottom:25px}.mx_AppearanceUserSettingsTab_fontSlider,.mx_AppearanceUserSettingsTab_fontSlider_preview,.mx_AppearanceUserSettingsTab_Layout{margin-right:100px}.mx_AppearanceUserSettingsTab .mx_Field{width:256px}.mx_AppearanceUserSettingsTab_fontScaling{color:#2e2f32}.mx_AppearanceUserSettingsTab_fontSlider{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px;background:rgba(227,232,240,.2);border-radius:10px;font-size:10px;margin-top:24px;margin-bottom:24px}.mx_AppearanceUserSettingsTab_fontSlider_preview{border:1px solid #e3e8f0;border-radius:10px;padding:0 16px 9px;pointer-events:none}.mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption{display:none}.mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout{padding-top:9px}.mx_AppearanceUserSettingsTab_fontSlider_smallText{font-size:15px;padding-right:20px;padding-left:5px;font-weight:500}.mx_AppearanceUserSettingsTab_fontSlider_largeText{font-size:18px;padding-left:20px;padding-right:5px;font-weight:500}.mx_AppearanceUserSettingsTab>.mx_SettingsTab_SubHeading{margin-bottom:32px}.mx_AppearanceUserSettingsTab_themeSection{color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;margin-bottom:30px}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton{padding:1.6rem;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:10px;width:180px;background:#e3e8f0;opacity:.4;-ms-flex-negative:1;flex-shrink:1;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;margin-right:15px;margin-top:10px;font-weight:600;color:#61708b}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton>span{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled{opacity:1}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_light{background-color:#f3f8fd;color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark{background-color:#25282e;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div>div{border-color:#e3e8f0}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black{background-color:#000;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div>div{border-color:#e3e8f0}.mx_SettingsTab_customFontSizeField{margin-left:calc(1.6rem + 10px)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#2e2f32}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_AppearanceUserSettingsTab_spacer{width:24px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:300px;border:1px solid #e3e8f0;border-radius:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_msgOption,.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_MessageActionBar{display:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px;pointer-events:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_content{margin-right:0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected{border-color:#0dbd8b}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton{border-top:1px solid #e3e8f0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton>input+div{border-color:rgba(97,112,139,.2)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked{background-color:rgba(13,189,139,.08)}.mx_AppearanceUserSettingsTab_Advanced{color:#2e2f32}.mx_AppearanceUserSettingsTab_Advanced>*{margin-bottom:16px}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_AdvancedToggle{color:#0dbd8b;cursor:pointer}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_systemFont{margin-left:calc(1.6rem + 10px)}.mx_GeneralUserSettingsTab_changePassword .mx_Field{margin-right:100px}.mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child{margin-top:0}.mx_GeneralUserSettingsTab_accountSection .mx_SettingsTab_subheading:nth-child(n+1),.mx_GeneralUserSettingsTab_discovery .mx_SettingsTab_subheading:nth-child(n+2),.mx_SetIdServer .mx_SettingsTab_subheading{margin-top:24px}.mx_GeneralUserSettingsTab_accountSection .mx_Spinner,.mx_GeneralUserSettingsTab_discovery .mx_Spinner{-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left}.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses,.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers,.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress,.mx_GeneralUserSettingsTab_discovery .mx_ExistingPhoneNumber,.mx_GeneralUserSettingsTab_languageInput{margin-right:100px}.mx_GeneralUserSettingsTab_warningIcon{vertical-align:middle}.mx_HelpUserSettingsTab_debugButton{margin-bottom:5px;margin-top:5px}.mx_HelpUserSettingsTab span.mx_AccessibleButton{word-break:break-word}.mx_HelpUserSettingsTab code{word-break:break-all;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.mx_HelpUserSettingsTab_accessToken{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:10px;padding:10px}.mx_HelpUserSettingsTab_accessToken_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_HelpUserSettingsTab_accessToken_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_LabsUserSettingsTab .mx_SettingsTab_section{margin-top:32px}.mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag{margin-right:0}.mx_MjolnirUserSettingsTab .mx_Field{margin-right:100px}.mx_MjolnirUserSettingsTab_listItem{margin-bottom:2px}.mx_NotificationUserSettingsTab .mx_SettingsTab_heading{margin-bottom:10px}.mx_PreferencesUserSettingsTab .mx_Field{margin-right:100px}.mx_PreferencesUserSettingsTab .mx_SettingsTab_section{margin-bottom:30px}.mx_SecurityUserSettingsTab .mx_DevicesPanel{width:auto;max-width:880px}.mx_SecurityUserSettingsTab_deviceInfo{display:table;padding-left:0}.mx_SecurityUserSettingsTab_deviceInfo>li{display:table-row}.mx_SecurityUserSettingsTab_deviceInfo>li>label,.mx_SecurityUserSettingsTab_deviceInfo>li>span{display:table-cell;padding-right:1em}.mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton,.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab_importExportButtons{margin-bottom:15px}.mx_SecurityUserSettingsTab_ignoredUser{margin-bottom:5px}.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab .mx_SettingsTab_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning{color:#ff4b55;position:relative;padding-left:40px;margin-top:30px}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:2.4rem;mask-size:2.4rem;position:absolute;width:2.4rem;height:2.4rem;content:"";top:0;left:0;background-color:#ff4b55;-webkit-mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg);mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg)}.mx_VoiceUserSettingsTab .mx_Field{margin-right:100px}.mx_VoiceUserSettingsTab_missingMediaPermissions{margin-bottom:15px}.mx_SpaceBasicSettings .mx_Field{margin:32px 0}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:24px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer .mx_SpaceBasicSettings_avatar{position:relative;height:80px;width:80px;background-color:#8d99a5;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer img.mx_SpaceBasicSettings_avatar{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar{cursor:pointer}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar:before{content:"";position:absolute;height:80px;width:80px;top:0;left:0;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg)}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>input[type=file]{display:none}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_AccessibleButton_kind_link{display:inline-block;padding:0;margin:auto 16px;color:#368bd6}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_SpaceBasicSettings_avatar_remove{color:#ff4b55}.mx_SpaceBasicSettings .mx_FormButton{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceBasicSettings .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background{background-color:rgba(46,48,51,.38);opacity:.6;left:71px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu{padding:24px;width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;position:relative}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>h2{font-weight:600;font-size:1.8rem;margin-top:4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>p{font-size:1.5rem;color:#737d8c;margin:0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill{position:absolute;top:24px;right:24px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>h3{font-weight:600;margin:0 0 4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>span{color:#737d8c}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover{border-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover:before{background-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover>span{color:#2e2f32}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_public:before{-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_private:before{-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back{width:28px;height:28px;position:relative;background-color:rgba(141,151,165,.2);border-radius:14px;margin-bottom:12px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before{content:"";position:absolute;height:28px;width:28px;top:0;left:0;background-color:#8d99a5;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:2px 3px;mask-position:2px 3px;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_kind_primary{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpacePublicShare .mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpacePublicShare .mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpacePublicShare .mx_AccessibleButton>span{color:#737d8c}.mx_SpacePublicShare .mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpacePublicShare .mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before{-webkit-mask-image:url(../../img/element-icons/link.8f4b1fc.svg);mask-image:url(../../img/element-icons/link.8f4b1fc.svg)}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_InlineTermsAgreement_cbContainer{margin-bottom:10px;font-size:1.4rem}.mx_InlineTermsAgreement_cbContainer a{color:#0dbd8b;text-decoration:none}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox{margin-top:10px}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input{vertical-align:text-bottom}.mx_InlineTermsAgreement_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:12px;height:12px;margin-left:3px;vertical-align:middle}.mx_AnalyticsToast .mx_AccessibleButton_kind_danger{background:none;color:#0dbd8b}.mx_AnalyticsToast .mx_AccessibleButton_kind_primary{background:#0dbd8b;color:#fff}.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon{display:inline-block;width:1.8rem;height:1.8rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);margin-right:8px}.mx_NonUrgentEchoFailureToast span{vertical-align:middle}.mx_NonUrgentEchoFailureToast .mx_AccessibleButton{padding:0}.mx_VerificationShowSas_decimalSas{text-align:center;font-weight:700;padding-left:3px;padding-right:3px}.mx_VerificationShowSas_decimalSas span{margin-left:5px;margin-right:5px}.mx_VerificationShowSas_emojiSas{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:25px 0}.mx_VerificationShowSas_emojiSas_block{display:inline-block;margin-bottom:16px;position:relative;width:52px}.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block,.mx_Dialog .mx_VerificationShowSas_emojiSas_block{width:60px}.mx_VerificationShowSas_emojiSas_emoji{font-size:3.2rem}.mx_VerificationShowSas_emojiSas_label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:1.2rem}.mx_VerificationShowSas_emojiSas_break{-ms-flex-preferred-size:100%;flex-basis:100%}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_matchButton{color:#0dbd8b;background-color:rgba(3,179,129,.16);border:none}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_noMatchButton{color:#ff4b55;background-color:rgba(255,75,85,.16);border:none}.mx_PlayPauseButton{position:relative;width:32px;height:32px;border-radius:32px;background-color:#fff}.mx_PlayPauseButton:before{content:"";position:absolute;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before{opacity:.5}.mx_PlayPauseButton.mx_PlayPauseButton_play:before{width:13px;height:16px;top:8px;left:12px;-webkit-mask-image:url(../../img/element-icons/play.a72552b.svg);mask-image:url(../../img/element-icons/play.a72552b.svg)}.mx_PlayPauseButton.mx_PlayPauseButton_pause:before{width:10px;height:12px;top:10px;left:11px;-webkit-mask-image:url(../../img/element-icons/pause.c4c0886.svg);mask-image:url(../../img/element-icons/pause.c4c0886.svg)}.mx_VoiceMessagePrimaryContainer{padding:7px 12px 7px 11px;background-color:#e3e8f0;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#737d8c;font-size:1.4rem;line-height:2.4rem}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar{background-color:#c1c6cd}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar.mx_Waveform_bar_100pct{-webkit-transition:background-color .25s ease;transition:background-color .25s ease;background-color:#737d8c}.mx_VoiceMessagePrimaryContainer .mx_Clock{width:4.2rem;padding-right:6px;padding-left:8px}.mx_Waveform{position:relative;height:30px;top:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_Waveform .mx_Waveform_bar{width:0;border:1px solid transparent;border-radius:2px;min-height:0;max-height:100%;margin-left:1px;margin-right:1px}.mx_CallContainer{position:absolute;right:20px;bottom:72px;z-index:100;pointer-events:none}.mx_CallContainer .mx_CallPreview{pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_CallPreview .mx_CallView_video{width:350px}.mx_CallContainer .mx_CallPreview .mx_VideoFeed_local{border-radius:8px;overflow:hidden}.mx_CallContainer .mx_AppTile_persistedWrapper div{min-width:350px}.mx_CallContainer .mx_IncomingCallBox{min-width:250px;background-color:#f4f6fa;padding:8px;-webkit-box-shadow:0 14px 24px rgba(0,0,0,.08);box-shadow:0 14px 24px rgba(0,0,0,.08);border-radius:8px;pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo{display:-webkit-box;display:-ms-flexbox;display:flex;direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo .mx_BaseAvatar_initial,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img{margin:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p{margin:0;padding:0;font-size:1.4rem;line-height:1.6rem}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1{font-weight:700}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons{padding:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>.mx_IncomingCallBox_spacer{width:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>*{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;font-size:1.5rem;line-height:2.4rem}.mx_CallView{border-radius:8px;background-color:#f2f5f8;padding-left:8px;padding-right:8px;pointer-events:auto}.mx_CallView_large{padding-bottom:10px;margin:5px 5px 5px 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_CallView_large,.mx_CallView_large .mx_CallView_voice{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_CallView_pip{width:320px;padding-bottom:8px;margin-top:10px;background-color:#f4f6fa;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.2);box-shadow:0 4px 20px rgba(0,0,0,.2);border-radius:8px}.mx_CallView_pip .mx_CallView_voice{height:180px}.mx_CallView_pip .mx_CallView_callControls{bottom:0}.mx_CallView_pip .mx_CallView_callControls_button:before{width:36px;height:36px}.mx_CallView_pip .mx_CallView_holdTransferContent{padding-top:10px;padding-bottom:25px}.mx_CallView_content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:8px}.mx_CallView_voice{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;background-color:#27303a}.mx_CallView_voice,.mx_CallView_voice_avatarsContainer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-direction:normal}.mx_CallView_voice_avatarsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.mx_CallView_voice_avatarsContainer div{margin-left:12px;margin-right:12px}.mx_CallView_voice .mx_CallView_holdTransferContent .mx_CallView_voice_avatarContainer{border-radius:2000px;overflow:hidden;position:relative}.mx_CallView_holdTransferContent{height:20px;padding-top:20px;padding-bottom:15px;color:#fff}.mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0;font-weight:700}.mx_CallView_video{width:100%;height:100%;z-index:30;overflow:hidden}.mx_CallView_video_hold{overflow:hidden}.mx_CallView_video_hold .mx_VideoFeed{visibility:hidden}.mx_CallView_video_holdBackground{position:absolute;width:100%;height:100%;left:0;right:0;background-repeat:no-repeat;background-size:cover;background-position:50%;-webkit-filter:blur(20px);filter:blur(20px)}.mx_CallView_video_holdBackground:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;right:0;background-color:rgba(0,0,0,.6)}.mx_CallView_video .mx_CallView_holdTransferContent{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-weight:700;color:#fff;text-align:center}.mx_CallView_video .mx_CallView_holdTransferContent:before{display:block;margin-left:auto;margin-right:auto;content:"";width:40px;height:40px;background-image:url(../../img/voip/paused.77799b3.svg);background-position:50%;background-size:cover}.mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before{width:30px;height:30px}.mx_CallView_video .mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0}.mx_CallView_header{height:44px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left;-ms-flex-negative:0;flex-shrink:0}.mx_CallView_header_callType{font-size:1.2rem;font-weight:700;vertical-align:middle}.mx_CallView_header_secondaryCallInfo:before{content:"·";margin-left:6px;margin-right:6px}.mx_CallView_header_controls{margin-left:auto}.mx_CallView_header_button{display:inline-block;vertical-align:middle;cursor:pointer}.mx_CallView_header_button:before{content:"";display:inline-block;height:20px;width:20px;vertical-align:middle;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_CallView_header_button_fullscreen:before{-webkit-mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg);mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg)}.mx_CallView_header_button_expand:before{-webkit-mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg);mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg)}.mx_CallView_header_callInfo{margin-left:12px;margin-right:16px}.mx_CallView_header_roomName{font-weight:700;font-size:12px;line-height:normal;height:15px}.mx_CallView_secondaryCall_roomName{margin-left:4px}.mx_CallView_header_callTypeSmall{font-size:12px;color:#737d8c;line-height:normal;height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:240px}.mx_CallView_header_phoneIcon{display:inline-block;margin-right:6px;height:16px;width:16px;vertical-align:middle}.mx_CallView_header_phoneIcon:before{content:"";display:inline-block;vertical-align:top;height:16px;width:16px;background-color:#ff4b55;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_CallView_callControls{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;bottom:5px;width:100%;opacity:1;-webkit-transition:opacity .5s;transition:opacity .5s}.mx_CallView_callControls_hidden{opacity:.001;pointer-events:none}.mx_CallView_callControls_button{cursor:pointer;margin-left:8px;margin-right:8px}.mx_CallView_callControls_button:before{content:"";display:inline-block;height:48px;width:48px;background-repeat:no-repeat;background-size:contain;background-position:50%}.mx_CallView_callControls_dialpad{margin-right:auto}.mx_CallView_callControls_dialpad:before{background-image:url(../../img/voip/dialpad.fdda9a0.svg)}.mx_CallView_callControls_button_dialpad_hidden{margin-right:auto;cursor:auto}.mx_CallView_callControls_button_micOn:before{background-image:url(../../img/voip/mic-on.2592c14.svg)}.mx_CallView_callControls_button_micOff:before{background-image:url(../../img/voip/mic-off.774e42b.svg)}.mx_CallView_callControls_button_vidOn:before{background-image:url(../../img/voip/vid-on.b9b8bbf.svg)}.mx_CallView_callControls_button_vidOff:before{background-image:url(../../img/voip/vid-off.5552596.svg)}.mx_CallView_callControls_button_hangup:before{background-image:url(../../img/voip/hangup.9c3adeb.svg)}.mx_CallView_callControls_button_more{margin-left:auto}.mx_CallView_callControls_button_more:before{background-image:url(../../img/voip/more.5e8055e.svg)}.mx_CallView_callControls_button_more_hidden{margin-left:auto;cursor:auto}.mx_CallView_callControls_button_invisible{visibility:hidden;pointer-events:none;position:absolute}.mx_CallViewForRoom{overflow:hidden}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:8px}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle{width:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle:after{content:"";margin-top:3px;border-radius:4px;height:4px;width:100%;max-width:64px;background-color:#2e2f32}.mx_DialPad{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.mx_DialPad_button{width:40px;height:40px;background-color:#e3e8f0;border-radius:40px;font-size:18px;font-weight:600;text-align:center;vertical-align:middle;line-height:40px}.mx_DialPad_deleteButton:before,.mx_DialPad_dialButton:before{content:"";display:inline-block;height:40px;width:40px;vertical-align:middle;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center;background-color:#fff}.mx_DialPad_deleteButton{background-color:#ff4b55}.mx_DialPad_deleteButton:before{-webkit-mask-image:url(../../img/element-icons/call/delete.833d785.svg);mask-image:url(../../img/element-icons/call/delete.833d785.svg);-webkit-mask-position:9px;mask-position:9px}.mx_DialPad_dialButton{background-color:#0dbd8b}.mx_DialPad_dialButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_DialPadContextMenu_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadContextMenu_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadContextMenu_dialled{height:1em;font-size:18px;font-weight:600}.mx_DialPadContextMenu_dialPad{margin:16px}.mx_DialPadContextMenu_horizSep{position:relative}.mx_DialPadContextMenu_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_Dialog_dialPadWrapper .mx_Dialog{padding:0}.mx_DialPadModal{width:192px;height:368px}.mx_DialPadModal_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadModal_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadModal_cancel{float:right;-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer}.mx_DialPadModal_field{border:none;margin:0}.mx_DialPadModal_field input{font-size:18px;font-weight:600}.mx_DialPadModal_dialPad{margin-left:16px;margin-right:16px;margin-top:16px}.mx_DialPadModal_horizSep{position:relative}.mx_DialPadModal_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_VideoFeed_voice{padding-bottom:52px;background-color:#27303a}.mx_VideoFeed_remote{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_VideoFeed_remote.mx_VideoFeed_video{background-color:#000}.mx_VideoFeed_local{max-width:25%;max-height:25%;position:absolute;right:10px;top:10px;z-index:100;border-radius:4px}.mx_VideoFeed_local.mx_VideoFeed_video{background-color:transparent}.mx_VideoFeed_mirror{-webkit-transform:scaleX(-1);transform:scaleX(-1)} +` +const snackbarCSS = ` +#snackbar { + display: flex; + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + position: fixed; + z-index: 1; + left: 50%; + bottom: 30px; + font-size: 17px; + padding: 6px 16px; + font-family: Inter, "Roboto", "Helvetica", "Arial", sans-serif; + font-weight: 400; + line-height: 1.43; + border-radius: 4px; + letter-spacing: 0.01071em; +} + +#snackbar.mx_show { + visibility: visible; + -webkit-animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; + animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; +} + +a.mx_reply_anchor{ + cursor: pointer; + color: #238cf5; +} + +a.mx_reply_anchor:hover{ + text-decoration: underline; +} + +@-webkit-keyframes mx_snackbar_fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} +} + +@keyframes mx_snackbar_fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} +} + +@-webkit-keyframes mx_snackbar_fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} +} + +@keyframes mx_snackbar_fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} +} +` +export default lightCSS + snackbarCSS; diff --git a/src/utils/exportUtils/exportJS.ts b/src/utils/exportUtils/exportJS.ts new file mode 100644 index 0000000000..4fd0a5159d --- /dev/null +++ b/src/utils/exportUtils/exportJS.ts @@ -0,0 +1,32 @@ +export default ` +function scrollToElement(replyId){ + let el = document.getElementById(replyId); + if(!el) { + showToast("The message you're looking for wasn't exported"); + return; + }; + el.scrollIntoView({ behavior: 'smooth', block: 'center' }); + el.style.backgroundColor = '#f6f7f8'; + el.style.transition = 'background-color 1s ease' + setTimeout(() => { + el.style.backgroundColor = "white" + }, 2000); +} + +function showToast(text) { + let el = document.getElementById("snackbar"); + el.innerHTML = text; + el.className = "mx_show"; + setTimeout(() => { + el.className = el.className.replace("mx_show", ""); + }, 2000); +} + +window.onload = () => { + document.querySelectorAll('.mx_reply_anchor').forEach(element => { + element.addEventListener('click', event => { + scrollToElement(event.target.getAttribute("scroll-to")); + }) + }) +} +` From 409213ceb4adbae2e83b875a9e1bc9e8233b6022 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 19:07:49 +0530 Subject: [PATCH 024/176] Remove conditional --- src/utils/exportUtils/HtmlExport.tsx | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 22cf04669b..6ce7ad5c94 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -187,13 +187,11 @@ export default class HTMLExporter extends Exporter { if (!haveTileForEvent(event)) continue; content += this._wantsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; - - if (event.getType() === "m.room.message") { - const shouldBeJoined = !this._wantsDateSeparator(event, prevEvent) + const shouldBeJoined = !this._wantsDateSeparator(event, prevEvent) && shouldFormContinuation(prevEvent, event); - const body = await this.createMessageBody(event, shouldBeJoined); - content += body; - } + const body = await this.createMessageBody(event, shouldBeJoined); + + content += body; prevEvent = event; } return this.wrapHTML(content, room); From 59c1b67b7dcebb0adab9065e09d6bc0dc0497c15 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 21:01:19 +0530 Subject: [PATCH 025/176] Enable support for image, video and audio files --- src/components/views/messages/MAudioBody.js | 11 ++++- src/components/views/messages/MFileBody.js | 8 ++-- src/components/views/messages/MImageBody.js | 10 +++-- src/components/views/messages/MVideoBody.tsx | 17 +++++++- .../views/messages/MVoiceOrAudioBody.tsx | 3 +- src/components/views/messages/MessageEvent.js | 4 ++ src/components/views/rooms/EventTile.tsx | 12 ++++-- src/utils/exportUtils/HtmlExport.tsx | 42 +++++++++++++++++-- 8 files changed, 86 insertions(+), 21 deletions(-) diff --git a/src/components/views/messages/MAudioBody.js b/src/components/views/messages/MAudioBody.js index 0d5e449fc0..53aa013503 100644 --- a/src/components/views/messages/MAudioBody.js +++ b/src/components/views/messages/MAudioBody.js @@ -34,6 +34,7 @@ export default class MAudioBody extends React.Component { error: null, }; } + onPlayToggle() { this.setState({ playing: !this.state.playing, @@ -41,6 +42,7 @@ export default class MAudioBody extends React.Component { } _getContentUrl() { + if (this.props.mediaSrc) return this.props.mediaSrc; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; @@ -49,6 +51,11 @@ export default class MAudioBody extends React.Component { } } + getFileBody() { + if (this.props.mediaSrc) return null; + return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; + } + componentDidMount() { const content = this.props.mxEvent.getContent(); if (content.file !== undefined && this.state.decryptedUrl === null) { @@ -101,11 +108,11 @@ export default class MAudioBody extends React.Component { } const contentUrl = this._getContentUrl(); - + const fileBody = this.getFileBody(); return ( <span className="mx_MAudioBody"> <audio src={contentUrl} controls /> - <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} /> + { fileBody } </span> ); } diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 8f464e08bd..9dc1de7683 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -242,7 +242,7 @@ export default class MFileBody extends React.Component { <span className="mx_MFileBody"> {placeholder} <div className="mx_MFileBody_download"> - <div style={{display: "none"}}> + <div style={{ display: "none" }}> { /* * Add dummy copy of the "a" tag * We'll use it to learn how the download link @@ -309,7 +309,7 @@ export default class MFileBody extends React.Component { if (this.props.tileShape === "file_grid") { return ( <span className="mx_MFileBody"> - {placeholder} + { placeholder } <div className="mx_MFileBody_download"> <a className="mx_MFileBody_downloadLink" {...downloadProps}> { fileName } @@ -323,7 +323,7 @@ export default class MFileBody extends React.Component { } else { return ( <span className="mx_MFileBody"> - {placeholder} + { placeholder } <div className="mx_MFileBody_download"> <a {...downloadProps}> <span className="mx_MFileBody_download_icon" /> @@ -336,7 +336,7 @@ export default class MFileBody extends React.Component { } else { const extra = text ? (': ' + text) : ''; return <span className="mx_MFileBody"> - {placeholder} + { placeholder } { _t("Invalid file%(extra)s", { extra: extra }) } </span>; } diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 6505b1d66a..31cdeed6a0 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -90,7 +90,7 @@ export default class MImageBody extends React.Component { showImage() { localStorage.setItem("mx_ShowImage_" + this.props.mxEvent.getId(), "true"); - this.setState({showImage: true}); + this.setState({ showImage: true }); this._downloadImage(); } @@ -172,6 +172,7 @@ export default class MImageBody extends React.Component { } _getContentUrl() { + if (this.props.mediaSrc) return this.props.mediaSrc; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; @@ -296,7 +297,7 @@ export default class MImageBody extends React.Component { if (showImage) { // Don't download anything becaue we don't want to display anything. this._downloadImage(); - this.setState({showImage: true}); + this.setState({ showImage: true }); } this._afterComponentDidMount(); @@ -345,7 +346,7 @@ export default class MImageBody extends React.Component { imageElement = <HiddenImagePlaceholder />; } else { imageElement = ( - <img style={{display: 'none'}} src={thumbUrl} ref={this._image} + <img style={{ display: 'none' }} src={thumbUrl} ref={this._image} alt={content.body} onError={this.onImageError} onLoad={this.onImageLoad} @@ -449,6 +450,7 @@ export default class MImageBody extends React.Component { // Overidden by MStickerBody getFileBody() { + if (this.props.mediaSrc) return null; return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; } @@ -466,7 +468,7 @@ export default class MImageBody extends React.Component { const contentUrl = this._getContentUrl(); let thumbUrl; - if (this._isGif() && SettingsStore.getValue("autoplayGifsAndVideos")) { + if ((this._isGif() && SettingsStore.getValue("autoplayGifsAndVideos")) || this.props.mediaSrc) { thumbUrl = contentUrl; } else { thumbUrl = this._getThumbUrl(); diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 2efdce506e..68cbb6702c 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -29,6 +29,8 @@ interface IProps { mxEvent: any; /* called when the video has loaded */ onHeightChanged: () => void; + /* used to refer to the local file while exporting */ + mediaSrc?: string; } interface IState { @@ -76,6 +78,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } private getContentUrl(): string|null { + if (this.props.mediaSrc) return this.props.mediaSrc; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; @@ -90,6 +93,9 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } private getThumbUrl(): string|null { + // there's no need of thumbnail when the content is local + if (this.props.mediaSrc) return null; + const content = this.props.mxEvent.getContent(); const media = mediaFromContent(content); if (media.isEncrypted) { @@ -184,6 +190,11 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { this.props.onHeightChanged(); } + private getFileBody = () => { + if (this.props.mediaSrc) return null; + return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; + } + render() { const content = this.props.mxEvent.getContent(); const autoplay = SettingsStore.getValue("autoplayGifsAndVideos"); @@ -197,7 +208,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { ); } - // Important: If we aren't autoplaying and we haven't decrypred it yet, show a video with a poster. + // Important: If we aren't autoplaying and we haven't decrypted it yet, show a video with a poster. if (content.file !== undefined && this.state.decryptedUrl === null && autoplay) { // Need to decrypt the attachment // The attachment is decrypted in componentDidMount. @@ -229,6 +240,8 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { preload = "none"; } } + + const fileBody = this.getFileBody(); return ( <span className="mx_MVideoBody"> <video @@ -246,7 +259,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { onPlay={this.videoOnPlay} > </video> - <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} /> + { fileBody } </span> ); } diff --git a/src/components/views/messages/MVoiceOrAudioBody.tsx b/src/components/views/messages/MVoiceOrAudioBody.tsx index 0cebcf3440..d548d8d2fa 100644 --- a/src/components/views/messages/MVoiceOrAudioBody.tsx +++ b/src/components/views/messages/MVoiceOrAudioBody.tsx @@ -23,6 +23,7 @@ import MVoiceMessageBody from "./MVoiceMessageBody"; interface IProps { mxEvent: MatrixEvent; + mediaSrc?: string; } @replaceableComponent("views.messages.MVoiceOrAudioBody") @@ -30,7 +31,7 @@ export default class MVoiceOrAudioBody extends React.PureComponent<IProps> { public render() { const isVoiceMessage = !!this.props.mxEvent.getContent()['org.matrix.msc2516.voice']; const voiceMessagesEnabled = SettingsStore.getValue("feature_voice_messages"); - if (isVoiceMessage && voiceMessagesEnabled) { + if (isVoiceMessage && voiceMessagesEnabled && !this.props.mediaSrc) { return <MVoiceMessageBody {...this.props} />; } else { return <MAudioBody {...this.props} />; diff --git a/src/components/views/messages/MessageEvent.js b/src/components/views/messages/MessageEvent.js index 78e0dc422d..84a3d56d77 100644 --- a/src/components/views/messages/MessageEvent.js +++ b/src/components/views/messages/MessageEvent.js @@ -44,6 +44,9 @@ export default class MessageEvent extends React.Component { /* the shape of the tile, used */ tileShape: PropTypes.string, + /* to set source to local file path during export */ + mediaSrc: PropTypes.string, + /* the maximum image height to use, if the event is an image */ maxImageHeight: PropTypes.number, @@ -120,6 +123,7 @@ export default class MessageEvent extends React.Component { highlightLink={this.props.highlightLink} showUrlPreview={this.props.showUrlPreview} tileShape={this.props.tileShape} + mediaSrc={this.props.mediaSrc} maxImageHeight={this.props.maxImageHeight} replacingEventId={this.props.replacingEventId} editState={this.props.editState} diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index ff10b3255a..8356119d71 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -103,7 +103,7 @@ for (const evType of ALL_RULE_TYPES) { stateEventTileTypes[evType] = 'messages.TextualEvent'; } -export function getHandlerTile(ev) { +export function getHandlerTile(ev: MatrixEvent) { const type = ev.getType(); // don't show verification requests we're not involved in, @@ -251,6 +251,9 @@ interface IProps { isExporting?: boolean; + // Used while exporting to refer to the local source rather than the online one + mediaSrc?: string; + // show twelve hour timestamps isTwelveHour?: boolean; @@ -342,7 +345,7 @@ export default class EventTile extends React.Component<IProps, IState> { * or 'sent' receipt, for example. * @returns {boolean} */ - private get isEligibleForSpecialReceipt() { + private get isEligibleForSpecialReceipt(): boolean { // First, if there are other read receipts then just short-circuit this. if (this.props.readReceipts && this.props.readReceipts.length > 0) return false; if (!this.props.mxEvent) return false; @@ -1150,6 +1153,7 @@ export default class EventTile extends React.Component<IProps, IState> { mxEvent={this.props.mxEvent} replacingEventId={this.props.replacingEventId} editState={this.props.editState} + mediaSrc={this.props.mediaSrc} highlights={this.props.highlights} highlightLink={this.props.highlightLink} showUrlPreview={this.props.showUrlPreview} @@ -1332,8 +1336,8 @@ class SentReceipt extends React.PureComponent<ISentReceiptProps, ISentReceiptSta return <span className="mx_EventTile_readAvatars"> <span className={receiptClasses} onMouseEnter={this.onHoverStart} onMouseLeave={this.onHoverEnd}> - {nonCssBadge} - {tooltip} + { nonCssBadge } + { tooltip } </span> </span>; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 6ce7ad5c94..dfdd8a32cd 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -20,11 +20,13 @@ import exportJS from "./exportJS"; export default class HTMLExporter extends Exporter { protected zip: JSZip; protected avatars: Map<string, boolean>; + protected permalinkCreator: RoomPermalinkCreator; constructor(res: MatrixEvent[], room: Room) { super(res, room); this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); + this.permalinkCreator = new RoomPermalinkCreator(this.room); } protected wrapHTML(content: string, room: Room) { @@ -152,11 +154,12 @@ export default class HTMLExporter extends Exporter { return wantsDateSeparator(prevEvent.getDate(), event.getDate()); } - protected async createMessageBody(mxEv: MatrixEvent, joined = false) { - const eventTile = <li id={mxEv.getId()}> + + protected getEventTile(mxEv: MatrixEvent, continuation: boolean, mediaSrc?: string) { + return <li id={mxEv.getId()}> <EventTile mxEvent={mxEv} - continuation={joined} + continuation={continuation} isRedacted={mxEv.isRedacted()} replacingEventId={mxEv.replacingEventId()} isExporting={true} @@ -166,8 +169,9 @@ export default class HTMLExporter extends Exporter { checkUnmounting={() => false} isTwelveHour={false} last={false} + mediaSrc={mediaSrc} lastInSection={false} - permalinkCreator={new RoomPermalinkCreator(this.room)} + permalinkCreator={this.permalinkCreator} lastSuccessful={false} isSelectedEvent={false} getRelationsForEvent={null} @@ -177,6 +181,36 @@ export default class HTMLExporter extends Exporter { showReadReceipts={false} /> </li> + } + + protected async createMessageBody(mxEv: MatrixEvent, joined = false) { + let eventTile: JSX.Element; + switch (mxEv.getContent().msgtype) { + case "m.image": { + const blob = await this.getMediaBlob(mxEv); + const filePath = `images/${mxEv.getId()}.${blob.type.replace("image/", "")}`; + eventTile = this.getEventTile(mxEv, joined, filePath); + this.zip.file(filePath, blob); + break; + } + case "m.video": { + const blob = await this.getMediaBlob(mxEv); + const filePath = `videos/${mxEv.getId()}.${blob.type.replace("video/", "")}`; + eventTile = this.getEventTile(mxEv, joined, filePath); + this.zip.file(filePath, blob); + break; + } + case "m.audio": { + const blob = await this.getMediaBlob(mxEv); + const filePath = `audio/${mxEv.getId()}.${blob.type.replace("audio/", "")}`; + eventTile = this.getEventTile(mxEv, joined, filePath); + this.zip.file(filePath, blob); + break; + } + default: + eventTile = this.getEventTile(mxEv, joined); + break; + } return renderToStaticMarkup(eventTile); } From fa073cd958ef7d994d4e733d468ccc5b49f6c61c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 21:35:08 +0530 Subject: [PATCH 026/176] Save and display room avatars --- src/components/views/avatars/BaseAvatar.tsx | 2 +- .../views/avatars/DecoratedRoomAvatar.tsx | 4 +- src/utils/exportUtils/HtmlExport.tsx | 47 +++++++++++-------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/components/views/avatars/BaseAvatar.tsx b/src/components/views/avatars/BaseAvatar.tsx index 8ce05e0a55..e0d0edd279 100644 --- a/src/components/views/avatars/BaseAvatar.tsx +++ b/src/components/views/avatars/BaseAvatar.tsx @@ -44,7 +44,7 @@ interface IProps { className?: string; } -const calculateUrls = (url, urls) => { +const calculateUrls = (url: string, urls: string[]) => { // work out the full set of urls to try to load. This is formed like so: // imageUrls: [ props.url, ...props.urls ] diff --git a/src/components/views/avatars/DecoratedRoomAvatar.tsx b/src/components/views/avatars/DecoratedRoomAvatar.tsx index f15538eabf..bd67255fc2 100644 --- a/src/components/views/avatars/DecoratedRoomAvatar.tsx +++ b/src/components/views/avatars/DecoratedRoomAvatar.tsx @@ -201,8 +201,8 @@ export default class DecoratedRoomAvatar extends React.PureComponent<IProps, ISt oobData={this.props.oobData} viewAvatarOnClick={this.props.viewAvatarOnClick} /> - {icon} - {badge} + { icon } + { badge } </div>; } } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index dfdd8a32cd..f124359882 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -6,16 +6,18 @@ import { mediaFromContent } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Exporter } from "./Exporter"; -import * as ponyfill from "web-streams-polyfill/ponyfill" import { renderToStaticMarkup } from 'react-dom/server' import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; import { wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; +import * as ponyfill from "web-streams-polyfill/ponyfill" +import * as Avatar from "../../Avatar"; import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventTile"; import DateSeparator from "../../components/views/messages/DateSeparator"; import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; +import BaseAvatar from "../../components/views/avatars/BaseAvatar"; export default class HTMLExporter extends Exporter { protected zip: JSZip; @@ -29,7 +31,29 @@ export default class HTMLExporter extends Exporter { this.permalinkCreator = new RoomPermalinkCreator(this.room); } - protected wrapHTML(content: string, room: Room) { + protected async getRoomAvatar() { + let blob: Blob; + const avatarUrl = Avatar.avatarUrlForRoom(this.room, 32, 32, "crop"); + if (avatarUrl) { + const image = await fetch(avatarUrl); + blob = await image.blob(); + this.zip.file("room.png", blob); + } + const avatar = ( + <BaseAvatar + width={32} + height={32} + name={this.room.name} + title={this.room.name} + url={blob ? "room.png" : null} + resizeMethod={"crop"} + /> + ); + return renderToStaticMarkup(avatar); + } + + protected async wrapHTML(content: string, room: Room) { + const roomAvatar = await this.getRoomAvatar(); return ` <!DOCTYPE html> <html lang="en"> @@ -54,22 +78,7 @@ export default class HTMLExporter extends Exporter { <div class="mx_RoomHeader_wrapper" aria-owns="mx_RightPanel"> <div class="mx_RoomHeader_avatar"> <div class="mx_DecoratedRoomAvatar"> - <span class="mx_BaseAvatar" role="presentation" - ><span - class="mx_BaseAvatar_initial" - aria-hidden="true" - style=" - font-size: 20.8px; - width: 32px; - line-height: 32px; - " - >G</span - ><img - class="mx_BaseAvatar_image" - alt="" - aria-hidden="true" - style="width: 32px; height: 32px" - /></span> + ${roomAvatar} </div> </div> <div class="mx_RoomHeader_name"> @@ -228,7 +237,7 @@ export default class HTMLExporter extends Exporter { content += body; prevEvent = event; } - return this.wrapHTML(content, room); + return await this.wrapHTML(content, room); } public async export() { From 28a1a551fe71b8264fa7198340481ba13f806bb0 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 22:27:29 +0530 Subject: [PATCH 027/176] Save users' avatars --- src/components/views/avatars/MemberAvatar.tsx | 4 +++- src/components/views/messages/MImageBody.js | 4 ++-- src/components/views/rooms/EventTile.tsx | 10 ++++++-- src/utils/exportUtils/HtmlExport.tsx | 24 +++++++++++++++++-- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 3205ca372c..8550f13e2d 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -36,6 +36,7 @@ interface IProps extends Omit<React.ComponentProps<typeof BaseAvatar>, "name" | // Whether the onClick of the avatar should be overriden to dispatch `Action.ViewUser` viewUserOnClick?: boolean; title?: string; + avatarSrc?: string; } interface IState { @@ -66,7 +67,8 @@ export default class MemberAvatar extends React.Component<IProps, IState> { private static getState(props: IProps): IState { if (props.member?.name) { let imageUrl = null; - if (props.member.getMxcAvatarUrl()) { + if (props.avatarSrc) imageUrl = props.avatarSrc; + else if (props.member.getMxcAvatarUrl()) { imageUrl = mediaFromMxc(props.member.getMxcAvatarUrl()).getThumbnailOfSourceHttp( props.width, props.height, diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 31cdeed6a0..9937624a0e 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -407,7 +407,7 @@ export default class MImageBody extends React.Component { <div className="mx_MImageBody_thumbnail_container" style={{ maxHeight: maxHeight + "px" }} > { /* Calculate aspect ratio, using %padding will size _container correctly */ } <div style={{ paddingBottom: (100 * infoHeight / infoWidth) + '%' }} /> - { showPlaceholder && + { !this.props.mediaSrc && showPlaceholder && <div className="mx_MImageBody_thumbnail" style={{ // Constrain width here so that spinner appears central to the loaded thumbnail maxWidth: infoWidth + "px", @@ -418,7 +418,7 @@ export default class MImageBody extends React.Component { </div> } - <div style={{display: !showPlaceholder ? undefined : 'none'}}> + <div style={{display: this.props.mediaSrc ? "block" : !showPlaceholder ? undefined : 'none'}}> { img } { gifLabel } </div> diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 8356119d71..1f73d46e0a 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -254,6 +254,9 @@ interface IProps { // Used while exporting to refer to the local source rather than the online one mediaSrc?: string; + // Used while exporting to refer to the local avatar rather than the online one + avatarSrc?: string; + // show twelve hour timestamps isTwelveHour?: boolean; @@ -939,8 +942,11 @@ export default class EventTile extends React.Component<IProps, IState> { } avatar = ( <div className="mx_EventTile_avatar"> - <MemberAvatar member={member} - width={avatarSize} height={avatarSize} + <MemberAvatar + avatarSrc = {this.props.avatarSrc} + member={member} + width={avatarSize} + height={avatarSize} viewUserOnClick={true} /> </div> diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index f124359882..914b8867a9 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -2,7 +2,7 @@ import React from "react" import streamSaver from "streamsaver"; import JSZip from "jszip"; import { decryptFile } from "../DecryptFile"; -import { mediaFromContent } from "../../customisations/Media"; +import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Exporter } from "./Exporter"; @@ -133,7 +133,23 @@ export default class HTMLExporter extends Exporter { </html>` } - // will be used in the future + protected hasAvatar(event: MatrixEvent): boolean { + const member = event.sender; + if (member.getMxcAvatarUrl()) return true; + return false; + } + + protected async saveAvatarIfNeeded(event: MatrixEvent) { + const member = event.sender; + const avatarUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(30, 30, "crop"); + if (!this.avatars.has(member.userId)) { + this.avatars.set(member.userId, true); + const image = await fetch(avatarUrl); + const blob = await image.blob(); + this.zip.file(`users/${member.userId}`, blob); + } + } + protected async getMediaBlob(event: MatrixEvent) { let blob: Blob; try { @@ -165,6 +181,9 @@ export default class HTMLExporter extends Exporter { protected getEventTile(mxEv: MatrixEvent, continuation: boolean, mediaSrc?: string) { + const hasAvatar = this.hasAvatar(mxEv); + if (hasAvatar) this.saveAvatarIfNeeded(mxEv); + return <li id={mxEv.getId()}> <EventTile mxEvent={mxEv} @@ -179,6 +198,7 @@ export default class HTMLExporter extends Exporter { isTwelveHour={false} last={false} mediaSrc={mediaSrc} + avatarSrc={hasAvatar ? `users/${mxEv.sender.userId}` : null} lastInSection={false} permalinkCreator={this.permalinkCreator} lastSuccessful={false} From 01284ef8c6a91127ab535af8a37f792ae760c825 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 23:33:20 +0530 Subject: [PATCH 028/176] Handle encrypted voice messages --- src/utils/exportUtils/HtmlExport.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 914b8867a9..a69fab9f06 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -155,7 +155,7 @@ export default class HTMLExporter extends Exporter { try { const isEncrypted = event.isEncrypted(); const content = event.getContent(); - if (isEncrypted) { + if (isEncrypted && !content.hasOwnProperty("org.matrix.msc1767.file")) { blob = await decryptFile(content.file); } else { const media = mediaFromContent(event.getContent()); From a0a604618c6b399e193f1c42065516ed7d4f2f7c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 31 May 2021 23:50:55 +0530 Subject: [PATCH 029/176] Handle non-media attachments --- src/components/views/messages/MFileBody.js | 10 +++++++++- src/components/views/rooms/EventTile.tsx | 2 +- src/utils/exportUtils/HtmlExport.tsx | 8 ++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 9dc1de7683..53d37d73da 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -102,6 +102,8 @@ export default class MFileBody extends React.Component { tileShape: PropTypes.string, /* whether or not to show the default placeholder for the file. Defaults to true. */ showGenericPlaceholder: PropTypes.bool, + /* to set source to local file path during export */ + mediaSrc: PropTypes.string, }; static defaultProps = { @@ -178,7 +180,13 @@ export default class MFileBody extends React.Component { ); } - if (isEncrypted) { + if (this.props.mediaSrc) { + return <span className="mx_MFileBody"> + <a href={this.props.mediaSrc}> + { placeholder } + </a> + </span>; + } else if (isEncrypted) { if (this.state.decryptedBlob === null) { // Need to decrypt the attachment // Wait for the user to click on the link before downloading diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index be748d6b71..a7bfb40ad0 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -936,7 +936,7 @@ export default class EventTile extends React.Component<IProps, IState> { avatar = ( <div className="mx_EventTile_avatar"> <MemberAvatar - avatarSrc = {this.props.avatarSrc} + avatarSrc={this.props.avatarSrc} member={member} width={avatarSize} height={avatarSize} diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index a69fab9f06..80ba643f81 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -236,6 +236,14 @@ export default class HTMLExporter extends Exporter { this.zip.file(filePath, blob); break; } + case "m.file": { + const blob = await this.getMediaBlob(mxEv); + const fileName = mxEv.getContent().body; + const filePath = `files/${fileName}`; + eventTile = this.getEventTile(mxEv, joined, filePath); + this.zip.file(filePath, blob); + break; + } default: eventTile = this.getEventTile(mxEv, joined); break; From 80c0ad82fc2576a76efc411d150f8592938a3d5a Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 12:40:03 +0530 Subject: [PATCH 030/176] Better file names --- src/DateUtils.ts | 16 +++++ src/components/views/avatars/MemberAvatar.tsx | 13 ++-- src/i18n/strings/en_EN.json | 1 + src/utils/exportUtils/HtmlExport.tsx | 67 ++++++++++++------- 4 files changed, 66 insertions(+), 31 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index e4a1175d88..b567337e2c 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -136,3 +136,19 @@ export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): bo // Compare weekdays return prevEventDate.getDay() !== nextEventDate.getDay(); } + + +export function formatFullDateNoDayNoTime(date: Date) { + const dateTime = date.getFullYear() + + "-" + + pad(date.getMonth()) + + "-" + + pad(date.getDate()) + + _t(" at ") + + pad(date.getHours()) + + "." + + pad(date.getMinutes()) + + "." + + pad(date.getSeconds()); + return dateTime; +} diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 8550f13e2d..67d6ef38f0 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -16,14 +16,15 @@ limitations under the License. */ import React from 'react'; -import {RoomMember} from "matrix-js-sdk/src/models/room-member"; +import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import dis from "../../../dispatcher/dispatcher"; -import {Action} from "../../../dispatcher/actions"; +import { Action } from "../../../dispatcher/actions"; import BaseAvatar from "./BaseAvatar"; -import {replaceableComponent} from "../../../utils/replaceableComponent"; -import {mediaFromMxc} from "../../../customisations/Media"; -import {ResizeMethod} from "../../../Avatar"; +import { replaceableComponent } from "../../../utils/replaceableComponent"; +import { mediaFromMxc } from "../../../customisations/Media"; +import { ResizeMethod } from "../../../Avatar"; +import { omit } from "lodash"; interface IProps extends Omit<React.ComponentProps<typeof BaseAvatar>, "name" | "idName" | "url"> { member: RoomMember; @@ -94,6 +95,8 @@ export default class MemberAvatar extends React.Component<IProps, IState> { let {member, fallbackUserId, onClick, viewUserOnClick, ...otherProps} = this.props; const userId = member ? member.userId : fallbackUserId; + otherProps = omit(otherProps, "avatarSrc"); + if (viewUserOnClick) { onClick = () => { dis.dispatch({ diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index df1037a863..682a31e0a3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -103,6 +103,7 @@ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + " at ": " at ", "Who would you like to add to this community?": "Who would you like to add to this community?", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID", "Invite new community members": "Invite new community members", diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 80ba643f81..eeb9f6a684 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -9,7 +9,7 @@ import { Exporter } from "./Exporter"; import { renderToStaticMarkup } from 'react-dom/server' import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; -import { wantsDateSeparator } from "../../DateUtils"; +import { formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; import * as ponyfill from "web-streams-polyfill/ponyfill" import * as Avatar from "../../Avatar"; @@ -18,6 +18,7 @@ import DateSeparator from "../../components/views/messages/DateSeparator"; import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import BaseAvatar from "../../components/views/avatars/BaseAvatar"; +import exportIcons from "./exportIcons"; export default class HTMLExporter extends Exporter { protected zip: JSZip; @@ -179,6 +180,37 @@ export default class HTMLExporter extends Exporter { return wantsDateSeparator(prevEvent.getDate(), event.getDate()); } + protected splitFileName(file: string) { + const lastDot = file.lastIndexOf('.'); + if (lastDot === -1) return [file, ""]; + const fileName = file.slice(0, lastDot); + const ext = file.slice(lastDot + 1); + return [fileName, ext]; + } + + protected getFilePath(event: MatrixEvent) { + const mediaType = event.getContent().msgtype; + let fileDirectory: string; + switch (mediaType) { + case "m.image": + fileDirectory = "images"; + break; + case "m.video": + fileDirectory = "videos"; + break; + case "m.audio": + fileDirectory = "audio"; + break; + default: + fileDirectory = "files"; + break; + } + const fileDate = formatFullDateNoDayNoTime(new Date(event.getTs())); + const [fileName, fileExt] = this.splitFileName(event.getContent().body); + const filePath = fileDirectory + "/" + fileName + '-' + fileDate + '.' + fileExt; + return filePath; + } + protected getEventTile(mxEv: MatrixEvent, continuation: boolean, mediaSrc?: string) { const hasAvatar = this.hasAvatar(mxEv); @@ -215,31 +247,12 @@ export default class HTMLExporter extends Exporter { protected async createMessageBody(mxEv: MatrixEvent, joined = false) { let eventTile: JSX.Element; switch (mxEv.getContent().msgtype) { - case "m.image": { - const blob = await this.getMediaBlob(mxEv); - const filePath = `images/${mxEv.getId()}.${blob.type.replace("image/", "")}`; - eventTile = this.getEventTile(mxEv, joined, filePath); - this.zip.file(filePath, blob); - break; - } - case "m.video": { - const blob = await this.getMediaBlob(mxEv); - const filePath = `videos/${mxEv.getId()}.${blob.type.replace("video/", "")}`; - eventTile = this.getEventTile(mxEv, joined, filePath); - this.zip.file(filePath, blob); - break; - } + case "m.image": + case "m.file": + case "m.video": case "m.audio": { const blob = await this.getMediaBlob(mxEv); - const filePath = `audio/${mxEv.getId()}.${blob.type.replace("audio/", "")}`; - eventTile = this.getEventTile(mxEv, joined, filePath); - this.zip.file(filePath, blob); - break; - } - case "m.file": { - const blob = await this.getMediaBlob(mxEv); - const fileName = mxEv.getContent().body; - const filePath = `files/${fileName}`; + const filePath = this.getFilePath(mxEv); eventTile = this.getEventTile(mxEv, joined, filePath); this.zip.file(filePath, blob); break; @@ -273,8 +286,10 @@ export default class HTMLExporter extends Exporter { this.zip.file("index.html", html); this.zip.file("css/style.css", exportCSS); this.zip.file("js/script.js", exportJS); - - const filename = `matrix-export-${new Date().toISOString()}.zip`; + for (const iconName in exportIcons) { + this.zip.file(`icons/${iconName}`, exportIcons[iconName]); + } + const filename = `matrix-export-${formatFullDateNoDayNoTime(new Date())}.zip`; //Generate the zip file asynchronously const blob = await this.zip.generateAsync({ type: "blob" }); From 395b6ba4b56a90124d898be36337bc324baa4f48 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 12:44:05 +0530 Subject: [PATCH 031/176] Small refactor --- src/DateUtils.ts | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index b567337e2c..6d390e9132 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -139,16 +139,17 @@ export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): bo export function formatFullDateNoDayNoTime(date: Date) { - const dateTime = date.getFullYear() + - "-" + - pad(date.getMonth()) + - "-" + - pad(date.getDate()) + - _t(" at ") + - pad(date.getHours()) + - "." + - pad(date.getMinutes()) + - "." + - pad(date.getSeconds()); - return dateTime; + return ( + date.getFullYear() + + "-" + + pad(date.getMonth()) + + "-" + + pad(date.getDate()) + + _t(" at ") + + pad(date.getHours()) + + "." + + pad(date.getMinutes()) + + "." + + pad(date.getSeconds()) + ); } From 5f9cf5760de362b20df89d184b7b6eb671db5bc3 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 12:50:31 +0530 Subject: [PATCH 032/176] Fix untracked files --- src/utils/exportUtils/exportCSS.ts | 2 +- src/utils/exportUtils/exportIcons.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 src/utils/exportUtils/exportIcons.ts diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 5a63802097..dd645b4362 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -1,6 +1,6 @@ /* eslint-disable max-len */ const lightCSS = ` -@charset "utf-8";@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Regular.4232a67.woff2) format("woff2"),url(../../fonts/Inter/Inter-Regular.3a1908c.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Italic.b791861.woff2) format("woff2"),url(../../fonts/Inter/Inter-Italic.b13e6fe.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Medium.027d14e.woff2) format("woff2"),url(../../fonts/Inter/Inter-Medium.d1f6b6e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-MediumItalic.8154ac2.woff2) format("woff2"),url(../../fonts/Inter/Inter-MediumItalic.1912849.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBold.0802d48.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBold.8357f92.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBoldItalic.10a60d8.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBoldItalic.1c70752.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Bold.fc28dff.woff2) format("woff2"),url(../../fonts/Inter/Inter-Bold.025b6f2.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-BoldItalic.2129bd0.woff2) format("woff2"),url(../../fonts/Inter/Inter-BoldItalic.80f8542.woff) format("woff")}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.2aafaa1.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-display:swap;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.5476fd3.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.6bc411a.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.000abc6.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.hljs-addition{background:#dfd}.hljs-deletion{background:#fdd}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.mx_LeftPanel{background-image:unset;background-image:var(--avatar-url,unset);background-repeat:no-repeat;background-size:cover;background-position:0 0}.mx_GroupFilterPanel,.mx_SpacePanel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.mx_LeftPanel .mx_LeftPanel_roomListContainer{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}.mx_RoomSublist_showNButton{background-color:transparent!important}a:hover,a:link,a:visited{text-decoration:none}:root{font-size:10px;--transition-short:.1s;--transition-standard:.3s}@media (prefers-reduced-motion){:root{--transition-short:0;--transition-standard:0}}html{height:100%;overflow:hidden}body{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.5rem;background-color:#fff;color:#2e2f32;border:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code,pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji;font-size:100%!important}.error,.text-error,.text-warning,.warning{color:#ff4b55}.text-success{color:#0dbd8b}.text-muted{color:#61708b}b{font-weight:700}h2{color:#2e2f32;font-weight:400;font-size:1.8rem;margin-top:16px;margin-bottom:16px}a:hover,a:link,a:visited{color:#238cf5}input[type=password],input[type=search],input[type=text]{padding:9px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;font-weight:600;min-width:0}input[type=search].mx_textinput_icon,input[type=text].mx_textinput_icon{padding-left:36px;background-repeat:no-repeat;background-position:10px}input[type=search].mx_textinput_icon.mx_textinput_search,input[type=text].mx_textinput_icon.mx_textinput_search{background-image:url(../../img/feather-customised/search-input.044bfa7.svg)}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1}input::-ms-input-placeholder,textarea::-ms-input-placeholder{opacity:1}input::placeholder,textarea::placeholder{opacity:1}input[type=password],input[type=text],textarea{background-color:transparent;color:#2e2f32}textarea{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;color:#2e2f32}input[type=password]:focus,input[type=text]:focus,textarea:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}:focus:not(.focus-visible){outline:none}.mx_Dialog .mx_textinput>input[type=search],.mx_Dialog .mx_textinput>input[type=text],.mx_MatrixChat .mx_textinput>input[type=search],.mx_MatrixChat .mx_textinput>input[type=text]{border:none;-webkit-box-flex:1;-ms-flex:1;flex:1;color:#2e2f32}.mx_Dialog .mx_textinput,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text],.mx_MatrixChat .mx_textinput,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:transparent;color:#9fa9ba;border-radius:4px;border:1px solid rgba(46,47,50,.1);margin:9px}.mx_Dialog .mx_textinput,.mx_MatrixChat .mx_textinput{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dialog .mx_textinput input::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder,.mx_MatrixChat .mx_textinput input::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder,.mx_MatrixChat .mx_textinput input::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder,.mx_MatrixChat .mx_textinput input:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder,.mx_MatrixChat .mx_textinput input::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder,.mx_MatrixChat .mx_textinput input::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder{color:rgba(159,169,186,.75)}.dark-panel{background-color:#f2f5f8}.dark-panel .mx_textinput,.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#fff;border:none}.light-panel .mx_textinput,.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#f2f5f8;border:none}::-moz-focus-inner{border:0}#mx_theme_accentColor{color:#0dbd8b}#mx_theme_secondaryAccentColor{color:#f2f5f8}#mx_theme_tertiaryAccentColor{color:#d3efe1}.mx_Dialog_wrapper{position:fixed;z-index:4000;top:0;left:0;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_Dialog{background-color:#fff;color:#747474;z-index:4012;font-weight:300;font-size:1.5rem;position:relative;padding:24px;max-height:80%;-webkit-box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);border-radius:8px;overflow-y:auto}.mx_Dialog_fixedWidth{width:60vw;max-width:704px}.mx_Dialog_staticWrapper .mx_Dialog{z-index:4010}.mx_Dialog_background{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(46,48,51,.38);opacity:.8;z-index:4011}.mx_Dialog_background.mx_Dialog_staticBackground{z-index:4009}.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background{opacity:.4}.mx_Dialog_lightbox .mx_Dialog_background{opacity:.95;background-color:#000}.mx_Dialog_lightbox .mx_Dialog{border-radius:0;background-color:transparent;width:100%;height:100%;max-width:100%;max-height:100%;pointer-events:none;padding:0}.mx_Dialog_header{position:relative;margin-bottom:10px}.mx_Dialog_titleImage{vertical-align:sub;width:25px;height:25px;margin-left:-2px;margin-right:4px}.mx_Dialog_title{font-size:2.2rem;font-weight:600;line-height:3.6rem;color:#45474a}.mx_Dialog_header.mx_Dialog_headerWithButton>.mx_Dialog_title{text-align:center}.mx_Dialog_header.mx_Dialog_headerWithCancel>.mx_Dialog_title{margin-right:20px}.mx_Dialog_title.danger{color:#ff4b55}.mx_Dialog_cancelButton{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px;right:0}.mx_Dialog_content{margin:24px 0 68px;font-size:1.4rem;color:#2e2f32;word-wrap:break-word}.mx_Dialog_buttons{margin-top:20px;text-align:right}.mx_Dialog_buttons .mx_Dialog_buttons_additive{float:left}.mx_Dialog_buttons button,.mx_Dialog_buttons input[type=submit],.mx_Dialog button,.mx_Dialog input[type=submit]{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-left:0;margin-right:8px;font-weight:600;border:1px solid #0dbd8b;color:#0dbd8b;background-color:#fff;font-family:inherit}.mx_Dialog button:last-child{margin-right:0}.mx_Dialog_buttons button:focus,.mx_Dialog_buttons input[type=submit]:focus,.mx_Dialog button:focus,.mx_Dialog input[type=submit]:focus{-webkit-filter:brightness(105%);filter:brightness(105%)}.mx_Dialog_buttons button.mx_Dialog_primary,.mx_Dialog_buttons input[type=submit].mx_Dialog_primary,.mx_Dialog button.mx_Dialog_primary,.mx_Dialog input[type=submit].mx_Dialog_primary{color:#fff;background-color:#0dbd8b;min-width:156px}.mx_Dialog_buttons button.danger,.mx_Dialog_buttons input[type=submit].danger,.mx_Dialog button.danger,.mx_Dialog input[type=submit].danger{background-color:#ff4b55;border:1px solid #ff4b55;color:#fff}.mx_Dialog button.warning,.mx_Dialog input[type=submit].warning{border:1px solid #ff4b55;color:#ff4b55}.mx_Dialog_buttons button:disabled,.mx_Dialog_buttons input[type=submit]:disabled,.mx_Dialog button:disabled,.mx_Dialog input[type=submit]:disabled{background-color:#747474;border:1px solid #747474;opacity:.7}.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog{width:auto;border-radius:8px;padding:0;-webkit-box-shadow:none;box-shadow:none;overflow-x:hidden;overflow-y:hidden}.mx_GeneralButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;display:inline;margin:auto}.mx_linkButton{cursor:pointer;color:#0dbd8b}.mx_TextInputDialog_label{text-align:left;padding-bottom:12px}.mx_TextInputDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;font-size:1.5rem;padding:0 1.5em}.mx_button_row{margin-top:69px}.mx_Username_color1{color:#368bd6}.mx_Username_color2{color:#ac3ba8}.mx_Username_color3{color:#0dbd8b}.mx_Username_color4{color:#e64f7a}.mx_Username_color5{color:#ff812d}.mx_Username_color6{color:#2dc2c5}.mx_Username_color7{color:#5c56f5}.mx_Username_color8{color:#74d12c}.mx_Tooltip_dark .mx_Tooltip_chevron:after{border-right-color:#27303a}html{scrollbar-color:rgba(0,0,0,.2) transparent}*{scrollbar-width:thin}::-webkit-scrollbar{width:6px;height:6px;background-color:transparent}::-webkit-scrollbar-thumb{border-radius:3px;background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar:hover{scrollbar-color:rgba(0,0,0,.2) transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar{background-color:transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar{overflow-x:hidden;overflow-y:auto;overflow-y:overlay;-ms-overflow-style:-ms-autohiding-scrollbar}.mx_AutoHideScrollbar::-webkit-scrollbar,.mx_AutoHideScrollbar::-webkit-scrollbar-thumb{background-color:transparent}.mx_AutoHideScrollbar{scrollbar-color:transparent transparent}.mx_CompatibilityPage{width:100%;height:100%;background-color:#e55}.mx_CompatibilityPage_box{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;width:500px;height:300px;border:1px solid;padding:10px;background-color:#fcc}.mx_ContextualMenu_wrapper{position:fixed;z-index:5000}.mx_ContextualMenu_background{position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;z-index:5000}.mx_ContextualMenu{border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);background-color:#fff;color:#2e2f32;position:absolute;font-size:1.4rem;z-index:5001}.mx_ContextualMenu_right{right:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_right{right:8px}.mx_ContextualMenu_chevron_right{position:absolute;right:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_left{left:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_left{left:8px}.mx_ContextualMenu_chevron_left{position:absolute;left:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_top{top:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_top{top:8px}.mx_ContextualMenu_chevron_top{position:absolute;left:0;top:-8px;width:0;height:0;border-left:8px solid transparent;border-bottom:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_bottom{bottom:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom{bottom:8px}.mx_ContextualMenu_chevron_bottom{position:absolute;left:0;bottom:-8px;width:0;height:0;border-left:8px solid transparent;border-top:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_spinner{display:block;margin:0 auto}.mx_CreateRoom{width:960px;margin-left:auto;margin-right:auto;color:#2e2f32}.mx_CreateRoom input,.mx_CreateRoom textarea{border-radius:3px;border:1px solid #c7c7c7;font-weight:300;font-size:1.3rem;padding:9px;margin-top:6px}.mx_CreateRoom_description{width:330px}.mx_CustomRoomTagPanel{background-color:hsla(0,0%,91%,.77);max-height:40vh}.mx_CustomRoomTagPanel_scroller{max-height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CustomRoomTagPanel .mx_AccessibleButton{margin:0 auto;width:40px;padding:10px 0 9px;position:relative}.mx_CustomRoomTagPanel .mx_BaseAvatar_image{-webkit-box-sizing:border-box;box-sizing:border-box;width:40px;height:40px}.mx_CustomRoomTagPanel .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before{content:"";height:56px;background-color:#238cf5;width:5px;position:absolute;left:-9px;border-radius:0 3px 3px 0;top:5px}.mx_FilePanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_FilePanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_FilePanel .mx_RoomView_MessageList{width:100%}.mx_FilePanel .mx_EventTile_avatar,.mx_FilePanel .mx_RoomView_MessageList h2{display:none}.mx_FilePanel .mx_EventTile{word-break:break-word;margin-top:32px}.mx_FilePanel .mx_EventTile .mx_MImageBody{margin-right:0}.mx_FilePanel .mx_EventTile .mx_MFileBody{line-height:2.4rem}.mx_FilePanel .mx_EventTile .mx_MFileBody_download{padding-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.4rem;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#747474}.mx_FilePanel .mx_EventTile .mx_MImageBody_size{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;font-size:1.4rem;text-align:right;white-space:nowrap}.mx_FilePanel .mx_EventTile_senderDetails{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:-2px}.mx_FilePanel .mx_EventTile_senderDetailsLink{text-decoration:none}.mx_FilePanel .mx_EventTile .mx_SenderProfile{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;line-height:normal;padding:0;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MessageTimestamp{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;text-align:right;visibility:visible;position:static;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile_line{margin-right:0;padding-left:0}.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_FilePanel_empty:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_GenericErrorPage{width:100%;height:100%;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GenericErrorPage_box{display:inline;width:500px;min-height:125px;border:1px solid #f22;padding:10px 10px 20px;background-color:#fcc}.mx_GroupFilterPanel{-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:hsla(0,0%,91%,.77);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:0}.mx_GroupFilterPanel_items_selected{cursor:pointer}.mx_GroupFilterPanel .mx_GroupFilterPanel_divider{height:0;width:90%;border:none;border-bottom:1px solid #8d99a5}.mx_GroupFilterPanel .mx_GroupFilterPanel_scroller{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:6px}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer>div{margin:6px 0}.mx_GroupFilterPanel .mx_TagTile{position:relative}.mx_GroupFilterPanel .mx_TagTile .mx_BetaDot{position:absolute;right:-13px;top:-11px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype{padding:3px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype{background-color:#fff;border-radius:6px}.mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before{background-color:#2e2f32}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon{background-color:rgba(92,100,112,.2);border-radius:48px}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before{background-color:#5c6470}.mx_TagTile_homeIcon{width:32px;height:32px;position:relative}.mx_TagTile_homeIcon:before{-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:21px;mask-size:21px;content:"";display:inline-block;width:32px;height:32px;position:absolute;top:calc(50% - 16px);left:calc(50% - 16px)}.mx_GroupFilterPanel .mx_TagTile_plus{margin-bottom:12px;height:32px;width:32px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative;display:block!important}.mx_GroupFilterPanel .mx_TagTile_plus:before{background-color:#5c6470;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before{content:"";height:100%;background-color:#0dbd8b;width:4px;position:absolute;left:-12px;border-radius:0 3px 3px 0}.mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_TagTile_tooltip{position:relative;top:-30px;left:5px}.mx_TagTile_context_button{min-width:15px;height:15px;position:absolute;right:-5px;top:-8px;border-radius:8px;background-color:#dbdbdb;color:#000;font-weight:600;font-size:1rem;text-align:center;padding-top:1px;padding-left:4px;padding-right:4px}.mx_TagTile_avatar{position:relative}.mx_TagTile_badge{position:absolute;right:-4px;top:-2px;border-radius:8px;color:#fff;font-weight:600;font-size:1.4rem;padding:0 5px;background-color:#61708b}.mx_TagTile_badgeHighlight{background-color:#ff4b55}.mx_GroupView{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_GroupView_error{margin:auto}.mx_GroupView_header{min-height:52px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:10px;padding-left:19px}.mx_GroupView_header_view{border-bottom:1px solid transparent;padding-bottom:0;padding-right:8px}.mx_GroupView_header_avatar,.mx_GroupView_header_info{display:table-cell;vertical-align:middle}.mx_GroupHeader_button{position:relative;margin-left:5px;margin-right:5px;cursor:pointer;height:20px;width:20px}.mx_GroupHeader_button:before{content:"";position:absolute;height:20px;width:20px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_GroupHeader_editButton:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_GroupHeader_shareButton:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_GroupView_hostingSignup img{margin-left:5px}.mx_GroupView_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_GroupView_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable){color:#0dbd8b;cursor:pointer}.mx_GroupView_avatarPicker{position:relative}.mx_GroupView_avatarPicker_edit{position:absolute;top:50px;left:15px}.mx_GroupView_avatarPicker .mx_Spinner{width:48px;height:48px!important}.mx_GroupView_header_leftCol{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.mx_GroupView_header_rightCol{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupView_textButton{display:inline-block}.mx_GroupView_header_groupid{font-weight:400;font-size:medium;padding-left:10px}.mx_GroupView_header_name{vertical-align:middle;width:100%;height:31px;color:#2e2f32;font-weight:700;font-size:2.2rem;padding-right:16px}.mx_GroupView_header_name,.mx_GroupView_header_shortDesc{overflow:hidden;padding-left:19px;text-overflow:ellipsis;border-bottom:1px solid transparent}.mx_GroupView_header_shortDesc{vertical-align:bottom;float:left;max-height:42px;color:#a2a2a2;font-weight:300;font-size:1.3rem;margin-right:16px}.mx_GroupView_avatarPicker_label{cursor:pointer}.mx_GroupView_cancelButton{padding-left:8px}.mx_GroupView_cancelButton img{position:relative;top:5px}.mx_GroupView input[type=radio]{margin:10px 10px 0}.mx_GroupView_label_text{display:inline-block;max-width:80%;vertical-align:.1em;line-height:2em}.mx_GroupView_body{margin:0 24px}.mx_GroupView_body,.mx_GroupView_rooms{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_GroupView_rooms{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView h3{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;margin-bottom:10px}.mx_GroupView_rooms_header .mx_AccessibleButton{padding-left:14px;margin-bottom:14px;height:24px}.mx_GroupView_group{border-top:1px solid transparent}.mx_GroupView_group_disabled{opacity:.3;pointer-events:none}.mx_GroupView_rooms_header_addRow_button{display:inline-block}.mx_GroupView_rooms_header_addRow_button object{pointer-events:none}.mx_GroupView_rooms_header_addRow_label{display:inline-block;vertical-align:top;line-height:2.4rem;padding-left:28px;color:#0dbd8b}.mx_GroupView_rooms .mx_RoomDetailList{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border-top:1px solid transparent;padding-top:10px;word-break:break-word}.mx_GroupView .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_GroupView_membershipSection{color:#888;margin-top:10px}.mx_GroupView_membershipSubSection{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:8px}.mx_GroupView_membershipSubSection .mx_Spinner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_GroupView_membershipSection_description{line-height:3.4rem}.mx_GroupView_membershipSection_description .mx_BaseAvatar{margin-right:10px}.mx_GroupView_membershipSection .mx_GroupView_textButton{margin-right:0;margin-top:0;margin-left:8px}.mx_GroupView_memberSettings_toggle label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView_memberSettings input{margin-right:6px}.mx_GroupView_featuredThings{margin-top:20px}.mx_GroupView_featuredThings_header{font-weight:700;font-size:120%;margin-bottom:20px}.mx_GroupView_featuredThings_category{font-weight:700;font-size:110%;margin-top:10px}.mx_GroupView_featuredThings_container{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_GroupView_featuredThing,.mx_GroupView_featuredThings_addButton{display:table-cell;text-align:center;width:100px;margin:0 20px}.mx_GroupView_featuredThing{position:relative}.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton{position:absolute;top:-7px;right:11px;opacity:.4}.mx_GroupView_featuredThing .mx_BaseAvatar{vertical-align:baseline;vertical-align:initial}.mx_GroupView_featuredThings_addButton object{pointer-events:none}.mx_GroupView_featuredThing_name{word-wrap:break-word}.mx_GroupView_uploadInput{display:none}.mx_GroupView_body .mx_AutoHideScrollbar>*{margin:11px 50px 50px 68px}.mx_GroupView_groupDesc textarea{width:100%;max-width:100%;height:150px}.mx_GroupView_changeDelayWarning,.mx_GroupView_groupDesc_placeholder{background-color:#f7f7f7;color:#888;border-radius:10px;text-align:center;margin:20px 0}.mx_GroupView_groupDesc_placeholder{padding:100px 20px;cursor:pointer}.mx_GroupView_changeDelayWarning{padding:40px 20px}.mx_GroupView .mx_MemberInfo .mx_AutoHideScrollbar>:not(.mx_MemberInfo_avatar){padding-left:16px;padding-right:16px}.mx_HeaderButtons{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_buttons+.mx_HeaderButtons:before{content:unset}.mx_HeaderButtons:before{content:"";background-color:#91a1c0;opacity:.5;margin:6px 8px;border-radius:1px;width:1px}.mx_HomePage{max-width:960px;width:100%;height:100%;margin-left:auto;margin-right:auto}.mx_HomePage_default{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HomePage_default .mx_HomePage_default_wrapper{margin:auto}.mx_HomePage_default img{height:48px}.mx_HomePage_default h1{font-weight:600;font-size:3.2rem;line-height:4.4rem;margin-bottom:4px}.mx_HomePage_default h4{margin-top:4px;font-weight:600;font-size:1.8rem;line-height:2.5rem;color:#61708b}.mx_HomePage_default .mx_MiniAvatarUploader{margin:0 auto}.mx_HomePage_default .mx_HomePage_default_buttons{margin:60px auto 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton{padding:73px 8px 15px;width:160px;height:132px;margin:20px;position:relative;display:inline-block;border-radius:8px;vertical-align:top;word-break:break-word;-webkit-box-sizing:border-box;box-sizing:border-box;font-weight:600;font-size:1.5rem;line-height:2rem;color:#fff;background-color:#0dbd8b}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before{top:20px;left:60px;width:40px;height:40px;content:"";position:absolute;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_sendDm:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_createGroup:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_LeftPanel{background-color:hsla(0,0%,96.1%,.9);min-width:206px;max-width:50%;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:56px;flex-basis:56px;height:100%;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer,.mx_LeftPanel .mx_LeftPanel_roomListContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanel .mx_LeftPanel_roomListContainer{background-color:hsla(0,0%,96.1%,.9);-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{padding:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer{overflow-y:hidden;overflow-x:scroll;margin:12px 12px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));mask-image:linear-gradient(90deg,transparent,#000 5%)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,#000,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,#000,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{margin-left:12px;margin-right:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton{-ms-flex-preferred-size:0;flex-basis:0;margin:0;width:0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton:before,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton:before{content:none}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{width:32px;height:32px;border-radius:8px;background-color:rgba(141,151,165,.2);position:relative;margin-left:8px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton:before{content:"";position:absolute;top:8px;left:8px;width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton.mx_LeftPanel_exploreButton_space:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListFilterCount{font-size:1.3rem;font-weight:600;margin-left:12px;margin-top:14px;margin-bottom:-4px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper{overflow:hidden;margin-top:10px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom{padding-bottom:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop{padding-top:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_actualRoomListContainer{position:relative;height:100%}.mx_LeftPanel.mx_LeftPanel_minimized{min-width:unset;width:unset!important}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer{width:68px}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{margin-left:0;margin-top:8px;background-color:transparent}.mx_LeftPanelWidget{margin-left:8px;margin-bottom:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:24px;color:#8d99a5;margin-top:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn.mx_LeftPanelWidget_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column;overflow:visible}.mx_LeftPanelWidget .mx_AppTileFullWidth,.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanelWidget .mx_AppTileFullWidth{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;overflow:hidden;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle{cursor:ns-resize;border-radius:3px;width:unset!important;height:4px!important;position:absolute;top:-24px!important;left:calc(50% - 32px)!important;right:calc(50% - 32px)!important}.mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton{margin-left:8px;margin-right:7px;position:relative;width:24px;height:24px;border-radius:32px}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg);background:#61708b}.mx_LeftPanelWidget_maximizeButtonTooltip{margin-top:-3px}.mx_MainSplit{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:0;min-height:0;height:100%}.mx_MainSplit>.mx_RightPanel_ResizeWrapper{padding:5px;margin-left:8px;height:calc(100vh - 51px)}.mx_MainSplit>.mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle{top:50%!important;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px!important;width:4px!important;border-radius:4px!important;background-color:#2e2f32;opacity:.8}.mx_MatrixChat_splash{position:relative;height:100%}.mx_MatrixChat_splashButtons{text-align:center;width:100%;position:absolute;bottom:30px}.mx_MatrixChat_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%}.mx_MatrixToolbar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;height:40px}.mx_MatrixChat{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_MatrixChat_syncError{color:#fff;background-color:#df2a8b;border-radius:5px;display:table;padding:30px;position:absolute;top:100px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.mx_MatrixChat>:not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle){background-color:#fff;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;height:100%}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover{position:relative}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover:before{position:absolute;left:6px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:" ";background-color:#2e2f32;opacity:.8}.mx_MyGroups{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MyGroups .mx_BetaCard{margin:0 72px;max-width:760px}.mx_MyGroups .mx_RoomHeader_simpleHeader{margin-left:0}.mx_MyGroups_header{margin-left:2px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_MyGroups>:not(.mx_RoomHeader):not(.mx_BetaCard){max-width:960px;margin:40px}.mx_MyGroups_headerCard{-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%;margin-bottom:30px;min-width:400px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:13px;height:40px;width:40px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before{background-color:#5c6470;-webkit-mask:url(../../img/icons-create-room.817ede2.svg);mask:url(../../img/icons-create-room.817ede2.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_MyGroups_headerCard_header{font-weight:700;margin-bottom:10px}.mx_MyGroups_headerCard_content{padding-right:15px}.mx_MyGroups_joinBox{visibility:hidden;height:0;margin:0}.mx_MyGroups_content{margin-left:2px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_MyGroups_scrollable{overflow-y:inherit}.mx_MyGroups_placeholder{background-color:#f7f7f7;color:#888;line-height:40rem;border-radius:10px;text-align:center}.mx_MyGroups_joinedGroups{border-top:1px solid transparent;overflow-x:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}.mx_MyGroups_joinedGroups .mx_GroupTile{min-width:300px;max-width:33%;-webkit-box-flex:1;-ms-flex:1 0 300px;flex:1 0 300px;height:75px;margin:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer}.mx_GroupTile_avatar{cursor:-webkit-grab,-webkit-grab;cursor:grab,-webkit-grab}.mx_GroupTile_profile{margin-left:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GroupTile_profile .mx_GroupTile_desc,.mx_GroupTile_profile .mx_GroupTile_groupId,.mx_GroupTile_profile .mx_GroupTile_name{padding-right:10px}.mx_GroupTile_profile .mx_GroupTile_name{margin:0;font-size:1.5rem}.mx_GroupTile_profile .mx_GroupTile_groupId{font-size:1.3rem;opacity:.7}.mx_GroupTile_profile .mx_GroupTile_desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.3rem;max-height:36px;overflow:hidden}.mx_NonUrgentToastContainer{position:absolute;bottom:30px;left:28px;z-index:101}.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast{padding:10px 12px;border-radius:8px;width:320px;font-size:1.3rem;margin-top:8px;background-color:#17191c;color:#fff}.mx_NotificationPanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationPanel .mx_RoomView_MessageList{width:100%}.mx_NotificationPanel .mx_RoomView_MessageList h2{margin-left:0}.mx_NotificationPanel .mx_EventTile{word-break:break-word;position:relative;padding-bottom:18px}.mx_NotificationPanel .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after{position:absolute;bottom:0;left:0;right:0;background-color:#8d99a5;height:1px;opacity:.4;content:""}.mx_NotificationPanel .mx_EventTile_roomName{font-weight:700;font-size:1.4rem}.mx_NotificationPanel .mx_EventTile_roomName>*{vertical-align:middle}.mx_NotificationPanel .mx_EventTile_roomName>.mx_BaseAvatar{margin-right:8px}.mx_NotificationPanel .mx_EventTile_roomName a{color:#2e2f32}.mx_NotificationPanel .mx_EventTile_avatar{display:none}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp,.mx_NotificationPanel .mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.2rem;display:inline;padding-left:0}.mx_NotificationPanel .mx_EventTile_senderDetails{padding-left:36px;position:relative}.mx_NotificationPanel .mx_EventTile_senderDetails a{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_EventTile_roomName a,.mx_NotificationPanel .mx_EventTile_senderDetails a{text-decoration:none!important}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp{visibility:visible;position:static;display:inline}.mx_NotificationPanel .mx_EventTile_line{margin-right:0;padding:0 0 0 36px}.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_NotificationPanel .mx_EventTile_content{margin-right:0}.mx_NotificationPanel_empty:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RightPanel{overflow-x:hidden;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:8px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.mx_RightPanel .mx_RoomView_MessageList{padding:14px 18px}.mx_RightPanel_header{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;border-bottom:1px solid transparent;-webkit-box-flex:0;-ms-flex:0 0 52px;flex:0 0 52px}.mx_RightPanel_headerButtonGroup{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#fff;padding:0 9px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RightPanel_headerButton{cursor:pointer;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1px;margin-right:1px;height:32px;width:32px;position:relative;border-radius:100%}.mx_RightPanel_headerButton:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RightPanel_headerButton:hover{background:rgba(13,189,139,.1)}.mx_RightPanel_headerButton:hover:before{background-color:#0dbd8b}.mx_RightPanel_notifsButton:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomSummaryButton:before{-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_groupMembersButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomsButton:before{-webkit-mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_headerButton_highlight:before{background-color:#0dbd8b!important}.mx_RightPanel_headerButton_badge{font-size:.8rem;border-radius:8px;color:#fff;background-color:#0dbd8b;font-weight:700;position:absolute;top:-4px;left:20px;padding:2px 4px}.mx_RightPanel_collapsebutton{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;height:16px;border:none}.mx_RightPanel .mx_GroupRoomList,.mx_RightPanel .mx_MemberInfo,.mx_RightPanel .mx_MemberList,.mx_RightPanel_blank{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RightPanel .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:auto}.mx_RightPanel_empty{margin-right:-28px}.mx_RightPanel_empty h2{font-weight:700;margin:16px 0}.mx_RightPanel_empty h2,.mx_RightPanel_empty p{font-size:1.4rem}.mx_RightPanel_empty:before{content:"";display:block;margin:11px auto 29px;height:42px;width:42px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_RightPanel_scopeHeader{margin:24px;text-align:center;font-weight:600;font-size:1.8rem;line-height:2.2rem}.mx_RightPanel_scopeHeader .mx_BaseAvatar{margin-right:8px;vertical-align:middle}.mx_RightPanel_scopeHeader .mx_BaseAvatar_image{border-radius:8px}.mx_RoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_RoomDirectory_dialog{height:100%;flex-direction:column}.mx_RoomDirectory,.mx_RoomDirectory_dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory{margin-bottom:12px;color:#2e2f32;word-break:break-word}.mx_RoomDirectory,.mx_RoomDirectory_list{flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_RoomDirectory_list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory_list .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomDirectory_listheader{display:block;margin-top:13px}.mx_RoomDirectory_searchbox{-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important}.mx_RoomDirectory_listheader .mx_NetworkDropdown{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.mx_RoomDirectory_tableWrapper{overflow-y:auto;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomDirectory_table{color:#2e2f32;display:grid;font-size:1.2rem;grid-template-columns:-webkit-max-content auto -webkit-max-content -webkit-max-content -webkit-max-content;grid-template-columns:max-content auto max-content max-content max-content;grid-row-gap:24px;row-gap:24px;text-align:left;width:100%}.mx_RoomDirectory_roomAvatar{padding:2px 14px 0 0}.mx_RoomDirectory_roomMemberCount{-ms-flex-item-align:center;align-self:center;color:#747474;padding:3px 10px 0}.mx_RoomDirectory_roomMemberCount:before{background-color:#747474;display:inline-block;vertical-align:text-top;margin-right:2px;content:"";-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;width:16px;height:16px}.mx_RoomDirectory_join,.mx_RoomDirectory_preview{-ms-flex-item-align:center;align-self:center;white-space:nowrap}.mx_RoomDirectory_name{display:inline-block;font-size:1.8rem;font-weight:600}.mx_RoomDirectory_perms{display:inline-block}.mx_RoomDirectory_perm{border-radius:10px;display:inline-block;height:20px;line-height:2rem;padding:0 5px;color:#fff;background-color:#aaa}.mx_RoomDirectory_topic{cursor:auto;color:#747474;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.mx_RoomDirectory_alias{font-size:1.2rem;color:#a2a2a2}.mx_RoomDirectory_table tr{padding-bottom:10px;cursor:pointer}.mx_RoomDirectory .mx_RoomView_MessageList{padding:0}.mx_RoomDirectory>span{font-size:1.5rem;margin-top:0}.mx_RoomDirectory>span .mx_AccessibleButton{padding:0}.mx_RoomSearch{-webkit-box-flex:1;-ms-flex:1;flex:1;border-radius:8px;background-color:rgba(141,151,165,.2);border:1px solid transparent;height:28px;padding:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSearch .mx_RoomSearch_icon{width:16px;height:16px;-webkit-mask:url(../../img/element-icons/roomlist/search.3774248.svg);mask:url(../../img/element-icons/roomlist/search.3774248.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-left:7px}.mx_RoomSearch .mx_RoomSearch_input{border:none!important;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important;padding:0;height:100%;width:100%;font-size:1.2rem;line-height:1.6rem}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder{color:#8d99a5!important}.mx_RoomSearch.mx_RoomSearch_hasQuery{border-color:#737d8c}.mx_RoomSearch.mx_RoomSearch_focused{-webkit-box-shadow:0 0 4px 4px rgba(0,132,255,.5);box-shadow:0 0 4px 4px rgba(0,132,255,.5);border-color:transparent}.mx_RoomSearch.mx_RoomSearch_focused,.mx_RoomSearch.mx_RoomSearch_hasQuery{background-color:#fff}.mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton,.mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton{width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-right:8px}.mx_RoomSearch .mx_RoomSearch_clearButton{width:0;height:0}.mx_RoomSearch.mx_RoomSearch_minimized{border-radius:32px;height:auto;width:auto;padding:8px}.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon{margin-left:0}.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){margin-left:65px;min-height:50px}.mx_RoomStatusBar_typingIndicatorAvatars{width:52px;margin-top:-1px;text-align:left}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image{margin-right:-12px;border:1px solid #fff}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial{padding-left:1px;padding-top:1px}.mx_RoomStatusBar_typingIndicatorRemaining{display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center;position:absolute}.mx_RoomStatusBar_scrollDownIndicator{cursor:pointer;padding-left:1px}.mx_RoomStatusBar_unreadMessagesBar{padding-top:10px;color:#ff4b55;cursor:pointer}.mx_RoomStatusBar_connectionLostBar{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:19px;min-height:58px}.mx_RoomStatusBar_unsentMessages>div[role=alert]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:70px;margin:12px;padding-left:16px;background-color:#f3f8fd;border-radius:4px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge{margin-right:12px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge{width:24px!important;height:24px!important;border-radius:24px!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge .mx_NotificationBadge_count{font-size:1.6rem!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle{color:#ff4b55;font-size:1.5rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription{font-size:1.2rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:right;margin-right:22px;color:#61708b}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton{padding:5px 10px 5px 28px;display:inline-block;position:relative}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:nth-child(2){border-left:1px solid #e3e8f0}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:before{content:"";position:absolute;left:10px;background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);width:12px;height:16px;top:calc(50% - 8px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn{padding-left:34px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;top:calc(50% - 9px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner{vertical-align:middle;margin-right:5px;top:1px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner+span{margin-right:10px}.mx_RoomStatusBar_connectionLostBar img{padding-left:10px;padding-right:10px;vertical-align:middle;float:left}.mx_RoomStatusBar_connectionLostBar_title{color:#ff4b55}.mx_RoomStatusBar_connectionLostBar_desc{color:#2e2f32;font-size:1.3rem;opacity:.5;padding-bottom:20px}.mx_RoomStatusBar_resend_link{color:#2e2f32!important;text-decoration:underline!important;cursor:pointer}.mx_RoomStatusBar_typingBar{height:50px;line-height:5rem;color:#2e2f32;opacity:.5;overflow-y:hidden;display:block}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){min-height:40px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator{margin-top:10px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar{height:40px;line-height:4rem}.mx_RoomView{word-wrap:break-word;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@-webkit-keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}@keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}.mx_RoomView_fileDropTarget{min-width:0;width:100%;height:100%;font-size:1.8rem;text-align:center;pointer-events:none;background-color:#fff;opacity:.95;position:absolute;z-index:3000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-animation:mx_RoomView_fileDropTarget_animation;animation:mx_RoomView_fileDropTarget_animation;-webkit-animation-duration:.5s;animation-duration:.5s}@-webkit-keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}@keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}.mx_RoomView_fileDropTarget_image{-webkit-animation:mx_RoomView_fileDropTarget_image_animation;animation:mx_RoomView_fileDropTarget_image_animation;-webkit-animation-duration:.5s;animation-duration:.5s;margin-bottom:16px}.mx_RoomView_auxPanel{min-width:0;width:100%;margin:0 auto;overflow:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomView_auxPanel_fullHeight{position:absolute;top:0;bottom:0;left:0;right:0;z-index:3000;background-color:#fff}.mx_RoomView_auxPanel_hiddenHighlights{border-bottom:1px solid transparent;padding:10px 26px;color:#ff4b55;cursor:pointer}.mx_RoomView_auxPanel_apps{max-width:1920px!important}.mx_RoomView .mx_MainSplit,.mx_RoomView_messagePanel{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomView_messagePanel{width:100%;overflow-y:auto;overflow-anchor:none}.mx_RoomView_messagePanelSearchSpinner{-webkit-box-flex:1;-ms-flex:1;flex:1;background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-position:center 367px;background-size:25px;background-repeat:no-repeat;position:relative}.mx_RoomView_messagePanelSearchSpinner:before{background-color:#888;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:50px;mask-size:50px;content:"";position:absolute;top:286px;left:0;right:0;height:50px}.mx_RoomView_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_RoomView_body .mx_RoomView_messagePanel,.mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner,.mx_RoomView_body .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_RoomView_body .mx_RoomView_timeline{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomView_statusArea{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;max-height:0;background-color:#fff;z-index:1000;overflow:hidden;-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.mx_RoomView_statusArea_expanded{max-height:100px}.mx_RoomView_statusAreaBox{margin:auto;min-height:50px}.mx_RoomView_statusAreaBox_line{margin-left:65px;border-top:1px solid transparent;height:1px}.mx_RoomView_messageListWrapper{min-height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomView_searchResultsPanel a{text-decoration:none;color:inherit}.mx_RoomView_empty{font-size:1.3rem;padding:0 24px;margin-right:30px;text-align:center;margin-bottom:80px}.mx_RoomView_MessageList{list-style-type:none;padding:18px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_RoomView_MessageList li{clear:both}li.mx_RoomView_myReadMarker_container{height:0;margin:0;padding:0;border:0}hr.mx_RoomView_myReadMarker{border-top:1px solid #0dbd8b;border-bottom:1px solid #0dbd8b;margin-top:0;position:relative;top:-1px;z-index:1;-webkit-transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;width:99%;opacity:1}.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner{background-color:#fff}.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename{color:#fff;opacity:1}.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line{margin-top:2px;border:none;height:0}.mx_RoomView_inCall .mx_MessageComposer_wrapper{border-top:2px hidden;padding-top:1px}.mx_RoomView_voipChevron{position:absolute;bottom:-11px;right:11px}.mx_RoomView_voipButton{float:right;margin-right:13px;margin-top:13px;cursor:pointer}.mx_RoomView_voipButton object{pointer-events:none}.mx_RoomView .mx_MessageComposer{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:2px}.mx_RoomView_ongoingConfCallNotification{width:100%;text-align:center;background-color:#ff4b55;color:#fff;font-weight:700;padding:6px 0;cursor:pointer}.mx_RoomView_ongoingConfCallNotification a{color:#fff!important}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox{min-height:42px}.mx_ScrollPanel .mx_RoomView_MessageList{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_SearchBox{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0}.mx_SearchBox.mx_SearchBox_blurred:not(:hover){background-color:transparent}.mx_SearchBox .mx_SearchBox_closeButton{cursor:pointer;background-image:url(../../img/icons-close.11ff07c.svg);background-repeat:no-repeat;width:16px;height:16px;background-position:50%;padding:9px}.mx_SpacePanel{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;background-color:hsla(0,0%,91%,.77);padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:8px 8px 16px 0}.mx_SpacePanel .mx_SpacePanel_toggleCollapse{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:40px;height:40px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:32px;mask-size:32px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;margin-left:16px;margin-bottom:12px;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg);mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg)}.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.mx_SpacePanel ul{margin:0;list-style:none;padding:0}.mx_SpacePanel ul>.mx_SpaceItem{padding-left:16px}.mx_SpacePanel .mx_SpaceButton_toggleCollapse{cursor:pointer}.mx_SpacePanel .mx_SpaceTreeLevel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:250px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_SpacePanel .mx_SpaceItem{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow{-ms-flex-item-align:baseline;align-self:baseline}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceButton>.mx_SpaceButton_toggleCollapse{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceTreeLevel{display:none}.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces)>.mx_SpaceButton{margin-left:16px;min-width:40px}.mx_SpacePanel .mx_SpaceButton{border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 4px 4px 0;width:100%}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow .mx_SpaceButton_selectionWrapper{padding:1px;border:3px solid #737d8c}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:12px;padding:4px}.mx_SpacePanel .mx_SpaceButton:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{width:100%;padding-right:16px;overflow:hidden}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:8px;white-space:nowrap;display:block;text-overflow:ellipsis;overflow:hidden;padding-right:8px;font-size:1.4rem;line-height:1.8rem}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse{width:16px;height:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon{width:32px;min-width:32px;height:32px;border-radius:8px;position:relative}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before{position:absolute;content:"";width:32px;height:32px;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:18px;mask-size:18px}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before{background-color:#3f3d3d;-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg)}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon{background-color:#0dbd8b;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before{background-color:#fff;-webkit-mask-image:url(../../img/element-icons/plus.62cc275.svg);mask-image:url(../../img/element-icons/plus.62cc275.svg);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon{background-color:#c1c6cd}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image{border-radius:8px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;display:none;position:absolute;right:4px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);background:#2e2f32}.mx_SpacePanel .mx_SpacePanel_badgeContainer{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge{margin:0 2px}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 7px}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer{right:0;top:0}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge{background-clip:padding-box}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 -1px 0 0;border:3px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_2char,.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_3char{margin:-5px -5px 0 0;border:2px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton.mx_SpaceButton_active .mx_SpacePanel_badgeContainer{right:-3px;top:-3px}.mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer{position:absolute;right:4px}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer{width:0;height:0;display:none}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton{display:block}.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton,.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton.mx_SpaceButton_active:before{height:32px}.mx_SpacePanel>.mx_AutoHideScrollbar>ul{padding-left:0}.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header{margin:12px 16px;font-weight:600;font-size:1.5rem;line-height:1.8rem}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton{color:#0dbd8b}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton .mx_SpacePanel_iconInvite:before{background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_SpacePanel_sharePublicSpace{margin:0}.mx_SpaceRoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_SpaceRoomDirectory{height:100%;margin-bottom:12px;color:#2e2f32;word-break:break-word;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_SpaceRoomDirectory,.mx_SpaceRoomDirectory .mx_Dialog_title,.mx_SpaceRoomView_landing .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar{margin-right:12px;-ms-flex-item-align:center;align-self:center}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory .mx_Dialog_title>div>h1,.mx_SpaceRoomView_landing .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_SpaceRoomDirectory .mx_Dialog_title>div>div,.mx_SpaceRoomView_landing .mx_Dialog_title>div>div{font-weight:400;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link,.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link{padding:0}.mx_SpaceRoomDirectory .mx_SearchBox,.mx_SpaceRoomView_landing .mx_SearchBox{margin:24px 0 16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults{text-align:center}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults>div,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults>div{font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:32px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton{padding:4px 12px;font-weight:400}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton{margin-left:16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline{padding:3px 12px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader>span,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader>span{margin-left:auto}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error{position:relative;font-weight:600;color:#ff4b55;font-size:1.5rem;line-height:1.8rem;margin:20px auto 12px;padding-left:24px;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before{content:"";position:absolute;height:16px;width:16px;left:0;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_SpaceRoomDirectory_list{margin-top:16px;padding-bottom:40px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>h3{display:inline;font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>span{margin-left:8px;font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle{position:absolute;left:-1px;top:10px;height:16px;width:16px;border-radius:4px;background-color:#fff}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before{content:"";position:absolute;top:0;left:0;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-size:16px;mask-size:16px;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children{position:relative;padding-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile{position:relative;padding:8px 16px;border-radius:8px;min-height:56px;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:20px auto -webkit-max-content;grid-template-columns:20px auto max-content;grid-column-gap:8px;grid-row-gap:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar{grid-row:1;grid-column:1}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name{font-weight:600;font-size:1.5rem;line-height:1.8rem;grid-row:1;grid-column:2}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip{display:inline;margin-left:12px;color:#8d99a5;font-size:1.2rem;line-height:1.5rem}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon{margin-right:4px;position:relative;vertical-align:text-top}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon:before{position:absolute;top:0;left:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_info{font-size:1.4rem;line-height:1.8rem;color:#737d8c;grid-row:2;grid-column:1/3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions{text-align:right;margin-left:20px;grid-column:3;grid-row:1/3}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton{line-height:2.4rem;padding:4px 16px;display:inline-block;visibility:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_primary_outline{padding:3px 16px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_Checkbox{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;margin-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover{background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover .mx_AccessibleButton{visibility:visible}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before{content:"";position:absolute;background-color:hsla(0,0%,91%,.77);width:1px;height:100%;left:6px;top:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_actions .mx_SpaceRoomDirectory_actionsText{font-weight:400;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_SpaceRoomDirectory_list>hr{border:none;height:1px;background-color:rgba(141,151,165,.2);margin:20px 0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom{display:block;margin:16px auto 0;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child{padding:80px 60px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-height:100%;overflow-y:auto}.mx_SpaceRoomView .mx_MainSplit>div:first-child h1{margin:0;font-size:2.4rem;font-weight:600;color:#2e2f32;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_description{font-size:1.5rem;color:#737d8c;margin-top:12px;margin-bottom:24px;max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace .mx_AddExistingToSpace_content{height:calc(100vh - 360px);max-height:400px}.mx_SpaceRoomView .mx_MainSplit>div:first-child:not(.mx_SpaceRoomView_landing) .mx_SpaceFeedbackPrompt{width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons{display:block;margin-top:44px;width:428px;text-align:right}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons .mx_AccessibleButton_hasKind{padding:8px 22px;margin-left:16px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons input.mx_AccessibleButton{border:none}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field+.mx_Field{margin-top:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceRoomView .mx_SpaceRoomView_preview{padding:32px 24px!important;margin:auto;max-width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:2px 15px 30px rgba(0,0,0,.48);box-shadow:2px 15px 30px rgba(0,0,0,.48);border-radius:8px;position:relative}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill{position:absolute;right:24px;top:32px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt{font-weight:600;font-size:1.4rem;line-height:2.4rem;color:#2e2f32;margin-top:24px;position:relative;padding-left:24px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt .mx_AccessibleButton_kind_link{display:inline;padding:0;font-size:inherit;line-height:inherit}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt:before{content:"";position:absolute;height:2.4rem;width:20px;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);background-color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;font-size:1.5rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div{margin-left:8px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_name{line-height:1.8rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_mxid{line-height:2.4rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name{margin:20px 0!important}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic{font-size:1.4rem;line-height:2.2rem;color:#737d8c;margin:20px 0;max-height:160px;overflow-y:auto}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons{margin-top:20px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton{width:200px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 0}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name{margin:24px 0 16px;font-size:1.5rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name>span{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow{margin-top:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow>h1{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_inviter .mx_BaseAvatar{margin-right:4px;vertical-align:middle}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_info{display:inline-block;margin:0 auto 0 0}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile{display:inline-block;margin-right:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile .mx_FacePile_faces{cursor:pointer}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton{position:relative;padding:4px 18px 4px 40px;line-height:2.4rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton:before{position:absolute;content:"";left:8px;height:16px;width:16px;background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton{position:relative;margin-left:16px;width:24px;height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton:before{position:absolute;content:"";left:0;top:0;height:24px;width:24px;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic{font-size:1.5rem;margin-top:12px;margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>hr{border:none;height:1px;background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox{margin:0 0 20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt{margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt+hr{display:none}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>span{color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_justMeButton:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer{padding:58px 16px 16px;position:relative;border-radius:8px;background-color:#f3f8fd;max-width:428px;margin:20px 0 30px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer .mx_BetaCard_betaPill{position:absolute;left:16px;top:16px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons{color:#737d8c;margin-top:28px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton{position:relative;display:inline-block;padding-left:32px;line-height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton:before{content:"";position:absolute;height:24px;width:24px;top:0;left:0;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:32px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_SpaceRoomView_inviteTeammates_inviteDialogButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView_info{color:#737d8c;font-size:1.5rem;line-height:2.4rem;margin:20px 0}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public{padding-left:20px;position:relative}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{position:absolute;content:"";width:20px;height:20px;top:0;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{-webkit-mask-size:12px;mask-size:12px;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before{-webkit-mask-size:14px;mask-size:14px;-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link{color:inherit;position:relative;padding-left:16px}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before{content:"·";position:absolute;left:6px}.mx_SpaceFeedbackPrompt{margin-top:18px;margin-bottom:12px}.mx_SpaceFeedbackPrompt>hr{border:none;border-top:1px solid #e7e7e7;margin-bottom:12px}.mx_SpaceFeedbackPrompt>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:1.5rem;line-height:2.4rem}.mx_SpaceFeedbackPrompt>div>span{color:#737d8c;position:relative;padding-left:32px;font-size:inherit;line-height:inherit;margin-right:auto}.mx_SpaceFeedbackPrompt>div>span:before{content:"";position:absolute;left:0;top:2px;height:20px;width:20px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link{color:#0dbd8b;position:relative;padding:0 0 0 24px;margin-left:8px;font-size:inherit;line-height:inherit}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link:before{content:"";position:absolute;left:0;height:16px;width:16px;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);-webkit-mask-position:center;mask-position:center}.mx_TabbedView{padding:0 0 0 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;bottom:0;left:0;right:0;margin:8px 0 0}.mx_TabbedView_tabLabels{width:170px;max-width:170px;color:#45474a;position:fixed}.mx_TabbedView_tabLabel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:text-top;cursor:pointer;padding:8px 0;border-radius:8px;font-size:1.3rem;position:relative}.mx_TabbedView_tabLabel_active{background-color:#0dbd8b;color:#fff}.mx_TabbedView_maskedIcon{margin-left:8px;margin-right:16px;width:16px;height:16px;display:inline-block}.mx_TabbedView_maskedIcon:before{display:inline-block;background-color:#454545;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;width:16px;height:16px;-webkit-mask-position:center;mask-position:center;content:""}.mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon:before{background-color:#fff}.mx_TabbedView_tabLabel_text{vertical-align:middle}.mx_TabbedView_tabPanel{margin-left:240px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_TabbedView_tabPanel,.mx_TabbedView_tabPanelContent{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-height:0}.mx_TabbedView_tabPanelContent{overflow:auto}.mx_ToastContainer{position:absolute;top:0;left:70px;z-index:101;padding:4px;display:grid;grid-template-rows:1fr 14px 6px}.mx_ToastContainer.mx_ToastContainer_stacked:before{content:"";margin:0 4px;grid-row:2/4}.mx_ToastContainer .mx_Toast_toast,.mx_ToastContainer.mx_ToastContainer_stacked:before{grid-column:1;background-color:#f2f5f8;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.5);box-shadow:0 4px 20px rgba(0,0,0,.5);border-radius:8px}.mx_ToastContainer .mx_Toast_toast{grid-row:1/3;color:#2e2f32;overflow:hidden;display:grid;grid-template-columns:22px 1fr;grid-column-gap:8px;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;padding:8px}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before{content:"";width:22px;height:22px;grid-column:1;grid-row:1;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-size:100%;background-repeat:no-repeat}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title{grid-column:2}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon){padding-left:12px}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title{grid-column:1/-1}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description,.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{padding-right:8px}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2{grid-column:1/3;grid-row:1;margin:0;font-size:1.5rem;font-weight:600;display:inline;width:auto;vertical-align:middle}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title span{padding-left:8px;float:right;font-size:1.2rem;line-height:2.2rem;color:#61708b}.mx_ToastContainer .mx_Toast_toast .mx_Toast_body{grid-column:1/3;grid-row:2}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons{float:right;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_FormButton{min-width:96px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description{max-width:272px;overflow:hidden;text-overflow:ellipsis;margin:4px 0 11px;font-size:1.2rem}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description .mx_AccessibleButton_kind_link{font-size:inherit;padding:0}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a{text-decoration:none}.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail{color:#737d8c}.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID{font-size:1rem}.mx_UploadBar{padding-left:65px;position:relative}.mx_UploadBar .mx_ProgressBar{width:calc(100% - 40px)}.mx_UploadBar_filename{margin-top:5px;color:#61708b;position:relative;padding-left:22px;font-size:1.5rem;vertical-align:middle}.mx_UploadBar_filename:before{content:"";height:18px;width:18px;left:0;-webkit-mask-image:url(../../img/element-icons/upload.e2a53e0.svg);mask-image:url(../../img/element-icons/upload.e2a53e0.svg)}.mx_UploadBar_cancel,.mx_UploadBar_filename:before{position:absolute;top:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#61708b}.mx_UploadBar_cancel{right:0;height:16px;width:16px;margin-right:16px;-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg)}.mx_UserMenu{padding-right:6px}.mx_UserMenu.mx_UserMenu_prototype{margin-bottom:6px;padding-right:0}.mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons{margin-right:2px}.mx_UserMenu.mx_UserMenu_prototype:after{content:"";border-bottom:1px solid #2e2f32;opacity:.2;display:block;padding-top:8px}.mx_UserMenu .mx_UserMenu_headerButtons{width:16px;height:16px;position:relative;display:block}.mx_UserMenu .mx_UserMenu_headerButtons:before{content:"";width:16px;height:16px;position:absolute;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_UserMenu .mx_UserMenu_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer{position:relative;margin-right:8px;height:32px;padding:3px 0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer .mx_UserMenu_userAvatar{border-radius:32px;-o-object-fit:cover;object-fit:cover}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName,.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName{display:block}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName{color:#61708b;font-size:1.3rem;line-height:1.8rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName{font-weight:600;font-size:1.5rem;line-height:2rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd{width:24px;height:24px;margin-right:8px;position:relative}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before{content:"";position:absolute;width:24px;height:24px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_UserMenu.mx_UserMenu_minimized{padding-right:0}.mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer{margin-right:0}.mx_UserMenu_contextMenu{width:258px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype{padding-bottom:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header{padding-bottom:0;padding-top:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header:nth-child(n+2){padding-top:8px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr{width:85%;opacity:.2;border:none;border-bottom:1px solid #2e2f32}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList{margin-top:4px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList:before{border:none}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList>.mx_AccessibleButton{padding-top:2px;padding-bottom:2px}.mx_UserMenu_contextMenu.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{padding-top:16px;padding-bottom:16px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header{padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:calc(100% - 40px)}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name *{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_displayName{font-weight:700;font-size:1.5rem;line-height:2rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_userId{font-size:1.5rem;line-height:2.4rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_themeButton{min-width:32px;max-width:32px;width:32px;height:32px;margin-left:8px;border-radius:32px;background-color:#e3e8f0;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts,.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink{padding-top:0}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts{display:inline-block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span{font-weight:600;display:block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span+span{margin-top:8px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts .mx_AccessibleButton_kind_link{font-weight:400;font-size:inherit;padding:0}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon{width:16px;height:16px;display:block}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;display:block;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before{-webkit-mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg);mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before{-webkit-mask-image:url(../../img/element-icons/brands/element.182040d.svg);mask-image:url(../../img/element-icons/brands/element.182040d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before{-webkit-mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg);mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before{-webkit-mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg);mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_ViewSource_separator{clear:both;border-bottom:1px solid #e5e5e5;padding-top:.7em;padding-bottom:.7em}.mx_ViewSource_heading{font-size:1.7rem;font-weight:400;color:#2e2f32;margin-top:.7em}.mx_ViewSource pre{text-align:left;font-size:1.2rem;padding:.5em 1em;word-wrap:break-word;white-space:pre-wrap}.mx_ViewSource_details{margin-top:.8em}.mx_CompleteSecurity_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CompleteSecurity_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_CompleteSecurity_heroIcon{width:128px;height:128px;position:relative;margin:0 auto}.mx_CompleteSecurity_body{font-size:1.5rem}.mx_CompleteSecurity_waiting{color:#8d99a5}.mx_CompleteSecurity_actionRow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:2.8rem}.mx_CompleteSecurity_actionRow .mx_AccessibleButton{-webkit-margin-start:18px;margin-inline-start:18px}.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning{color:#ff4b55}.mx_Login_submit{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;width:100%;margin-top:24px;margin-bottom:24px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.mx_Login_submit:disabled{opacity:.3;cursor:default}.mx_Login_loader{display:inline;position:relative;top:2px;left:8px}.mx_Login_loader .mx_Spinner{display:inline}.mx_Login_loader .mx_Spinner img{width:16px;height:16px}.mx_Login_error{color:#ff4b55;font-weight:700;text-align:center;margin-top:12px;margin-bottom:12px}.mx_Login_error.mx_Login_serverError{text-align:left;font-weight:400}.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal{color:#ff8d13}.mx_Login_type_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#232f32}.mx_Login_type_container .mx_Field{margin:0}.mx_Login_type_label{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Login_underlinedServerName{width:-webkit-max-content;width:-moz-max-content;width:max-content;border-bottom:1px dashed #0dbd8b}div.mx_AccessibleButton_kind_link.mx_Login_forgot{display:block;margin:0 auto;font-size:inherit;padding:0}div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_AuthBody{width:500px;font-size:1.2rem;color:#61708b;background-color:#fff;border-radius:0 4px 4px 0;padding:25px 60px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody h2{font-size:2.4rem;font-weight:600;margin-top:8px;color:#232f32}.mx_AuthBody h3{font-size:1.4rem;font-weight:600;color:#61708b}.mx_AuthBody h3.mx_AuthBody_centered{text-align:center}.mx_AuthBody a:hover,.mx_AuthBody a:link,.mx_AuthBody a:visited{color:#0dbd8b;text-decoration:none}.mx_AuthBody input[type=password],.mx_AuthBody input[type=text]{color:#232f32}.mx_AuthBody .mx_Field input,.mx_AuthBody .mx_Field select{color:#232f32;background-color:#fff}.mx_AuthBody .mx_Field label{color:#232f32}.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown)+label,.mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown)+label{background-color:#fff}.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder)+label,.mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder)+label{background-color:#fff}.mx_AuthBody .mx_Field_labelAlwaysTopLeft label,.mx_AuthBody .mx_Field input:focus+label,.mx_AuthBody .mx_Field input:not(:placeholder-shown)+label,.mx_AuthBody .mx_Field select+label,.mx_AuthBody .mx_Field textarea:focus+label,.mx_AuthBody .mx_Field textarea:not(:placeholder-shown)+label{background-color:#fff}.mx_AuthBody input.error{color:#ff4b55}.mx_AuthBody .mx_Field input{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody .mx_Field_select:before{background-color:#232f32}.mx_AuthBody .mx_Dropdown{color:#232f32}.mx_AuthBody .mx_Dropdown_arrow{background:#232f32}.mx_AuthBody .mx_Dropdown_menu{background-color:#fff}.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_AuthBody_fieldRow{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.mx_AuthBody_fieldRow>.mx_Field{margin:0 5px}.mx_AuthBody_fieldRow>.mx_Field:first-child{margin-left:0}.mx_AuthBody_fieldRow>.mx_Field:last-child{margin-right:0}.mx_AuthBody_paddedFooter{height:80px;padding-top:28px;text-align:center}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title{margin-top:16px;font-size:1.5rem;line-height:2.4rem}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title .mx_InlineSpinner img{vertical-align:sub;margin-right:5px}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle{margin-top:8px;font-size:1rem;line-height:1.4rem}.mx_AuthBody_changeFlow{display:block;text-align:center;width:100%}.mx_AuthBody_changeFlow>a{font-weight:600}.mx_SSOButtons+.mx_AuthBody_changeFlow{margin-top:24px}.mx_AuthBody_spinner{margin:1em 0}@media only screen and (max-width:480px){.mx_AuthBody{border-radius:4px;width:auto;max-width:500px;padding:10px}}.mx_AuthButtons{min-height:24px;height:unset!important;padding-top:13px!important;padding-bottom:14px!important;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_AuthButtons_loginButton_wrapper{text-align:center;width:100%}.mx_AuthButtons_loginButton,.mx_AuthButtons_registerButton{margin-top:3px;height:40px;border:0;border-radius:40px;margin-left:4px;margin-right:4px;min-width:80px;background-color:#0dbd8b;color:#fff;cursor:pointer;font-size:1.5rem;padding:0 11px;word-break:break-word}.mx_AuthFooter{text-align:center;width:100%;font-size:1.4rem;opacity:.72;padding:20px 0;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.8)));background:linear-gradient(transparent,rgba(0,0,0,.8))}.mx_AuthFooter a:hover,.mx_AuthFooter a:link,.mx_AuthFooter a:visited{color:#fff;margin:0 22px}.mx_AuthHeader{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:206px;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:480px){.mx_AuthHeader{display:none}}.mx_AuthHeaderLogo{margin-top:15px;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 25px}.mx_AuthHeaderLogo img{width:100%}@media only screen and (max-width:480px){.mx_AuthHeaderLogo{display:none}}.mx_AuthPage{width:100%;min-height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:#2e3649}.mx_AuthPage,.mx_AuthPage_modal{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AuthPage_modal{margin:100px auto auto;border-radius:4px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.33);box-shadow:0 2px 4px 0 rgba(0,0,0,.33);background-color:hsla(0,0%,96.1%,.9)}@media only screen and (max-width:480px){.mx_AuthPage_modal{margin-top:0}}.mx_CompleteSecurityBody{width:600px;color:#232f32;background-color:#fff;border-radius:4px;padding:20px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_CompleteSecurityBody h2{font-size:2.4rem;font-weight:600;margin-top:0}.mx_CompleteSecurityBody h3{font-size:1.4rem;font-weight:600}.mx_CompleteSecurityBody a:hover,.mx_CompleteSecurityBody a:link,.mx_CompleteSecurityBody a:visited{color:#0dbd8b;text-decoration:none}.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option{padding:0 3px}.mx_CountryDropdown .mx_Dropdown_arrow{padding-right:3px}.mx_CountryDropdown_shortOption{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;height:100%}.mx_CountryDropdown_option,.mx_CountryDropdown_shortOption{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CountryDropdown_option{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_InteractiveAuthEntryComponents_emailWrapper{padding-right:100px;position:relative;margin-top:32px;margin-bottom:32px}.mx_InteractiveAuthEntryComponents_emailWrapper:after,.mx_InteractiveAuthEntryComponents_emailWrapper:before{position:absolute;width:116px;height:116px;content:"";right:-10px}.mx_InteractiveAuthEntryComponents_emailWrapper:before{background-color:rgba(244,246,250,.91);border-radius:50%;top:-20px}.mx_InteractiveAuthEntryComponents_emailWrapper:after{background-image:url(../../img/element-icons/email-prompt.1d04dfe.svg);background-repeat:no-repeat;background-position:50%;background-size:contain;top:-25px}.mx_InteractiveAuthEntryComponents_msisdnWrapper{text-align:center}.mx_InteractiveAuthEntryComponents_msisdnEntry{font-size:200%;font-weight:700;border:1px solid #c7c7c7;border-radius:3px;width:6em}.mx_InteractiveAuthEntryComponents_msisdnEntry:focus{border:1px solid #0dbd8b}.mx_InteractiveAuthEntryComponents_msisdnSubmit{margin-top:4px;margin-bottom:5px}.mx_InteractiveAuthEntryComponents_termsSubmit{margin-top:20px;margin-bottom:5px;display:block;width:100%}.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled{background-color:#747474;cursor:default}.mx_InteractiveAuthEntryComponents_termsSubmit:disabled{background-color:#92caad;cursor:default}.mx_InteractiveAuthEntryComponents_termsPolicy{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_InteractiveAuthEntryComponents_passwordSection{width:300px}.mx_InteractiveAuthEntryComponents_sso_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:20px}.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton{margin-left:5px}.mx_AuthBody_language{width:100%}.mx_AuthBody_language .mx_Dropdown_input{border:none;font-size:1.4rem;font-weight:600;color:#4e5054;width:auto}.mx_AuthBody_language .mx_Dropdown_arrow{background:#4e5054}progress.mx_PassphraseField_progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;border:0;height:4px;position:absolute;top:-12px;border-radius:"2px"}progress.mx_PassphraseField_progress::-moz-progress-bar{border-radius:"2px"}progress.mx_PassphraseField_progress::-webkit-progress-bar,progress.mx_PassphraseField_progress::-webkit-progress-value{border-radius:"2px"}progress.mx_PassphraseField_progress{color:#ff4b55}progress.mx_PassphraseField_progress::-moz-progress-bar{background-color:#ff4b55}progress.mx_PassphraseField_progress::-webkit-progress-value{background-color:#ff4b55}progress.mx_PassphraseField_progress[value="2"],progress.mx_PassphraseField_progress[value="3"]{color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar,progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar{background-color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value,progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value{background-color:#ff812d}progress.mx_PassphraseField_progress[value="4"]{color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar{background-color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value{background-color:#0dbd8b}.mx_Welcome{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount{display:none}.mx_Welcome .mx_AuthBody_language{width:160px;margin-bottom:10px}.mx_BaseAvatar{position:relative;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_BaseAvatar_initial{position:absolute;left:0;color:#fff;text-align:center;speak:none;pointer-events:none;font-weight:400}.mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover;border-radius:125px;vertical-align:top;background-color:#fff}.mx_DecoratedRoomAvatar,.mx_ExtraTile{position:relative}.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar,.mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar{-webkit-mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon{position:absolute;bottom:-2px;right:-2px;margin:4px;width:8px;height:8px;border-radius:50%}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before{content:"";width:8px;height:8px;position:absolute;border-radius:8px}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before{-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before{background-color:#e3e8f0}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before{background-color:#0dbd8b}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before{background-color:#d9b072}.mx_DecoratedRoomAvatar .mx_NotificationBadge,.mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer,.mx_ExtraTile .mx_NotificationBadge,.mx_ExtraTile .mx_RoomTile_badgeContainer{position:absolute;top:0;right:0;height:18px;width:18px}.mx_MessageComposer_avatar .mx_BaseAvatar{padding:2px;border:1px solid transparent;border-radius:100%}.mx_MessageComposer_avatar .mx_BaseAvatar_initial{left:2px}.mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar{border-color:#0dbd8b}@-webkit-keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}@keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}.mx_PulsedAvatar img{-webkit-animation:shadow-pulse 1s infinite;animation:shadow-pulse 1s infinite}.mx_WidgetAvatar{border-radius:4px}.mx_BetaCard{margin-bottom:20px;padding:24px;background-color:#f4f6fa;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_BetaCard>div .mx_BetaCard_title{font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32;margin:4px 0 14px}.mx_BetaCard>div .mx_BetaCard_title .mx_BetaCard_betaPill{margin-left:12px}.mx_BetaCard>div .mx_BetaCard_caption{font-size:1.5rem;line-height:2rem;color:#737d8c;margin-bottom:20px}.mx_BetaCard>div .mx_AccessibleButton{display:block;margin:12px 0;padding:7px 40px;width:auto}.mx_BetaCard>div .mx_BetaCard_disclaimer{font-size:1.2rem;line-height:1.5rem;color:#737d8c;margin-top:20px}.mx_BetaCard>img{margin:auto 0 auto 20px;width:300px;-o-object-fit:contain;object-fit:contain;height:100%}.mx_BetaCard_betaPill{background-color:#238cf5;padding:4px 10px;border-radius:8px;text-transform:uppercase;font-size:12px;line-height:15px;color:#fff;display:inline-block;vertical-align:text-bottom}.mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable{cursor:pointer}.mx_BetaDot{border-radius:50%;margin:10px;height:12px;width:12px;-webkit-transform:scale(1);transform:scale(1);background:#238cf5;-webkit-box-shadow:0 0 0 0 #238cf5;box-shadow:0 0 0 0 #238cf5;-webkit-animation:mx_Beta_bluePulse 2s infinite;animation:mx_Beta_bluePulse 2s infinite;-webkit-animation-iteration-count:20;animation-iteration-count:20}@-webkit-keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}@keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}.mx_CallContextMenu_item{width:205px;height:40px;padding-left:16px;line-height:40px;vertical-align:center}.mx_IconizedContextMenu{min-width:146px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList>*{padding-left:20px;padding-right:20px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst:before,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:nth-child(n+2):before{border-top:1px solid #2e2f32;opacity:.1;content:"";width:100%;position:absolute;left:0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child .mx_AccessibleButton:first-child{border-radius:8px 8px 0 0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:last-child .mx_AccessibleButton:last-child{border-radius:0 0 8px 8px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton{padding-top:12px;padding-bottom:12px;text-decoration:none;color:#2e2f32;font-size:1.5rem;line-height:2.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton:hover{background-color:#f5f8fa}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_AccessibleButton_disabled{opacity:.5;cursor:not-allowed}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton img{width:16px;min-width:16px;max-width:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton span.mx_IconizedContextMenu_label{width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon+.mx_IconizedContextMenu_label{padding-left:14px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon{position:relative;width:16px;height:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{color:#ff4b55!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_icon:before{background-color:#ff4b55}.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton,.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton{color:#0dbd8b!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_icon:before{background-color:#0dbd8b}.mx_IconizedContextMenu.mx_IconizedContextMenu_compact .mx_IconizedContextMenu_optionList>*{padding:8px 16px 8px 11px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked{margin-left:16px;margin-right:-5px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before{-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_MessageContextMenu{padding:6px}.mx_MessageContextMenu_field{display:block;padding:3px 6px;cursor:pointer;white-space:nowrap}.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet{font-weight:700}.mx_StatusMessageContextMenu{padding:10px}.mx_StatusMessageContextMenu_form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}input.mx_StatusMessageContextMenu_message{border-radius:4px;border:1px solid #e7e7e7;padding:6.5px 11px;background-color:#fff;font-weight:400;margin:0 0 10px}.mx_StatusMessageContextMenu_message::-webkit-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-moz-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message:-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::placeholder{color:#61708b}.mx_StatusMessageContextMenu_actionContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_StatusMessageContextMenu_clear,.mx_StatusMessageContextMenu_submit{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;-ms-flex-item-align:start;align-self:start;font-size:1.2rem;padding:6px 1em;border:1px solid transparent;margin-right:10px}.mx_StatusMessageContextMenu_submit[disabled]{opacity:.49}.mx_StatusMessageContextMenu_clear{color:#ff4b55;background-color:transparent;border:1px solid #ff4b55}.mx_StatusMessageContextMenu_actionContainer .mx_Spinner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_TagTileContextMenu_item{padding:8px 20px 8px 8px;cursor:pointer;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.6rem}.mx_TagTileContextMenu_item:before{content:"";height:15px;width:15px;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;margin-right:8px}.mx_TagTileContextMenu_viewCommunity:before{-webkit-mask-image:url(../../img/element-icons/view-community.0cad1a5.svg);mask-image:url(../../img/element-icons/view-community.0cad1a5.svg)}.mx_TagTileContextMenu_hideCommunity:before{-webkit-mask-image:url(../../img/element-icons/hide.2b52315.svg);mask-image:url(../../img/element-icons/hide.2b52315.svg)}.mx_TagTileContextMenu_separator{margin-top:0;margin-bottom:0;border-style:none;border-top:1px solid;border-color:#e7e7e7}.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AddExistingToSpace .mx_SearchBox{margin:0 0 15px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults{display:block;margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child){margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section>h3{margin:0;color:#737d8c;font-size:1.2rem;font-weight:600;line-height:1.5rem}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_DecoratedRoomAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_AddExistingToSpace_entry_name{font-size:1.5rem;line-height:30px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_Checkbox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar_image{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental{position:relative;border-radius:8px;margin:12px 0;padding:8px 8px 8px 42px;background-color:#f3f8fd;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before{content:"";position:absolute;left:10px;top:calc(50% - 8px);height:16px;width:16px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar{height:8px;width:100%;border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-moz-progress-bar{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-bar,.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-value{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_AddExistingToSpace_progressText{margin-top:8px;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span>*{vertical-align:middle}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error{padding-left:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error>img{-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorHeading{font-weight:600;font-size:1.5rem;line-height:1.8rem;color:#ff4b55}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorCaption{margin-top:4px;font-size:1.2rem;line-height:1.5rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton{display:inline-block;-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_primary{padding:8px 36px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton{margin-left:12px;padding-left:24px;position:relative}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton:before{content:"";position:absolute;background-color:#2e2f32;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;left:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_link{padding:0}.mx_AddExistingToSpaceDialog{width:480px;color:#2e2f32;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-height:0;height:80vh}.mx_AddExistingToSpaceDialog,.mx_AddExistingToSpaceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px;margin:0;vertical-align:unset}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:auto 16px auto 5px;vertical-align:middle}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div .mx_AddExistingToSpaceDialog_onlySpace{color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input{border:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option{padding-left:0;-webkit-box-flex:unset;-ms-flex:unset;flex:unset;height:unset;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option .mx_BaseAvatar{display:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive{color:#0dbd8b;padding-right:32px;position:relative}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive:before{content:"";width:20px;height:20px;top:8px;right:0;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace{display:contents}.mx_AddressPickerDialog a:hover,.mx_AddressPickerDialog a:link,.mx_AddressPickerDialog a:visited{color:#0dbd8b;text-decoration:none}.mx_AddressPickerDialog_input,.mx_AddressPickerDialog_input:focus{height:26px;font-size:1.4rem;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;padding-left:12px;padding-right:12px;margin:0!important;border:0!important;outline:0!important;width:1000%;resize:none;overflow:hidden;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;word-wrap:nowrap}.mx_AddressPickerDialog .mx_Dialog_content{min-height:50px}.mx_AddressPickerDialog_inputContainer{border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 4px;max-height:150px;overflow-x:hidden;overflow-y:auto}.mx_AddressPickerDialog_error{margin-top:10px;color:#ff4b55}.mx_AddressPickerDialog_cancel{position:absolute;right:11px;top:13px;cursor:pointer}.mx_AddressPickerDialog_cancel object{pointer-events:none}.mx_AddressPickerDialog_identityServer{margin-top:1em}.mx_AnalyticsModal table{margin:10px 0}.mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading{color:#2e2f32;font-size:1.4rem;line-height:2rem;margin-bottom:24px}.mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link{padding:0;font-size:inherit;line-height:inherit}.mx_BugReportDialog .mx_BugReportDialog_download .mx_AccessibleButton_kind_link{padding-left:0}.mx_ChangelogDialog_content{max-height:300px;overflow:auto}.mx_ChangelogDialog_li{padding:.2em}.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles{margin-top:24px}.mx_ChatCreateOrReuseDialog .mx_Dialog_content{margin-bottom:24px;min-height:100px}.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge{display:none}.mx_ChatCreateOrReuseDialog_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ChatCreateOrReuseDialog_profile_name{padding:14px}.mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth{width:360px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content{margin-bottom:0}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people{position:relative;margin-bottom:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people .mx_AccessibleButton{display:inline-block;background-color:#ddd;border-radius:4px;padding:3px 5px;font-size:1.2rem;float:right}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_morePeople{margin-top:8px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person{position:relative;margin-top:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person>*{vertical-align:middle}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_Checkbox{position:absolute;right:0;top:calc(50% - 8px);width:16px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers{display:inline-block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers>*{display:block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personName{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_primaryButton{display:block;font-size:1.3rem;line-height:20px;height:20px;margin-top:24px}.mx_ConfirmUserActionDialog .mx_Dialog_content{min-height:48px;margin-bottom:24px}.mx_ConfirmUserActionDialog_avatar{float:left;margin-right:20px;margin-top:-2px}.mx_ConfirmUserActionDialog_name{font-size:1.8rem}.mx_ConfirmUserActionDialog_userId{font-size:1.3rem}.mx_ConfirmUserActionDialog_reasonField{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#2e2f32;background-color:#fff;border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 16px;margin-bottom:24px;width:90%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:12px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName{-ms-flex-preferred-size:66.66%;flex-basis:66.66%;padding-right:100px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_Field input{font-size:1.6rem;line-height:2rem}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext{display:block;color:#61708b;margin-bottom:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext:last-child{margin-top:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error{color:#ff4b55}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId{position:relative}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId .mx_InfoTooltip{float:right}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_AccessibleButton{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar{-ms-flex-preferred-size:33.33%;flex-basis:33.33%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer{margin-top:12px;margin-bottom:20px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_avatar,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>b,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_CreateGroupDialog_inputRow{margin-top:10px;margin-bottom:10px}.mx_CreateGroupDialog_label{text-align:left;padding-bottom:12px}.mx_CreateGroupDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_CreateGroupDialog_input_hasPrefixAndSuffix{border-radius:0}.mx_CreateGroupDialog_input_group{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateGroupDialog_prefix,.mx_CreateGroupDialog_suffix{padding:0 5px;line-height:3.7rem;background-color:#e3e8f0;border:1px solid #e7e7e7;text-align:center}.mx_CreateGroupDialog_prefix{border-right:0;border-radius:3px 0 0 3px}.mx_CreateGroupDialog_suffix{border-left:0;border-radius:0 3px 3px 0}.mx_CreateRoomDialog_details{margin-top:15px}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary{outline:none;list-style:none;font-weight:600;cursor:pointer;color:#0dbd8b}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary::-webkit-details-marker{display:none}.mx_CreateRoomDialog_details>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin:5px 0}.mx_CreateRoomDialog_details>div input[type=checkbox]{margin-right:10px}.mx_CreateRoomDialog_label{text-align:left;padding-bottom:12px}.mx_CreateRoomDialog_input_container{padding-right:20px}.mx_CreateRoomDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff;width:100%}.mx_CreateRoomDialog_aliasContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin:10px 0}.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField{margin:0}.mx_CreateRoomDialog.mx_Dialog_fixedWidth{width:450px}.mx_CreateRoomDialog .mx_Dialog_content{margin-bottom:40px}.mx_CreateRoomDialog .mx_Field_input label,.mx_CreateRoomDialog p{color:#61708b}.mx_CreateRoomDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateRoomDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateRoomDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateRoomDialog .mx_CreateRoomDialog_topic{margin-bottom:36px}.mx_CreateRoomDialog .mx_Dialog_content>.mx_SettingsFlag{margin-top:24px}.mx_CreateRoomDialog p{margin:0 85px 0 0;font-size:1.2rem}.mx_DeactivateAccountDialog .mx_Dialog_content{margin-bottom:30px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section{margin-top:60px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field{width:300px}.mx_DevTools_content{margin:10px 0}.mx_DevTools_ServersInRoomList_button{cursor:default!important}.mx_DevTools_RoomStateExplorer_query{margin-bottom:10px}.mx_DevTools_RoomStateExplorer_button,.mx_DevTools_ServersInRoomList_button{margin-bottom:10px;width:100%}.mx_DevTools_label_left{float:left}.mx_DevTools_label_right{float:right}.mx_DevTools_label_bottom{clear:both;border-bottom:1px solid #e5e5e5}.mx_DevTools_inputRow{display:table-row}.mx_DevTools_inputLabelCell{display:table-cell;font-weight:700;padding-right:24px}.mx_DevTools_inputCell{display:table-cell;width:240px}.mx_DevTools_inputCell input{display:inline-block;border:0;border-bottom:1px solid hsla(0,0%,59.2%,.5);padding:0;width:240px;color:rgba(74,74,74,.9);font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.6rem}.mx_DevTools_textarea{font-size:1.2rem;max-width:684px;min-height:250px;padding:10px}.mx_DevTools_eventTypeStateKeyGroup{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_DevTools_content .mx_Field_input:first-of-type{margin-right:42px}.mx_DevTools_tgl{display:none}.mx_DevTools_tgl,.mx_DevTools_tgl *,.mx_DevTools_tgl+.mx_DevTools_tgl-btn,.mx_DevTools_tgl:after,.mx_DevTools_tgl :after,.mx_DevTools_tgl:before,.mx_DevTools_tgl :before{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::-moz-selection,.mx_DevTools_tgl::-moz-selection,.mx_DevTools_tgl ::-moz-selection,.mx_DevTools_tgl:after::-moz-selection,.mx_DevTools_tgl :after::-moz-selection,.mx_DevTools_tgl:before::-moz-selection,.mx_DevTools_tgl :before::-moz-selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::selection,.mx_DevTools_tgl::selection,.mx_DevTools_tgl ::selection,.mx_DevTools_tgl:after::selection,.mx_DevTools_tgl :after::selection,.mx_DevTools_tgl:before::selection,.mx_DevTools_tgl :before::selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn{outline:0;display:block;width:7em;height:2em;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{position:relative;display:block;content:"";width:50%;height:100%}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after{left:0}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{display:none}.mx_DevTools_tgl:checked+.mx_DevTools_tgl-btn:after{left:50%}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn{padding:2px;-webkit-transition:all .2s ease;transition:all .2s ease;font-family:sans-serif;-webkit-perspective:100px;perspective:100px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{display:inline-block;-webkit-transition:all .4s ease;transition:all .4s ease;width:100%;text-align:center;position:absolute;line-height:2em;font-weight:700;color:#fff;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:4px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after{content:attr(data-tg-on);background:#02c66f;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{background:#ff3a19;content:attr(data-tg-off)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:active:before{-webkit-transform:rotateY(-20deg);transform:rotateY(-20deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:before{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:after{-webkit-transform:rotateY(0);transform:rotateY(0);left:0;background:#7fc6a6}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:active:after{-webkit-transform:rotateY(20deg);transform:rotateY(20deg)}.mx_DevTools_VerificationRequest{border:1px solid #ccc;border-radius:3px;padding:1px 5px;margin-bottom:6px;font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji}.mx_DevTools_VerificationRequest dl{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:0}.mx_DevTools_VerificationRequest dd{grid-column-start:2}.mx_DevTools_VerificationRequest dd:empty{color:#666}.mx_DevTools_VerificationRequest dd:empty:after{content:"(empty)"}.mx_DevTools_VerificationRequest dt{font-weight:700;grid-column-start:1}.mx_DevTools_VerificationRequest dt:after{content:":"}.mx_DevTools_SettingsExplorer table{width:100%;table-layout:fixed;border-collapse:collapse}.mx_DevTools_SettingsExplorer table th{border-bottom:1px solid #0dbd8b;text-align:left}.mx_DevTools_SettingsExplorer table td,.mx_DevTools_SettingsExplorer table th{width:360px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_DevTools_SettingsExplorer table td+td,.mx_DevTools_SettingsExplorer table th+th{width:auto}.mx_DevTools_SettingsExplorer table tr:hover{background-color:rgba(13,189,139,.5)}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable{background-color:#0dbd8b}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable{background-color:#ff4b55}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit{float:right;margin-right:16px}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning{border:2px solid #ff4b55;border-radius:4px;padding:4px;margin-bottom:8px}.mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth{width:360px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content{margin-bottom:12px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_AccessibleButton.mx_AccessibleButton_kind_primary{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_rowAvatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer{margin-top:20px;margin-bottom:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_avatar,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip{margin-left:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>b,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_FeedbackDialog hr{margin:24px 0;border-color:#e7e7e7}.mx_FeedbackDialog .mx_Dialog_content{margin-bottom:24px}.mx_FeedbackDialog .mx_Dialog_content>h2{margin-bottom:32px}.mx_FeedbackDialog .mx_FeedbackDialog_section{position:relative;padding-left:52px}.mx_FeedbackDialog .mx_FeedbackDialog_section>p{color:#8d99a5}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link,.mx_FeedbackDialog .mx_FeedbackDialog_section a{color:#0dbd8b;text-decoration:underline}.mx_FeedbackDialog .mx_FeedbackDialog_section:after,.mx_FeedbackDialog .mx_FeedbackDialog_section:before{content:"";position:absolute;width:40px;height:40px;left:0;top:0}.mx_FeedbackDialog .mx_FeedbackDialog_section:before{background-color:#c1c6cd;border-radius:20px}.mx_FeedbackDialog .mx_FeedbackDialog_section:after{background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after{-webkit-mask-image:url(../../img/feather-customised/bug.3dc7afa.svg);mask-image:url(../../img/feather-customised/bug.3dc7afa.svg)}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:20px;-webkit-transition:font-size 1s,border .5s;transition:font-size 1s,border .5s;border-radius:50%;border:2px solid transparent;margin-top:12px;margin-bottom:24px;vertical-align:top;cursor:pointer}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton input[type=radio]+div{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_content{background:#c1c6cd;width:40px;height:40px;text-align:center;line-height:40px;border-radius:20px;margin:5px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_spacer{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton+.mx_RadioButton{margin-left:16px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked{font-size:24px;border-color:#0dbd8b}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_GroupAddressPicker_checkboxContainer{margin-top:10px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HostSignupDialog{width:90vw;max-width:580px;height:80vh;max-height:600px;background-color:#fff}.mx_HostSignupDialog .mx_HostSignupDialog_info{text-align:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_content_top{margin-bottom:24px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs{text-align:left;padding-left:25%;padding-right:25%}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons{margin-bottom:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons button{padding:12px;margin:0 16px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img{padding-right:5px}.mx_HostSignupDialog iframe{width:100%;height:100%;border:none;background-color:#fff;min-height:540px}.mx_HostSignupDialog_text_dark{color:#2e2f32}.mx_HostSignupDialog_text_light{color:#737d8c}.mx_HostSignup_maximize_button{-webkit-mask:url(../../img/feather-customised/maximise.dc32127.svg);mask:url(../../img/feather-customised/maximise.dc32127.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:10px}.mx_HostSignup_maximize_button,.mx_HostSignup_minimize_button{width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px}.mx_HostSignup_minimize_button{-webkit-mask:url(../../img/feather-customised/minimise.aec9142.svg);mask:url(../../img/feather-customised/minimise.aec9142.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:25px}.mx_HostSignup_persisted{width:90vw;max-width:580px;height:80vh;max-height:600px;top:0;left:0;position:fixed;display:none}.mx_HostSignupDialog_minimized{position:fixed;bottom:80px;right:26px;width:314px;height:217px;overflow:hidden}.mx_HostSignupDialog_minimized.mx_Dialog{padding:12px}.mx_HostSignupDialog_minimized .mx_Dialog_title{text-align:left!important;padding-left:20px;font-size:1.5rem}.mx_HostSignupDialog_minimized iframe{width:100%;height:100%;border:none;background-color:#fff}.mx_IncomingSasDialog_opponentProfile_image{position:relative}.mx_IncomingSasDialog_opponentProfile h2{display:inline-block;margin-left:10px}.mx_InviteDialog_addressBar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_InviteDialog_addressBar .mx_InviteDialog_editor{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;background-color:#f3f8fd;border-radius:4px;min-height:25px;padding-left:8px;overflow-x:hidden;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile{margin:6px 6px 0 0;display:inline-block;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.mx_InviteDialog_addressBar .mx_InviteDialog_editor>input[type=text]{margin:6px 0!important;height:24px;line-height:2.4rem;font-size:1.4rem;padding-left:12px;border:0!important;outline:0!important;resize:none;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:40%;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important}.mx_InviteDialog_addressBar .mx_InviteDialog_goButton{min-width:48px;margin-left:10px;height:25px;line-height:2.5rem}.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner{width:20px;height:20px;margin-left:5px;display:inline-block;vertical-align:middle}.mx_InviteDialog_section{padding-bottom:10px}.mx_InviteDialog_section h3{font-size:1.2rem;color:#61708b;font-weight:700;text-transform:uppercase}.mx_InviteDialog_section .mx_InviteDialog_subname{margin-bottom:10px;margin-top:-10px;font-size:1.2rem;color:#61708b}.mx_InviteDialog_roomTile{cursor:pointer;padding:5px 10px}.mx_InviteDialog_roomTile:hover{background-color:#f3f8fd;border-radius:4px}.mx_InviteDialog_roomTile *{vertical-align:middle}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack{display:inline-block;position:relative;width:36px;height:36px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack>*{position:absolute;top:0;left:0}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected{width:36px;height:36px;border-radius:36px;background-color:#368bd6;display:inline-block;position:relative}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before{content:"";width:24px;height:24px;grid-column:1;grid-row:1;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;position:absolute;top:6px;left:6px;background-color:#fff}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack{display:inline-block}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time{text-align:right;font-size:1.2rem;color:#61708b;float:right;line-height:3.6rem}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight{font-weight:900}.mx_InviteDialog_userTile{margin-right:8px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill{background-color:#368bd6;border-radius:12px;display:inline-block;height:24px;line-height:2.4rem;padding-left:8px;padding-right:8px;color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_avatar{border-radius:20px;position:relative;left:-5px;top:2px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_name,.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill img.mx_InviteDialog_userTile_avatar{vertical-align:top}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_threepidAvatar{background-color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove{display:inline-block;margin-left:4px}.mx_InviteDialog{height:590px;padding-left:20px}.mx_InviteDialog_userSections{margin-top:10px;overflow-y:auto;padding-right:45px;height:455px}.mx_InviteDialog_addressBar,.mx_InviteDialog_helpText{margin-right:45px}.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link{padding:0}.mx_KeyboardShortcutsDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:-50px;max-height:1100px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category{width:33.3333%;margin:0 0 40px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category>div{padding-left:5px}.mx_KeyboardShortcutsDialog h3{margin:0 0 10px}.mx_KeyboardShortcutsDialog h5{margin:15px 0 5px;font-weight:400}.mx_KeyboardShortcutsDialog kbd{padding:5px;border-radius:4px;background-color:#f3f8fd;margin-right:5px;min-width:20px;text-align:center;display:inline-block;border:1px solid #e9edf1;-webkit-box-shadow:0 2px #e9edf1;box-shadow:0 2px #e9edf1;margin-bottom:4px;text-transform:capitalize}.mx_KeyboardShortcutsDialog kbd+kbd{margin-left:5px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div{display:inline}.mx_MessageEditHistoryDialog .mx_Dialog_header>.mx_Dialog_title{text-align:center}.mx_MessageEditHistoryDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:60vh}.mx_MessageEditHistoryDialog_scrollPanel{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_MessageEditHistoryDialog_error{color:#ff4b55;text-align:center}.mx_MessageEditHistoryDialog_edits{list-style-type:none;font-size:1.4rem;padding:0;color:#2e2f32}.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion,.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion{padding:0 2px}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion{color:#ff4c55;background-color:rgba(255,76,85,.1);text-decoration:line-through}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion{color:#1aa97b;background-color:rgba(26,169,123,.1);text-decoration:underline}.mx_MessageEditHistoryDialog_edits .mx_EventTile_content,.mx_MessageEditHistoryDialog_edits .mx_EventTile_line{margin-right:0}.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton{font-size:1rem;padding:0 8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning{margin-bottom:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning>img{vertical-align:middle;margin-right:8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons{float:right;margin-top:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:8px}.mx_ModalWidgetDialog iframe{width:100%;height:450px;border:0;border-radius:8px}.mx_NewSessionReviewDialog_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:0}.mx_NewSessionReviewDialog_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_NewSessionReviewDialog_deviceName{font-weight:600}.mx_NewSessionReviewDialog_deviceID{font-size:1.2rem;color:#8d99a5}.mx_RegistrationEmailPromptDialog{width:417px}.mx_RegistrationEmailPromptDialog .mx_Dialog_content{margin-bottom:24px;color:#8d99a5}.mx_RegistrationEmailPromptDialog .mx_Dialog_primary{width:100%}.mx_RoomSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_RoomSettingsDialog_rolesIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg);mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg)}.mx_RoomSettingsDialog_notificationsIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomSettingsDialog_bridgesIcon:before{-webkit-mask-image:url(../../img/feather-customised/bridge.b2ca042.svg);mask-image:url(../../img/feather-customised/bridge.b2ca042.svg)}.mx_RoomSettingsDialog_warningIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg);mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg)}.mx_RoomSettingsDialog .mx_Dialog_title{-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0 auto;padding-right:80px}.mx_RoomSettingsDialog .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{-webkit-mask:url(../../img/feather-customised/image.a8671b8.svg);mask:url(../../img/feather-customised/image.a8671b8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center}.mx_RoomSettingsDialog_BridgeList{padding:0}.mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton{display:inline;margin:0;padding:0}.mx_RoomSettingsDialog_BridgeList li{list-style-type:none;padding:5px;margin-bottom:8px;border:1px solid transparent;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon{float:left;padding-right:10px}.mx_RoomSettingsDialog_BridgeList li .column-icon *{border-radius:5px;border:1px solid #e3e8f0}.mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon{width:48px;height:48px;background:#e3e8f0;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon{float:left;margin-right:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img{border-radius:5px;border-width:1px;border-color:transparent}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span{left:auto}.mx_RoomSettingsDialog_BridgeList li .column-data{display:inline-block;width:85%}.mx_RoomSettingsDialog_BridgeList li .column-data>h3{margin-top:0;margin-bottom:0;font-size:16pt;color:#2e2f32}.mx_RoomSettingsDialog_BridgeList li .column-data>*{margin-top:4px;margin-bottom:0}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details{color:#2e2f32;font-weight:600}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details .channel{margin-left:5px}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata{color:#61708b;margin-bottom:0;overflow-y:visible;text-overflow:ellipsis;white-space:normal;padding:0}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata>li{padding:0;border:0}.mx_RoomUpgradeDialog{padding-right:70px}.mx_RoomUpgradeWarningDialog{max-width:38vw;width:38vw}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag{font-weight:700}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:8px;float:right}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content{padding-right:85px;color:#2e2f32}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr{border-color:#2e2f32;opacity:.1;border-bottom:none}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul{padding:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n+2){margin-top:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timestamp{display:inline-block;width:115px;color:#61708b;line-height:24px;vertical-align:top}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline{display:inline-block;width:calc(100% - 155px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_timeline_header span{margin-left:8px;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn{position:relative;margin-top:8px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_ServerOfflineDialog_content_context_txn_desc{width:calc(100% - 100px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_AccessibleButton{float:right;padding:0}.mx_ServerPickerDialog{width:468px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ServerPickerDialog .mx_Dialog_content{margin-bottom:0}.mx_ServerPickerDialog .mx_Dialog_content>p{color:#737d8c;font-size:1.4rem;margin:16px 0}.mx_ServerPickerDialog .mx_Dialog_content>p:first-of-type{margin-bottom:40px}.mx_ServerPickerDialog .mx_Dialog_content>p:last-of-type{margin:0 24px 24px}.mx_ServerPickerDialog .mx_Dialog_content>h4{font-size:1.5rem;font-weight:600;color:#737d8c;margin-left:8px}.mx_ServerPickerDialog .mx_Dialog_content>a{color:#0dbd8b;margin-left:8px}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserverRadio input[type=radio]+div{margin-top:auto;margin-bottom:auto}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver{border-top:none;border-left:none;border-right:none;border-radius:unset}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>input{padding-left:0}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>label{margin-left:0}.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary{width:calc(100% - 64px);margin:0 8px;padding:15px 18px}.mx_SetEmailDialog_email_input{border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:rgba(74,74,74,.9);background-color:#fff;font-size:1.5rem;width:100%;max-width:280px;margin-bottom:10px}.mx_SetEmailDialog_email_input:focus{outline:none;-webkit-box-shadow:none;box-shadow:none;border:1px solid #0dbd8b}.mx_RoomSettingsDialog,.mx_UserSettingsDialog{width:90vw;max-width:1000px;height:80vh}.mx_RoomSettingsDialog .mx_TabbedView,.mx_UserSettingsDialog .mx_TabbedView{top:65px}.mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab,.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab{-webkit-box-sizing:border-box;box-sizing:border-box;min-width:580px;padding-right:100px;padding-bottom:100px}.mx_RoomSettingsDialog .mx_Dialog_title,.mx_UserSettingsDialog .mx_Dialog_title{margin-bottom:24px}.mx_ShareDialog hr{margin-top:25px;margin-bottom:25px;border-color:#747474}.mx_ShareDialog_content{margin:10px 0}.mx_ShareDialog_matrixto{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:30px;padding:10px}.mx_ShareDialog_matrixto a{text-decoration:none}.mx_ShareDialog_matrixto_link{-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.mx_ShareDialog_matrixto_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_ShareDialog_matrixto_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_ShareDialog_split{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_ShareDialog_qrcode_container{float:left;height:256px;width:256px;margin-right:64px}.mx_ShareDialog_qrcode_container+.mx_ShareDialog_social_container{width:299px}.mx_ShareDialog_social_container{display:inline-block}.mx_ShareDialog_social_icon{display:inline-grid;margin-right:10px;margin-bottom:10px}.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2{margin-bottom:2px}.mx_SlashCommandHelpDialog .mx_Dialog_content{margin-top:12px;margin-bottom:34px}.mx_SpaceSettingsDialog{width:480px;color:#2e2f32}.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceSettingsDialog .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:16px}.mx_SpaceSettingsDialog .mx_AccessibleButton_kind_danger{margin-top:28px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:64px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton{display:inline-block}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton_kind_link{margin-left:auto}.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind{padding:8px 22px}.mx_TabbedIntegrationManagerDialog .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none;position:relative}.mx_TabbedIntegrationManagerDialog_container{position:absolute;top:0;bottom:0;left:0;right:0}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager{width:100%;height:100%;border-top:1px solid #0dbd8b}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_TabbedIntegrationManagerDialog_tab{display:inline-block;border:1px solid #0dbd8b;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;padding:10px 8px;margin-right:5px}.mx_TabbedIntegrationManagerDialog_currentTab{background-color:#0dbd8b;color:#fff}.mx_TermsDialog_forIntegrationManager .mx_Dialog{width:60%;height:70%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_TermsDialog_termsTableHeader{font-weight:700;text-align:left}.mx_TermsDialog_termsTable{font-size:1.2rem;width:100%}.mx_TermsDialog_service,.mx_TermsDialog_summary{padding-right:10px}.mx_TermsDialog_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;width:10px;height:10px}.mx_UntrustedDeviceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon{margin-left:0}.mx_UploadConfirmDialog_fileIcon{margin-right:5px}.mx_UploadConfirmDialog_previewOuter{text-align:center}.mx_UploadConfirmDialog_previewInner{display:inline-block;text-align:left}.mx_UploadConfirmDialog_imagePreview{max-height:300px;max-width:100%;border-radius:4px;border:1px solid #c1c1c1}.mx_UserSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserSettingsDialog_appearanceIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg);mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg)}.mx_UserSettingsDialog_voiceIcon:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_UserSettingsDialog_bellIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserSettingsDialog_preferencesIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg);mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg)}.mx_UserSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserSettingsDialog_helpIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/help.68b703f.svg);mask-image:url(../../img/element-icons/settings/help.68b703f.svg)}.mx_UserSettingsDialog_labsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg);mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg)}.mx_UserSettingsDialog_mjolnirIcon:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_UserSettingsDialog_flairIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/flair.4227a88.svg);mask-image:url(../../img/element-icons/settings/flair.4227a88.svg)}.mx_WidgetCapabilitiesPromptDialog .text-muted{font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content{margin-bottom:16px}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap{margin-top:20px;font-size:1.5rem;line-height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap .mx_WidgetCapabilitiesPromptDialog_byline{color:#61708b;margin-left:26px;font-size:1.2rem;line-height:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons{margin-top:40px}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag{line-height:calc(1.4rem + 14px);color:#61708b;font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px;width:3.2rem;height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 1.5rem)}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch .mx_ToggleSwitch_ball{width:1.5rem;height:1.5rem;border-radius:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_AccessSecretStorageDialog_reset{position:relative;padding-left:24px;margin-top:7px}.mx_AccessSecretStorageDialog_reset:before{content:"";display:inline-block;position:absolute;height:16px;width:16px;left:0;top:2px;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link{color:#ff4b55}.mx_AccessSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_AccessSecretStorageDialog_resetBadge:before{background-image:url(../../img/element-icons/warning-badge.de1033e.svg);background-size:24px;background-color:transparent}.mx_AccessSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_AccessSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_AccessSecretStorageDialog_keyStatus{height:30px}.mx_AccessSecretStorageDialog_passPhraseInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_AccessSecretStorageDialog_recoveryKeyEntry{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText{margin:16px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback:before{content:"";display:inline-block;vertical-align:bottom;width:20px;height:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;margin-right:5px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid{color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid{color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput{display:none}.mx_CreateCrossSigningDialog{width:560px}.mx_CreateCrossSigningDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateCrossSigningDialog .mx_Dialog_title,.mx_CreateKeyBackupDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateKeyBackupDialog_primaryContainer{padding:20px}.mx_CreateKeyBackupDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateKeyBackupDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_CreateKeyBackupDialog_passPhraseInput{-webkit-box-flex:0;-ms-flex:none;flex:none;width:250px;border:1px solid #0dbd8b;border-radius:5px;padding:10px;margin-bottom:1em}.mx_CreateKeyBackupDialog_passPhraseMatch{margin-left:20px}.mx_CreateKeyBackupDialog_recoveryKeyHeader{margin-bottom:1em}.mx_CreateKeyBackupDialog_recoveryKeyContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateKeyBackupDialog_recoveryKey{width:262px;padding:20px;color:#888;background-color:#f7f7f7;margin-right:12px}.mx_CreateKeyBackupDialog_recoveryKeyButtons{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateKeyBackupDialog_recoveryKeyButtons button{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap}.mx_CreateKeyBackupDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog{width:560px}.mx_CreateSecretStorageDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateSecretStorageDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateSecretStorageDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateSecretStorageDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_centeredBody,.mx_CreateSecretStorageDialog_centeredTitle{text-align:center}.mx_CreateSecretStorageDialog_primaryContainer{padding-top:20px}.mx_CreateSecretStorageDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton{margin-bottom:16px;padding:11px}.mx_CreateSecretStorageDialog_optionTitle{color:#45474a;font-weight:600;font-size:1.8rem;padding-bottom:10px}.mx_CreateSecretStorageDialog_optionIcon{display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_optionIcon_securePhrase{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_optionIcon_secureBackup{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Field.mx_CreateSecretStorageDialog_passPhraseField{margin-top:0}.mx_CreateSecretStorageDialog_passPhraseMatch{width:200px;margin-left:20px}.mx_CreateSecretStorageDialog_recoveryKeyContainer{width:380px;margin-left:auto;margin-right:auto}.mx_CreateSecretStorageDialog_recoveryKey{font-weight:700;text-align:center;padding:20px;color:#888;background-color:#f7f7f7;border-radius:6px;word-spacing:1em;margin-bottom:20px}.mx_CreateSecretStorageDialog_recoveryKeyButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton{width:160px;padding-left:0;padding-right:0;white-space:nowrap}.mx_CreateSecretStorageDialog_continueSpinner{margin-top:33px;text-align:right}.mx_CreateSecretStorageDialog_continueSpinner img{width:20px;height:20px}.mx_KeyBackupFailedDialog .mx_Dialog_title{margin-bottom:32px}.mx_KeyBackupFailedDialog_title{position:relative;padding-left:45px;padding-bottom:10px}.mx_KeyBackupFailedDialog_title:before{-webkit-mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;content:"";position:absolute;top:-6px;right:0;bottom:0;left:0}.mx_KeyBackupFailedDialog .mx_Dialog_buttons{margin-top:36px}.mx_RestoreKeyBackupDialog_keyStatus{height:30px}.mx_RestoreKeyBackupDialog_primaryContainer{padding:20px}.mx_RestoreKeyBackupDialog_passPhraseInput,.mx_RestoreKeyBackupDialog_recoveryKeyInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_RestoreKeyBackupDialog_content>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:110px}.mx_NetworkDropdown{height:32px;position:relative;padding-right:32px;margin-left:auto;margin-right:9px;margin-top:12px}.mx_NetworkDropdown,.mx_NetworkDropdown .mx_AccessibleButton{width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_NetworkDropdown_menu{min-width:204px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border:1px solid #c1c1c1;background-color:#fff;max-height:calc(100vh - 20px);overflow-y:auto}.mx_NetworkDropdown_menu_network{font-weight:700}.mx_NetworkDropdown_server{padding:12px 0;border-bottom:1px solid #9fa9ba}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title{padding:0 10px;font-size:1.5rem;font-weight:600;line-height:2rem;margin-bottom:4px;position:relative}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton{position:absolute;display:inline;right:10px;height:16px;width:16px;margin-top:2px}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton:after{content:"";position:absolute;width:16px;height:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle{padding:0 10px;font-size:1rem;line-height:1.4rem;margin-top:-4px;margin-bottom:4px;color:#61708b}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network{font-size:1.2rem;line-height:1.6rem;padding:4px 10px;cursor:pointer;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network[aria-checked=true]:after{content:"";position:absolute;width:16px;height:16px;right:10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_NetworkDropdown_server_add:hover,.mx_NetworkDropdown_server_network:hover{background-color:#f3f8fd}.mx_NetworkDropdown_server_add{padding:16px 10px 16px 32px;position:relative;border-radius:0 0 4px 4px}.mx_NetworkDropdown_server_add:before{content:"";position:absolute;width:16px;height:16px;left:7px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);background-color:#61708b}.mx_NetworkDropdown_handle{position:relative}.mx_NetworkDropdown_handle:after{content:"";position:absolute;width:26px;height:26px;right:-27.5px;top:-3px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);background-color:#2e2f32}.mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server{color:#61708b;font-size:1.2rem}.mx_NetworkDropdown_dialog .mx_Dialog{width:45vw}.mx_AccessibleButton{cursor:pointer}.mx_AccessibleButton_disabled{cursor:default}.mx_AccessibleButton_hasKind{padding:7px 18px;text-align:center;border-radius:8px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:1.4rem}.mx_AccessibleButton_kind_primary{color:#fff;background-color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary_outline{color:#0dbd8b;background-color:#fff;border:1px solid #0dbd8b;font-weight:600}.mx_AccessibleButton_kind_secondary{color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled,.mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm{padding:5px 12px;color:#fff;background-color:#0dbd8b}.mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_kind_danger{color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_outline{color:#ff4b55;background-color:#fff;border:1px solid #ff4b55}.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled{color:#f5b6bb;border-color:#f5b6bb}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm{padding:5px 12px;color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_link{color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm{padding:5px 12px;color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AddressSelector{position:absolute;background-color:#fff;width:485px;max-height:116px;overflow-y:auto;border-radius:3px;border:1px solid #0dbd8b;cursor:pointer;z-index:1}.mx_AddressSelector.mx_AddressSelector_empty{display:none}.mx_AddressSelector_addressListElement .mx_AddressTile{background-color:#fff;border:1px solid #fff}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected{background-color:#f2f5f8}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile{background-color:#f2f5f8;border:1px solid #f2f5f8}.mx_AddressTile{display:inline-block;border-radius:3px;background-color:rgba(74,73,74,.1);border:1px solid #e7e7e7;line-height:2.6rem;color:#2e2f32;font-size:1.4rem;font-weight:400;margin-right:4px}.mx_AddressTile.mx_AddressTile_error{background-color:rgba(255,0,100,.1);color:#ff4b55;border-color:#ff4b55}.mx_AddressTile_network{padding-right:4px}.mx_AddressTile_avatar,.mx_AddressTile_network{display:inline-block;position:relative;padding-left:2px;vertical-align:middle}.mx_AddressTile_avatar{padding-right:7px}.mx_AddressTile_mx{display:inline-block;margin:0;border:0;padding:0}.mx_AddressTile_name{display:inline-block;padding-right:4px;font-weight:600;overflow:hidden;height:26px;vertical-align:middle}.mx_AddressTile_name.mx_AddressTile_justified{width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_id{display:inline-block;padding-right:11px}.mx_AddressTile_id.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknownMx{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_unknownMxl.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_email{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_email.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknown{display:inline-block;padding-right:11px}.mx_AddressTile_unknown.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_dismiss{display:inline-block;padding-right:11px;padding-left:1px;cursor:pointer}.mx_AddressTile_dismiss object{pointer-events:none}.mx_DesktopBuildsNotice{text-align:center;padding:0 16px}.mx_DesktopBuildsNotice>*{vertical-align:middle}.mx_DesktopBuildsNotice>img{margin-right:8px}.mx_desktopCapturerSourcePicker{overflow:hidden}.mx_desktopCapturerSourcePicker_tabLabels{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 0 8px}.mx_desktopCapturerSourcePicker_tabLabel,.mx_desktopCapturerSourcePicker_tabLabel_selected{width:100%;text-align:center;border-radius:8px;padding:8px 0;font-size:1.3rem}.mx_desktopCapturerSourcePicker_tabLabel_selected{background-color:#0dbd8b;color:#fff}.mx_desktopCapturerSourcePicker_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:500px;overflow:overlay}.mx_desktopCapturerSourcePicker_stream_button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:8px;border-radius:4px}.mx_desktopCapturerSourcePicker_stream_button:focus,.mx_desktopCapturerSourcePicker_stream_button:hover{background:#fff}.mx_desktopCapturerSourcePicker_stream_thumbnail{margin:4px;width:312px}.mx_desktopCapturerSourcePicker_stream_name{margin:0 4px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:312px}.mx_DirectorySearchBox{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:9px;padding-right:9px}.mx_DirectorySearchBox_joinButton{display:table-cell;padding:3px 10px;background-color:#f2f5f8;border-radius:3px;background-image:url(../../img/icon-return.cb24475.svg);background-position:8px 70%;background-repeat:no-repeat;text-indent:18px;font-weight:600;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.mx_DirectorySearchBox_clear{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:10px;mask-size:10px;width:15px;height:15px;cursor:pointer}.mx_Dropdown{position:relative;color:#2e2f32}.mx_Dropdown_disabled{opacity:.3}.mx_Dropdown_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:3px;border:1px solid #c7c7c7;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_Dropdown_input.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_Dropdown_input:focus{border-color:#238cf5}.mx_Dropdown_input.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_Dropdown_arrow{width:10px;height:6px;padding-right:9px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_Dropdown_option{height:35px;line-height:3.5rem;padding-left:8px;padding-right:8px}.mx_Dropdown_input>.mx_Dropdown_option{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dropdown_input>.mx_Dropdown_option,.mx_Dropdown_option div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_Dropdown_option .mx_Dropdown_option_emoji,.mx_Dropdown_option img{margin:5px;width:16px;vertical-align:middle}.mx_Dropdown_option_emoji{font-size:1.6rem;line-height:1.6rem}input.mx_Dropdown_option,input.mx_Dropdown_option:focus{font-weight:400;border:0;padding-top:0;padding-bottom:0;width:60%}.mx_Dropdown_menu{position:absolute;left:-1px;right:-1px;top:100%;z-index:2;margin:0;padding:0;border-radius:3px;border:1px solid #238cf5;background-color:#fff;max-height:200px;overflow-y:auto}.mx_Dropdown_menu .mx_Dropdown_option{height:auto;min-height:35px}.mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_Dropdown_searchPrompt{font-weight:400;margin-left:5px;margin-bottom:5px}.mx_EditableItemList{margin-top:12px;margin-bottom:10px}.mx_EditableItem{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:5px}.mx_EditableItem_delete{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;margin-right:5px;cursor:pointer;vertical-align:middle;width:14px;height:14px;-webkit-mask-image:url(../../img/feather-customised/cancel.23c2689.svg);mask-image:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#ff4b55;-webkit-mask-size:100%;mask-size:100%}.mx_EditableItem_email{vertical-align:middle}.mx_EditableItem_promptText{margin-right:10px;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_EditableItem_confirmBtn{margin-right:5px}.mx_EditableItem_item{-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;width:calc(100% - 14px);overflow-x:hidden;text-overflow:ellipsis}.mx_EditableItemList_label{margin-bottom:5px}.mx_ErrorBoundary{width:100%;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_ErrorBoundary,.mx_ErrorBoundary_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ErrorBoundary_body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:400px}.mx_ErrorBoundary_body .mx_AccessibleButton{margin-top:5px}.mx_EventListSummary{position:relative}.mx_TextualEvent.mx_EventListSummary_summary{font-size:1.4rem;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_EventListSummary_avatars{display:inline-block;margin-right:8px;padding-top:8px;line-height:1.2rem}.mx_EventListSummary_avatars .mx_BaseAvatar{margin-right:-4px;cursor:pointer}.mx_EventListSummary_toggle{color:#0dbd8b;cursor:pointer;float:right;margin-right:10px;margin-top:8px}.mx_EventListSummary_line{border-bottom:1px solid transparent;margin-left:63px;line-height:3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_line{line-height:2.2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle{margin-top:3px}.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary{font-size:1.3rem}.mx_FacePile .mx_FacePile_faces{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;vertical-align:middle}.mx_FacePile .mx_FacePile_faces>.mx_FacePile_face+.mx_FacePile_face{margin-right:-8px}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image{border:1px solid #fff}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial{margin:1px}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more{position:relative;border-radius:100%;width:30px;height:30px;background-color:hsla(0,0%,91%,.77)}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before{content:"";z-index:1;position:absolute;top:0;left:0;height:inherit;width:inherit;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_FacePile .mx_FacePile_summary{margin-left:12px;font-size:1.4rem;line-height:2.4rem;color:#8d99a5}.mx_Field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;position:relative;margin:1em 0;border-radius:4px;-webkit-transition:border-color .25s;transition:border-color .25s;border:1px solid #e7e7e7}.mx_Field_prefix{border-right:1px solid #e7e7e7}.mx_Field_postfix{border-left:1px solid #e7e7e7}.mx_Field input,.mx_Field select,.mx_Field textarea{font-weight:400;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;border:none;border-radius:4px;padding:8px 9px;color:#2e2f32;background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_Field select{-moz-appearance:none;-webkit-appearance:none}.mx_Field_select:before{content:"";position:absolute;top:15px;right:10px;width:10px;height:6px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;z-index:1;pointer-events:none}.mx_Field:focus-within{border-color:#238cf5}.mx_Field input:focus,.mx_Field select:focus,.mx_Field textarea:focus{outline:0}.mx_Field input::-webkit-input-placeholder,.mx_Field textarea::-webkit-input-placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-moz-placeholder,.mx_Field textarea::-moz-placeholder{-moz-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:-ms-input-placeholder,.mx_Field textarea:-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-ms-input-placeholder,.mx_Field textarea::-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::placeholder,.mx_Field textarea::placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-moz-placeholder,.mx_Field textarea:placeholder-shown:focus::-moz-placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus:-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-moz-placeholder-shown:focus::placeholder,.mx_Field textarea:-moz-placeholder-shown:focus::placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-ms-input-placeholder:focus::placeholder,.mx_Field textarea:-ms-input-placeholder:focus::placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::placeholder,.mx_Field textarea:placeholder-shown:focus::placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field label{-webkit-transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;color:#2e2f32;background-color:transparent;font-size:1.4rem;position:absolute;left:0;top:0;margin:7px 8px;padding:2px;pointer-events:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 20px)}.mx_Field input:not(:-moz-placeholder-shown)+label,.mx_Field textarea:not(:-moz-placeholder-shown)+label{-moz-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:not(:-ms-input-placeholder)+label,.mx_Field textarea:not(:-ms-input-placeholder)+label{-ms-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field_labelAlwaysTopLeft label,.mx_Field input:focus+label,.mx_Field input:not(:placeholder-shown)+label,.mx_Field select+label,.mx_Field textarea:focus+label,.mx_Field textarea:not(:placeholder-shown)+label{-webkit-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:focus+label,.mx_Field select:focus+label,.mx_Field textarea:focus+label{color:#238cf5}.mx_Field input:disabled,.mx_Field input:disabled+label,.mx_Field select:disabled,.mx_Field select:disabled+label,.mx_Field textarea:disabled,.mx_Field textarea:disabled+label{background-color:#fff;color:#888}.mx_Field_valid.mx_Field,.mx_Field_valid.mx_Field:focus-within{border-color:#0dbd8b}.mx_Field_valid.mx_Field:focus-within label,.mx_Field_valid.mx_Field label{color:#0dbd8b}.mx_Field_invalid.mx_Field,.mx_Field_invalid.mx_Field:focus-within{border-color:#ff4b55}.mx_Field_invalid.mx_Field:focus-within label,.mx_Field_invalid.mx_Field label{color:#ff4b55}.mx_Field_tooltip{margin-top:-12px;margin-left:4px;width:200px}.mx_Field_tooltip.mx_Field_valid{-webkit-animation:mx_fadeout 1s 2s forwards;animation:mx_fadeout 1s 2s forwards}.mx_Field .mx_Dropdown_input{border:initial;border-radius:0;border-radius:initial}.mx_Field .mx_CountryDropdown{width:7.8rem}.mx_FormButton{line-height:1.6rem;padding:5px 15px;font-size:1.2rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_FormButton:not(:last-child){margin-right:8px}.mx_FormButton.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_FormButton.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_FormButton.mx_AccessibleButton_kind_secondary{color:#737d8c;border:1px solid #737d8c;background-color:unset}.mx_ImageView{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView,.mx_ImageView_image_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%}.mx_ImageView_image_wrapper{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_ImageView_image{pointer-events:all;-ms-flex-negative:0;flex-shrink:0}.mx_ImageView_panel{width:100%;height:68px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_ImageView_info_wrapper,.mx_ImageView_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_info_wrapper{pointer-events:all;padding-left:32px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#fff}.mx_ImageView_info{padding-left:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView_info_sender{font-weight:700}.mx_ImageView_toolbar{padding-right:16px;pointer-events:all;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_button{margin-left:24px;display:block}.mx_ImageView_button:before{content:"";height:22px;width:22px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;display:block;background-color:#c1c6cd}.mx_ImageView_button_rotateCW:before{-webkit-mask-image:url(../../img/image-view/rotate-cw.60d903e.svg);mask-image:url(../../img/image-view/rotate-cw.60d903e.svg)}.mx_ImageView_button_rotateCCW:before{-webkit-mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg);mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg)}.mx_ImageView_button_zoomOut:before{-webkit-mask-image:url(../../img/image-view/zoom-out.8506f80.svg);mask-image:url(../../img/image-view/zoom-out.8506f80.svg)}.mx_ImageView_button_zoomIn:before{-webkit-mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg);mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg)}.mx_ImageView_button_download:before{-webkit-mask-image:url(../../img/image-view/download.2eac468.svg);mask-image:url(../../img/image-view/download.2eac468.svg)}.mx_ImageView_button_more:before{-webkit-mask-image:url(../../img/image-view/more.0427c6c.svg);mask-image:url(../../img/image-view/more.0427c6c.svg)}.mx_ImageView_button_close{border-radius:100%;background:#21262c}.mx_ImageView_button_close:before{width:32px;height:32px;-webkit-mask-image:url(../../img/image-view/close.97d1731.svg);mask-image:url(../../img/image-view/close.97d1731.svg);-webkit-mask-size:40%;mask-size:40%}.mx_InfoTooltip_icon,.mx_InfoTooltip_icon:before{width:16px;height:16px;display:inline-block}.mx_InfoTooltip_icon:before{background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/info.dc07e19.svg);mask-image:url(../../img/element-icons/info.dc07e19.svg)}.mx_InlineSpinner{display:inline}.mx_InlineSpinner_spin img{margin:0 6px;vertical-align:-3px}.mx_InviteReason{position:relative;margin-bottom:1em}.mx_InviteReason .mx_InviteReason_reason{visibility:visible}.mx_InviteReason .mx_InviteReason_view{display:none;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;color:#737d8c}.mx_InviteReason .mx_InviteReason_view:before{content:"";margin-right:8px;background-color:#737d8c;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_InviteReason_hidden .mx_InviteReason_reason{visibility:hidden}.mx_InviteReason_hidden .mx_InviteReason_view{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ManageIntegsButton_error{position:relative;float:right;cursor:not-allowed}.mx_ManageIntegsButton_error img{position:absolute;right:-5px;top:-5px}.mx_ManageIntegsButton_errorPopup{position:absolute;top:110%;left:-275%;width:550%;padding:30%;font-size:10pt;line-height:1.5em;border-radius:5px;background-color:#0dbd8b;color:#fff;text-align:center;z-index:1000}.mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup{display:none}.mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup{display:inline}.mx_MiniAvatarUploader{position:relative;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_MiniAvatarUploader .mx_Tooltip{display:inline-block;position:absolute;z-index:unset;width:-webkit-max-content;width:-moz-max-content;width:max-content;left:72px;top:0}.mx_MiniAvatarUploader:after,.mx_MiniAvatarUploader:before{content:"";position:absolute;height:26px;width:26px;right:-6px;bottom:-6px}.mx_MiniAvatarUploader:before{background-color:#fff;border-radius:50%;z-index:1}.mx_MiniAvatarUploader:after{background-color:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg);-webkit-mask-size:16px;mask-size:16px;z-index:2}.mx_MiniAvatarUploader.mx_MiniAvatarUploader_busy:after{background:url(../../img/spinner.0b29ec9.gif) no-repeat 50%;background-size:80%;-webkit-mask:unset;mask:unset}.mx_MiniAvatarUploader_input{display:none}.mx_PowerSelector{width:100%}.mx_PowerSelector .mx_Field input,.mx_PowerSelector .mx_Field select{-webkit-box-sizing:border-box;box-sizing:border-box}progress.mx_ProgressBar{height:6px;width:60px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:6px}progress.mx_ProgressBar::-moz-progress-bar{border-radius:6px}progress.mx_ProgressBar::-webkit-progress-bar,progress.mx_ProgressBar::-webkit-progress-value{border-radius:6px}progress.mx_ProgressBar{color:#0dbd8b}progress.mx_ProgressBar::-moz-progress-bar{background-color:#0dbd8b}progress.mx_ProgressBar::-webkit-progress-value{background-color:#0dbd8b}progress.mx_ProgressBar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar::-webkit-progress-bar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar ::-webkit-progress-value{-webkit-transition:width 1s;transition:width 1s}progress.mx_ProgressBar ::-moz-progress-bar{-moz-transition:padding-bottom 1s;transition:padding-bottom 1s;padding-bottom:var(--value);transform-origin:0 0;transform:rotate(-90deg) translateX(-15px);padding-left:15px;height:0}.mx_QRCode img{border-radius:8px}.mx_ReplyThread{margin-top:0}.mx_ReplyThread .mx_DateSeparator{font-size:1em!important;margin-top:0;margin-bottom:0;padding-bottom:1px;bottom:-5px}.mx_ReplyThread_show{cursor:pointer}blockquote.mx_ReplyThread{margin-left:0;padding-left:10px;border-left:4px solid #ddd}.mx_ResizeHandle{cursor:row-resize;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;z-index:100}.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -5px;padding:0 5px;cursor:col-resize}.mx_ResizeHandle.mx_ResizeHandle_vertical{margin:-5px 0;padding:5px 0;cursor:row-resize}.mx_MatrixChat>.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -10px 0 0;padding:0 8px 0 0}.mx_ResizeHandle>div{background:transparent}.mx_ResizeHandle.mx_ResizeHandle_horizontal>div{width:1px;height:100%}.mx_ResizeHandle.mx_ResizeHandle_vertical>div{height:1px}.mx_AtRoomPill,.mx_GroupPill,.mx_RoomPill,.mx_UserPill{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle;border-radius:1.6rem;line-height:1.5rem;padding-left:0}a.mx_Pill{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 1ch)}.mx_Pill{padding:.1rem .4em .1rem .1rem;vertical-align:text-top;line-height:1.7rem}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_GroupPill{color:#fff;background-color:#aaa}.mx_EventTile_content .markdown-body a.mx_Pill{text-decoration:none}.mx_EventTile_content .markdown-body a.mx_UserPill,.mx_UserPill{color:#2e2f32;background-color:rgba(0,0,0,.1)}.mx_UserPill_selected{background-color:#0dbd8b!important}.mx_EventTile_content .markdown-body a.mx_AtRoomPill,.mx_EventTile_content .mx_AtRoomPill,.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me,.mx_MessageComposer_input .mx_AtRoomPill{color:#fff;background-color:#ff4b55}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_EventTile_content .markdown-body a.mx_RoomPill,.mx_GroupPill,.mx_RoomPill{color:#fff;background-color:#aaa}.mx_EventTile_body .mx_GroupPill,.mx_EventTile_body .mx_RoomPill,.mx_EventTile_body .mx_UserPill{cursor:pointer}.mx_AtRoomPill .mx_BaseAvatar,.mx_GroupPill .mx_BaseAvatar,.mx_RoomPill .mx_BaseAvatar,.mx_UserPill .mx_BaseAvatar{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:10rem;margin-right:.24rem}.mx_Markdown_BOLD{font-weight:700}.mx_Markdown_ITALIC{font-style:italic}.mx_Markdown_CODE{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.mx_Markdown_HR{display:block;background:#e9e9e9}.mx_Markdown_STRIKETHROUGH{text-decoration:line-through}.mx_RoleButton{margin-left:4px;margin-right:4px;cursor:pointer;display:inline-block}.mx_RoleButton object{pointer-events:none}.mx_RoleButton_tooltip{display:inline-block;position:relative;top:-25px;left:6px}.mx_RoomAliasField{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;min-width:0;max-width:100%}.mx_RoomAliasField input{width:150px;padding-left:0;padding-right:0}.mx_RoomAliasField input::-webkit-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-moz-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input:-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::placeholder{color:#888;font-weight:400}.mx_RoomAliasField .mx_Field_postfix,.mx_RoomAliasField .mx_Field_prefix{color:#888;border-left:none;border-right:none;font-weight:600;padding:9px 10px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomAliasField .mx_Field_postfix{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 180px)}.mx_SSOButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_SSOButtons .mx_SSOButtons_row+.mx_SSOButtons_row{margin-top:16px}.mx_SSOButtons .mx_SSOButton{position:relative;width:100%;padding:7px 32px;text-align:center;border-radius:8px;display:inline-block;font-size:1.4rem;font-weight:600;border:1px solid #e7e7e7;color:#2e2f32}.mx_SSOButtons .mx_SSOButton>img{-o-object-fit:contain;object-fit:contain;position:absolute;left:8px;top:4px}.mx_SSOButtons .mx_SSOButton_default{color:#0dbd8b;background-color:#fff;border-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary{color:#fff;background-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_mini{-webkit-box-sizing:border-box;box-sizing:border-box;width:50px;height:50px;min-width:50px;padding:12px}.mx_SSOButtons .mx_SSOButton_mini>img{left:12px;top:12px}.mx_SSOButtons .mx_SSOButton_mini+.mx_SSOButton_mini{margin-left:16px}.mx_ServerPicker{margin-bottom:14px;border-bottom:1px solid rgba(141,151,165,.2);display:grid;grid-template-columns:auto -webkit-min-content;grid-template-columns:auto min-content;grid-template-rows:auto auto auto;font-size:1.4rem;line-height:2rem}.mx_ServerPicker>h3{font-weight:600;margin:0 0 20px;grid-column:1;grid-row:1}.mx_ServerPicker .mx_ServerPicker_help{width:20px;height:20px;background-color:#c1c6cd;border-radius:10px;grid-column:2;grid-row:1;margin-left:auto;text-align:center;color:#fff;font-size:16px;position:relative}.mx_ServerPicker .mx_ServerPicker_help:before{content:"";width:24px;height:24px;position:absolute;top:-2px;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/i.80d84f3.svg);mask-image:url(../../img/element-icons/i.80d84f3.svg);background:#fff}.mx_ServerPicker .mx_ServerPicker_server{color:#232f32;grid-column:1;grid-row:2;margin-bottom:16px}.mx_ServerPicker .mx_ServerPicker_change{padding:0;font-size:inherit;grid-column:2;grid-row:2}.mx_ServerPicker .mx_ServerPicker_desc{margin-top:-12px;color:#8d99a5;grid-column:1/2;grid-row:3;margin-bottom:16px}.mx_ServerPicker_helpDialog .mx_Dialog_content{width:456px}.mx_Slider{position:relative;margin:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Slider_dotContainer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_Slider_bar,.mx_Slider_dotContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_Slider_bar{-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;height:1em;width:100%;padding:0 .5em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Slider_bar>hr{width:100%;height:.4em;background-color:#c1c9d6;border:0}.mx_Slider_selection{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:calc(100% - 1em);height:1em;position:absolute;pointer-events:none}.mx_Slider_selectionDot{position:absolute;width:1.1em;height:1.1em;background-color:#0dbd8b;border-radius:50%;-webkit-box-shadow:0 0 6px #d3d3d3;box-shadow:0 0 6px #d3d3d3;z-index:10}.mx_Slider_selection>hr{margin:0;border:.2em solid #0dbd8b}.mx_Slider_dot{height:1em;width:1em;border-radius:50%;background-color:#c1c9d6;z-index:0}.mx_Slider_dotActive{background-color:#0dbd8b}.mx_Slider_dotValue{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#c1c9d6}.mx_Slider_labelContainer{width:1em}.mx_Slider_label{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;left:-50%}.mx_Spinner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_MatrixChat_middlePanel .mx_Spinner{height:auto}.mx_Checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Checkbox input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0}.mx_Checkbox input[type=checkbox]+label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;-ms-flex-negative:0;flex-shrink:0;height:1.6rem;width:1.6rem;size:.5rem;border:.15rem solid rgba(97,112,139,.5);-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:.4rem}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background img{display:none;height:100%;width:100%;-webkit-filter:invert(100%);filter:invert(100%)}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background{background:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background img{display:block}.mx_Checkbox input[type=checkbox]+label>:not(.mx_Checkbox_background){margin-left:10px}.mx_Checkbox input[type=checkbox]:disabled+label{opacity:.5;cursor:not-allowed}.mx_Checkbox input[type=checkbox]:checked:disabled+label>.mx_Checkbox_background{background-color:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton{position:relative;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_RadioButton,.mx_RadioButton>.mx_RadioButton_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_RadioButton>.mx_RadioButton_content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:8px;margin-right:8px}.mx_RadioButton .mx_RadioButton_spacer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.6rem;width:1.6rem}.mx_RadioButton>input[type=radio]{margin:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mx_RadioButton>input[type=radio]+div{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;height:1.6rem;width:1.6rem;margin-left:2px;border:.15rem solid #61708b;border-radius:1.6rem}.mx_RadioButton>input[type=radio]+div>div{-webkit-box-sizing:border-box;box-sizing:border-box;height:.8rem;width:.8rem;border-radius:.8rem}.mx_RadioButton>input[type=radio].focus-visible+div{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_RadioButton>input[type=radio].focus-visible+div{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton>input[type=radio]:checked+div{border-color:#0dbd8b}.mx_RadioButton>input[type=radio]:checked+div>div{background:#0dbd8b}.mx_RadioButton>input[type=radio]:disabled+div,.mx_RadioButton>input[type=radio]:disabled+div+span{opacity:.5;cursor:not-allowed}.mx_RadioButton>input[type=radio]:disabled+div{border-color:#61708b}.mx_RadioButton>input[type=radio]:checked:disabled+div>div{background-color:#61708b}.mx_RadioButton_outlined{border:1px solid #e3e8f0;border-radius:8px}.mx_RadioButton_checked{border-color:#0dbd8b}.mx_SyntaxHighlight{background:none!important;color:#747474!important}.mx_TextWithTooltip_tooltip{display:none}.mx_ToggleSwitch{-webkit-transition:background-color .2s ease-out .1s;transition:background-color .2s ease-out .1s;width:4.4rem;height:2rem;border-radius:1.5rem;padding:2px;background-color:#c1c9d6;opacity:.5}.mx_ToggleSwitch_enabled{cursor:pointer;opacity:1}.mx_ToggleSwitch.mx_ToggleSwitch_on{background-color:#0dbd8b}.mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 2rem)}.mx_ToggleSwitch_ball{position:relative;width:2rem;height:2rem;border-radius:2rem;background-color:#fff;-webkit-transition:left .15s ease-out .1s;transition:left .15s ease-out .1s;left:0}@-webkit-keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@-webkit-keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}@keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}.mx_Tooltip_chevron{position:absolute;left:-7px;top:10px;width:0;height:0;border-top:7px solid transparent;border-right:7px solid #e7e7e7;border-bottom:7px solid transparent}.mx_Tooltip_chevron:after{content:"";width:0;height:0;border-top:6px solid transparent;border-right:6px solid #fff;border-bottom:6px solid transparent;position:absolute;top:-6px;left:1px}.mx_Tooltip{position:fixed;border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);z-index:6000;padding:10px;pointer-events:none;line-height:1.4rem;font-size:1.2rem;font-weight:500;max-width:200px;word-break:break-word;margin-right:50px;background-color:#27303a;color:#fff;border:0;text-align:center}.mx_Tooltip,.mx_Tooltip .mx_Tooltip_chevron{display:none}.mx_Tooltip.mx_Tooltip_visible{-webkit-animation:mx_fadein .2s forwards;animation:mx_fadein .2s forwards}.mx_Tooltip.mx_Tooltip_invisible{-webkit-animation:mx_fadeout .1s forwards;animation:mx_fadeout .1s forwards}.mx_Field_tooltip{background-color:#fff;color:#2e2f32;border:1px solid #e7e7e7;text-align:unset}.mx_Field_tooltip .mx_Tooltip_chevron{display:unset}.mx_Tooltip_title{font-weight:600}.mx_Tooltip_sub{opacity:.7;margin-top:4px}.mx_TooltipButton{display:inline-block;width:11px;height:11px;margin-left:5px;border:2px solid #dbdbdb;border-radius:20px;color:#dbdbdb;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in;opacity:.6;line-height:1.1rem;text-align:center;cursor:pointer}.mx_TooltipButton:hover{opacity:1}.mx_TooltipButton_container{position:relative;top:-18px;left:4px}.mx_TooltipButton_helpText{width:400px;text-align:start;line-height:17px!important}.mx_Validation{position:relative}.mx_Validation_details{padding-left:20px;margin:0}.mx_Validation_description+.mx_Validation_details{margin:1em 0 0}.mx_Validation_detail{position:relative;font-weight:400;list-style:none;margin-bottom:.5em}.mx_Validation_detail:last-child{margin-bottom:0}.mx_Validation_detail:before{content:"";position:absolute;width:14px;height:14px;top:0;left:-18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_Validation_detail.mx_Validation_valid{color:#0dbd8b}.mx_Validation_detail.mx_Validation_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_Validation_detail.mx_Validation_invalid{color:#ff4b55}.mx_Validation_detail.mx_Validation_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_EmojiPicker{width:340px;height:450px;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.mx_EmojiPicker_header{padding:4px 8px 0;border-bottom:1px solid #e9edf1}.mx_EmojiPicker_anchor{padding:8px 8px 6px;border:none;border-bottom:2px solid transparent;background-color:transparent;border-radius:4px 4px 0 0;width:36px;height:38px}.mx_EmojiPicker_anchor:not(:disabled){cursor:pointer}.mx_EmojiPicker_anchor:not(:disabled):hover{background-color:#ddd;border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_anchor:before{background-color:#2e2f32;content:"";display:inline-block;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:100%;height:100%}.mx_EmojiPicker_anchor:disabled:before{background-color:#ddd}.mx_EmojiPicker_anchor_activity:before{-webkit-mask-image:url(../../img/emojipicker/activity.921ec9f.svg);mask-image:url(../../img/emojipicker/activity.921ec9f.svg)}.mx_EmojiPicker_anchor_custom:before{-webkit-mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg);mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg)}.mx_EmojiPicker_anchor_flags:before{-webkit-mask-image:url(../../img/emojipicker/flags.1a8855e.svg);mask-image:url(../../img/emojipicker/flags.1a8855e.svg)}.mx_EmojiPicker_anchor_foods:before{-webkit-mask-image:url(../../img/emojipicker/foods.c6b220a.svg);mask-image:url(../../img/emojipicker/foods.c6b220a.svg)}.mx_EmojiPicker_anchor_nature:before{-webkit-mask-image:url(../../img/emojipicker/nature.6540b99.svg);mask-image:url(../../img/emojipicker/nature.6540b99.svg)}.mx_EmojiPicker_anchor_objects:before{-webkit-mask-image:url(../../img/emojipicker/objects.4d34f58.svg);mask-image:url(../../img/emojipicker/objects.4d34f58.svg)}.mx_EmojiPicker_anchor_people:before{-webkit-mask-image:url(../../img/emojipicker/people.e918580.svg);mask-image:url(../../img/emojipicker/people.e918580.svg)}.mx_EmojiPicker_anchor_places:before{-webkit-mask-image:url(../../img/emojipicker/places.7310322.svg);mask-image:url(../../img/emojipicker/places.7310322.svg)}.mx_EmojiPicker_anchor_recent:before{-webkit-mask-image:url(../../img/emojipicker/recent.13b42e2.svg);mask-image:url(../../img/emojipicker/recent.13b42e2.svg)}.mx_EmojiPicker_anchor_symbols:before{-webkit-mask-image:url(../../img/emojipicker/symbols.15a557d.svg);mask-image:url(../../img/emojipicker/symbols.15a557d.svg)}.mx_EmojiPicker_anchor_visible{border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_search{margin:8px;border-radius:4px;border:1px solid #e7e7e7;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_EmojiPicker_search input{-webkit-box-flex:1;-ms-flex:1;flex:1;border:none;padding:8px 12px;border-radius:4px 0}.mx_EmojiPicker_search button{border:none;background-color:inherit;margin:0;padding:8px;-ms-flex-item-align:center;align-self:center;width:32px;height:32px}.mx_EmojiPicker_search_clear{cursor:pointer}.mx_EmojiPicker_search_icon{width:16px;margin:8px}.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear){pointer-events:none}.mx_EmojiPicker_search_icon:after{-webkit-mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:#2e2f32;content:"";display:inline-block;width:100%;height:100%}.mx_EmojiPicker_search_clear:after{-webkit-mask-image:url(../../img/emojipicker/delete.f7344c5.svg);mask-image:url(../../img/emojipicker/delete.f7344c5.svg)}.mx_EmojiPicker_category{padding:0 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_category_label{width:304px}.mx_EmojiPicker_list{width:304px;padding:0;margin:0}.mx_EmojiPicker_item_wrapper{display:inline-block;list-style:none;width:38px;cursor:pointer}.mx_EmojiPicker_item{display:inline-block;font-size:2rem;padding:5px;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-radius:4px}.mx_EmojiPicker_item:hover{background-color:#ddd}.mx_EmojiPicker_item_selected{color:rgba(0,0,0,.5);border:1px solid #0dbd8b;padding:4px}.mx_EmojiPicker_category_label,.mx_EmojiPicker_preview_name{font-size:1.6rem;font-weight:600;margin:0}.mx_EmojiPicker_footer{border-top:1px solid #e9edf1;min-height:72px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_preview_emoji{font-size:3.2rem;padding:8px 16px}.mx_EmojiPicker_preview_text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_name{text-transform:capitalize}.mx_EmojiPicker_shortcode{color:#747474;font-size:1.4rem}.mx_EmojiPicker_shortcode:after,.mx_EmojiPicker_shortcode:before{content:":"}.mx_EmojiPicker_quick{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.mx_EmojiPicker_quick_header .mx_EmojiPicker_name{margin-right:4px}.mx_GroupPublicity_toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:8px}.mx_GroupPublicity_toggle .mx_GroupTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.mx_GroupPublicity_toggle .mx_ToggleSwitch{float:right}.mx_GroupRoomTile{position:relative;color:#2e2f32;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupRoomList_wrapper{padding:10px}.mx_GroupUserSettings_groupPublicity_scrollbox{height:200px;border:1px solid transparent;border-radius:3px;overflow:hidden}.mx_CreateEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg)}.mx_DateSeparator{clear:both;margin:4px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.4rem;color:#9e9e9e}.mx_DateSeparator>hr{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:0;border:none;border-bottom:1px solid transparent}.mx_DateSeparator>div{margin:0 25px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_EventTileBubble{background-color:#f2f5f8;padding:10px;border-radius:8px;margin:10px auto;max-width:75%;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:24px minmax(0,1fr) -webkit-min-content;grid-template-columns:24px minmax(0,1fr) min-content}.mx_EventTileBubble:after,.mx_EventTileBubble:before{position:relative;grid-column:1;grid-row:1/3;width:16px;height:16px;content:"";top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;margin-top:4px}.mx_EventTileBubble .mx_EventTileBubble_subtitle,.mx_EventTileBubble .mx_EventTileBubble_title{overflow-wrap:break-word}.mx_EventTileBubble .mx_EventTileBubble_title{font-weight:600;font-size:1.5rem;grid-column:2;grid-row:1}.mx_EventTileBubble .mx_EventTileBubble_subtitle{font-size:1.2rem;grid-column:2;grid-row:2}.mx_MEmoteBody{white-space:pre-wrap}.mx_MEmoteBody_sender{cursor:pointer}.mx_MFileBody_download{color:#0dbd8b}.mx_MFileBody_download .mx_MFileBody_download_icon{width:12px;height:12px;-webkit-mask-size:12px;mask-size:12px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/download.4f331f0.svg);mask-image:url(../../img/download.4f331f0.svg);background-color:#0dbd8b;display:inline-block}.mx_MFileBody_download a{color:#0dbd8b;text-decoration:none;cursor:pointer}.mx_MFileBody_download object{margin-left:-16px;padding-right:4px;margin-top:-4px;vertical-align:middle;pointer-events:none}.mx_MFileBody_download iframe{margin:0;padding:0;border:none;width:100%;height:1.5em}.mx_MFileBody_info{background-color:#e3e8f0;border-radius:12px;width:243px;padding:6px 12px;color:#737d8c}.mx_MFileBody_info .mx_MFileBody_info_icon{background-color:#fff;border-radius:20px;display:inline-block;width:32px;height:32px;position:relative;vertical-align:middle;margin-right:12px}.mx_MFileBody_info .mx_MFileBody_info_icon:before{content:"";-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg);mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg);background-color:#737d8c;width:13px;height:15px;position:absolute;top:8px;left:9px}.mx_MFileBody_info .mx_MFileBody_info_filename{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;display:inline-block;width:calc(100% - 44px);vertical-align:middle}.mx_MImageBody{display:block;margin-right:34px}.mx_MImageBody_thumbnail{position:absolute;width:100%;height:100%;left:0;top:0;border-radius:4px}.mx_MImageBody_thumbnail_container{overflow:hidden;position:relative}.mx_MImageBody_thumbnail_spinner{position:absolute;left:50%;top:50%}.mx_MImageBody_thumbnail_spinner>*{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.mx_MImageBody_gifLabel{position:absolute;display:block;top:0;left:14px;padding:5px;border-radius:5px;background:rgba(0,0,0,.7);border:2px solid rgba(0,0,0,.2);color:#fff;pointer-events:none}.mx_HiddenImagePlaceholder{position:absolute;left:0;top:0;bottom:0;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;cursor:pointer;background-color:#f3f8fd}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button{color:#0dbd8b}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span.mx_HiddenImagePlaceholder_eye{margin-right:8px;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span:not(.mx_HiddenImagePlaceholder_eye){vertical-align:text-bottom}.mx_EventTile:hover .mx_HiddenImagePlaceholder{background-color:#fff}.mx_MJitsiWidgetEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_MNoticeBody{white-space:pre-wrap;opacity:.6}.mx_MStickerBody_wrapper{padding:20px 0}.mx_MStickerBody_tooltip{position:absolute;top:50%}.mx_MStickerBody_hidden{max-width:220px;text-decoration:none;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MTextBody{white-space:pre-wrap}span.mx_MVideoBody video.mx_MVideoBody{max-width:100%;height:auto;border-radius:4px}.mx_MVoiceMessageBody{display:inline-block}.mx_MessageActionBar{position:absolute;visibility:hidden;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;height:24px;line-height:2.4rem;border-radius:4px;background:#fff;top:-26px;right:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_MessageActionBar:before{content:"";position:absolute;width:calc(66px + 100%);height:calc(20px + 100%);top:-12px;left:-58px;z-index:-1;cursor:auto}.mx_MessageActionBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageActionBar>:hover{border-color:#ddd;z-index:1}.mx_MessageActionBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageActionBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageActionBar>:only-child{border-radius:3px}.mx_MessageActionBar_maskButton{width:27px}.mx_MessageActionBar_maskButton:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-size:18px;mask-size:18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageActionBar_reactButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_MessageActionBar_replyButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg);mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg)}.mx_MessageActionBar_editButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg);mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg)}.mx_MessageActionBar_optionsButton:after{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_MessageActionBar_resendButton:after{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg)}.mx_MessageActionBar_cancelButton:after{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageTimestamp{color:#acacac;font-size:1rem;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mx_MjolnirBody{opacity:.4}.mx_ReactionsRow{margin:6px 0;color:#2e2f32}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton{position:relative;display:inline-block;visibility:hidden;width:24px;height:24px;vertical-align:middle;margin-left:4px}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before{content:"";position:absolute;height:100%;width:100%;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active{visibility:visible}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before,.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before{background-color:#2e2f32}.mx_EventTile:hover .mx_ReactionsRow_addReactionButton{visibility:visible}.mx_ReactionsRow_showAll{text-decoration:none;font-size:1.2rem;line-height:2rem;margin-left:4px;vertical-align:middle}.mx_ReactionsRow_showAll:link,.mx_ReactionsRow_showAll:visited{color:#8d99a5}.mx_ReactionsRow_showAll:hover{color:#2e2f32}.mx_ReactionsRowButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid #e9edf1;border-radius:10px;background-color:#f3f8fd;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.mx_ReactionsRowButton:hover{border-color:#ddd}.mx_ReactionsRowButton.mx_ReactionsRowButton_selected{background-color:#e9fff9;border-color:#0dbd8b}.mx_ReactionsRowButton.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_ReactionsRowButton .mx_ReactionsRowButton_content{max-width:100px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:4px}.mx_RedactedBody{white-space:pre-wrap;color:#61708b;vertical-align:middle;padding-left:20px;position:relative}.mx_RedactedBody:before{height:14px;width:14px;background-color:#61708b;-webkit-mask-image:url(../../img/feather-customised/trash.custom.1e6ecd4.svg);mask-image:url(../../img/feather-customised/trash.custom.1e6ecd4.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;content:"";position:absolute;top:1px;left:0}.mx_RoomAvatarEvent{opacity:.5;overflow-y:hidden}.mx_RoomAvatarEvent_avatar{display:inline;position:relative;top:5px}.mx_SenderProfile_name{font-weight:600}.mx_TextualEvent{opacity:.5;overflow-y:hidden}.mx_UnknownBody{white-space:pre-wrap}.mx_EventTile_content.mx_ViewSourceEvent{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:.6;font-size:1.2rem}.mx_EventTile_content.mx_ViewSourceEvent code,.mx_EventTile_content.mx_ViewSourceEvent pre{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EventTile_content.mx_ViewSourceEvent pre{line-height:1.2;margin:3.5px 0}.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle{width:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;visibility:hidden;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle{-webkit-mask-position:0 bottom;mask-position:0 bottom;margin-bottom:7px;-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle{visibility:visible}.mx_cryptoEvent.mx_cryptoEvent_icon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_cryptoEvent.mx_cryptoEvent_icon:after,.mx_cryptoEvent.mx_cryptoEvent_icon:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_cryptoEvent.mx_cryptoEvent_icon:after{background-color:#91a1c0}.mx_cryptoEvent.mx_cryptoEvent_icon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_cryptoEvent.mx_cryptoEvent_icon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_cryptoEvent .mx_cryptoEvent_buttons,.mx_cryptoEvent .mx_cryptoEvent_state{grid-column:3;grid-row:1/3}.mx_cryptoEvent .mx_cryptoEvent_buttons{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_cryptoEvent .mx_cryptoEvent_state{width:130px;padding:10px 20px;margin:auto 0;text-align:center;color:#8d99a5;overflow-wrap:break-word;font-size:1.2rem}.mx_BaseCard{padding:0 8px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_BaseCard .mx_BaseCard_header{margin:8px 0}.mx_BaseCard .mx_BaseCard_header>h2{margin:0 44px;font-size:1.8rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{position:absolute;background-color:rgba(141,151,165,.2);height:20px;width:20px;margin:12px;top:0;border-radius:10px}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{content:"";position:absolute;height:20px;width:20px;top:0;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#91a1c0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back{left:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-size:22px;mask-size:22px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{right:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg);-webkit-mask-size:8px;mask-size:8px}.mx_BaseCard .mx_AutoHideScrollbar{margin-right:-8px;padding-right:8px;min-height:0;width:100%;height:100%}.mx_BaseCard .mx_BaseCard_Group{margin:20px 0 16px}.mx_BaseCard .mx_BaseCard_Group>*{margin-left:12px;margin-right:12px}.mx_BaseCard .mx_BaseCard_Group>h1{color:#8d99a5;font-size:1.2rem;font-weight:500}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button{padding:10px 38px 10px 12px;margin:0;position:relative;font-size:1.3rem;height:20px;line-height:20px;border-radius:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover{background-color:rgba(141,151,165,.1)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after{content:"";position:absolute;top:10px;right:6px;height:20px;width:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled{padding-right:12px}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled:after{content:unset}.mx_BaseCard .mx_BaseCard_footer{padding-top:4px;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary{color:#737d8c;background-color:rgba(141,151,165,.2);font-weight:600;font-size:1.4rem}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_FilePanel.mx_BaseCard,.mx_MemberList.mx_BaseCard,.mx_NotificationPanel.mx_BaseCard,.mx_UserInfo.mx_BaseCard{padding:32px 0 0}.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar,.mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{margin-right:unset;padding-right:unset}.mx_EncryptionInfo_spinner .mx_Spinner{margin-top:25px;margin-bottom:15px}.mx_EncryptionInfo_spinner{text-align:center}.mx_RoomSummaryCard .mx_BaseCard_header{text-align:center;margin-top:20px}.mx_RoomSummaryCard .mx_BaseCard_header h2{font-weight:600;font-size:1.8rem;margin:12px 0 4px}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias{font-size:1.3rem;color:#737d8c}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias,.mx_RoomSummaryCard .mx_BaseCard_header h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee{display:inline-block;position:relative;width:54px;height:54px;border-radius:50%;background-color:#737d8c;margin-top:-3px;margin-left:-10px;border:3px solid #f2f5f8}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee:before{content:"";position:absolute;top:13px;left:13px;height:28px;width:28px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/e2e/disabled.6c5c6be.svg);mask-image:url(../../img/e2e/disabled.6c5c6be.svg);background-color:#fff}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal{background-color:#424446}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified:before{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning{background-color:#ff4b55}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning:before{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button{padding-left:44px}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button:before{content:"";position:absolute;top:8px;left:10px;height:24px;width:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button{padding:0;height:auto;color:#8d99a5}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app{padding:10px 48px 10px 12px;text-overflow:ellipsis;overflow:hidden}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app .mx_BaseAvatar_image{vertical-align:top;margin-right:12px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app span{color:#2e2f32}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{position:absolute;top:0;height:100%;width:24px;padding:12px 4px;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:hover:after,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:hover:after{content:"";position:absolute;height:24px;width:24px;top:8px;left:0;border-radius:12px;background-color:rgba(141,151,165,.1)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{content:"";position:absolute;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{right:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{-webkit-mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg);mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options{right:48px;display:none}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after{opacity:.2}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned .mx_RoomSummaryCard_app_pinToggle:before{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_icon_app{padding-right:72px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_app_options{display:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:before{content:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:after{top:8px;pointer-events:none}.mx_RoomSummaryCard .mx_AccessibleButton_kind_link{padding:0;margin-top:12px;margin-bottom:12px;font-size:1.3rem;font-weight:600}.mx_RoomSummaryCard_icon_people:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_RoomSummaryCard_icon_files:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_RoomSummaryCard_icon_share:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_RoomSummaryCard_icon_settings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserInfo.mx_BaseCard{padding-top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;font-size:1.2rem}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel{cursor:pointer;position:absolute;top:0;border-radius:4px;background-color:#f2f5f8;margin:9px;z-index:1}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div{height:16px;width:16px;padding:4px;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:7px center;mask-position:7px center;background-color:#91a1c0}.mx_UserInfo.mx_BaseCard h2{font-size:1.8rem;font-weight:600;margin:18px 0 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container{padding:8px 16px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator{border-bottom:1px solid rgba(46,47,50,.1)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer{padding-top:0;padding-bottom:0;margin-bottom:8px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer{width:154px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge{display:none}.mx_UserInfo.mx_BaseCard .mx_RoomTile_name{width:160px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar{margin:24px 32px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div{max-width:30vh;margin:0 auto;-webkit-transition:.5s;transition:.5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div{padding-top:100%;position:relative}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div *{border-radius:100%;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:6rem!important;width:100%!important;-webkit-transition:font-size .5s;transition:font-size .5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_UserInfo.mx_BaseCard h3{text-transform:uppercase;color:#8d99a5;font-weight:600;font-size:1.2rem;margin:4px 0}.mx_UserInfo.mx_BaseCard p{margin:5px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile{text-align:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.8rem;line-height:2.5rem;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;word-break:break-all;text-overflow:ellipsis}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon{margin-top:3px;margin-right:4px;min-width:18px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus{margin-top:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField{margin:6px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField,.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{margin:11px 0 12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_Field{margin:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field{cursor:pointer;color:#0dbd8b;line-height:1.6rem;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator){padding-top:16px;padding-bottom:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator)>:not(h3){margin-left:8px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device{display:-webkit-box;display:-ms-flexbox;display:flex;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_verified .mx_UserInfo_device_trusted{color:#0dbd8b}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_unverified .mx_UserInfo_device_trusted{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device .mx_UserInfo_device_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:5px;word-break:break-word}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px 5px 0 0;width:12px;height:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:11px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind{padding:8px 18px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton,.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton{display:block;margin:16px 0 8px}.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton+.mx_AccessibleButton{margin:8px 0}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar>div{max-width:72px;margin:0 auto}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_BaseAvatar_initial{font-size:40px!important}.mx_VerificationPanel_reciprocate_section .mx_E2EIcon,.mx_VerificationPanel_verified_section .mx_E2EIcon{margin:20px auto!important}.mx_UserInfo .mx_EncryptionPanel_cancel{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#61708b;cursor:pointer;position:absolute;z-index:100;top:14px;right:14px}.mx_UserInfo .mx_VerificationPanel_qrCode{padding:4px 4px 0;background:#fff;border-radius:4px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;margin:0 auto!important}.mx_UserInfo .mx_VerificationPanel_qrCode canvas{height:auto!important;width:100%!important;max-width:240px}.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_FormButton{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px;display:block;margin:10px 0}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:10px;margin-bottom:10px;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText{width:50px;vertical-align:middle;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption{background-color:#f3f8fd;border-radius:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;max-width:310px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas{width:220px!important;height:220px!important;background-color:#fff;border-radius:4px;vertical-align:middle;text-align:center;padding:10px}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p{margin-top:0;font-weight:700}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText{font-size:1.4rem;margin:30px 0;text-align:center}.mx_CompleteSecurity_body .mx_VerificationPanel_verified_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton{float:right}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton{margin-left:10px;padding:7px 40px}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_WidgetCard{height:100%;display:contents}.mx_WidgetCard .mx_AppTileFullWidth{max-width:unset;height:100%;border:0}.mx_WidgetCard .mx_BaseCard_header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_WidgetCard .mx_BaseCard_header>h2{margin-right:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton{position:relative;margin-right:44px;height:20px;width:20px;min-width:20px;padding:0}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before{content:"";position:absolute;width:20px;height:20px;top:0;left:4px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);background-color:#737d8c}.mx_WidgetCard_maxPinnedTooltip{background-color:#ff4b55;color:#fff}.mx_AliasSettings_editable{border:0;border-bottom:1px solid #c7c7c7;padding:0;min-width:240px}.mx_AliasSettings_editable:focus{border-bottom:1px solid #0dbd8b;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_AliasSettings summary{cursor:pointer;color:#0dbd8b;font-weight:600;list-style:none}.mx_AliasSettings summary::-webkit-details-marker{display:none}.mx_AliasSettings .mx_AliasSettings_localAliasHeader{margin-top:35px}.mx_AppsDrawer{margin:5px 5px 5px 18px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer{width:100%;height:10px;margin-top:-3px;display:block;position:relative}.mx_AppsDrawer .mx_AppsContainer_resizerHandle{cursor:ns-resize;width:100%!important;height:100%!important;position:absolute;bottom:0!important}.mx_AppsDrawer .mx_AppsContainer_resizerHandle:after{content:"";position:absolute;border-radius:3px;top:6px;bottom:0;left:calc(50% - 32px);right:calc(50% - 32px)}.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after{opacity:.8;background:#2e2f32}.mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before{position:absolute;left:3px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:"";background-color:#2e2f32;opacity:.8}.mx_AppsContainer_resizer{margin-bottom:8px}.mx_AppsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_AppsContainer .mx_AppTile:first-of-type{border-left-width:8px;border-radius:10px 0 0 10px}.mx_AppsContainer .mx_AppTile:last-of-type{border-right-width:8px;border-radius:0 10px 10px 0}.mx_AppsContainer .mx_ResizeHandle_horizontal{position:relative}.mx_AppsContainer .mx_ResizeHandle_horizontal>div{width:0}.mx_AppsDrawer_2apps .mx_AppTile{width:50%}.mx_AppsDrawer_2apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppsDrawer_3apps .mx_AppTile{width:33%}.mx_AppsDrawer_3apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppTile{width:50%;min-width:240px;border-color:#f2f5f8;border-style:solid;border-width:8px 5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#f2f5f8}.mx_AppTileFullWidth{width:100%!important;border:5px solid #f2f5f8;border-radius:8px;background-color:#f2f5f8}.mx_AppTile_mini,.mx_AppTileFullWidth{margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AppTile_mini{width:100%;height:200px}.mx_AppTile .mx_AppTile_persistedWrapper,.mx_AppTile_mini .mx_AppTile_persistedWrapper,.mx_AppTileFullWidth .mx_AppTile_persistedWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTile_persistedWrapper div{width:100%;height:100%}.mx_AppTileMenuBar{margin:0;font-size:1.2rem;background-color:#f2f5f8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%;padding-top:2px;padding-bottom:8px}.mx_AppTileMenuBarTitle{line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_AppTileMenuBarTitle .mx_WidgetAvatar{margin-right:12px}.mx_AppTileMenuBarTitle>:last-child{margin-left:9px}.mx_AppTileMenuBarWidgets{float:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AppTileMenuBar_iconButton{width:12px;height:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;background-color:#212121;margin:0 3px}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout{-webkit-mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg);mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg)}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_AppTileBody{height:100%;background-color:#fff}.mx_AppTileBody,.mx_AppTileBody_mini{width:100%;overflow:hidden;border-radius:8px}.mx_AppTileBody_mini{height:200px}.mx_AppTile .mx_AppTileBody,.mx_AppTile_mini .mx_AppTileBody_mini,.mx_AppTileFullWidth .mx_AppTileBody{height:inherit;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTileBody_mini iframe,.mx_AppTileBody iframe{border:none;width:100%;height:100%}.mx_AppTileBody iframe{overflow:hidden;padding:0;margin:0;display:block}.mx_AppPermissionWarning{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.6rem}.mx_AppPermissionWarning_row{margin-bottom:12px}.mx_AppPermissionWarning_smallText{font-size:1.2rem}.mx_AppPermissionWarning_bolder{font-weight:600}.mx_AppPermissionWarning h4{margin:0;padding:0}.mx_AppPermissionWarning_helpIcon{margin-top:1px;margin-right:2px;width:10px;height:10px;display:inline-block}.mx_AppPermissionWarning_helpIcon:before{display:inline-block;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:12px;mask-size:12px;width:12px;height:12px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg);mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg)}.mx_AppPermissionWarning_tooltip{-webkit-box-shadow:none;box-shadow:none;background-color:#27303a;color:#fff;border:none;border-radius:3px;padding:6px 8px}.mx_AppPermissionWarning_tooltip ul{list-style-position:inside;padding-left:2px;margin-left:0}.mx_AppLoading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;position:relative;height:100%;background-color:#fff!important;border-radius:8px}.mx_AppLoading .mx_Spinner{position:absolute;top:0;bottom:0;left:0;right:0}.mx_AppLoading_spinner_fadeIn{-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:.5s;animation-delay:.5s;-webkit-animation-name:mx_AppLoading_spinner_fadeIn_animation;animation-name:mx_AppLoading_spinner_fadeIn_animation}@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}@keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}.mx_AppLoading iframe{display:none}.mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper{z-index:1}.mx_Autocomplete{position:absolute;bottom:0;z-index:1001;width:100%;background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_Autocomplete_ProviderSection{border-bottom:1px solid transparent}.mx_Autocomplete_Completion_block{height:34px;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_block *{margin:0 3px}.mx_Autocomplete_Completion_pill{-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2rem;height:3.4rem;padding:.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_pill>*{margin-right:.3rem}.mx_Autocomplete_Completion_subtitle{font-style:italic;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Autocomplete_Completion_description{color:grey}.mx_Autocomplete_Completion_container_pill{margin:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_Autocomplete_Completion.selected,.mx_Autocomplete_Completion:hover{background:#f2f5f8;outline:none}.mx_Autocomplete_provider_name{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.m_RoomView_auxPanel_stateViews{padding:5px 5px 5px 19px;border-bottom:1px solid transparent}.m_RoomView_auxPanel_stateViews_span a{text-decoration:none;color:inherit}.m_RoomView_auxPanel_stateViews_span[data-severity=warning]{font-weight:700;color:orange}.m_RoomView_auxPanel_stateViews_span[data-severity=alert]{font-weight:700;color:red}.m_RoomView_auxPanel_stateViews_span[data-severity=normal]{font-weight:400}.m_RoomView_auxPanel_stateViews_span[data-severity=notice]{font-weight:400;color:#a2a2a2}.m_RoomView_auxPanel_stateViews_delim{padding:0 5px;color:#a2a2a2}.mx_BasicMessageComposer{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_inputEmpty>:first-child:before{content:var(--placeholder);opacity:.333;width:0;height:0;overflow:visible;display:inline-block;pointer-events:none;white-space:nowrap}@-webkit-keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_BasicMessageComposer .mx_BasicMessageComposer_input{white-space:pre-wrap;word-wrap:break-word;outline:none;overflow-x:hidden}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill:before,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill:before{content:var(--avatar-letter);width:1.6rem;height:1.6rem;margin-right:.24rem;background:var(--avatar-background),#fff;color:#fff;background-repeat:no-repeat;background-size:1.6rem;border-radius:1.6rem;text-align:center;font-weight:400;line-height:1.6rem;font-size:1.04rem}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled{pointer-events:none}.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper{position:relative;height:0}.mx_E2EIcon{width:16px;height:16px;margin:0 9px;position:relative;display:block}.mx_E2EIcon_normal:after,.mx_E2EIcon_normal:before,.mx_E2EIcon_verified:after,.mx_E2EIcon_verified:before,.mx_E2EIcon_warning:after,.mx_E2EIcon_warning:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_E2EIcon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_E2EIcon:before,.mx_E2EIcon_bordered{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_E2EIcon_bordered{background-color:#f3f8fd}.mx_E2EIcon_bordered:after{-webkit-mask-size:75%;mask-size:75%}.mx_E2EIcon_bordered:before{-webkit-mask-size:65%;mask-size:65%}.mx_E2EIcon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_E2EIcon_normal:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_E2EIcon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_EditMessageComposer{padding:3px;margin:-7px -10px -5px;overflow:visible!important}.mx_EditMessageComposer .mx_BasicMessageComposer_input{border-radius:4px;border:1px solid transparent;background-color:#fff;max-height:200px;padding:3px 6px}.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus{border-color:rgba(13,189,139,.5)}.mx_EditMessageComposer .mx_EditMessageComposer_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;left:0;background:#f3f8fd;z-index:100;right:0;margin:0 -110px 0 0;padding:5px 147px 5px 5px}.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton{margin-left:5px;padding:5px 40px}.mx_EventTile_last .mx_EditMessageComposer_buttons{position:static;margin-right:-147px}.mx_EntityTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32;cursor:pointer}.mx_EntityTile .mx_E2EIcon{margin:0;position:absolute;bottom:2px;right:7px}.mx_EntityTile:hover{padding-right:30px;position:relative}.mx_EntityTile:hover:before{content:"";position:absolute;top:calc(50% - 8px);right:-8px;-webkit-mask:url(../../img/member_chevron.4163a20.png);mask:url(../../img/member_chevron.4163a20.png);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:16px;height:16px;background-color:#91a1c0}.mx_EntityTile .mx_PresenceLabel{display:none}.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel{display:block}.mx_EntityTile_invite{display:table-cell;vertical-align:middle;margin-left:10px;width:26px}.mx_EntityTile_avatar,.mx_GroupRoomTile_avatar{padding:4px 12px 4px 3px;position:relative}.mx_EntityTile_name,.mx_GroupRoomTile_name{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow:hidden;font-size:1.4rem;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile_details{overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EntityTile_ellipsis .mx_EntityTile_name,.mx_EntityTile_invitePlaceholder .mx_EntityTile_name{font-style:italic;color:#2e2f32}.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar,.mx_EntityTile_offline_beenactive .mx_EntityTile_name,.mx_EntityTile_unavailable .mx_EntityTile_avatar,.mx_EntityTile_unavailable .mx_EntityTile_name{opacity:.5}.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar,.mx_EntityTile_offline_neveractive .mx_EntityTile_name,.mx_EntityTile_unknown .mx_EntityTile_avatar,.mx_EntityTile_unknown .mx_EntityTile_name{opacity:.25}.mx_EntityTile_subtext{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_EntityTile_power{-webkit-padding-start:6px;padding-inline-start:6px;font-size:1rem;color:#8d99a5;max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile:hover .mx_EntityTile_power{display:none}.mx_EventTile{max-width:100%;clear:both;padding-top:18px;font-size:1.4rem;position:relative}.mx_EventTile.mx_EventTile_info{padding-top:1px}.mx_EventTile_avatar{top:14px;left:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:.6rem;left:64px}.mx_EventTile_continuation{padding-top:0!important}.mx_EventTile_continuation.mx_EventTile_isEditing{padding-top:5px!important;margin-top:-5px}.mx_EventTile_isEditing{background-color:#f3f8fd}.mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.4rem;display:inline-block;overflow:hidden;cursor:pointer;padding-bottom:0;padding-top:0;margin:0;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 64px)}.mx_EventTile .mx_SenderProfile .mx_Flair{opacity:.7;margin-left:5px;display:inline-block;vertical-align:top;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile .mx_SenderProfile .mx_Flair img{vertical-align:-2px;margin-right:2px;border-radius:8px}.mx_EventTile_isEditing .mx_MessageTimestamp{visibility:hidden!important}.mx_EventTile .mx_MessageTimestamp{display:block;visibility:hidden;white-space:nowrap;left:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile_continuation .mx_EventTile_line{clear:both}.mx_EventTile_line,.mx_EventTile_reply{position:relative;padding-left:64px;border-radius:4px}.mx_EventListSummary .mx_EventTile_line,.mx_RoomView_timeline_rr_enabled .mx_EventTile_line{margin-right:110px}.mx_EventTile_bubbleContainer{display:grid;grid-template-columns:1fr 100px}.mx_EventTile_bubbleContainer .mx_EventTile_line{margin-right:0;grid-column:1/3;padding:0!important}.mx_EventTile_bubbleContainer .mx_EventTile_msgOption{grid-column:2}.mx_EventTile_reply{margin-right:10px}.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji{font-size:48px!important;line-height:57px!important}.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp{visibility:visible}.mx_EventTile_selected>div>a>.mx_MessageTimestamp{left:3px;width:auto}.mx_EventTile.focus-visible:focus-within>div>a>.mx_MessageTimestamp,.mx_EventTile.mx_EventTile_actionBarFocused>div>a>.mx_MessageTimestamp,.mx_EventTile:hover>div>a>.mx_MessageTimestamp,.mx_EventTile_last>div>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.focus-visible:focus-within>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.mx_EventTile_actionBarFocused>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile:hover>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile_last>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_ReplyThread .mx_EventTile>a>.mx_MessageTimestamp{visibility:visible}.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar,.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar,.mx_EventTile:hover .mx_MessageActionBar,[data-whatinput=keyboard] .mx_EventTile:focus-within .mx_MessageActionBar{visibility:visible}.mx_EventTile_selected>.mx_EventTile_line{border-left:4px solid #0dbd8b;padding-left:60px;background-color:#f6f7f8}.mx_EventTile_highlight,.mx_EventTile_highlight .markdown-body{color:#ff4b55}.mx_EventTile_highlight .markdown-body .mx_EventTile_line,.mx_EventTile_highlight .mx_EventTile_line{background-color:#fff8e3}.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile.focus-visible:focus-within .mx_EventTile_line,.mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line,.mx_EventTile:hover .mx_EventTile_line{background-color:#f6f7f8}.mx_EventTile_searchHighlight{border-radius:5px;padding-left:2px;padding-right:2px;cursor:pointer}.mx_EventTile_searchHighlight,.mx_EventTile_searchHighlight a{background-color:#0dbd8b;color:#fff}.mx_EventTile_receiptSending:before,.mx_EventTile_receiptSent:before{background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;width:14px;height:14px;content:"";position:absolute;top:0;left:0;right:0}.mx_EventTile_receiptSent:before{-webkit-mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg);mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg)}.mx_EventTile_receiptSending:before{-webkit-mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg);mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg)}.mx_EventTile_contextual{opacity:.4}.mx_EventTile_msgOption{float:right;text-align:right;position:relative;width:90px;height:1px;margin-right:10px}.mx_EventTile_msgOption a{text-decoration:none}.mx_EventTile_readAvatars{position:relative;display:inline-block;width:14px;height:14px;top:-2.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_EventTile_readAvatars .mx_BaseAvatar{position:absolute;display:inline-block;height:1.4rem;width:1.4rem;-webkit-transition:left .1s ease-out,top .3s ease-out;transition:left .1s ease-out,top .3s ease-out;-webkit-transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out;transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out}.mx_EventTile_readAvatarRemainder{color:#acacac;font-size:1.1rem;position:absolute}.mx_EventTile_content{display:block;overflow-y:hidden;overflow-x:hidden;margin-right:34px}.mx_EventTile_body{overflow-y:hidden}.mx_EventTile_spoiler{cursor:pointer}.mx_EventTile_spoiler_reason{color:#acacac;font-size:1.1rem}.mx_EventTile_spoiler_content{-webkit-filter:blur(5px) saturate(.1) sepia(1);filter:blur(5px) saturate(.1) sepia(1);-webkit-transition-duration:.5s;transition-duration:.5s}.mx_EventTile_spoiler.visible>.mx_EventTile_spoiler_content{-webkit-filter:none;filter:none}.mx_EventTile_e2eIcon{position:absolute;top:6px;left:44px;width:14px;height:14px;display:block;bottom:0;right:0;opacity:.2;background-repeat:no-repeat;background-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-size:contain;mask-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_EventTile_e2eIcon:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_EventTile_e2eIcon_undecryptable:after,.mx_EventTile_e2eIcon_unverified:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_undecryptable,.mx_EventTile_e2eIcon_unverified{opacity:1}.mx_EventTile_e2eIcon_unknown:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unknown{opacity:1}.mx_EventTile_e2eIcon_unencrypted:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unencrypted{opacity:1}.mx_EventTile_e2eIcon_unauthenticated:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_EventTile_e2eIcon_unauthenticated{opacity:1}.mx_EventTile_keyRequestInfo{font-size:1.2rem}.mx_EventTile_keyRequestInfo_text{opacity:.5}.mx_EventTile_keyRequestInfo_text a{color:#2e2f32;text-decoration:underline;cursor:pointer}.mx_EventTile_keyRequestInfo_tooltip_contents p{text-align:auto;margin-left:3px;margin-right:3px}.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child{margin-top:0}.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child{margin-bottom:0}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:60px}.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{border-left:4px solid #76cfa5}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line{border-left:4px solid #e8bf37}.mx_EventTile:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile:hover .mx_EventTile_e2eIcon{opacity:1}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>a>.mx_MessageTimestamp{width:38px}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>.mx_EventTile_e2eIcon{display:block;left:41px}.mx_EventTile_content .mx_EventTile_edited{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.2rem;color:#9e9e9e;display:inline-block;margin-left:9px;cursor:pointer}.mx_EventTile_body pre{border:1px solid transparent}.mx_EventTile_content .markdown-body{font-family:inherit!important;white-space:normal!important;line-height:inherit!important;color:inherit;font-size:1.4rem}.mx_EventTile_content .markdown-body code,.mx_EventTile_content .markdown-body pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji!important;color:#333}.mx_EventTile_content .markdown-body pre{overflow-x:overlay;overflow-y:visible}.mx_EventTile_content .markdown-body code{background-color:#f8f8f8}.mx_EventTile_lineNumbers{float:left;margin:0 .5em 0 -1.5em;color:grey}.mx_EventTile_lineNumber{text-align:right;display:block;padding-left:1em}.mx_EventTile_collapsedCodeBlock{max-height:30vh}.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre,.mx_EventTile:hover .mx_EventTile_body pre{border:1px solid #e5e5e5}.mx_EventTile_pre_container{position:relative}.mx_EventTile_button{position:absolute;display:inline-block;visibility:hidden;cursor:pointer;top:8px;right:8px;width:19px;height:19px;background-color:#2e2f32}.mx_EventTile_buttonBottom{top:33px}.mx_EventTile_copyButton{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg)}.mx_EventTile_collapseButton{-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_collapseButton,.mx_EventTile_expandButton{-webkit-mask-size:75%;mask-size:75%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_EventTile_expandButton{-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_expandButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_expandButton{visibility:visible}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2,.mx_EventTile_content .markdown-body h3,.mx_EventTile_content .markdown-body h4,.mx_EventTile_content .markdown-body h5,.mx_EventTile_content .markdown-body h6{font-family:inherit!important;color:inherit}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2{font-size:1.5em;border-bottom:none!important}.mx_EventTile_content .markdown-body a{color:#238cf5}.mx_EventTile_content .markdown-body .hljs{display:inline!important}.mx_EventTile_tileError{color:red;text-align:center;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line{padding-left:0;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line span{padding:4px 8px}.mx_EventTile_tileError a{margin-left:1em}@media only screen and (max-width:480px){.mx_EventTile_line,.mx_EventTile_reply{padding-left:0;margin-right:0}.mx_EventTile_content{margin-top:10px;margin-right:0}}.mx_GroupLayout .mx_EventTile>.mx_SenderProfile{line-height:2rem;margin-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_line{padding-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_avatar{position:absolute}.mx_GroupLayout .mx_EventTile .mx_MessageTimestamp{position:absolute;width:46px}.mx_GroupLayout .mx_EventTile .mx_EventTile_line,.mx_GroupLayout .mx_EventTile .mx_EventTile_reply{padding-top:1px;padding-bottom:3px;line-height:2.2rem}.mx_GroupLayout .mx_EventTile_info .mx_EventTile_line{padding-left:82px}.mx_MatrixChat_useCompactLayout .mx_EventTile{padding-top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info{padding-top:0;font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote{padding-top:8px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply{padding-top:0;padding-bottom:1px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation{padding-top:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon{top:3px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars{top:-2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body blockquote,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body dl,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ol,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body p,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body pre,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body table,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ul{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2{margin-top:6px}.mx_IRCLayout{--name-width:70px;line-height:1.8rem!important}.mx_IRCLayout .mx_EventTile>a{text-decoration:none}.mx_IRCLayout .mx_EventTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding-top:0}.mx_IRCLayout .mx_EventTile>*{margin-right:5px}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;-ms-flex-negative:0;flex-shrink:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption .mx_EventTile_readAvatars{top:.2rem}.mx_IRCLayout .mx_EventTile>.mx_SenderProfile{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-ms-flex-negative:0;flex-shrink:0;width:var(--name-width);text-overflow:ellipsis;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_IRCLayout .mx_EventTile .mx_EventTile_line,.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-width:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;position:relative;top:0;left:0;-ms-flex-negative:0;flex-shrink:0;height:1.8rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar,.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar>*{height:1.4rem!important;width:1.4rem!important;font-size:1rem!important;line-height:1.5rem!important}.mx_IRCLayout .mx_EventTile .mx_MessageTimestamp{font-size:1rem;width:45px;text-align:right}.mx_IRCLayout .mx_EventTile>.mx_EventTile_e2eIcon{position:absolute;right:unset;left:unset;top:0;padding:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.8rem;background-position:50%}.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_ReplyThread_wrapper_empty,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent{display:inline-block}.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons{position:relative}.mx_IRCLayout .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:calc(var(--name-width) + 19px)}.mx_IRCLayout blockquote{margin:0}.mx_IRCLayout .mx_EventListSummary>.mx_EventTile_line{padding-left:calc(var(--name-width) + 74px)}.mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars{padding:0;margin:0 9px 0 0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{left:calc(var(--name-width) + 24px);top:0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line{left:calc(var(--name-width) + 24px)}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent{line-height:1.8rem}.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:0;border-left:0}.mx_IRCLayout .mx_SenderProfile_hover{background-color:#fff;overflow:hidden}.mx_IRCLayout .mx_SenderProfile_hover>span{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_IRCLayout .mx_SenderProfile_hover>span>.mx_SenderProfile_name{overflow:hidden;text-overflow:ellipsis;min-width:var(--name-width);text-align:end}.mx_IRCLayout .mx_SenderProfile:hover{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_IRCLayout .mx_SenderProfile_hover:hover{overflow:visible;width:max(auto,100%);z-index:10}.mx_IRCLayout .mx_ReplyThread{margin:0}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile{width:unset;max-width:var(--name-width)}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover{background:transparent}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover>span>.mx_SenderProfile_name{min-width:inherit}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:0}.mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp{width:auto}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon{position:relative;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mx_IRCLayout .mx_ProfileResizer{position:absolute;height:100%;width:15px;left:calc(80px + var(--name-width));cursor:col-resize;z-index:100}.mx_IRCLayout .mx_Flair>img{height:1.4rem!important;width:1.4rem!important}.mx_JumpToBottomButton{z-index:1000;position:absolute;bottom:12px;right:24px;width:38px;height:50px;text-align:center}.mx_JumpToBottomButton_badge{position:relative;top:-12px;border-radius:16px;font-weight:700;font-size:1.2rem;line-height:1.4rem;text-align:center;display:inline-block;padding:0 4px;color:#fff;background-color:#61708b}.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge{color:#f2f5f8;background-color:#ff4b55}.mx_JumpToBottomButton_scrollDown{position:relative;height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_JumpToBottomButton_scrollDown:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b}.mx_LinkPreviewWidget{margin-top:15px;margin-right:15px;margin-bottom:15px;display:-webkit-box;display:-ms-flexbox;display:flex;border-left:4px solid #ddd;color:#888}.mx_LinkPreviewWidget_image{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;margin-left:15px;text-align:center;cursor:pointer}.mx_LinkPreviewWidget_caption{margin-left:15px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_LinkPreviewWidget_title{display:inline;font-weight:700;white-space:normal}.mx_LinkPreviewWidget_siteName{display:inline}.mx_LinkPreviewWidget_description{margin-top:8px;white-space:normal;word-wrap:break-word}.mx_LinkPreviewWidget_cancel{cursor:pointer;width:18px;height:18px}.mx_LinkPreviewWidget_cancel img{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;visibility:hidden}.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel img,.mx_LinkPreviewWidget_cancel.focus-visible:focus img{visibility:visible}.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget{margin-top:6px;margin-bottom:6px}.mx_MemberInfo{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;margin-top:8px}.mx_MemberInfo,.mx_MemberInfo_name{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_MemberInfo_name{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MemberInfo_name>.mx_E2EIcon{margin-right:0}.mx_MemberInfo_cancel{height:16px;width:16px;padding:10px 0 10px 10px;cursor:pointer;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:16px center;mask-position:16px center;background-color:#91a1c0}.mx_MemberInfo_name h2{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-x:auto;max-height:50px}.mx_MemberInfo h2{font-size:1.8rem;font-weight:600;margin:16px 0 16px 15px}.mx_MemberInfo_container{margin:0 16px 16px}.mx_MemberInfo .mx_RoomTile_nameContainer{width:154px}.mx_MemberInfo .mx_RoomTile_badge{display:none}.mx_MemberInfo .mx_RoomTile_name{width:160px}.mx_MemberInfo_avatar{background:hsla(0,0%,91%,.77);margin-bottom:16px}.mx_MemberInfo_avatar>img{height:auto;width:100%;max-height:30vh;-o-object-fit:contain;object-fit:contain;display:block}.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_MemberInfo_profile{margin-bottom:16px}.mx_MemberInfo h3{text-transform:uppercase;color:#9fa9ba;font-weight:700;font-size:1.2rem;margin:4px 0}.mx_MemberInfo_profileField{font-size:1.5rem;position:relative}.mx_MemberInfo_buttons{margin-bottom:16px}.mx_MemberInfo_field{cursor:pointer;font-size:1.5rem;color:#2e2f32;margin-left:8px;line-height:2.3rem}.mx_MemberInfo_createRoom{cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 8px}.mx_MemberInfo_createRoom_label{width:auto!important;cursor:pointer}.mx_MemberInfo label{font-size:1.3rem}.mx_MemberInfo label .mx_MemberInfo_label_text{display:inline-block;max-width:180px;vertical-align:text-top}.mx_MemberInfo input[type=radio]{vertical-align:-2px;margin-right:5px;margin-left:8px}.mx_MemberInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_MemberInfo .mx_MemberInfo_scrollContainer{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_GroupMemberList,.mx_GroupRoomList,.mx_MemberList{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.mx_GroupMemberList .mx_Spinner,.mx_GroupRoomList .mx_Spinner,.mx_MemberList .mx_Spinner{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.mx_GroupMemberList .mx_SearchBox,.mx_GroupRoomList .mx_SearchBox,.mx_MemberList .mx_SearchBox{margin-bottom:5px}.mx_GroupMemberList h2,.mx_GroupRoomList h2,.mx_MemberList h2{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;padding-left:3px;padding-right:12px;margin-top:8px;margin-bottom:4px}.mx_GroupMemberList .mx_AutoHideScrollbar,.mx_GroupRoomList .mx_AutoHideScrollbar,.mx_MemberList .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_GroupMemberList .mx_RightPanel_scopeHeader,.mx_GroupRoomList .mx_RightPanel_scopeHeader,.mx_MemberList .mx_RightPanel_scopeHeader{margin-top:-8px}.mx_GroupMemberList_query,.mx_GroupRoomList_query{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_MemberList_chevron{position:absolute;right:35px;margin-top:-15px}.mx_MemberList_border{overflow-y:auto;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.mx_MemberList_query{height:16px}.mx_MemberList_query[type=text]{font-size:1.2rem}.mx_MemberList_wrapper{padding:10px}.mx_MemberList_invite{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;background-color:#0dbd8b;border-radius:4px;margin:5px 9px 9px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;font-weight:600}.mx_MemberList_invite.mx_AccessibleButton_disabled{background-color:#888;cursor:not-allowed}.mx_MemberList_invite span{padding:8px 0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_MemberList_invite span:before{content:"";display:inline-block;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px}.mx_MemberList_inviteCommunity span:before{-webkit-mask-image:url(../../img/icon-invite-people.d82f491.svg);mask-image:url(../../img/icon-invite-people.d82f491.svg)}.mx_MemberList_addRoomToCommunity span:before{-webkit-mask-image:url(../../img/icons-room-add.bd36e26.svg);mask-image:url(../../img/icons-room-add.bd36e26.svg)}.mx_MessageComposer_wrapper{vertical-align:middle;margin:auto;border-top:1px solid transparent;position:relative;padding-left:82px;padding-right:6px}.mx_MessageComposer_replaced_wrapper{margin-left:auto;margin-right:auto}.mx_MessageComposer_replaced_valign{height:60px;display:table-cell;vertical-align:middle}.mx_MessageComposer_roomReplaced_icon{float:left;margin-right:20px;margin-top:5px;width:31px;height:31px}.mx_MessageComposer_roomReplaced_header{font-weight:700}.mx_MessageComposer_autocomplete_wrapper{position:relative;height:0}.mx_MessageComposer_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.mx_MessageComposer .mx_MessageComposer_avatar{position:absolute;left:26px}.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar{display:block}.mx_MessageComposer_composecontrols{width:100%}.mx_MessageComposer_e2eIcon.mx_E2EIcon{position:absolute;left:60px;margin-right:0;margin-left:3px;width:12px;height:12px}.mx_MessageComposer_noperm_error{width:100%;height:60px;font-style:italic;color:#888;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MessageComposer_input_wrapper{cursor:text}.mx_MessageComposer_input,.mx_MessageComposer_input_wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MessageComposer_input{vertical-align:middle;min-height:60px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;font-size:1.4rem;margin-right:6px}.mx_MessageComposer_editor{width:100%;max-height:120px;min-height:19px;overflow-y:auto;overflow-x:hidden;word-break:break-word}.mx_MessageComposer_editor>:first-child{margin-top:0!important}.mx_MessageComposer_editor>:last-child{margin-bottom:0!important}@keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_MessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_MessageComposer_input blockquote{color:#777;margin:0 0 16px;padding:0 15px;border-left:4px solid #ddd}.mx_MessageComposer_input pre{background-color:rgba(0,0,0,.04);border-radius:3px;padding:10px}.mx_MessageComposer_input textarea{display:block;width:100%;padding:0;margin-top:6px;margin-bottom:6px;border:0;resize:none;outline:none;-webkit-box-shadow:none;box-shadow:none;color:#2e2f32;background-color:#fff;font-size:1.4rem;max-height:120px;overflow:auto;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji}.mx_MessageComposer_input textarea::-moz-placeholder{line-height:100%;color:#0dbd8b;opacity:1}.mx_MessageComposer_input textarea::-webkit-input-placeholder{color:#0dbd8b}.mx_MessageComposer_button_highlight{background:rgba(13,189,139,.25)}.mx_MessageComposer_button_highlight:before{background-color:#0dbd8b!important}.mx_MessageComposer_button{position:relative;margin-right:6px;cursor:pointer;height:26px;width:26px;border-radius:100%}.mx_MessageComposer_button:before{content:"";position:absolute;top:3px;left:3px;height:20px;width:20px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_MessageComposer_button:hover{background:rgba(13,189,139,.1)}.mx_MessageComposer_button:hover:before{background-color:#0dbd8b}.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before{background-color:#ff4b55}.mx_MessageComposer_upload:before{-webkit-mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg);mask-image:url(../../img/element-icons/room/composer/attach.359c84e.svg)}.mx_MessageComposer_voiceMessage:before{-webkit-mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg);mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg)}.mx_MessageComposer_emoji:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_MessageComposer_stickers:before{-webkit-mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg);mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg)}.mx_MessageComposer_sendMessage{cursor:pointer;position:relative;margin-right:6px;width:32px;height:32px;border-radius:100%;background-color:#0dbd8b}.mx_MessageComposer_sendMessage:before{position:absolute;height:16px;width:16px;top:8px;left:9px;-webkit-mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;background-color:#fff;content:""}.mx_MessageComposer_formatting{cursor:pointer;margin:0 11px;width:24px;height:18px}.mx_MessageComposer_formatbar_wrapper{width:100%;background-color:#fff;-webkit-box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08)}.mx_MessageComposer_formatbar{margin:auto;display:-webkit-box;display:-ms-flexbox;display:flex;height:30px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:62px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1rem;color:#888}.mx_MessageComposer_formatbar *{margin-right:4px}.mx_MessageComposer_format_button,.mx_MessageComposer_formatbar_cancel,.mx_MessageComposer_formatbar_markdown{cursor:pointer}.mx_MessageComposer_formatbar_cancel{margin-right:22px}.mx_MessageComposer_formatbar_markdown{height:17px;width:30px;margin-right:64px}.mx_MessageComposer_input_markdownIndicator{height:10px;width:12px;padding:4px 4px 4px 0}.mx_MessageComposer_formatbar_markdown,.mx_MessageComposer_input_markdownIndicator{cursor:pointer;-webkit-mask-image:url(../../img/markdown.6905ba8.svg);mask-image:url(../../img/markdown.6905ba8.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#c1c6cd}.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled,.mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled{opacity:.2}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input{min-height:50px}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error{height:50px}.mx_MessageComposerFormatBar{display:none;width:130px;height:24px;position:absolute;cursor:pointer;border-radius:4px;background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1000}.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown{display:block}.mx_MessageComposerFormatBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageComposerFormatBar>:hover{border-color:#ddd;z-index:1}.mx_MessageComposerFormatBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageComposerFormatBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageComposerFormatBar>:only-child{border-radius:3px}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button{width:27px;height:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:none;vertical-align:middle}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg);mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconItalic:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg);mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconStrikethrough:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg);mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconQuote:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg);mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg);mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg)}.mx_MessageComposerFormatBar_buttonTooltip{white-space:nowrap;font-size:1.3rem;font-weight:600;min-width:54px;text-align:center}.mx_MessageComposerFormatBar_buttonTooltip .mx_MessageComposerFormatBar_tooltipShortcut{font-size:.9rem;opacity:.7}.mx_NewRoomIntro{margin:40px 0 48px 64px}.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):after,.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):before{content:unset}.mx_NewRoomIntro .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_NewRoomIntro .mx_NewRoomIntro_buttons{margin-top:28px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton{line-height:2.4rem;display:inline-block}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:12px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before{content:"";display:inline-block;background-color:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px;vertical-align:text-bottom}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_NewRoomIntro>h2{margin-top:24px;font-size:2.4rem;font-weight:600}.mx_NewRoomIntro>p{margin:0;font-size:1.5rem;color:#737d8c}.mx_NotificationBadge:not(.mx_NotificationBadge_visible){display:none}.mx_NotificationBadge.mx_NotificationBadge_visible{background-color:#61708b;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted{background-color:#ff4b55}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot{background-color:#2e2f32;width:6px;height:6px;border-radius:6px}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char{width:1.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char{width:2.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count{font-size:1rem;line-height:1.4rem;color:#fff}.mx_PinnedEventTile{min-height:40px;margin-bottom:5px;width:100%;border-radius:5px}.mx_PinnedEventTile:hover{background-color:#f6f7f8}.mx_PinnedEventTile .mx_PinnedEventTile_sender,.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{color:#868686;font-size:.8em;vertical-align:top;display:inline-block;padding-bottom:3px}.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{padding-left:15px;display:none}.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar{float:left;margin-right:10px}.mx_PinnedEventTile_actions{float:right;margin-right:10px;display:none}.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp{display:inline-block}.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions{display:block}.mx_PinnedEventTile_unpinButton{display:inline-block;cursor:pointer;margin-left:10px}.mx_PinnedEventTile_gotoButton{display:inline-block;font-size:.7em}.mx_PinnedEventTile_message{margin-left:50px;position:relative;top:0;left:0}.mx_PinnedEventsPanel{border-top:1px solid transparent}.mx_PinnedEventsPanel_body{max-height:300px;overflow-y:auto;padding-bottom:15px}.mx_PinnedEventsPanel_header{margin:0;padding-top:8px;padding-bottom:15px}.mx_PinnedEventsPanel_cancel{margin:12px;float:right;display:inline-block}.mx_PresenceLabel{font-size:1.1rem;opacity:.5}.mx_ReplyPreview{background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_ReplyPreview_section{border-bottom:1px solid transparent}.mx_ReplyPreview_header{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.mx_ReplyPreview_title{float:left}.mx_ReplyPreview_cancel{float:right;cursor:pointer}.mx_ReplyPreview_clear{clear:both}.mx_RoomBreadcrumbs{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb{margin-right:8px;width:32px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter{margin-left:-40px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active{margin-left:0;-webkit-transition:margin-left .64s cubic-bezier(.66,.02,.36,1);transition:margin-left .64s cubic-bezier(.66,.02,.36,1)}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder{font-weight:600;font-size:1.4rem;line-height:32px;height:32px}.mx_RoomBreadcrumbs_Tooltip{margin-left:-42px;margin-top:-42px}.mx_RoomHeader{-webkit-box-flex:0;-ms-flex:0 0 50px;flex:0 0 50px;border-bottom:1px solid transparent;background-color:#fff}.mx_RoomHeader .mx_RoomHeader_e2eIcon{height:12px;width:12px}.mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon{margin:0;position:absolute;height:12px;width:12px}.mx_RoomHeader_wrapper{margin:auto;height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:0;padding:0 10px 0 18px}.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large{margin:0}.mx_RoomHeader_spinner{-webkit-box-flex:1;-ms-flex:1;flex:1;height:36px;padding-left:12px;padding-right:12px}.mx_RoomHeader_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-right:8px;margin-top:-5px}.mx_RoomHeader_textButton_danger{background-color:#ff4b55}.mx_RoomHeader_cancelButton{cursor:pointer;padding-left:12px;padding-right:12px}.mx_RoomHeader_buttons{background-color:#fff}.mx_RoomHeader_buttons,.mx_RoomHeader_info{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_info{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomHeader_simpleHeader{line-height:5.2rem;color:#45474a;font-size:1.8rem;font-weight:600;overflow:hidden;margin-left:63px;text-overflow:ellipsis;width:100%}.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton{float:right}.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon{margin-left:14px;margin-right:24px;vertical-align:-4px}.mx_RoomHeader_name{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;overflow:hidden;color:#45474a;font-weight:600;font-size:1.8rem;margin:0 7px;border-bottom:1px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_nametext{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mx_RoomHeader_settingsHint{color:#a2a2a2!important}.mx_RoomHeader_searchStatus{font-weight:400;opacity:.6}.mx_RoomHeader_avatar,.mx_RoomHeader_avatarPicker,.mx_RoomHeader_avatarPicker_edit,.mx_RoomHeader_avatarPicker_remove,.mx_RoomHeader_name{cursor:pointer}.mx_RoomHeader_avatarPicker_remove{position:absolute;top:-11px;right:-9px}.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable){color:#0dbd8b}.mx_RoomHeader_placeholder{color:#a2a2a2!important}.mx_RoomHeader_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_RoomHeader_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_RoomHeader_topic{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#9e9e9e;font-weight:400;font-size:1.3rem;margin:4px 7px 0;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid transparent;line-height:1.2em;max-height:2.4em}.mx_RoomHeader_avatar{-webkit-box-flex:0;-ms-flex:0;flex:0;margin:0 6px 0 7px;position:relative}.mx_RoomHeader_avatar .mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover}.mx_RoomHeader_avatarPicker{position:relative}.mx_RoomHeader_avatarPicker_edit{position:absolute;left:16px;top:18px}.mx_RoomHeader_avatarPicker_edit>label{cursor:pointer}.mx_RoomHeader_avatarPicker_edit>input{display:none}.mx_RoomHeader_button{position:relative;margin-left:1px;margin-right:1px;cursor:pointer;height:32px;width:32px;border-radius:100%}.mx_RoomHeader_button:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RoomHeader_button:hover{background:rgba(13,189,139,.1)}.mx_RoomHeader_button:hover:before{background-color:#0dbd8b}.mx_RoomHeader_forgetButton:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg);width:26px}.mx_RoomHeader_appsButton:before{-webkit-mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg);mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg)}.mx_RoomHeader_appsButton_highlight:before{background-color:#0dbd8b}.mx_RoomHeader_searchButton:before{-webkit-mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg);mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg)}.mx_RoomHeader_voiceCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center}.mx_RoomHeader_videoCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_RoomHeader_showPanel{height:16px}.mx_RoomHeader_voipButton{display:table-cell}.mx_RoomHeader_voipButtons{margin-top:18px}.mx_RoomHeader_pinnedButton:before{-webkit-mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg);mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg)}.mx_RoomHeader_pinsIndicator{position:absolute;right:0;bottom:4px;width:8px;height:8px;border-radius:8px;background-color:#8d99a5}.mx_RoomHeader_pinsIndicatorUnread{background-color:#ff4b55}@media only screen and (max-width:480px){.mx_RoomHeader_wrapper{padding:0}.mx_RoomHeader{overflow:hidden}}.mx_RoomList{padding-right:7px}.mx_RoomList_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_RoomList_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_RoomList_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_iconBrowse:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomList_iconDialpad:before{-webkit-mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg);mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg)}.mx_RoomList_explorePrompt{margin:4px 12px;padding-top:12px;border-top:1px solid #e7e7e7;font-size:1.4rem}.mx_RoomList_explorePrompt div:first-child{font-weight:600;line-height:1.8rem;color:#2e2f32}.mx_RoomList_explorePrompt .mx_AccessibleButton{color:#2e2f32;position:relative;padding:8px 8px 8px 32px;font-size:inherit;margin-top:12px;display:block;text-align:start;background-color:rgba(141,151,165,.2);border-radius:4px}.mx_RoomList_explorePrompt .mx_AccessibleButton:before{content:"";width:16px;height:16px;position:absolute;top:8px;left:8px;background:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomPreviewBar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-align-items:center}.mx_RoomPreviewBar h3{font-size:1.8rem;font-weight:600}.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomPreviewBar .mx_RoomPreviewBar_message p,.mx_RoomPreviewBar h3{word-break:break-all;word-break:break-word}.mx_RoomPreviewBar .mx_Spinner{width:auto;height:auto;margin:10px 10px 10px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer{font-size:1.2rem;line-height:2rem}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner{vertical-align:middle;display:inline-block}.mx_RoomPreviewBar_actions,.mx_RoomPreviewBar_message{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomPreviewBar_message{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.mx_RoomPreviewBar_message p{overflow-wrap:break-word}.mx_RoomPreviewBar_panel{padding:8px 8px 8px 20px;border-top:1px solid transparent;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:3px 8px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions>*{margin-left:12px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message>*{margin:4px}.mx_RoomPreviewBar_dialog{margin:auto;-webkit-box-sizing:content;box-sizing:content;width:400px;border-radius:4px;padding:20px;text-align:center}.mx_RoomPreviewBar_dialog,.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message>*{margin:5px 0 20px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton{padding:7px 50px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions>*{margin-top:12px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-bottom:7px}.mx_RoomPreviewBar_inviter{font-weight:600}a.mx_RoomPreviewBar_inviter{text-decoration:underline;cursor:pointer}.mx_RoomSublist{margin-left:8px;margin-bottom:4px}.mx_RoomSublist.mx_RoomSublist_hidden{display:none}.mx_RoomSublist .mx_RoomSublist_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:8px;max-height:24px;color:#8d99a5}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky{position:fixed;height:32px;width:calc(100% - 22px)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer .mx_NotificationBadge{margin-left:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_NotificationBadge{margin-right:4px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{margin-left:8px;position:relative;width:24px;height:24px;border-radius:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:hover{background:rgba(141,151,165,.2)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{visibility:hidden;width:0;margin:0}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg);mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_RoomSublist:first-child .mx_RoomSublist_headerContainer{height:0;padding-bottom:4px}.mx_RoomSublist .mx_RoomSublist_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist .mx_RoomSublist_resizeBox,.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;overflow:hidden}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-ms-flex-direction:column;flex-direction:column;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles_showNButton{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles{-webkit-box-flex:0;-ms-flex:0 0 4px;flex:0 0 4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle{cursor:ns-resize;border-radius:3px;max-width:64px;height:4px!important;position:relative!important;bottom:0!important}.mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_resizerHandle,.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_RoomSublist .mx_RoomSublist_showNButton{cursor:pointer;font-size:1.3rem;line-height:1.8rem;color:#737d8c;height:24px;padding-bottom:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{position:relative;width:18px;height:18px;margin-left:12px;margin-right:16px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;left:-1px}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron,.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showMoreButtonChevron{-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:focus-within .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;width:24px;margin-left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer{height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;-ms-flex-item-align:end;align-self:flex-end;margin-right:0}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;max-width:100%}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;visibility:visible;width:32px!important;height:32px!important;margin-left:0!important;background-color:rgba(141,151,165,.2);margin-top:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{top:8px;left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{margin-right:12px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton{height:16px}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;position:absolute;bottom:48px;right:0;width:16px;height:16px;border-radius:0;z-index:1;background-color:hsla(0,0%,96.1%,.9)}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton:before,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton:before{top:0;left:0}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton{bottom:8px}.mx_RoomSublist_contextMenu{padding:20px 16px;width:250px}.mx_RoomSublist_contextMenu hr{margin-top:16px;margin-bottom:16px;margin-right:16px;border:1px solid #2e2f32;opacity:.1}.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title{font-size:1.5rem;line-height:2rem;font-weight:600;margin-bottom:4px}.mx_RoomSublist_contextMenu .mx_Checkbox,.mx_RoomSublist_contextMenu .mx_RadioButton{margin-top:8px}.mx_RoomSublist_addRoomTooltip{margin-top:-3px}.mx_RoomSublist_skeletonUI{position:relative;margin-left:4px;height:288px}.mx_RoomSublist_skeletonUI:before{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(180deg,#fff,hsla(0,0%,100%,0));width:100%;height:100%;content:"";position:absolute;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y;-webkit-mask-size:auto 48px;mask-size:auto 48px;-webkit-mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg);mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg)}.mx_RoomTile{margin-bottom:4px;padding:4px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomTile.mx_RoomTile_hasMenuOpen,.mx_RoomTile.mx_RoomTile_selected,.mx_RoomTile:focus-within,.mx_RoomTile:hover{background-color:#fff;border-radius:8px}.mx_RoomTile .mx_DecoratedRoomAvatar,.mx_RoomTile .mx_RoomTile_avatarContainer{margin-right:8px}.mx_RoomTile .mx_RoomTile_nameContainer{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:0;margin-right:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview,.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{margin:0 2px;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{font-size:1.4rem;line-height:1.8rem}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents{font-weight:600}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview{font-size:1.3rem;line-height:1.8rem;color:#737d8c}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview{margin-top:-4px}.mx_RoomTile .mx_RoomTile_notificationsButton{margin-left:4px}.mx_RoomTile .mx_RoomTile_badgeContainer{height:16px;margin:auto 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge{margin-right:2px}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot{margin-left:5px;margin-right:7px}.mx_RoomTile .mx_RoomTile_menuButton,.mx_RoomTile .mx_RoomTile_notificationsButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;position:relative;display:none}.mx_RoomTile .mx_RoomTile_menuButton:before,.mx_RoomTile .mx_RoomTile_notificationsButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_RoomTile .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show{display:block}.mx_RoomTile .mx_RoomTile_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer{width:0;height:0;display:none}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_notificationsButton{display:block}.mx_RoomTile.mx_RoomTile_minimized{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar,.mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer{margin-right:0}.mx_RoomTile_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomTile_iconBellDot:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg);mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg)}.mx_RoomTile_iconBellCrossed:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_RoomTile_iconBellMentions:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg);mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before{-webkit-mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg);mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before{-webkit-mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg);mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_RoomUpgradeWarningBar{max-height:235px;background-color:#f7f7f7;padding-left:20px;padding-right:20px;overflow:scroll}.mx_RoomUpgradeWarningBar_wrapped{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center}.mx_RoomUpgradeWarningBar_header{color:#ff4b55;font-weight:700}.mx_RoomUpgradeWarningBar_body{color:#ff4b55}.mx_RoomUpgradeWarningBar_upgradelink{color:#ff4b55;text-decoration:underline}.mx_RoomUpgradeWarningBar_small{color:#888;font-size:70%}.mx_SearchBar{height:56px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid transparent}.mx_SearchBar .mx_SearchBar_input{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;margin-left:22px}.mx_SearchBar .mx_SearchBar_searchButton{cursor:pointer;width:37px;height:37px;background-color:#0dbd8b;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_SearchBar .mx_SearchBar_buttons{display:inherit}.mx_SearchBar .mx_SearchBar_button{border:0;margin:0 0 0 22px;padding:5px;font-size:1.5rem;cursor:pointer;color:#2e2f32;border-bottom:2px solid #0dbd8b;font-weight:600}.mx_SearchBar .mx_SearchBar_unselected{color:#9fa9ba;border-color:transparent}.mx_SearchBar .mx_SearchBar_cancel{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;padding:9px;margin:0 12px 0 3px;cursor:pointer}.mx_SendMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;font-size:1.4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;min-width:0}.mx_SendMessageComposer,.mx_SendMessageComposer .mx_BasicMessageComposer{-webkit-box-flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_SendMessageComposer .mx_BasicMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;min-height:50px}.mx_SendMessageComposer .mx_BasicMessageComposer .mx_BasicMessageComposer_input{padding:3px 0;margin:auto 0;max-height:140px;overflow-y:auto}.mx_Stickers_content{overflow:hidden}.mx_Stickers_content_container{overflow:hidden;height:300px}#mx_persistedElement_stickerPicker .mx_AppTileFullWidth{height:unset;-webkit-box-sizing:border-box;box-sizing:border-box;border-left:none;border-right:none;border-bottom:none}#mx_persistedElement_stickerPicker .mx_AppTileMenuBar{padding:0}#mx_persistedElement_stickerPicker iframe{height:283px}.mx_Stickers_contentPlaceholder{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mx_Stickers_contentPlaceholder p{max-width:200px}.mx_Stickers_addLink{display:inline;cursor:pointer;color:#0dbd8b}.mx_Stickers_hideStickers{z-index:2001}.mx_TopUnreadMessagesBar{z-index:1000;position:absolute;top:24px;right:24px;width:38px}.mx_TopUnreadMessagesBar:after{content:"";position:absolute;top:-8px;left:10.5px;width:4px;height:4px;border-radius:16px;background-color:#f2f5f8;border:6px solid #0dbd8b;pointer-events:none}.mx_TopUnreadMessagesBar_scrollUp{height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_TopUnreadMessagesBar_scrollUp:before{content:"";position:absolute;width:36px;height:36px;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_TopUnreadMessagesBar_markAsRead{display:block;width:18px;height:18px;background:#fff;border:1.3px solid #61708b;border-radius:10px;margin:5px auto}.mx_TopUnreadMessagesBar_markAsRead:before{content:"";position:absolute;width:18px;height:18px;-webkit-mask-image:url(../../img/cancel.4b9715b.svg);mask-image:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:10px;mask-size:10px;-webkit-mask-position:4px 4px;mask-position:4px 4px;background:#61708b}.mx_VoiceRecordComposerTile_stop{width:28px;height:28px;border:2px solid #e3e8f0;border-radius:32px;margin-right:16px;position:relative}.mx_VoiceRecordComposerTile_stop:after{content:"";width:14px;height:14px;position:absolute;top:7px;left:7px;border-radius:2px;background-color:#ff4b55}.mx_VoiceRecordComposerTile_delete{width:14px;height:18px;vertical-align:middle;margin-right:11px;background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer{margin:6px 12px 6px 6px;position:relative}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording{padding-left:22px}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before{-webkit-animation:recording-pulse 2s infinite;animation:recording-pulse 2s infinite;content:"";background-color:#ff4b55;width:10px;height:10px;position:absolute;left:12px;top:18px;border-radius:10px}@-webkit-keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}@keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}.mx_WhoIsTypingTile{margin-left:-18px;padding-top:18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_WhoIsTypingTile_avatars{-webkit-box-flex:0;-ms-flex:0 0 83px;flex:0 0 83px;text-align:center}.mx_WhoIsTypingTile_avatars>:not(:first-child){margin-left:-12px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial{padding-top:1px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar{border:1px solid #fff;border-radius:40px}.mx_WhoIsTypingTile_remainingAvatarPlaceholder{position:relative;display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center}.mx_WhoIsTypingTile_label{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:1.4rem;font-weight:600;color:#9e9e9e}.mx_WhoIsTypingTile_label>span{background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-size:25px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:15px;display:block}.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile{padding-top:4px}.mx_AvatarSetting_avatar{width:90px;min-width:90px;height:90px;margin-top:8px;position:relative}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover{-webkit-transition:opacity .08s cubic-bezier(.46,.03,.52,.96);transition:opacity .08s cubic-bezier(.46,.03,.52,.96);position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;line-height:90px;text-align:center}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover>span{color:#fff;position:relative;font-weight:500}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg{position:absolute;top:0;bottom:0;left:0;right:0;opacity:.5;background-color:#2e2f32;border-radius:90px}.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering .mx_AvatarSetting_hover{opacity:1}.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) .mx_AvatarSetting_hover{opacity:0}.mx_AvatarSetting_avatar>*{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-top:8px}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm{width:100%}.mx_AvatarSetting_avatar>img{cursor:pointer;-o-object-fit:cover;object-fit:cover}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder,.mx_AvatarSetting_avatar>img{display:block;height:90px;width:inherit;border-radius:90px;cursor:pointer}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{background-color:#2e2f32;-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton{width:32px;height:32px;border-radius:32px;background-color:#e7e7e7;position:absolute;bottom:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before{content:"";display:block;width:100%;height:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:55%;mask-size:55%;background-color:#2e2f32;-webkit-mask-image:url(../../img/feather-customised/edit.fd55ec2.svg);mask-image:url(../../img/feather-customised/edit.fd55ec2.svg)}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder{background-color:#f4f6fa}.mx_CrossSigningPanel_statusList{border-spacing:0}.mx_CrossSigningPanel_statusList td{padding:0}.mx_CrossSigningPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_CrossSigningPanel_buttonRow{margin:1em 0}.mx_CrossSigningPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_DevicesPanel{display:table;table-layout:fixed;width:880px;border-spacing:10px}.mx_DevicesPanel_header{display:table-header-group;font-weight:700}.mx_DevicesPanel_header>.mx_DevicesPanel_deviceButtons{height:48px}.mx_DevicesPanel_header>div{display:table-cell;vertical-align:middle}.mx_DevicesPanel_header .mx_DevicesPanel_deviceName{width:50%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen{width:30%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons{width:20%}.mx_DevicesPanel_device{display:table-row}.mx_DevicesPanel_device>div{display:table-cell}.mx_DevicesPanel_myDevice{font-weight:700}.mx_E2eAdvancedPanel_settingLongDescription{margin-right:150px}.mx_ExistingEmailAddress{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingEmailAddress_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingEmailAddress_email,.mx_ExistingEmailAddress_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingEmailAddress_confirmBtn{margin-left:5px}.mx_IntegrationManager .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none}.mx_IntegrationManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_IntegrationManager_loading h3{text-align:center}.mx_IntegrationManager_error{text-align:center;padding-top:20px}.mx_IntegrationManager_error h3{color:#ff4b55}.mx_UserNotifSettings_tableRow{display:table-row}.mx_UserNotifSettings_inputCell{display:table-cell;padding-bottom:8px;padding-right:8px;width:16px}.mx_UserNotifSettings_labelCell{padding-bottom:8px;width:400px;display:table-cell}.mx_UserNotifSettings_pushRulesTableWrapper{padding-bottom:8px}.mx_UserNotifSettings_pushRulesTable{width:100%;table-layout:fixed}.mx_UserNotifSettings_pushRulesTable thead{font-weight:700}.mx_UserNotifSettings_pushRulesTable tbody th{font-weight:400}.mx_UserNotifSettings_pushRulesTable tbody th:first-child{text-align:left}.mx_UserNotifSettings_keywords{cursor:pointer;color:#0dbd8b}.mx_UserNotifSettings_devicesTable td{padding-left:20px;padding-right:20px}.mx_UserNotifSettings_notifTable{display:table;position:relative}.mx_UserNotifSettings_notifTable .mx_Spinner{position:absolute}.mx_NotificationSound_soundUpload{display:none}.mx_NotificationSound_browse{color:#0dbd8b;border:1px solid #0dbd8b;background-color:transparent}.mx_NotificationSound_save{margin-left:5px;color:#fff;background-color:#0dbd8b}.mx_NotificationSound_resetSound{margin-top:5px;color:#fff;border:#ff4b55;background-color:#ff4b55}.mx_ExistingPhoneNumber{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingPhoneNumber_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingPhoneNumber_address,.mx_ExistingPhoneNumber_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingPhoneNumber_confirmBtn{margin-left:5px}.mx_ExistingPhoneNumber_verification{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ExistingPhoneNumber_verification .mx_Field{margin:0 0 0 1em}.mx_PhoneNumbers_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_PhoneNumbers_input>.mx_Field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_PhoneNumbers_country{width:80px}.mx_ProfileSettings_controls_topic>textarea{resize:vertical}.mx_ProfileSettings_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ProfileSettings_controls{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:54px}.mx_ProfileSettings_controls .mx_SettingsTab_subheading{margin-top:0}.mx_ProfileSettings_controls .mx_Field #profileTopic{height:4em}.mx_ProfileSettings_controls .mx_Field:first-child{margin-top:0}.mx_ProfileSettings_hostingSignup{margin-left:20px}.mx_ProfileSettings_hostingSignup img{margin-left:5px}.mx_ProfileSettings_avatarUpload{display:none}.mx_ProfileSettings_profileForm{margin-right:100px;border-bottom:1px solid #e7e7e7}.mx_ProfileSettings_buttons{margin-top:10px;margin-bottom:28px}.mx_ProfileSettings_buttons>.mx_AccessibleButton_kind_link{padding-left:0}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigInvalid,.mx_SecureBackupPanel_sigValid{font-weight:700}.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigValid{color:#76cfa5}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_sigInvalid{color:#ba6363}.mx_SecureBackupPanel_deviceName{font-style:italic}.mx_SecureBackupPanel_buttonRow{margin:1em 0}.mx_SecureBackupPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_SecureBackupPanel_statusList{border-spacing:0}.mx_SecureBackupPanel_statusList td{padding:0}.mx_SecureBackupPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_SetIdServer .mx_Field_input{margin-right:100px}.mx_SetIdServer_tooltip{max-width:120px}.mx_SetIntegrationManager{margin-top:10px;margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading{margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading>.mx_SettingsTab_subheading{display:inline-block;padding-left:5px}.mx_SetIntegrationManager .mx_ToggleSwitch{display:inline-block;float:right;top:9px;margin-right:100px}.mx_ExistingSpellCheckLanguage{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingSpellCheckLanguage_language{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_GeneralUserSettingsTab_spellCheckLanguageInput{margin-top:1em;margin-bottom:1em}.mx_SpellCheckLanguages{margin-right:100px}.mx_UpdateCheckButton_summary{margin-left:16px}.mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link{padding:0}.mx_SettingsTab{color:#61708b}.mx_SettingsTab_warningText{color:#ff4b55}.mx_SettingsTab_heading{font-size:2rem;font-weight:600;color:#2e2f32;margin-bottom:10px}.mx_SettingsTab_heading:nth-child(n+2){margin-top:30px}.mx_SettingsTab_subheading{font-size:1.6rem;display:block;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-weight:600;color:#2e2f32;margin-bottom:10px;margin-top:12px}.mx_SettingsTab_subsectionText{color:#61708b;font-size:1.4rem;display:block;margin:10px 100px 10px 0}.mx_SettingsTab_section{margin-bottom:24px}.mx_SettingsTab_section .mx_SettingsFlag{margin-right:100px;margin-bottom:10px}.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag{margin-right:0!important}.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label{vertical-align:middle;display:inline-block;font-size:1.4rem;color:#2e2f32;max-width:calc(100% - 4.8rem);-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:10px}.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch{float:right}.mx_SettingsTab_linkBtn{cursor:pointer;color:#0dbd8b;word-break:break-all}.mx_SettingsTab a{color:#238cf5}.mx_GeneralRoomSettingsTab_profileSection{margin-top:10px}.mx_RolesRoomSettingsTab ul{margin-bottom:0}.mx_RolesRoomSettingsTab_unbanBtn{margin-right:10px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_warning{display:block}.mx_SecurityRoomSettingsTab_warning img{vertical-align:middle;margin-right:5px;margin-left:3px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_encryptionSection{margin-bottom:25px}.mx_AppearanceUserSettingsTab_fontSlider,.mx_AppearanceUserSettingsTab_fontSlider_preview,.mx_AppearanceUserSettingsTab_Layout{margin-right:100px}.mx_AppearanceUserSettingsTab .mx_Field{width:256px}.mx_AppearanceUserSettingsTab_fontScaling{color:#2e2f32}.mx_AppearanceUserSettingsTab_fontSlider{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px;background:rgba(227,232,240,.2);border-radius:10px;font-size:10px;margin-top:24px;margin-bottom:24px}.mx_AppearanceUserSettingsTab_fontSlider_preview{border:1px solid #e3e8f0;border-radius:10px;padding:0 16px 9px;pointer-events:none}.mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption{display:none}.mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout{padding-top:9px}.mx_AppearanceUserSettingsTab_fontSlider_smallText{font-size:15px;padding-right:20px;padding-left:5px;font-weight:500}.mx_AppearanceUserSettingsTab_fontSlider_largeText{font-size:18px;padding-left:20px;padding-right:5px;font-weight:500}.mx_AppearanceUserSettingsTab>.mx_SettingsTab_SubHeading{margin-bottom:32px}.mx_AppearanceUserSettingsTab_themeSection{color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;margin-bottom:30px}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton{padding:1.6rem;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:10px;width:180px;background:#e3e8f0;opacity:.4;-ms-flex-negative:1;flex-shrink:1;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;margin-right:15px;margin-top:10px;font-weight:600;color:#61708b}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton>span{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled{opacity:1}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_light{background-color:#f3f8fd;color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark{background-color:#25282e;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div>div{border-color:#e3e8f0}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black{background-color:#000;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div>div{border-color:#e3e8f0}.mx_SettingsTab_customFontSizeField{margin-left:calc(1.6rem + 10px)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#2e2f32}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_AppearanceUserSettingsTab_spacer{width:24px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:300px;border:1px solid #e3e8f0;border-radius:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_msgOption,.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_MessageActionBar{display:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px;pointer-events:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_content{margin-right:0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected{border-color:#0dbd8b}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton{border-top:1px solid #e3e8f0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton>input+div{border-color:rgba(97,112,139,.2)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked{background-color:rgba(13,189,139,.08)}.mx_AppearanceUserSettingsTab_Advanced{color:#2e2f32}.mx_AppearanceUserSettingsTab_Advanced>*{margin-bottom:16px}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_AdvancedToggle{color:#0dbd8b;cursor:pointer}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_systemFont{margin-left:calc(1.6rem + 10px)}.mx_GeneralUserSettingsTab_changePassword .mx_Field{margin-right:100px}.mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child{margin-top:0}.mx_GeneralUserSettingsTab_accountSection .mx_SettingsTab_subheading:nth-child(n+1),.mx_GeneralUserSettingsTab_discovery .mx_SettingsTab_subheading:nth-child(n+2),.mx_SetIdServer .mx_SettingsTab_subheading{margin-top:24px}.mx_GeneralUserSettingsTab_accountSection .mx_Spinner,.mx_GeneralUserSettingsTab_discovery .mx_Spinner{-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left}.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses,.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers,.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress,.mx_GeneralUserSettingsTab_discovery .mx_ExistingPhoneNumber,.mx_GeneralUserSettingsTab_languageInput{margin-right:100px}.mx_GeneralUserSettingsTab_warningIcon{vertical-align:middle}.mx_HelpUserSettingsTab_debugButton{margin-bottom:5px;margin-top:5px}.mx_HelpUserSettingsTab span.mx_AccessibleButton{word-break:break-word}.mx_HelpUserSettingsTab code{word-break:break-all;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.mx_HelpUserSettingsTab_accessToken{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:10px;padding:10px}.mx_HelpUserSettingsTab_accessToken_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_HelpUserSettingsTab_accessToken_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_LabsUserSettingsTab .mx_SettingsTab_section{margin-top:32px}.mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag{margin-right:0}.mx_MjolnirUserSettingsTab .mx_Field{margin-right:100px}.mx_MjolnirUserSettingsTab_listItem{margin-bottom:2px}.mx_NotificationUserSettingsTab .mx_SettingsTab_heading{margin-bottom:10px}.mx_PreferencesUserSettingsTab .mx_Field{margin-right:100px}.mx_PreferencesUserSettingsTab .mx_SettingsTab_section{margin-bottom:30px}.mx_SecurityUserSettingsTab .mx_DevicesPanel{width:auto;max-width:880px}.mx_SecurityUserSettingsTab_deviceInfo{display:table;padding-left:0}.mx_SecurityUserSettingsTab_deviceInfo>li{display:table-row}.mx_SecurityUserSettingsTab_deviceInfo>li>label,.mx_SecurityUserSettingsTab_deviceInfo>li>span{display:table-cell;padding-right:1em}.mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton,.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab_importExportButtons{margin-bottom:15px}.mx_SecurityUserSettingsTab_ignoredUser{margin-bottom:5px}.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab .mx_SettingsTab_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning{color:#ff4b55;position:relative;padding-left:40px;margin-top:30px}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:2.4rem;mask-size:2.4rem;position:absolute;width:2.4rem;height:2.4rem;content:"";top:0;left:0;background-color:#ff4b55;-webkit-mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg);mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg)}.mx_VoiceUserSettingsTab .mx_Field{margin-right:100px}.mx_VoiceUserSettingsTab_missingMediaPermissions{margin-bottom:15px}.mx_SpaceBasicSettings .mx_Field{margin:32px 0}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:24px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer .mx_SpaceBasicSettings_avatar{position:relative;height:80px;width:80px;background-color:#8d99a5;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer img.mx_SpaceBasicSettings_avatar{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar{cursor:pointer}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar:before{content:"";position:absolute;height:80px;width:80px;top:0;left:0;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg)}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>input[type=file]{display:none}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_AccessibleButton_kind_link{display:inline-block;padding:0;margin:auto 16px;color:#368bd6}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_SpaceBasicSettings_avatar_remove{color:#ff4b55}.mx_SpaceBasicSettings .mx_FormButton{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceBasicSettings .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background{background-color:rgba(46,48,51,.38);opacity:.6;left:71px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu{padding:24px;width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;position:relative}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>h2{font-weight:600;font-size:1.8rem;margin-top:4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>p{font-size:1.5rem;color:#737d8c;margin:0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill{position:absolute;top:24px;right:24px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>h3{font-weight:600;margin:0 0 4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>span{color:#737d8c}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover{border-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover:before{background-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover>span{color:#2e2f32}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_public:before{-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_private:before{-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back{width:28px;height:28px;position:relative;background-color:rgba(141,151,165,.2);border-radius:14px;margin-bottom:12px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before{content:"";position:absolute;height:28px;width:28px;top:0;left:0;background-color:#8d99a5;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:2px 3px;mask-position:2px 3px;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_kind_primary{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpacePublicShare .mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpacePublicShare .mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpacePublicShare .mx_AccessibleButton>span{color:#737d8c}.mx_SpacePublicShare .mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpacePublicShare .mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before{-webkit-mask-image:url(../../img/element-icons/link.8f4b1fc.svg);mask-image:url(../../img/element-icons/link.8f4b1fc.svg)}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_InlineTermsAgreement_cbContainer{margin-bottom:10px;font-size:1.4rem}.mx_InlineTermsAgreement_cbContainer a{color:#0dbd8b;text-decoration:none}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox{margin-top:10px}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input{vertical-align:text-bottom}.mx_InlineTermsAgreement_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:12px;height:12px;margin-left:3px;vertical-align:middle}.mx_AnalyticsToast .mx_AccessibleButton_kind_danger{background:none;color:#0dbd8b}.mx_AnalyticsToast .mx_AccessibleButton_kind_primary{background:#0dbd8b;color:#fff}.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon{display:inline-block;width:1.8rem;height:1.8rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);margin-right:8px}.mx_NonUrgentEchoFailureToast span{vertical-align:middle}.mx_NonUrgentEchoFailureToast .mx_AccessibleButton{padding:0}.mx_VerificationShowSas_decimalSas{text-align:center;font-weight:700;padding-left:3px;padding-right:3px}.mx_VerificationShowSas_decimalSas span{margin-left:5px;margin-right:5px}.mx_VerificationShowSas_emojiSas{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:25px 0}.mx_VerificationShowSas_emojiSas_block{display:inline-block;margin-bottom:16px;position:relative;width:52px}.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block,.mx_Dialog .mx_VerificationShowSas_emojiSas_block{width:60px}.mx_VerificationShowSas_emojiSas_emoji{font-size:3.2rem}.mx_VerificationShowSas_emojiSas_label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:1.2rem}.mx_VerificationShowSas_emojiSas_break{-ms-flex-preferred-size:100%;flex-basis:100%}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_matchButton{color:#0dbd8b;background-color:rgba(3,179,129,.16);border:none}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_noMatchButton{color:#ff4b55;background-color:rgba(255,75,85,.16);border:none}.mx_PlayPauseButton{position:relative;width:32px;height:32px;border-radius:32px;background-color:#fff}.mx_PlayPauseButton:before{content:"";position:absolute;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before{opacity:.5}.mx_PlayPauseButton.mx_PlayPauseButton_play:before{width:13px;height:16px;top:8px;left:12px;-webkit-mask-image:url(../../img/element-icons/play.a72552b.svg);mask-image:url(../../img/element-icons/play.a72552b.svg)}.mx_PlayPauseButton.mx_PlayPauseButton_pause:before{width:10px;height:12px;top:10px;left:11px;-webkit-mask-image:url(../../img/element-icons/pause.c4c0886.svg);mask-image:url(../../img/element-icons/pause.c4c0886.svg)}.mx_VoiceMessagePrimaryContainer{padding:7px 12px 7px 11px;background-color:#e3e8f0;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#737d8c;font-size:1.4rem;line-height:2.4rem}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar{background-color:#c1c6cd}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar.mx_Waveform_bar_100pct{-webkit-transition:background-color .25s ease;transition:background-color .25s ease;background-color:#737d8c}.mx_VoiceMessagePrimaryContainer .mx_Clock{width:4.2rem;padding-right:6px;padding-left:8px}.mx_Waveform{position:relative;height:30px;top:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_Waveform .mx_Waveform_bar{width:0;border:1px solid transparent;border-radius:2px;min-height:0;max-height:100%;margin-left:1px;margin-right:1px}.mx_CallContainer{position:absolute;right:20px;bottom:72px;z-index:100;pointer-events:none}.mx_CallContainer .mx_CallPreview{pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_CallPreview .mx_CallView_video{width:350px}.mx_CallContainer .mx_CallPreview .mx_VideoFeed_local{border-radius:8px;overflow:hidden}.mx_CallContainer .mx_AppTile_persistedWrapper div{min-width:350px}.mx_CallContainer .mx_IncomingCallBox{min-width:250px;background-color:#f4f6fa;padding:8px;-webkit-box-shadow:0 14px 24px rgba(0,0,0,.08);box-shadow:0 14px 24px rgba(0,0,0,.08);border-radius:8px;pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo{display:-webkit-box;display:-ms-flexbox;display:flex;direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo .mx_BaseAvatar_initial,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img{margin:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p{margin:0;padding:0;font-size:1.4rem;line-height:1.6rem}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1{font-weight:700}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons{padding:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>.mx_IncomingCallBox_spacer{width:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>*{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;font-size:1.5rem;line-height:2.4rem}.mx_CallView{border-radius:8px;background-color:#f2f5f8;padding-left:8px;padding-right:8px;pointer-events:auto}.mx_CallView_large{padding-bottom:10px;margin:5px 5px 5px 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_CallView_large,.mx_CallView_large .mx_CallView_voice{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_CallView_pip{width:320px;padding-bottom:8px;margin-top:10px;background-color:#f4f6fa;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.2);box-shadow:0 4px 20px rgba(0,0,0,.2);border-radius:8px}.mx_CallView_pip .mx_CallView_voice{height:180px}.mx_CallView_pip .mx_CallView_callControls{bottom:0}.mx_CallView_pip .mx_CallView_callControls_button:before{width:36px;height:36px}.mx_CallView_pip .mx_CallView_holdTransferContent{padding-top:10px;padding-bottom:25px}.mx_CallView_content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:8px}.mx_CallView_voice{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;background-color:#27303a}.mx_CallView_voice,.mx_CallView_voice_avatarsContainer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-direction:normal}.mx_CallView_voice_avatarsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.mx_CallView_voice_avatarsContainer div{margin-left:12px;margin-right:12px}.mx_CallView_voice .mx_CallView_holdTransferContent .mx_CallView_voice_avatarContainer{border-radius:2000px;overflow:hidden;position:relative}.mx_CallView_holdTransferContent{height:20px;padding-top:20px;padding-bottom:15px;color:#fff}.mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0;font-weight:700}.mx_CallView_video{width:100%;height:100%;z-index:30;overflow:hidden}.mx_CallView_video_hold{overflow:hidden}.mx_CallView_video_hold .mx_VideoFeed{visibility:hidden}.mx_CallView_video_holdBackground{position:absolute;width:100%;height:100%;left:0;right:0;background-repeat:no-repeat;background-size:cover;background-position:50%;-webkit-filter:blur(20px);filter:blur(20px)}.mx_CallView_video_holdBackground:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;right:0;background-color:rgba(0,0,0,.6)}.mx_CallView_video .mx_CallView_holdTransferContent{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-weight:700;color:#fff;text-align:center}.mx_CallView_video .mx_CallView_holdTransferContent:before{display:block;margin-left:auto;margin-right:auto;content:"";width:40px;height:40px;background-image:url(../../img/voip/paused.77799b3.svg);background-position:50%;background-size:cover}.mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before{width:30px;height:30px}.mx_CallView_video .mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0}.mx_CallView_header{height:44px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left;-ms-flex-negative:0;flex-shrink:0}.mx_CallView_header_callType{font-size:1.2rem;font-weight:700;vertical-align:middle}.mx_CallView_header_secondaryCallInfo:before{content:"·";margin-left:6px;margin-right:6px}.mx_CallView_header_controls{margin-left:auto}.mx_CallView_header_button{display:inline-block;vertical-align:middle;cursor:pointer}.mx_CallView_header_button:before{content:"";display:inline-block;height:20px;width:20px;vertical-align:middle;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_CallView_header_button_fullscreen:before{-webkit-mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg);mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg)}.mx_CallView_header_button_expand:before{-webkit-mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg);mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg)}.mx_CallView_header_callInfo{margin-left:12px;margin-right:16px}.mx_CallView_header_roomName{font-weight:700;font-size:12px;line-height:normal;height:15px}.mx_CallView_secondaryCall_roomName{margin-left:4px}.mx_CallView_header_callTypeSmall{font-size:12px;color:#737d8c;line-height:normal;height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:240px}.mx_CallView_header_phoneIcon{display:inline-block;margin-right:6px;height:16px;width:16px;vertical-align:middle}.mx_CallView_header_phoneIcon:before{content:"";display:inline-block;vertical-align:top;height:16px;width:16px;background-color:#ff4b55;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_CallView_callControls{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;bottom:5px;width:100%;opacity:1;-webkit-transition:opacity .5s;transition:opacity .5s}.mx_CallView_callControls_hidden{opacity:.001;pointer-events:none}.mx_CallView_callControls_button{cursor:pointer;margin-left:8px;margin-right:8px}.mx_CallView_callControls_button:before{content:"";display:inline-block;height:48px;width:48px;background-repeat:no-repeat;background-size:contain;background-position:50%}.mx_CallView_callControls_dialpad{margin-right:auto}.mx_CallView_callControls_dialpad:before{background-image:url(../../img/voip/dialpad.fdda9a0.svg)}.mx_CallView_callControls_button_dialpad_hidden{margin-right:auto;cursor:auto}.mx_CallView_callControls_button_micOn:before{background-image:url(../../img/voip/mic-on.2592c14.svg)}.mx_CallView_callControls_button_micOff:before{background-image:url(../../img/voip/mic-off.774e42b.svg)}.mx_CallView_callControls_button_vidOn:before{background-image:url(../../img/voip/vid-on.b9b8bbf.svg)}.mx_CallView_callControls_button_vidOff:before{background-image:url(../../img/voip/vid-off.5552596.svg)}.mx_CallView_callControls_button_hangup:before{background-image:url(../../img/voip/hangup.9c3adeb.svg)}.mx_CallView_callControls_button_more{margin-left:auto}.mx_CallView_callControls_button_more:before{background-image:url(../../img/voip/more.5e8055e.svg)}.mx_CallView_callControls_button_more_hidden{margin-left:auto;cursor:auto}.mx_CallView_callControls_button_invisible{visibility:hidden;pointer-events:none;position:absolute}.mx_CallViewForRoom{overflow:hidden}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:8px}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle{width:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle:after{content:"";margin-top:3px;border-radius:4px;height:4px;width:100%;max-width:64px;background-color:#2e2f32}.mx_DialPad{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.mx_DialPad_button{width:40px;height:40px;background-color:#e3e8f0;border-radius:40px;font-size:18px;font-weight:600;text-align:center;vertical-align:middle;line-height:40px}.mx_DialPad_deleteButton:before,.mx_DialPad_dialButton:before{content:"";display:inline-block;height:40px;width:40px;vertical-align:middle;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center;background-color:#fff}.mx_DialPad_deleteButton{background-color:#ff4b55}.mx_DialPad_deleteButton:before{-webkit-mask-image:url(../../img/element-icons/call/delete.833d785.svg);mask-image:url(../../img/element-icons/call/delete.833d785.svg);-webkit-mask-position:9px;mask-position:9px}.mx_DialPad_dialButton{background-color:#0dbd8b}.mx_DialPad_dialButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_DialPadContextMenu_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadContextMenu_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadContextMenu_dialled{height:1em;font-size:18px;font-weight:600}.mx_DialPadContextMenu_dialPad{margin:16px}.mx_DialPadContextMenu_horizSep{position:relative}.mx_DialPadContextMenu_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_Dialog_dialPadWrapper .mx_Dialog{padding:0}.mx_DialPadModal{width:192px;height:368px}.mx_DialPadModal_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadModal_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadModal_cancel{float:right;-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer}.mx_DialPadModal_field{border:none;margin:0}.mx_DialPadModal_field input{font-size:18px;font-weight:600}.mx_DialPadModal_dialPad{margin-left:16px;margin-right:16px;margin-top:16px}.mx_DialPadModal_horizSep{position:relative}.mx_DialPadModal_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_VideoFeed_voice{padding-bottom:52px;background-color:#27303a}.mx_VideoFeed_remote{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_VideoFeed_remote.mx_VideoFeed_video{background-color:#000}.mx_VideoFeed_local{max-width:25%;max-height:25%;position:absolute;right:10px;top:10px;z-index:100;border-radius:4px}.mx_VideoFeed_local.mx_VideoFeed_video{background-color:transparent}.mx_VideoFeed_mirror{-webkit-transform:scaleX(-1);transform:scaleX(-1)} +@charset "utf-8";@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Regular.4232a67.woff2) format("woff2"),url(../../fonts/Inter/Inter-Regular.3a1908c.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Italic.b791861.woff2) format("woff2"),url(../../fonts/Inter/Inter-Italic.b13e6fe.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Medium.027d14e.woff2) format("woff2"),url(../../fonts/Inter/Inter-Medium.d1f6b6e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-MediumItalic.8154ac2.woff2) format("woff2"),url(../../fonts/Inter/Inter-MediumItalic.1912849.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBold.0802d48.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBold.8357f92.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBoldItalic.10a60d8.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBoldItalic.1c70752.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Bold.fc28dff.woff2) format("woff2"),url(../../fonts/Inter/Inter-Bold.025b6f2.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-BoldItalic.2129bd0.woff2) format("woff2"),url(../../fonts/Inter/Inter-BoldItalic.80f8542.woff) format("woff")}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.2aafaa1.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-display:swap;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.5476fd3.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.6bc411a.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.000abc6.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.hljs-addition{background:#dfd}.hljs-deletion{background:#fdd}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.mx_LeftPanel{background-image:unset;background-image:var(--avatar-url,unset);background-repeat:no-repeat;background-size:cover;background-position:0 0}.mx_GroupFilterPanel,.mx_SpacePanel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.mx_LeftPanel .mx_LeftPanel_roomListContainer{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}.mx_RoomSublist_showNButton{background-color:transparent!important}a:hover,a:link,a:visited{text-decoration:none}:root{font-size:10px;--transition-short:.1s;--transition-standard:.3s}@media (prefers-reduced-motion){:root{--transition-short:0;--transition-standard:0}}html{height:100%;overflow:hidden}body{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.5rem;background-color:#fff;color:#2e2f32;border:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code,pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji;font-size:100%!important}.error,.text-error,.text-warning,.warning{color:#ff4b55}.text-success{color:#0dbd8b}.text-muted{color:#61708b}b{font-weight:700}h2{color:#2e2f32;font-weight:400;font-size:1.8rem;margin-top:16px;margin-bottom:16px}a:hover,a:link,a:visited{color:#238cf5}input[type=password],input[type=search],input[type=text]{padding:9px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;font-weight:600;min-width:0}input[type=search].mx_textinput_icon,input[type=text].mx_textinput_icon{padding-left:36px;background-repeat:no-repeat;background-position:10px}input[type=search].mx_textinput_icon.mx_textinput_search,input[type=text].mx_textinput_icon.mx_textinput_search{background-image:url(../../img/feather-customised/search-input.044bfa7.svg)}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1}input::-ms-input-placeholder,textarea::-ms-input-placeholder{opacity:1}input::placeholder,textarea::placeholder{opacity:1}input[type=password],input[type=text],textarea{background-color:transparent;color:#2e2f32}textarea{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;color:#2e2f32}input[type=password]:focus,input[type=text]:focus,textarea:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}:focus:not(.focus-visible){outline:none}.mx_Dialog .mx_textinput>input[type=search],.mx_Dialog .mx_textinput>input[type=text],.mx_MatrixChat .mx_textinput>input[type=search],.mx_MatrixChat .mx_textinput>input[type=text]{border:none;-webkit-box-flex:1;-ms-flex:1;flex:1;color:#2e2f32}.mx_Dialog .mx_textinput,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text],.mx_MatrixChat .mx_textinput,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:transparent;color:#9fa9ba;border-radius:4px;border:1px solid rgba(46,47,50,.1);margin:9px}.mx_Dialog .mx_textinput,.mx_MatrixChat .mx_textinput{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dialog .mx_textinput input::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder,.mx_MatrixChat .mx_textinput input::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder,.mx_MatrixChat .mx_textinput input::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder,.mx_MatrixChat .mx_textinput input:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder,.mx_MatrixChat .mx_textinput input::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder,.mx_MatrixChat .mx_textinput input::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder{color:rgba(159,169,186,.75)}.dark-panel{background-color:#f2f5f8}.dark-panel .mx_textinput,.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#fff;border:none}.light-panel .mx_textinput,.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#f2f5f8;border:none}::-moz-focus-inner{border:0}#mx_theme_accentColor{color:#0dbd8b}#mx_theme_secondaryAccentColor{color:#f2f5f8}#mx_theme_tertiaryAccentColor{color:#d3efe1}.mx_Dialog_wrapper{position:fixed;z-index:4000;top:0;left:0;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_Dialog{background-color:#fff;color:#747474;z-index:4012;font-weight:300;font-size:1.5rem;position:relative;padding:24px;max-height:80%;-webkit-box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);border-radius:8px;overflow-y:auto}.mx_Dialog_fixedWidth{width:60vw;max-width:704px}.mx_Dialog_staticWrapper .mx_Dialog{z-index:4010}.mx_Dialog_background{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(46,48,51,.38);opacity:.8;z-index:4011}.mx_Dialog_background.mx_Dialog_staticBackground{z-index:4009}.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background{opacity:.4}.mx_Dialog_lightbox .mx_Dialog_background{opacity:.95;background-color:#000}.mx_Dialog_lightbox .mx_Dialog{border-radius:0;background-color:transparent;width:100%;height:100%;max-width:100%;max-height:100%;pointer-events:none;padding:0}.mx_Dialog_header{position:relative;margin-bottom:10px}.mx_Dialog_titleImage{vertical-align:sub;width:25px;height:25px;margin-left:-2px;margin-right:4px}.mx_Dialog_title{font-size:2.2rem;font-weight:600;line-height:3.6rem;color:#45474a}.mx_Dialog_header.mx_Dialog_headerWithButton>.mx_Dialog_title{text-align:center}.mx_Dialog_header.mx_Dialog_headerWithCancel>.mx_Dialog_title{margin-right:20px}.mx_Dialog_title.danger{color:#ff4b55}.mx_Dialog_cancelButton{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px;right:0}.mx_Dialog_content{margin:24px 0 68px;font-size:1.4rem;color:#2e2f32;word-wrap:break-word}.mx_Dialog_buttons{margin-top:20px;text-align:right}.mx_Dialog_buttons .mx_Dialog_buttons_additive{float:left}.mx_Dialog_buttons button,.mx_Dialog_buttons input[type=submit],.mx_Dialog button,.mx_Dialog input[type=submit]{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-left:0;margin-right:8px;font-weight:600;border:1px solid #0dbd8b;color:#0dbd8b;background-color:#fff;font-family:inherit}.mx_Dialog button:last-child{margin-right:0}.mx_Dialog_buttons button:focus,.mx_Dialog_buttons input[type=submit]:focus,.mx_Dialog button:focus,.mx_Dialog input[type=submit]:focus{-webkit-filter:brightness(105%);filter:brightness(105%)}.mx_Dialog_buttons button.mx_Dialog_primary,.mx_Dialog_buttons input[type=submit].mx_Dialog_primary,.mx_Dialog button.mx_Dialog_primary,.mx_Dialog input[type=submit].mx_Dialog_primary{color:#fff;background-color:#0dbd8b;min-width:156px}.mx_Dialog_buttons button.danger,.mx_Dialog_buttons input[type=submit].danger,.mx_Dialog button.danger,.mx_Dialog input[type=submit].danger{background-color:#ff4b55;border:1px solid #ff4b55;color:#fff}.mx_Dialog button.warning,.mx_Dialog input[type=submit].warning{border:1px solid #ff4b55;color:#ff4b55}.mx_Dialog_buttons button:disabled,.mx_Dialog_buttons input[type=submit]:disabled,.mx_Dialog button:disabled,.mx_Dialog input[type=submit]:disabled{background-color:#747474;border:1px solid #747474;opacity:.7}.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog{width:auto;border-radius:8px;padding:0;-webkit-box-shadow:none;box-shadow:none;overflow-x:hidden;overflow-y:hidden}.mx_GeneralButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;display:inline;margin:auto}.mx_linkButton{cursor:pointer;color:#0dbd8b}.mx_TextInputDialog_label{text-align:left;padding-bottom:12px}.mx_TextInputDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;font-size:1.5rem;padding:0 1.5em}.mx_button_row{margin-top:69px}.mx_Username_color1{color:#368bd6}.mx_Username_color2{color:#ac3ba8}.mx_Username_color3{color:#0dbd8b}.mx_Username_color4{color:#e64f7a}.mx_Username_color5{color:#ff812d}.mx_Username_color6{color:#2dc2c5}.mx_Username_color7{color:#5c56f5}.mx_Username_color8{color:#74d12c}.mx_Tooltip_dark .mx_Tooltip_chevron:after{border-right-color:#27303a}html{scrollbar-color:rgba(0,0,0,.2) transparent}*{scrollbar-width:thin}::-webkit-scrollbar{width:6px;height:6px;background-color:transparent}::-webkit-scrollbar-thumb{border-radius:3px;background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar:hover{scrollbar-color:rgba(0,0,0,.2) transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar{background-color:transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar{overflow-x:hidden;overflow-y:auto;overflow-y:overlay;-ms-overflow-style:-ms-autohiding-scrollbar}.mx_AutoHideScrollbar::-webkit-scrollbar,.mx_AutoHideScrollbar::-webkit-scrollbar-thumb{background-color:transparent}.mx_AutoHideScrollbar{scrollbar-color:transparent transparent}.mx_CompatibilityPage{width:100%;height:100%;background-color:#e55}.mx_CompatibilityPage_box{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;width:500px;height:300px;border:1px solid;padding:10px;background-color:#fcc}.mx_ContextualMenu_wrapper{position:fixed;z-index:5000}.mx_ContextualMenu_background{position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;z-index:5000}.mx_ContextualMenu{border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);background-color:#fff;color:#2e2f32;position:absolute;font-size:1.4rem;z-index:5001}.mx_ContextualMenu_right{right:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_right{right:8px}.mx_ContextualMenu_chevron_right{position:absolute;right:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_left{left:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_left{left:8px}.mx_ContextualMenu_chevron_left{position:absolute;left:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_top{top:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_top{top:8px}.mx_ContextualMenu_chevron_top{position:absolute;left:0;top:-8px;width:0;height:0;border-left:8px solid transparent;border-bottom:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_bottom{bottom:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom{bottom:8px}.mx_ContextualMenu_chevron_bottom{position:absolute;left:0;bottom:-8px;width:0;height:0;border-left:8px solid transparent;border-top:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_spinner{display:block;margin:0 auto}.mx_CreateRoom{width:960px;margin-left:auto;margin-right:auto;color:#2e2f32}.mx_CreateRoom input,.mx_CreateRoom textarea{border-radius:3px;border:1px solid #c7c7c7;font-weight:300;font-size:1.3rem;padding:9px;margin-top:6px}.mx_CreateRoom_description{width:330px}.mx_CustomRoomTagPanel{background-color:hsla(0,0%,91%,.77);max-height:40vh}.mx_CustomRoomTagPanel_scroller{max-height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CustomRoomTagPanel .mx_AccessibleButton{margin:0 auto;width:40px;padding:10px 0 9px;position:relative}.mx_CustomRoomTagPanel .mx_BaseAvatar_image{-webkit-box-sizing:border-box;box-sizing:border-box;width:40px;height:40px}.mx_CustomRoomTagPanel .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before{content:"";height:56px;background-color:#238cf5;width:5px;position:absolute;left:-9px;border-radius:0 3px 3px 0;top:5px}.mx_FilePanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_FilePanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_FilePanel .mx_RoomView_MessageList{width:100%}.mx_FilePanel .mx_EventTile_avatar,.mx_FilePanel .mx_RoomView_MessageList h2{display:none}.mx_FilePanel .mx_EventTile{word-break:break-word;margin-top:32px}.mx_FilePanel .mx_EventTile .mx_MImageBody{margin-right:0}.mx_FilePanel .mx_EventTile .mx_MFileBody{line-height:2.4rem}.mx_FilePanel .mx_EventTile .mx_MFileBody_download{padding-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.4rem;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#747474}.mx_FilePanel .mx_EventTile .mx_MImageBody_size{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;font-size:1.4rem;text-align:right;white-space:nowrap}.mx_FilePanel .mx_EventTile_senderDetails{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:-2px}.mx_FilePanel .mx_EventTile_senderDetailsLink{text-decoration:none}.mx_FilePanel .mx_EventTile .mx_SenderProfile{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;line-height:normal;padding:0;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MessageTimestamp{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;text-align:right;visibility:visible;position:static;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile_line{margin-right:0;padding-left:0}.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_FilePanel_empty:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_GenericErrorPage{width:100%;height:100%;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GenericErrorPage_box{display:inline;width:500px;min-height:125px;border:1px solid #f22;padding:10px 10px 20px;background-color:#fcc}.mx_GroupFilterPanel{-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:hsla(0,0%,91%,.77);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:0}.mx_GroupFilterPanel_items_selected{cursor:pointer}.mx_GroupFilterPanel .mx_GroupFilterPanel_divider{height:0;width:90%;border:none;border-bottom:1px solid #8d99a5}.mx_GroupFilterPanel .mx_GroupFilterPanel_scroller{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:6px}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer>div{margin:6px 0}.mx_GroupFilterPanel .mx_TagTile{position:relative}.mx_GroupFilterPanel .mx_TagTile .mx_BetaDot{position:absolute;right:-13px;top:-11px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype{padding:3px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype{background-color:#fff;border-radius:6px}.mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before{background-color:#2e2f32}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon{background-color:rgba(92,100,112,.2);border-radius:48px}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before{background-color:#5c6470}.mx_TagTile_homeIcon{width:32px;height:32px;position:relative}.mx_TagTile_homeIcon:before{-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:21px;mask-size:21px;content:"";display:inline-block;width:32px;height:32px;position:absolute;top:calc(50% - 16px);left:calc(50% - 16px)}.mx_GroupFilterPanel .mx_TagTile_plus{margin-bottom:12px;height:32px;width:32px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative;display:block!important}.mx_GroupFilterPanel .mx_TagTile_plus:before{background-color:#5c6470;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before{content:"";height:100%;background-color:#0dbd8b;width:4px;position:absolute;left:-12px;border-radius:0 3px 3px 0}.mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_TagTile_tooltip{position:relative;top:-30px;left:5px}.mx_TagTile_context_button{min-width:15px;height:15px;position:absolute;right:-5px;top:-8px;border-radius:8px;background-color:#dbdbdb;color:#000;font-weight:600;font-size:1rem;text-align:center;padding-top:1px;padding-left:4px;padding-right:4px}.mx_TagTile_avatar{position:relative}.mx_TagTile_badge{position:absolute;right:-4px;top:-2px;border-radius:8px;color:#fff;font-weight:600;font-size:1.4rem;padding:0 5px;background-color:#61708b}.mx_TagTile_badgeHighlight{background-color:#ff4b55}.mx_GroupView{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_GroupView_error{margin:auto}.mx_GroupView_header{min-height:52px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:10px;padding-left:19px}.mx_GroupView_header_view{border-bottom:1px solid transparent;padding-bottom:0;padding-right:8px}.mx_GroupView_header_avatar,.mx_GroupView_header_info{display:table-cell;vertical-align:middle}.mx_GroupHeader_button{position:relative;margin-left:5px;margin-right:5px;cursor:pointer;height:20px;width:20px}.mx_GroupHeader_button:before{content:"";position:absolute;height:20px;width:20px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_GroupHeader_editButton:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_GroupHeader_shareButton:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_GroupView_hostingSignup img{margin-left:5px}.mx_GroupView_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_GroupView_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable){color:#0dbd8b;cursor:pointer}.mx_GroupView_avatarPicker{position:relative}.mx_GroupView_avatarPicker_edit{position:absolute;top:50px;left:15px}.mx_GroupView_avatarPicker .mx_Spinner{width:48px;height:48px!important}.mx_GroupView_header_leftCol{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.mx_GroupView_header_rightCol{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupView_textButton{display:inline-block}.mx_GroupView_header_groupid{font-weight:400;font-size:medium;padding-left:10px}.mx_GroupView_header_name{vertical-align:middle;width:100%;height:31px;color:#2e2f32;font-weight:700;font-size:2.2rem;padding-right:16px}.mx_GroupView_header_name,.mx_GroupView_header_shortDesc{overflow:hidden;padding-left:19px;text-overflow:ellipsis;border-bottom:1px solid transparent}.mx_GroupView_header_shortDesc{vertical-align:bottom;float:left;max-height:42px;color:#a2a2a2;font-weight:300;font-size:1.3rem;margin-right:16px}.mx_GroupView_avatarPicker_label{cursor:pointer}.mx_GroupView_cancelButton{padding-left:8px}.mx_GroupView_cancelButton img{position:relative;top:5px}.mx_GroupView input[type=radio]{margin:10px 10px 0}.mx_GroupView_label_text{display:inline-block;max-width:80%;vertical-align:.1em;line-height:2em}.mx_GroupView_body{margin:0 24px}.mx_GroupView_body,.mx_GroupView_rooms{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_GroupView_rooms{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView h3{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;margin-bottom:10px}.mx_GroupView_rooms_header .mx_AccessibleButton{padding-left:14px;margin-bottom:14px;height:24px}.mx_GroupView_group{border-top:1px solid transparent}.mx_GroupView_group_disabled{opacity:.3;pointer-events:none}.mx_GroupView_rooms_header_addRow_button{display:inline-block}.mx_GroupView_rooms_header_addRow_button object{pointer-events:none}.mx_GroupView_rooms_header_addRow_label{display:inline-block;vertical-align:top;line-height:2.4rem;padding-left:28px;color:#0dbd8b}.mx_GroupView_rooms .mx_RoomDetailList{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border-top:1px solid transparent;padding-top:10px;word-break:break-word}.mx_GroupView .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_GroupView_membershipSection{color:#888;margin-top:10px}.mx_GroupView_membershipSubSection{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:8px}.mx_GroupView_membershipSubSection .mx_Spinner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_GroupView_membershipSection_description{line-height:3.4rem}.mx_GroupView_membershipSection_description .mx_BaseAvatar{margin-right:10px}.mx_GroupView_membershipSection .mx_GroupView_textButton{margin-right:0;margin-top:0;margin-left:8px}.mx_GroupView_memberSettings_toggle label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView_memberSettings input{margin-right:6px}.mx_GroupView_featuredThings{margin-top:20px}.mx_GroupView_featuredThings_header{font-weight:700;font-size:120%;margin-bottom:20px}.mx_GroupView_featuredThings_category{font-weight:700;font-size:110%;margin-top:10px}.mx_GroupView_featuredThings_container{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_GroupView_featuredThing,.mx_GroupView_featuredThings_addButton{display:table-cell;text-align:center;width:100px;margin:0 20px}.mx_GroupView_featuredThing{position:relative}.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton{position:absolute;top:-7px;right:11px;opacity:.4}.mx_GroupView_featuredThing .mx_BaseAvatar{vertical-align:baseline;vertical-align:initial}.mx_GroupView_featuredThings_addButton object{pointer-events:none}.mx_GroupView_featuredThing_name{word-wrap:break-word}.mx_GroupView_uploadInput{display:none}.mx_GroupView_body .mx_AutoHideScrollbar>*{margin:11px 50px 50px 68px}.mx_GroupView_groupDesc textarea{width:100%;max-width:100%;height:150px}.mx_GroupView_changeDelayWarning,.mx_GroupView_groupDesc_placeholder{background-color:#f7f7f7;color:#888;border-radius:10px;text-align:center;margin:20px 0}.mx_GroupView_groupDesc_placeholder{padding:100px 20px;cursor:pointer}.mx_GroupView_changeDelayWarning{padding:40px 20px}.mx_GroupView .mx_MemberInfo .mx_AutoHideScrollbar>:not(.mx_MemberInfo_avatar){padding-left:16px;padding-right:16px}.mx_HeaderButtons{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_buttons+.mx_HeaderButtons:before{content:unset}.mx_HeaderButtons:before{content:"";background-color:#91a1c0;opacity:.5;margin:6px 8px;border-radius:1px;width:1px}.mx_HomePage{max-width:960px;width:100%;height:100%;margin-left:auto;margin-right:auto}.mx_HomePage_default{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HomePage_default .mx_HomePage_default_wrapper{margin:auto}.mx_HomePage_default img{height:48px}.mx_HomePage_default h1{font-weight:600;font-size:3.2rem;line-height:4.4rem;margin-bottom:4px}.mx_HomePage_default h4{margin-top:4px;font-weight:600;font-size:1.8rem;line-height:2.5rem;color:#61708b}.mx_HomePage_default .mx_MiniAvatarUploader{margin:0 auto}.mx_HomePage_default .mx_HomePage_default_buttons{margin:60px auto 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton{padding:73px 8px 15px;width:160px;height:132px;margin:20px;position:relative;display:inline-block;border-radius:8px;vertical-align:top;word-break:break-word;-webkit-box-sizing:border-box;box-sizing:border-box;font-weight:600;font-size:1.5rem;line-height:2rem;color:#fff;background-color:#0dbd8b}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before{top:20px;left:60px;width:40px;height:40px;content:"";position:absolute;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_sendDm:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_createGroup:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_LeftPanel{background-color:hsla(0,0%,96.1%,.9);min-width:206px;max-width:50%;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:56px;flex-basis:56px;height:100%;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer,.mx_LeftPanel .mx_LeftPanel_roomListContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanel .mx_LeftPanel_roomListContainer{background-color:hsla(0,0%,96.1%,.9);-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{padding:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer{overflow-y:hidden;overflow-x:scroll;margin:12px 12px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));mask-image:linear-gradient(90deg,transparent,#000 5%)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,#000,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,#000,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{margin-left:12px;margin-right:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton{-ms-flex-preferred-size:0;flex-basis:0;margin:0;width:0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton:before,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton:before{content:none}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{width:32px;height:32px;border-radius:8px;background-color:rgba(141,151,165,.2);position:relative;margin-left:8px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton:before{content:"";position:absolute;top:8px;left:8px;width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton.mx_LeftPanel_exploreButton_space:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListFilterCount{font-size:1.3rem;font-weight:600;margin-left:12px;margin-top:14px;margin-bottom:-4px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper{overflow:hidden;margin-top:10px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom{padding-bottom:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop{padding-top:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_actualRoomListContainer{position:relative;height:100%}.mx_LeftPanel.mx_LeftPanel_minimized{min-width:unset;width:unset!important}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer{width:68px}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{margin-left:0;margin-top:8px;background-color:transparent}.mx_LeftPanelWidget{margin-left:8px;margin-bottom:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:24px;color:#8d99a5;margin-top:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn.mx_LeftPanelWidget_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column;overflow:visible}.mx_LeftPanelWidget .mx_AppTileFullWidth,.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanelWidget .mx_AppTileFullWidth{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;overflow:hidden;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle{cursor:ns-resize;border-radius:3px;width:unset!important;height:4px!important;position:absolute;top:-24px!important;left:calc(50% - 32px)!important;right:calc(50% - 32px)!important}.mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton{margin-left:8px;margin-right:7px;position:relative;width:24px;height:24px;border-radius:32px}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg);background:#61708b}.mx_LeftPanelWidget_maximizeButtonTooltip{margin-top:-3px}.mx_MainSplit{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:0;min-height:0;height:100%}.mx_MainSplit>.mx_RightPanel_ResizeWrapper{padding:5px;margin-left:8px;height:calc(100vh - 51px)}.mx_MainSplit>.mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle{top:50%!important;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px!important;width:4px!important;border-radius:4px!important;background-color:#2e2f32;opacity:.8}.mx_MatrixChat_splash{position:relative;height:100%}.mx_MatrixChat_splashButtons{text-align:center;width:100%;position:absolute;bottom:30px}.mx_MatrixChat_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%}.mx_MatrixToolbar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;height:40px}.mx_MatrixChat{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_MatrixChat_syncError{color:#fff;background-color:#df2a8b;border-radius:5px;display:table;padding:30px;position:absolute;top:100px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.mx_MatrixChat>:not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle){background-color:#fff;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;height:100%}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover{position:relative}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover:before{position:absolute;left:6px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:" ";background-color:#2e2f32;opacity:.8}.mx_MyGroups{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MyGroups .mx_BetaCard{margin:0 72px;max-width:760px}.mx_MyGroups .mx_RoomHeader_simpleHeader{margin-left:0}.mx_MyGroups_header{margin-left:2px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_MyGroups>:not(.mx_RoomHeader):not(.mx_BetaCard){max-width:960px;margin:40px}.mx_MyGroups_headerCard{-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%;margin-bottom:30px;min-width:400px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:13px;height:40px;width:40px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before{background-color:#5c6470;-webkit-mask:url(../../img/icons-create-room.817ede2.svg);mask:url(../../img/icons-create-room.817ede2.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_MyGroups_headerCard_header{font-weight:700;margin-bottom:10px}.mx_MyGroups_headerCard_content{padding-right:15px}.mx_MyGroups_joinBox{visibility:hidden;height:0;margin:0}.mx_MyGroups_content{margin-left:2px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_MyGroups_scrollable{overflow-y:inherit}.mx_MyGroups_placeholder{background-color:#f7f7f7;color:#888;line-height:40rem;border-radius:10px;text-align:center}.mx_MyGroups_joinedGroups{border-top:1px solid transparent;overflow-x:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}.mx_MyGroups_joinedGroups .mx_GroupTile{min-width:300px;max-width:33%;-webkit-box-flex:1;-ms-flex:1 0 300px;flex:1 0 300px;height:75px;margin:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer}.mx_GroupTile_avatar{cursor:-webkit-grab,-webkit-grab;cursor:grab,-webkit-grab}.mx_GroupTile_profile{margin-left:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GroupTile_profile .mx_GroupTile_desc,.mx_GroupTile_profile .mx_GroupTile_groupId,.mx_GroupTile_profile .mx_GroupTile_name{padding-right:10px}.mx_GroupTile_profile .mx_GroupTile_name{margin:0;font-size:1.5rem}.mx_GroupTile_profile .mx_GroupTile_groupId{font-size:1.3rem;opacity:.7}.mx_GroupTile_profile .mx_GroupTile_desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.3rem;max-height:36px;overflow:hidden}.mx_NonUrgentToastContainer{position:absolute;bottom:30px;left:28px;z-index:101}.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast{padding:10px 12px;border-radius:8px;width:320px;font-size:1.3rem;margin-top:8px;background-color:#17191c;color:#fff}.mx_NotificationPanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationPanel .mx_RoomView_MessageList{width:100%}.mx_NotificationPanel .mx_RoomView_MessageList h2{margin-left:0}.mx_NotificationPanel .mx_EventTile{word-break:break-word;position:relative;padding-bottom:18px}.mx_NotificationPanel .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after{position:absolute;bottom:0;left:0;right:0;background-color:#8d99a5;height:1px;opacity:.4;content:""}.mx_NotificationPanel .mx_EventTile_roomName{font-weight:700;font-size:1.4rem}.mx_NotificationPanel .mx_EventTile_roomName>*{vertical-align:middle}.mx_NotificationPanel .mx_EventTile_roomName>.mx_BaseAvatar{margin-right:8px}.mx_NotificationPanel .mx_EventTile_roomName a{color:#2e2f32}.mx_NotificationPanel .mx_EventTile_avatar{display:none}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp,.mx_NotificationPanel .mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.2rem;display:inline;padding-left:0}.mx_NotificationPanel .mx_EventTile_senderDetails{padding-left:36px;position:relative}.mx_NotificationPanel .mx_EventTile_senderDetails a{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_EventTile_roomName a,.mx_NotificationPanel .mx_EventTile_senderDetails a{text-decoration:none!important}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp{visibility:visible;position:static;display:inline}.mx_NotificationPanel .mx_EventTile_line{margin-right:0;padding:0 0 0 36px}.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_NotificationPanel .mx_EventTile_content{margin-right:0}.mx_NotificationPanel_empty:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RightPanel{overflow-x:hidden;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:8px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.mx_RightPanel .mx_RoomView_MessageList{padding:14px 18px}.mx_RightPanel_header{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;border-bottom:1px solid transparent;-webkit-box-flex:0;-ms-flex:0 0 52px;flex:0 0 52px}.mx_RightPanel_headerButtonGroup{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#fff;padding:0 9px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RightPanel_headerButton{cursor:pointer;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1px;margin-right:1px;height:32px;width:32px;position:relative;border-radius:100%}.mx_RightPanel_headerButton:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RightPanel_headerButton:hover{background:rgba(13,189,139,.1)}.mx_RightPanel_headerButton:hover:before{background-color:#0dbd8b}.mx_RightPanel_notifsButton:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomSummaryButton:before{-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_groupMembersButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomsButton:before{-webkit-mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_headerButton_highlight:before{background-color:#0dbd8b!important}.mx_RightPanel_headerButton_badge{font-size:.8rem;border-radius:8px;color:#fff;background-color:#0dbd8b;font-weight:700;position:absolute;top:-4px;left:20px;padding:2px 4px}.mx_RightPanel_collapsebutton{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;height:16px;border:none}.mx_RightPanel .mx_GroupRoomList,.mx_RightPanel .mx_MemberInfo,.mx_RightPanel .mx_MemberList,.mx_RightPanel_blank{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RightPanel .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:auto}.mx_RightPanel_empty{margin-right:-28px}.mx_RightPanel_empty h2{font-weight:700;margin:16px 0}.mx_RightPanel_empty h2,.mx_RightPanel_empty p{font-size:1.4rem}.mx_RightPanel_empty:before{content:"";display:block;margin:11px auto 29px;height:42px;width:42px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_RightPanel_scopeHeader{margin:24px;text-align:center;font-weight:600;font-size:1.8rem;line-height:2.2rem}.mx_RightPanel_scopeHeader .mx_BaseAvatar{margin-right:8px;vertical-align:middle}.mx_RightPanel_scopeHeader .mx_BaseAvatar_image{border-radius:8px}.mx_RoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_RoomDirectory_dialog{height:100%;flex-direction:column}.mx_RoomDirectory,.mx_RoomDirectory_dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory{margin-bottom:12px;color:#2e2f32;word-break:break-word}.mx_RoomDirectory,.mx_RoomDirectory_list{flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_RoomDirectory_list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory_list .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomDirectory_listheader{display:block;margin-top:13px}.mx_RoomDirectory_searchbox{-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important}.mx_RoomDirectory_listheader .mx_NetworkDropdown{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.mx_RoomDirectory_tableWrapper{overflow-y:auto;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomDirectory_table{color:#2e2f32;display:grid;font-size:1.2rem;grid-template-columns:-webkit-max-content auto -webkit-max-content -webkit-max-content -webkit-max-content;grid-template-columns:max-content auto max-content max-content max-content;grid-row-gap:24px;row-gap:24px;text-align:left;width:100%}.mx_RoomDirectory_roomAvatar{padding:2px 14px 0 0}.mx_RoomDirectory_roomMemberCount{-ms-flex-item-align:center;align-self:center;color:#747474;padding:3px 10px 0}.mx_RoomDirectory_roomMemberCount:before{background-color:#747474;display:inline-block;vertical-align:text-top;margin-right:2px;content:"";-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;width:16px;height:16px}.mx_RoomDirectory_join,.mx_RoomDirectory_preview{-ms-flex-item-align:center;align-self:center;white-space:nowrap}.mx_RoomDirectory_name{display:inline-block;font-size:1.8rem;font-weight:600}.mx_RoomDirectory_perms{display:inline-block}.mx_RoomDirectory_perm{border-radius:10px;display:inline-block;height:20px;line-height:2rem;padding:0 5px;color:#fff;background-color:#aaa}.mx_RoomDirectory_topic{cursor:auto;color:#747474;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.mx_RoomDirectory_alias{font-size:1.2rem;color:#a2a2a2}.mx_RoomDirectory_table tr{padding-bottom:10px;cursor:pointer}.mx_RoomDirectory .mx_RoomView_MessageList{padding:0}.mx_RoomDirectory>span{font-size:1.5rem;margin-top:0}.mx_RoomDirectory>span .mx_AccessibleButton{padding:0}.mx_RoomSearch{-webkit-box-flex:1;-ms-flex:1;flex:1;border-radius:8px;background-color:rgba(141,151,165,.2);border:1px solid transparent;height:28px;padding:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSearch .mx_RoomSearch_icon{width:16px;height:16px;-webkit-mask:url(../../img/element-icons/roomlist/search.3774248.svg);mask:url(../../img/element-icons/roomlist/search.3774248.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-left:7px}.mx_RoomSearch .mx_RoomSearch_input{border:none!important;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important;padding:0;height:100%;width:100%;font-size:1.2rem;line-height:1.6rem}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder{color:#8d99a5!important}.mx_RoomSearch.mx_RoomSearch_hasQuery{border-color:#737d8c}.mx_RoomSearch.mx_RoomSearch_focused{-webkit-box-shadow:0 0 4px 4px rgba(0,132,255,.5);box-shadow:0 0 4px 4px rgba(0,132,255,.5);border-color:transparent}.mx_RoomSearch.mx_RoomSearch_focused,.mx_RoomSearch.mx_RoomSearch_hasQuery{background-color:#fff}.mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton,.mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton{width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-right:8px}.mx_RoomSearch .mx_RoomSearch_clearButton{width:0;height:0}.mx_RoomSearch.mx_RoomSearch_minimized{border-radius:32px;height:auto;width:auto;padding:8px}.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon{margin-left:0}.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){margin-left:65px;min-height:50px}.mx_RoomStatusBar_typingIndicatorAvatars{width:52px;margin-top:-1px;text-align:left}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image{margin-right:-12px;border:1px solid #fff}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial{padding-left:1px;padding-top:1px}.mx_RoomStatusBar_typingIndicatorRemaining{display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center;position:absolute}.mx_RoomStatusBar_scrollDownIndicator{cursor:pointer;padding-left:1px}.mx_RoomStatusBar_unreadMessagesBar{padding-top:10px;color:#ff4b55;cursor:pointer}.mx_RoomStatusBar_connectionLostBar{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:19px;min-height:58px}.mx_RoomStatusBar_unsentMessages>div[role=alert]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:70px;margin:12px;padding-left:16px;background-color:#f3f8fd;border-radius:4px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge{margin-right:12px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge{width:24px!important;height:24px!important;border-radius:24px!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge .mx_NotificationBadge_count{font-size:1.6rem!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle{color:#ff4b55;font-size:1.5rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription{font-size:1.2rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:right;margin-right:22px;color:#61708b}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton{padding:5px 10px 5px 28px;display:inline-block;position:relative}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:nth-child(2){border-left:1px solid #e3e8f0}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:before{content:"";position:absolute;left:10px;background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);width:12px;height:16px;top:calc(50% - 8px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn{padding-left:34px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;top:calc(50% - 9px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner{vertical-align:middle;margin-right:5px;top:1px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner+span{margin-right:10px}.mx_RoomStatusBar_connectionLostBar img{padding-left:10px;padding-right:10px;vertical-align:middle;float:left}.mx_RoomStatusBar_connectionLostBar_title{color:#ff4b55}.mx_RoomStatusBar_connectionLostBar_desc{color:#2e2f32;font-size:1.3rem;opacity:.5;padding-bottom:20px}.mx_RoomStatusBar_resend_link{color:#2e2f32!important;text-decoration:underline!important;cursor:pointer}.mx_RoomStatusBar_typingBar{height:50px;line-height:5rem;color:#2e2f32;opacity:.5;overflow-y:hidden;display:block}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){min-height:40px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator{margin-top:10px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar{height:40px;line-height:4rem}.mx_RoomView{word-wrap:break-word;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@-webkit-keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}@keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}.mx_RoomView_fileDropTarget{min-width:0;width:100%;height:100%;font-size:1.8rem;text-align:center;pointer-events:none;background-color:#fff;opacity:.95;position:absolute;z-index:3000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-animation:mx_RoomView_fileDropTarget_animation;animation:mx_RoomView_fileDropTarget_animation;-webkit-animation-duration:.5s;animation-duration:.5s}@-webkit-keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}@keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}.mx_RoomView_fileDropTarget_image{-webkit-animation:mx_RoomView_fileDropTarget_image_animation;animation:mx_RoomView_fileDropTarget_image_animation;-webkit-animation-duration:.5s;animation-duration:.5s;margin-bottom:16px}.mx_RoomView_auxPanel{min-width:0;width:100%;margin:0 auto;overflow:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomView_auxPanel_fullHeight{position:absolute;top:0;bottom:0;left:0;right:0;z-index:3000;background-color:#fff}.mx_RoomView_auxPanel_hiddenHighlights{border-bottom:1px solid transparent;padding:10px 26px;color:#ff4b55;cursor:pointer}.mx_RoomView_auxPanel_apps{max-width:1920px!important}.mx_RoomView .mx_MainSplit,.mx_RoomView_messagePanel{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomView_messagePanel{width:100%;overflow-y:auto;overflow-anchor:none}.mx_RoomView_messagePanelSearchSpinner{-webkit-box-flex:1;-ms-flex:1;flex:1;background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-position:center 367px;background-size:25px;background-repeat:no-repeat;position:relative}.mx_RoomView_messagePanelSearchSpinner:before{background-color:#888;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:50px;mask-size:50px;content:"";position:absolute;top:286px;left:0;right:0;height:50px}.mx_RoomView_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_RoomView_body .mx_RoomView_messagePanel,.mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner,.mx_RoomView_body .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_RoomView_body .mx_RoomView_timeline{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomView_statusArea{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;max-height:0;background-color:#fff;z-index:1000;overflow:hidden;-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.mx_RoomView_statusArea_expanded{max-height:100px}.mx_RoomView_statusAreaBox{margin:auto;min-height:50px}.mx_RoomView_statusAreaBox_line{margin-left:65px;border-top:1px solid transparent;height:1px}.mx_RoomView_messageListWrapper{min-height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomView_searchResultsPanel a{text-decoration:none;color:inherit}.mx_RoomView_empty{font-size:1.3rem;padding:0 24px;margin-right:30px;text-align:center;margin-bottom:80px}.mx_RoomView_MessageList{list-style-type:none;padding:18px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_RoomView_MessageList li{clear:both}li.mx_RoomView_myReadMarker_container{height:0;margin:0;padding:0;border:0}hr.mx_RoomView_myReadMarker{border-top:1px solid #0dbd8b;border-bottom:1px solid #0dbd8b;margin-top:0;position:relative;top:-1px;z-index:1;-webkit-transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;width:99%;opacity:1}.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner{background-color:#fff}.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename{color:#fff;opacity:1}.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line{margin-top:2px;border:none;height:0}.mx_RoomView_inCall .mx_MessageComposer_wrapper{border-top:2px hidden;padding-top:1px}.mx_RoomView_voipChevron{position:absolute;bottom:-11px;right:11px}.mx_RoomView_voipButton{float:right;margin-right:13px;margin-top:13px;cursor:pointer}.mx_RoomView_voipButton object{pointer-events:none}.mx_RoomView .mx_MessageComposer{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:2px}.mx_RoomView_ongoingConfCallNotification{width:100%;text-align:center;background-color:#ff4b55;color:#fff;font-weight:700;padding:6px 0;cursor:pointer}.mx_RoomView_ongoingConfCallNotification a{color:#fff!important}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox{min-height:42px}.mx_ScrollPanel .mx_RoomView_MessageList{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_SearchBox{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0}.mx_SearchBox.mx_SearchBox_blurred:not(:hover){background-color:transparent}.mx_SearchBox .mx_SearchBox_closeButton{cursor:pointer;background-image:url(../../img/icons-close.11ff07c.svg);background-repeat:no-repeat;width:16px;height:16px;background-position:50%;padding:9px}.mx_SpacePanel{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;background-color:hsla(0,0%,91%,.77);padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:8px 8px 16px 0}.mx_SpacePanel .mx_SpacePanel_toggleCollapse{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:40px;height:40px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:32px;mask-size:32px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;margin-left:16px;margin-bottom:12px;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg);mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg)}.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.mx_SpacePanel ul{margin:0;list-style:none;padding:0}.mx_SpacePanel ul>.mx_SpaceItem{padding-left:16px}.mx_SpacePanel .mx_SpaceButton_toggleCollapse{cursor:pointer}.mx_SpacePanel .mx_SpaceTreeLevel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:250px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_SpacePanel .mx_SpaceItem{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow{-ms-flex-item-align:baseline;align-self:baseline}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceButton>.mx_SpaceButton_toggleCollapse{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceTreeLevel{display:none}.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces)>.mx_SpaceButton{margin-left:16px;min-width:40px}.mx_SpacePanel .mx_SpaceButton{border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 4px 4px 0;width:100%}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow .mx_SpaceButton_selectionWrapper{padding:1px;border:3px solid #737d8c}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:12px;padding:4px}.mx_SpacePanel .mx_SpaceButton:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{width:100%;padding-right:16px;overflow:hidden}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:8px;white-space:nowrap;display:block;text-overflow:ellipsis;overflow:hidden;padding-right:8px;font-size:1.4rem;line-height:1.8rem}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse{width:16px;height:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon{width:32px;min-width:32px;height:32px;border-radius:8px;position:relative}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before{position:absolute;content:"";width:32px;height:32px;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:18px;mask-size:18px}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before{background-color:#3f3d3d;-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg)}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon{background-color:#0dbd8b;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before{background-color:#fff;-webkit-mask-image:url(../../img/element-icons/plus.62cc275.svg);mask-image:url(../../img/element-icons/plus.62cc275.svg);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon{background-color:#c1c6cd}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image{border-radius:8px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;display:none;position:absolute;right:4px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);background:#2e2f32}.mx_SpacePanel .mx_SpacePanel_badgeContainer{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge{margin:0 2px}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 7px}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer{right:0;top:0}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge{background-clip:padding-box}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 -1px 0 0;border:3px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_2char,.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_3char{margin:-5px -5px 0 0;border:2px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton.mx_SpaceButton_active .mx_SpacePanel_badgeContainer{right:-3px;top:-3px}.mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer{position:absolute;right:4px}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer{width:0;height:0;display:none}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton{display:block}.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton,.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton.mx_SpaceButton_active:before{height:32px}.mx_SpacePanel>.mx_AutoHideScrollbar>ul{padding-left:0}.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header{margin:12px 16px;font-weight:600;font-size:1.5rem;line-height:1.8rem}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton{color:#0dbd8b}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton .mx_SpacePanel_iconInvite:before{background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_SpacePanel_sharePublicSpace{margin:0}.mx_SpaceRoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_SpaceRoomDirectory{height:100%;margin-bottom:12px;color:#2e2f32;word-break:break-word;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_SpaceRoomDirectory,.mx_SpaceRoomDirectory .mx_Dialog_title,.mx_SpaceRoomView_landing .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar{margin-right:12px;-ms-flex-item-align:center;align-self:center}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory .mx_Dialog_title>div>h1,.mx_SpaceRoomView_landing .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_SpaceRoomDirectory .mx_Dialog_title>div>div,.mx_SpaceRoomView_landing .mx_Dialog_title>div>div{font-weight:400;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link,.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link{padding:0}.mx_SpaceRoomDirectory .mx_SearchBox,.mx_SpaceRoomView_landing .mx_SearchBox{margin:24px 0 16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults{text-align:center}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults>div,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults>div{font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:32px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton{padding:4px 12px;font-weight:400}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton{margin-left:16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline{padding:3px 12px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader>span,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader>span{margin-left:auto}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error{position:relative;font-weight:600;color:#ff4b55;font-size:1.5rem;line-height:1.8rem;margin:20px auto 12px;padding-left:24px;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before{content:"";position:absolute;height:16px;width:16px;left:0;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_SpaceRoomDirectory_list{margin-top:16px;padding-bottom:40px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>h3{display:inline;font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>span{margin-left:8px;font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle{position:absolute;left:-1px;top:10px;height:16px;width:16px;border-radius:4px;background-color:#fff}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before{content:"";position:absolute;top:0;left:0;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-size:16px;mask-size:16px;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children{position:relative;padding-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile{position:relative;padding:8px 16px;border-radius:8px;min-height:56px;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:20px auto -webkit-max-content;grid-template-columns:20px auto max-content;grid-column-gap:8px;grid-row-gap:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar{grid-row:1;grid-column:1}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name{font-weight:600;font-size:1.5rem;line-height:1.8rem;grid-row:1;grid-column:2}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip{display:inline;margin-left:12px;color:#8d99a5;font-size:1.2rem;line-height:1.5rem}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon{margin-right:4px;position:relative;vertical-align:text-top}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon:before{position:absolute;top:0;left:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_info{font-size:1.4rem;line-height:1.8rem;color:#737d8c;grid-row:2;grid-column:1/3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions{text-align:right;margin-left:20px;grid-column:3;grid-row:1/3}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton{line-height:2.4rem;padding:4px 16px;display:inline-block;visibility:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_primary_outline{padding:3px 16px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_Checkbox{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;margin-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover{background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover .mx_AccessibleButton{visibility:visible}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before{content:"";position:absolute;background-color:hsla(0,0%,91%,.77);width:1px;height:100%;left:6px;top:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_actions .mx_SpaceRoomDirectory_actionsText{font-weight:400;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_SpaceRoomDirectory_list>hr{border:none;height:1px;background-color:rgba(141,151,165,.2);margin:20px 0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom{display:block;margin:16px auto 0;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child{padding:80px 60px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-height:100%;overflow-y:auto}.mx_SpaceRoomView .mx_MainSplit>div:first-child h1{margin:0;font-size:2.4rem;font-weight:600;color:#2e2f32;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_description{font-size:1.5rem;color:#737d8c;margin-top:12px;margin-bottom:24px;max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace .mx_AddExistingToSpace_content{height:calc(100vh - 360px);max-height:400px}.mx_SpaceRoomView .mx_MainSplit>div:first-child:not(.mx_SpaceRoomView_landing) .mx_SpaceFeedbackPrompt{width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons{display:block;margin-top:44px;width:428px;text-align:right}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons .mx_AccessibleButton_hasKind{padding:8px 22px;margin-left:16px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons input.mx_AccessibleButton{border:none}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field+.mx_Field{margin-top:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceRoomView .mx_SpaceRoomView_preview{padding:32px 24px!important;margin:auto;max-width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:2px 15px 30px rgba(0,0,0,.48);box-shadow:2px 15px 30px rgba(0,0,0,.48);border-radius:8px;position:relative}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill{position:absolute;right:24px;top:32px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt{font-weight:600;font-size:1.4rem;line-height:2.4rem;color:#2e2f32;margin-top:24px;position:relative;padding-left:24px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt .mx_AccessibleButton_kind_link{display:inline;padding:0;font-size:inherit;line-height:inherit}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt:before{content:"";position:absolute;height:2.4rem;width:20px;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);background-color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;font-size:1.5rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div{margin-left:8px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_name{line-height:1.8rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_mxid{line-height:2.4rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name{margin:20px 0!important}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic{font-size:1.4rem;line-height:2.2rem;color:#737d8c;margin:20px 0;max-height:160px;overflow-y:auto}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons{margin-top:20px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton{width:200px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 0}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name{margin:24px 0 16px;font-size:1.5rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name>span{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow{margin-top:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow>h1{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_inviter .mx_BaseAvatar{margin-right:4px;vertical-align:middle}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_info{display:inline-block;margin:0 auto 0 0}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile{display:inline-block;margin-right:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile .mx_FacePile_faces{cursor:pointer}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton{position:relative;padding:4px 18px 4px 40px;line-height:2.4rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton:before{position:absolute;content:"";left:8px;height:16px;width:16px;background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton{position:relative;margin-left:16px;width:24px;height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton:before{position:absolute;content:"";left:0;top:0;height:24px;width:24px;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic{font-size:1.5rem;margin-top:12px;margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>hr{border:none;height:1px;background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox{margin:0 0 20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt{margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt+hr{display:none}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>span{color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_justMeButton:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer{padding:58px 16px 16px;position:relative;border-radius:8px;background-color:#f3f8fd;max-width:428px;margin:20px 0 30px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer .mx_BetaCard_betaPill{position:absolute;left:16px;top:16px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons{color:#737d8c;margin-top:28px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton{position:relative;display:inline-block;padding-left:32px;line-height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton:before{content:"";position:absolute;height:24px;width:24px;top:0;left:0;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:32px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_SpaceRoomView_inviteTeammates_inviteDialogButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView_info{color:#737d8c;font-size:1.5rem;line-height:2.4rem;margin:20px 0}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public{padding-left:20px;position:relative}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{position:absolute;content:"";width:20px;height:20px;top:0;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{-webkit-mask-size:12px;mask-size:12px;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before{-webkit-mask-size:14px;mask-size:14px;-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link{color:inherit;position:relative;padding-left:16px}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before{content:"·";position:absolute;left:6px}.mx_SpaceFeedbackPrompt{margin-top:18px;margin-bottom:12px}.mx_SpaceFeedbackPrompt>hr{border:none;border-top:1px solid #e7e7e7;margin-bottom:12px}.mx_SpaceFeedbackPrompt>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:1.5rem;line-height:2.4rem}.mx_SpaceFeedbackPrompt>div>span{color:#737d8c;position:relative;padding-left:32px;font-size:inherit;line-height:inherit;margin-right:auto}.mx_SpaceFeedbackPrompt>div>span:before{content:"";position:absolute;left:0;top:2px;height:20px;width:20px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link{color:#0dbd8b;position:relative;padding:0 0 0 24px;margin-left:8px;font-size:inherit;line-height:inherit}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link:before{content:"";position:absolute;left:0;height:16px;width:16px;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);-webkit-mask-position:center;mask-position:center}.mx_TabbedView{padding:0 0 0 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;bottom:0;left:0;right:0;margin:8px 0 0}.mx_TabbedView_tabLabels{width:170px;max-width:170px;color:#45474a;position:fixed}.mx_TabbedView_tabLabel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:text-top;cursor:pointer;padding:8px 0;border-radius:8px;font-size:1.3rem;position:relative}.mx_TabbedView_tabLabel_active{background-color:#0dbd8b;color:#fff}.mx_TabbedView_maskedIcon{margin-left:8px;margin-right:16px;width:16px;height:16px;display:inline-block}.mx_TabbedView_maskedIcon:before{display:inline-block;background-color:#454545;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;width:16px;height:16px;-webkit-mask-position:center;mask-position:center;content:""}.mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon:before{background-color:#fff}.mx_TabbedView_tabLabel_text{vertical-align:middle}.mx_TabbedView_tabPanel{margin-left:240px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_TabbedView_tabPanel,.mx_TabbedView_tabPanelContent{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-height:0}.mx_TabbedView_tabPanelContent{overflow:auto}.mx_ToastContainer{position:absolute;top:0;left:70px;z-index:101;padding:4px;display:grid;grid-template-rows:1fr 14px 6px}.mx_ToastContainer.mx_ToastContainer_stacked:before{content:"";margin:0 4px;grid-row:2/4}.mx_ToastContainer .mx_Toast_toast,.mx_ToastContainer.mx_ToastContainer_stacked:before{grid-column:1;background-color:#f2f5f8;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.5);box-shadow:0 4px 20px rgba(0,0,0,.5);border-radius:8px}.mx_ToastContainer .mx_Toast_toast{grid-row:1/3;color:#2e2f32;overflow:hidden;display:grid;grid-template-columns:22px 1fr;grid-column-gap:8px;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;padding:8px}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before{content:"";width:22px;height:22px;grid-column:1;grid-row:1;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-size:100%;background-repeat:no-repeat}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title{grid-column:2}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon){padding-left:12px}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title{grid-column:1/-1}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description,.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{padding-right:8px}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2{grid-column:1/3;grid-row:1;margin:0;font-size:1.5rem;font-weight:600;display:inline;width:auto;vertical-align:middle}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title span{padding-left:8px;float:right;font-size:1.2rem;line-height:2.2rem;color:#61708b}.mx_ToastContainer .mx_Toast_toast .mx_Toast_body{grid-column:1/3;grid-row:2}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons{float:right;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_FormButton{min-width:96px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description{max-width:272px;overflow:hidden;text-overflow:ellipsis;margin:4px 0 11px;font-size:1.2rem}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description .mx_AccessibleButton_kind_link{font-size:inherit;padding:0}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a{text-decoration:none}.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail{color:#737d8c}.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID{font-size:1rem}.mx_UploadBar{padding-left:65px;position:relative}.mx_UploadBar .mx_ProgressBar{width:calc(100% - 40px)}.mx_UploadBar_filename{margin-top:5px;color:#61708b;position:relative;padding-left:22px;font-size:1.5rem;vertical-align:middle}.mx_UploadBar_filename:before{content:"";height:18px;width:18px;left:0;-webkit-mask-image:url(../../img/element-icons/upload.e2a53e0.svg);mask-image:url(../../img/element-icons/upload.e2a53e0.svg)}.mx_UploadBar_cancel,.mx_UploadBar_filename:before{position:absolute;top:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#61708b}.mx_UploadBar_cancel{right:0;height:16px;width:16px;margin-right:16px;-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg)}.mx_UserMenu{padding-right:6px}.mx_UserMenu.mx_UserMenu_prototype{margin-bottom:6px;padding-right:0}.mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons{margin-right:2px}.mx_UserMenu.mx_UserMenu_prototype:after{content:"";border-bottom:1px solid #2e2f32;opacity:.2;display:block;padding-top:8px}.mx_UserMenu .mx_UserMenu_headerButtons{width:16px;height:16px;position:relative;display:block}.mx_UserMenu .mx_UserMenu_headerButtons:before{content:"";width:16px;height:16px;position:absolute;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_UserMenu .mx_UserMenu_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer{position:relative;margin-right:8px;height:32px;padding:3px 0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer .mx_UserMenu_userAvatar{border-radius:32px;-o-object-fit:cover;object-fit:cover}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName,.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName{display:block}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName{color:#61708b;font-size:1.3rem;line-height:1.8rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName{font-weight:600;font-size:1.5rem;line-height:2rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd{width:24px;height:24px;margin-right:8px;position:relative}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before{content:"";position:absolute;width:24px;height:24px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_UserMenu.mx_UserMenu_minimized{padding-right:0}.mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer{margin-right:0}.mx_UserMenu_contextMenu{width:258px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype{padding-bottom:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header{padding-bottom:0;padding-top:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header:nth-child(n+2){padding-top:8px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr{width:85%;opacity:.2;border:none;border-bottom:1px solid #2e2f32}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList{margin-top:4px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList:before{border:none}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList>.mx_AccessibleButton{padding-top:2px;padding-bottom:2px}.mx_UserMenu_contextMenu.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{padding-top:16px;padding-bottom:16px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header{padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:calc(100% - 40px)}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name *{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_displayName{font-weight:700;font-size:1.5rem;line-height:2rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_userId{font-size:1.5rem;line-height:2.4rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_themeButton{min-width:32px;max-width:32px;width:32px;height:32px;margin-left:8px;border-radius:32px;background-color:#e3e8f0;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts,.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink{padding-top:0}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts{display:inline-block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span{font-weight:600;display:block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span+span{margin-top:8px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts .mx_AccessibleButton_kind_link{font-weight:400;font-size:inherit;padding:0}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon{width:16px;height:16px;display:block}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;display:block;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before{-webkit-mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg);mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before{-webkit-mask-image:url(../../img/element-icons/brands/element.182040d.svg);mask-image:url(../../img/element-icons/brands/element.182040d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before{-webkit-mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg);mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before{-webkit-mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg);mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_ViewSource_separator{clear:both;border-bottom:1px solid #e5e5e5;padding-top:.7em;padding-bottom:.7em}.mx_ViewSource_heading{font-size:1.7rem;font-weight:400;color:#2e2f32;margin-top:.7em}.mx_ViewSource pre{text-align:left;font-size:1.2rem;padding:.5em 1em;word-wrap:break-word;white-space:pre-wrap}.mx_ViewSource_details{margin-top:.8em}.mx_CompleteSecurity_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CompleteSecurity_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_CompleteSecurity_heroIcon{width:128px;height:128px;position:relative;margin:0 auto}.mx_CompleteSecurity_body{font-size:1.5rem}.mx_CompleteSecurity_waiting{color:#8d99a5}.mx_CompleteSecurity_actionRow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:2.8rem}.mx_CompleteSecurity_actionRow .mx_AccessibleButton{-webkit-margin-start:18px;margin-inline-start:18px}.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning{color:#ff4b55}.mx_Login_submit{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;width:100%;margin-top:24px;margin-bottom:24px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.mx_Login_submit:disabled{opacity:.3;cursor:default}.mx_Login_loader{display:inline;position:relative;top:2px;left:8px}.mx_Login_loader .mx_Spinner{display:inline}.mx_Login_loader .mx_Spinner img{width:16px;height:16px}.mx_Login_error{color:#ff4b55;font-weight:700;text-align:center;margin-top:12px;margin-bottom:12px}.mx_Login_error.mx_Login_serverError{text-align:left;font-weight:400}.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal{color:#ff8d13}.mx_Login_type_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#232f32}.mx_Login_type_container .mx_Field{margin:0}.mx_Login_type_label{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Login_underlinedServerName{width:-webkit-max-content;width:-moz-max-content;width:max-content;border-bottom:1px dashed #0dbd8b}div.mx_AccessibleButton_kind_link.mx_Login_forgot{display:block;margin:0 auto;font-size:inherit;padding:0}div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_AuthBody{width:500px;font-size:1.2rem;color:#61708b;background-color:#fff;border-radius:0 4px 4px 0;padding:25px 60px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody h2{font-size:2.4rem;font-weight:600;margin-top:8px;color:#232f32}.mx_AuthBody h3{font-size:1.4rem;font-weight:600;color:#61708b}.mx_AuthBody h3.mx_AuthBody_centered{text-align:center}.mx_AuthBody a:hover,.mx_AuthBody a:link,.mx_AuthBody a:visited{color:#0dbd8b;text-decoration:none}.mx_AuthBody input[type=password],.mx_AuthBody input[type=text]{color:#232f32}.mx_AuthBody .mx_Field input,.mx_AuthBody .mx_Field select{color:#232f32;background-color:#fff}.mx_AuthBody .mx_Field label{color:#232f32}.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown)+label,.mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown)+label{background-color:#fff}.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder)+label,.mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder)+label{background-color:#fff}.mx_AuthBody .mx_Field_labelAlwaysTopLeft label,.mx_AuthBody .mx_Field input:focus+label,.mx_AuthBody .mx_Field input:not(:placeholder-shown)+label,.mx_AuthBody .mx_Field select+label,.mx_AuthBody .mx_Field textarea:focus+label,.mx_AuthBody .mx_Field textarea:not(:placeholder-shown)+label{background-color:#fff}.mx_AuthBody input.error{color:#ff4b55}.mx_AuthBody .mx_Field input{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody .mx_Field_select:before{background-color:#232f32}.mx_AuthBody .mx_Dropdown{color:#232f32}.mx_AuthBody .mx_Dropdown_arrow{background:#232f32}.mx_AuthBody .mx_Dropdown_menu{background-color:#fff}.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_AuthBody_fieldRow{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.mx_AuthBody_fieldRow>.mx_Field{margin:0 5px}.mx_AuthBody_fieldRow>.mx_Field:first-child{margin-left:0}.mx_AuthBody_fieldRow>.mx_Field:last-child{margin-right:0}.mx_AuthBody_paddedFooter{height:80px;padding-top:28px;text-align:center}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title{margin-top:16px;font-size:1.5rem;line-height:2.4rem}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title .mx_InlineSpinner img{vertical-align:sub;margin-right:5px}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle{margin-top:8px;font-size:1rem;line-height:1.4rem}.mx_AuthBody_changeFlow{display:block;text-align:center;width:100%}.mx_AuthBody_changeFlow>a{font-weight:600}.mx_SSOButtons+.mx_AuthBody_changeFlow{margin-top:24px}.mx_AuthBody_spinner{margin:1em 0}@media only screen and (max-width:480px){.mx_AuthBody{border-radius:4px;width:auto;max-width:500px;padding:10px}}.mx_AuthButtons{min-height:24px;height:unset!important;padding-top:13px!important;padding-bottom:14px!important;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_AuthButtons_loginButton_wrapper{text-align:center;width:100%}.mx_AuthButtons_loginButton,.mx_AuthButtons_registerButton{margin-top:3px;height:40px;border:0;border-radius:40px;margin-left:4px;margin-right:4px;min-width:80px;background-color:#0dbd8b;color:#fff;cursor:pointer;font-size:1.5rem;padding:0 11px;word-break:break-word}.mx_AuthFooter{text-align:center;width:100%;font-size:1.4rem;opacity:.72;padding:20px 0;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.8)));background:linear-gradient(transparent,rgba(0,0,0,.8))}.mx_AuthFooter a:hover,.mx_AuthFooter a:link,.mx_AuthFooter a:visited{color:#fff;margin:0 22px}.mx_AuthHeader{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:206px;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:480px){.mx_AuthHeader{display:none}}.mx_AuthHeaderLogo{margin-top:15px;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 25px}.mx_AuthHeaderLogo img{width:100%}@media only screen and (max-width:480px){.mx_AuthHeaderLogo{display:none}}.mx_AuthPage{width:100%;min-height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:#2e3649}.mx_AuthPage,.mx_AuthPage_modal{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AuthPage_modal{margin:100px auto auto;border-radius:4px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.33);box-shadow:0 2px 4px 0 rgba(0,0,0,.33);background-color:hsla(0,0%,96.1%,.9)}@media only screen and (max-width:480px){.mx_AuthPage_modal{margin-top:0}}.mx_CompleteSecurityBody{width:600px;color:#232f32;background-color:#fff;border-radius:4px;padding:20px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_CompleteSecurityBody h2{font-size:2.4rem;font-weight:600;margin-top:0}.mx_CompleteSecurityBody h3{font-size:1.4rem;font-weight:600}.mx_CompleteSecurityBody a:hover,.mx_CompleteSecurityBody a:link,.mx_CompleteSecurityBody a:visited{color:#0dbd8b;text-decoration:none}.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option{padding:0 3px}.mx_CountryDropdown .mx_Dropdown_arrow{padding-right:3px}.mx_CountryDropdown_shortOption{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;height:100%}.mx_CountryDropdown_option,.mx_CountryDropdown_shortOption{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CountryDropdown_option{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_InteractiveAuthEntryComponents_emailWrapper{padding-right:100px;position:relative;margin-top:32px;margin-bottom:32px}.mx_InteractiveAuthEntryComponents_emailWrapper:after,.mx_InteractiveAuthEntryComponents_emailWrapper:before{position:absolute;width:116px;height:116px;content:"";right:-10px}.mx_InteractiveAuthEntryComponents_emailWrapper:before{background-color:rgba(244,246,250,.91);border-radius:50%;top:-20px}.mx_InteractiveAuthEntryComponents_emailWrapper:after{background-image:url(../../img/element-icons/email-prompt.1d04dfe.svg);background-repeat:no-repeat;background-position:50%;background-size:contain;top:-25px}.mx_InteractiveAuthEntryComponents_msisdnWrapper{text-align:center}.mx_InteractiveAuthEntryComponents_msisdnEntry{font-size:200%;font-weight:700;border:1px solid #c7c7c7;border-radius:3px;width:6em}.mx_InteractiveAuthEntryComponents_msisdnEntry:focus{border:1px solid #0dbd8b}.mx_InteractiveAuthEntryComponents_msisdnSubmit{margin-top:4px;margin-bottom:5px}.mx_InteractiveAuthEntryComponents_termsSubmit{margin-top:20px;margin-bottom:5px;display:block;width:100%}.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled{background-color:#747474;cursor:default}.mx_InteractiveAuthEntryComponents_termsSubmit:disabled{background-color:#92caad;cursor:default}.mx_InteractiveAuthEntryComponents_termsPolicy{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_InteractiveAuthEntryComponents_passwordSection{width:300px}.mx_InteractiveAuthEntryComponents_sso_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:20px}.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton{margin-left:5px}.mx_AuthBody_language{width:100%}.mx_AuthBody_language .mx_Dropdown_input{border:none;font-size:1.4rem;font-weight:600;color:#4e5054;width:auto}.mx_AuthBody_language .mx_Dropdown_arrow{background:#4e5054}progress.mx_PassphraseField_progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;border:0;height:4px;position:absolute;top:-12px;border-radius:"2px"}progress.mx_PassphraseField_progress::-moz-progress-bar{border-radius:"2px"}progress.mx_PassphraseField_progress::-webkit-progress-bar,progress.mx_PassphraseField_progress::-webkit-progress-value{border-radius:"2px"}progress.mx_PassphraseField_progress{color:#ff4b55}progress.mx_PassphraseField_progress::-moz-progress-bar{background-color:#ff4b55}progress.mx_PassphraseField_progress::-webkit-progress-value{background-color:#ff4b55}progress.mx_PassphraseField_progress[value="2"],progress.mx_PassphraseField_progress[value="3"]{color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar,progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar{background-color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value,progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value{background-color:#ff812d}progress.mx_PassphraseField_progress[value="4"]{color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar{background-color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value{background-color:#0dbd8b}.mx_Welcome{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount{display:none}.mx_Welcome .mx_AuthBody_language{width:160px;margin-bottom:10px}.mx_BaseAvatar{position:relative;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_BaseAvatar_initial{position:absolute;left:0;color:#fff;text-align:center;speak:none;pointer-events:none;font-weight:400}.mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover;border-radius:125px;vertical-align:top;background-color:#fff}.mx_DecoratedRoomAvatar,.mx_ExtraTile{position:relative}.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar,.mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar{-webkit-mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon{position:absolute;bottom:-2px;right:-2px;margin:4px;width:8px;height:8px;border-radius:50%}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before{content:"";width:8px;height:8px;position:absolute;border-radius:8px}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before{-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before{background-color:#e3e8f0}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before{background-color:#0dbd8b}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before{background-color:#d9b072}.mx_DecoratedRoomAvatar .mx_NotificationBadge,.mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer,.mx_ExtraTile .mx_NotificationBadge,.mx_ExtraTile .mx_RoomTile_badgeContainer{position:absolute;top:0;right:0;height:18px;width:18px}.mx_MessageComposer_avatar .mx_BaseAvatar{padding:2px;border:1px solid transparent;border-radius:100%}.mx_MessageComposer_avatar .mx_BaseAvatar_initial{left:2px}.mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar{border-color:#0dbd8b}@-webkit-keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}@keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}.mx_PulsedAvatar img{-webkit-animation:shadow-pulse 1s infinite;animation:shadow-pulse 1s infinite}.mx_WidgetAvatar{border-radius:4px}.mx_BetaCard{margin-bottom:20px;padding:24px;background-color:#f4f6fa;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_BetaCard>div .mx_BetaCard_title{font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32;margin:4px 0 14px}.mx_BetaCard>div .mx_BetaCard_title .mx_BetaCard_betaPill{margin-left:12px}.mx_BetaCard>div .mx_BetaCard_caption{font-size:1.5rem;line-height:2rem;color:#737d8c;margin-bottom:20px}.mx_BetaCard>div .mx_AccessibleButton{display:block;margin:12px 0;padding:7px 40px;width:auto}.mx_BetaCard>div .mx_BetaCard_disclaimer{font-size:1.2rem;line-height:1.5rem;color:#737d8c;margin-top:20px}.mx_BetaCard>img{margin:auto 0 auto 20px;width:300px;-o-object-fit:contain;object-fit:contain;height:100%}.mx_BetaCard_betaPill{background-color:#238cf5;padding:4px 10px;border-radius:8px;text-transform:uppercase;font-size:12px;line-height:15px;color:#fff;display:inline-block;vertical-align:text-bottom}.mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable{cursor:pointer}.mx_BetaDot{border-radius:50%;margin:10px;height:12px;width:12px;-webkit-transform:scale(1);transform:scale(1);background:#238cf5;-webkit-box-shadow:0 0 0 0 #238cf5;box-shadow:0 0 0 0 #238cf5;-webkit-animation:mx_Beta_bluePulse 2s infinite;animation:mx_Beta_bluePulse 2s infinite;-webkit-animation-iteration-count:20;animation-iteration-count:20}@-webkit-keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}@keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}.mx_CallContextMenu_item{width:205px;height:40px;padding-left:16px;line-height:40px;vertical-align:center}.mx_IconizedContextMenu{min-width:146px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList>*{padding-left:20px;padding-right:20px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst:before,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:nth-child(n+2):before{border-top:1px solid #2e2f32;opacity:.1;content:"";width:100%;position:absolute;left:0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child .mx_AccessibleButton:first-child{border-radius:8px 8px 0 0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:last-child .mx_AccessibleButton:last-child{border-radius:0 0 8px 8px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton{padding-top:12px;padding-bottom:12px;text-decoration:none;color:#2e2f32;font-size:1.5rem;line-height:2.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton:hover{background-color:#f5f8fa}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_AccessibleButton_disabled{opacity:.5;cursor:not-allowed}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton img{width:16px;min-width:16px;max-width:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton span.mx_IconizedContextMenu_label{width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon+.mx_IconizedContextMenu_label{padding-left:14px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon{position:relative;width:16px;height:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{color:#ff4b55!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_icon:before{background-color:#ff4b55}.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton,.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton{color:#0dbd8b!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_icon:before{background-color:#0dbd8b}.mx_IconizedContextMenu.mx_IconizedContextMenu_compact .mx_IconizedContextMenu_optionList>*{padding:8px 16px 8px 11px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked{margin-left:16px;margin-right:-5px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before{-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_MessageContextMenu{padding:6px}.mx_MessageContextMenu_field{display:block;padding:3px 6px;cursor:pointer;white-space:nowrap}.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet{font-weight:700}.mx_StatusMessageContextMenu{padding:10px}.mx_StatusMessageContextMenu_form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}input.mx_StatusMessageContextMenu_message{border-radius:4px;border:1px solid #e7e7e7;padding:6.5px 11px;background-color:#fff;font-weight:400;margin:0 0 10px}.mx_StatusMessageContextMenu_message::-webkit-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-moz-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message:-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::placeholder{color:#61708b}.mx_StatusMessageContextMenu_actionContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_StatusMessageContextMenu_clear,.mx_StatusMessageContextMenu_submit{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;-ms-flex-item-align:start;align-self:start;font-size:1.2rem;padding:6px 1em;border:1px solid transparent;margin-right:10px}.mx_StatusMessageContextMenu_submit[disabled]{opacity:.49}.mx_StatusMessageContextMenu_clear{color:#ff4b55;background-color:transparent;border:1px solid #ff4b55}.mx_StatusMessageContextMenu_actionContainer .mx_Spinner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_TagTileContextMenu_item{padding:8px 20px 8px 8px;cursor:pointer;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.6rem}.mx_TagTileContextMenu_item:before{content:"";height:15px;width:15px;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;margin-right:8px}.mx_TagTileContextMenu_viewCommunity:before{-webkit-mask-image:url(../../img/element-icons/view-community.0cad1a5.svg);mask-image:url(../../img/element-icons/view-community.0cad1a5.svg)}.mx_TagTileContextMenu_hideCommunity:before{-webkit-mask-image:url(../../img/element-icons/hide.2b52315.svg);mask-image:url(../../img/element-icons/hide.2b52315.svg)}.mx_TagTileContextMenu_separator{margin-top:0;margin-bottom:0;border-style:none;border-top:1px solid;border-color:#e7e7e7}.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AddExistingToSpace .mx_SearchBox{margin:0 0 15px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults{display:block;margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child){margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section>h3{margin:0;color:#737d8c;font-size:1.2rem;font-weight:600;line-height:1.5rem}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_DecoratedRoomAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_AddExistingToSpace_entry_name{font-size:1.5rem;line-height:30px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_Checkbox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar_image{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental{position:relative;border-radius:8px;margin:12px 0;padding:8px 8px 8px 42px;background-color:#f3f8fd;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before{content:"";position:absolute;left:10px;top:calc(50% - 8px);height:16px;width:16px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar{height:8px;width:100%;border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-moz-progress-bar{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-bar,.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-value{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_AddExistingToSpace_progressText{margin-top:8px;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span>*{vertical-align:middle}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error{padding-left:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error>img{-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorHeading{font-weight:600;font-size:1.5rem;line-height:1.8rem;color:#ff4b55}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorCaption{margin-top:4px;font-size:1.2rem;line-height:1.5rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton{display:inline-block;-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_primary{padding:8px 36px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton{margin-left:12px;padding-left:24px;position:relative}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton:before{content:"";position:absolute;background-color:#2e2f32;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;left:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_link{padding:0}.mx_AddExistingToSpaceDialog{width:480px;color:#2e2f32;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-height:0;height:80vh}.mx_AddExistingToSpaceDialog,.mx_AddExistingToSpaceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px;margin:0;vertical-align:unset}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:auto 16px auto 5px;vertical-align:middle}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div .mx_AddExistingToSpaceDialog_onlySpace{color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input{border:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option{padding-left:0;-webkit-box-flex:unset;-ms-flex:unset;flex:unset;height:unset;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option .mx_BaseAvatar{display:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive{color:#0dbd8b;padding-right:32px;position:relative}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive:before{content:"";width:20px;height:20px;top:8px;right:0;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace{display:contents}.mx_AddressPickerDialog a:hover,.mx_AddressPickerDialog a:link,.mx_AddressPickerDialog a:visited{color:#0dbd8b;text-decoration:none}.mx_AddressPickerDialog_input,.mx_AddressPickerDialog_input:focus{height:26px;font-size:1.4rem;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;padding-left:12px;padding-right:12px;margin:0!important;border:0!important;outline:0!important;width:1000%;resize:none;overflow:hidden;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;word-wrap:nowrap}.mx_AddressPickerDialog .mx_Dialog_content{min-height:50px}.mx_AddressPickerDialog_inputContainer{border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 4px;max-height:150px;overflow-x:hidden;overflow-y:auto}.mx_AddressPickerDialog_error{margin-top:10px;color:#ff4b55}.mx_AddressPickerDialog_cancel{position:absolute;right:11px;top:13px;cursor:pointer}.mx_AddressPickerDialog_cancel object{pointer-events:none}.mx_AddressPickerDialog_identityServer{margin-top:1em}.mx_AnalyticsModal table{margin:10px 0}.mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading{color:#2e2f32;font-size:1.4rem;line-height:2rem;margin-bottom:24px}.mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link{padding:0;font-size:inherit;line-height:inherit}.mx_BugReportDialog .mx_BugReportDialog_download .mx_AccessibleButton_kind_link{padding-left:0}.mx_ChangelogDialog_content{max-height:300px;overflow:auto}.mx_ChangelogDialog_li{padding:.2em}.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles{margin-top:24px}.mx_ChatCreateOrReuseDialog .mx_Dialog_content{margin-bottom:24px;min-height:100px}.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge{display:none}.mx_ChatCreateOrReuseDialog_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ChatCreateOrReuseDialog_profile_name{padding:14px}.mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth{width:360px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content{margin-bottom:0}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people{position:relative;margin-bottom:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people .mx_AccessibleButton{display:inline-block;background-color:#ddd;border-radius:4px;padding:3px 5px;font-size:1.2rem;float:right}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_morePeople{margin-top:8px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person{position:relative;margin-top:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person>*{vertical-align:middle}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_Checkbox{position:absolute;right:0;top:calc(50% - 8px);width:16px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers{display:inline-block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers>*{display:block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personName{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_primaryButton{display:block;font-size:1.3rem;line-height:20px;height:20px;margin-top:24px}.mx_ConfirmUserActionDialog .mx_Dialog_content{min-height:48px;margin-bottom:24px}.mx_ConfirmUserActionDialog_avatar{float:left;margin-right:20px;margin-top:-2px}.mx_ConfirmUserActionDialog_name{font-size:1.8rem}.mx_ConfirmUserActionDialog_userId{font-size:1.3rem}.mx_ConfirmUserActionDialog_reasonField{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#2e2f32;background-color:#fff;border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 16px;margin-bottom:24px;width:90%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:12px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName{-ms-flex-preferred-size:66.66%;flex-basis:66.66%;padding-right:100px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_Field input{font-size:1.6rem;line-height:2rem}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext{display:block;color:#61708b;margin-bottom:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext:last-child{margin-top:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error{color:#ff4b55}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId{position:relative}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId .mx_InfoTooltip{float:right}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_AccessibleButton{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar{-ms-flex-preferred-size:33.33%;flex-basis:33.33%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer{margin-top:12px;margin-bottom:20px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_avatar,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>b,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_CreateGroupDialog_inputRow{margin-top:10px;margin-bottom:10px}.mx_CreateGroupDialog_label{text-align:left;padding-bottom:12px}.mx_CreateGroupDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_CreateGroupDialog_input_hasPrefixAndSuffix{border-radius:0}.mx_CreateGroupDialog_input_group{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateGroupDialog_prefix,.mx_CreateGroupDialog_suffix{padding:0 5px;line-height:3.7rem;background-color:#e3e8f0;border:1px solid #e7e7e7;text-align:center}.mx_CreateGroupDialog_prefix{border-right:0;border-radius:3px 0 0 3px}.mx_CreateGroupDialog_suffix{border-left:0;border-radius:0 3px 3px 0}.mx_CreateRoomDialog_details{margin-top:15px}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary{outline:none;list-style:none;font-weight:600;cursor:pointer;color:#0dbd8b}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary::-webkit-details-marker{display:none}.mx_CreateRoomDialog_details>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin:5px 0}.mx_CreateRoomDialog_details>div input[type=checkbox]{margin-right:10px}.mx_CreateRoomDialog_label{text-align:left;padding-bottom:12px}.mx_CreateRoomDialog_input_container{padding-right:20px}.mx_CreateRoomDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff;width:100%}.mx_CreateRoomDialog_aliasContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin:10px 0}.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField{margin:0}.mx_CreateRoomDialog.mx_Dialog_fixedWidth{width:450px}.mx_CreateRoomDialog .mx_Dialog_content{margin-bottom:40px}.mx_CreateRoomDialog .mx_Field_input label,.mx_CreateRoomDialog p{color:#61708b}.mx_CreateRoomDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateRoomDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateRoomDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateRoomDialog .mx_CreateRoomDialog_topic{margin-bottom:36px}.mx_CreateRoomDialog .mx_Dialog_content>.mx_SettingsFlag{margin-top:24px}.mx_CreateRoomDialog p{margin:0 85px 0 0;font-size:1.2rem}.mx_DeactivateAccountDialog .mx_Dialog_content{margin-bottom:30px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section{margin-top:60px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field{width:300px}.mx_DevTools_content{margin:10px 0}.mx_DevTools_ServersInRoomList_button{cursor:default!important}.mx_DevTools_RoomStateExplorer_query{margin-bottom:10px}.mx_DevTools_RoomStateExplorer_button,.mx_DevTools_ServersInRoomList_button{margin-bottom:10px;width:100%}.mx_DevTools_label_left{float:left}.mx_DevTools_label_right{float:right}.mx_DevTools_label_bottom{clear:both;border-bottom:1px solid #e5e5e5}.mx_DevTools_inputRow{display:table-row}.mx_DevTools_inputLabelCell{display:table-cell;font-weight:700;padding-right:24px}.mx_DevTools_inputCell{display:table-cell;width:240px}.mx_DevTools_inputCell input{display:inline-block;border:0;border-bottom:1px solid hsla(0,0%,59.2%,.5);padding:0;width:240px;color:rgba(74,74,74,.9);font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.6rem}.mx_DevTools_textarea{font-size:1.2rem;max-width:684px;min-height:250px;padding:10px}.mx_DevTools_eventTypeStateKeyGroup{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_DevTools_content .mx_Field_input:first-of-type{margin-right:42px}.mx_DevTools_tgl{display:none}.mx_DevTools_tgl,.mx_DevTools_tgl *,.mx_DevTools_tgl+.mx_DevTools_tgl-btn,.mx_DevTools_tgl:after,.mx_DevTools_tgl :after,.mx_DevTools_tgl:before,.mx_DevTools_tgl :before{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::-moz-selection,.mx_DevTools_tgl::-moz-selection,.mx_DevTools_tgl ::-moz-selection,.mx_DevTools_tgl:after::-moz-selection,.mx_DevTools_tgl :after::-moz-selection,.mx_DevTools_tgl:before::-moz-selection,.mx_DevTools_tgl :before::-moz-selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::selection,.mx_DevTools_tgl::selection,.mx_DevTools_tgl ::selection,.mx_DevTools_tgl:after::selection,.mx_DevTools_tgl :after::selection,.mx_DevTools_tgl:before::selection,.mx_DevTools_tgl :before::selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn{outline:0;display:block;width:7em;height:2em;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{position:relative;display:block;content:"";width:50%;height:100%}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after{left:0}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{display:none}.mx_DevTools_tgl:checked+.mx_DevTools_tgl-btn:after{left:50%}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn{padding:2px;-webkit-transition:all .2s ease;transition:all .2s ease;font-family:sans-serif;-webkit-perspective:100px;perspective:100px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{display:inline-block;-webkit-transition:all .4s ease;transition:all .4s ease;width:100%;text-align:center;position:absolute;line-height:2em;font-weight:700;color:#fff;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:4px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after{content:attr(data-tg-on);background:#02c66f;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{background:#ff3a19;content:attr(data-tg-off)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:active:before{-webkit-transform:rotateY(-20deg);transform:rotateY(-20deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:before{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:after{-webkit-transform:rotateY(0);transform:rotateY(0);left:0;background:#7fc6a6}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:active:after{-webkit-transform:rotateY(20deg);transform:rotateY(20deg)}.mx_DevTools_VerificationRequest{border:1px solid #ccc;border-radius:3px;padding:1px 5px;margin-bottom:6px;font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji}.mx_DevTools_VerificationRequest dl{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:0}.mx_DevTools_VerificationRequest dd{grid-column-start:2}.mx_DevTools_VerificationRequest dd:empty{color:#666}.mx_DevTools_VerificationRequest dd:empty:after{content:"(empty)"}.mx_DevTools_VerificationRequest dt{font-weight:700;grid-column-start:1}.mx_DevTools_VerificationRequest dt:after{content:":"}.mx_DevTools_SettingsExplorer table{width:100%;table-layout:fixed;border-collapse:collapse}.mx_DevTools_SettingsExplorer table th{border-bottom:1px solid #0dbd8b;text-align:left}.mx_DevTools_SettingsExplorer table td,.mx_DevTools_SettingsExplorer table th{width:360px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_DevTools_SettingsExplorer table td+td,.mx_DevTools_SettingsExplorer table th+th{width:auto}.mx_DevTools_SettingsExplorer table tr:hover{background-color:rgba(13,189,139,.5)}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable{background-color:#0dbd8b}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable{background-color:#ff4b55}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit{float:right;margin-right:16px}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning{border:2px solid #ff4b55;border-radius:4px;padding:4px;margin-bottom:8px}.mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth{width:360px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content{margin-bottom:12px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_AccessibleButton.mx_AccessibleButton_kind_primary{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_rowAvatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer{margin-top:20px;margin-bottom:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_avatar,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip{margin-left:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>b,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_FeedbackDialog hr{margin:24px 0;border-color:#e7e7e7}.mx_FeedbackDialog .mx_Dialog_content{margin-bottom:24px}.mx_FeedbackDialog .mx_Dialog_content>h2{margin-bottom:32px}.mx_FeedbackDialog .mx_FeedbackDialog_section{position:relative;padding-left:52px}.mx_FeedbackDialog .mx_FeedbackDialog_section>p{color:#8d99a5}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link,.mx_FeedbackDialog .mx_FeedbackDialog_section a{color:#0dbd8b;text-decoration:underline}.mx_FeedbackDialog .mx_FeedbackDialog_section:after,.mx_FeedbackDialog .mx_FeedbackDialog_section:before{content:"";position:absolute;width:40px;height:40px;left:0;top:0}.mx_FeedbackDialog .mx_FeedbackDialog_section:before{background-color:#c1c6cd;border-radius:20px}.mx_FeedbackDialog .mx_FeedbackDialog_section:after{background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after{-webkit-mask-image:url(../../img/feather-customised/bug.3dc7afa.svg);mask-image:url(../../img/feather-customised/bug.3dc7afa.svg)}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:20px;-webkit-transition:font-size 1s,border .5s;transition:font-size 1s,border .5s;border-radius:50%;border:2px solid transparent;margin-top:12px;margin-bottom:24px;vertical-align:top;cursor:pointer}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton input[type=radio]+div{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_content{background:#c1c6cd;width:40px;height:40px;text-align:center;line-height:40px;border-radius:20px;margin:5px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_spacer{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton+.mx_RadioButton{margin-left:16px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked{font-size:24px;border-color:#0dbd8b}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_GroupAddressPicker_checkboxContainer{margin-top:10px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HostSignupDialog{width:90vw;max-width:580px;height:80vh;max-height:600px;background-color:#fff}.mx_HostSignupDialog .mx_HostSignupDialog_info{text-align:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_content_top{margin-bottom:24px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs{text-align:left;padding-left:25%;padding-right:25%}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons{margin-bottom:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons button{padding:12px;margin:0 16px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img{padding-right:5px}.mx_HostSignupDialog iframe{width:100%;height:100%;border:none;background-color:#fff;min-height:540px}.mx_HostSignupDialog_text_dark{color:#2e2f32}.mx_HostSignupDialog_text_light{color:#737d8c}.mx_HostSignup_maximize_button{-webkit-mask:url(../../img/feather-customised/maximise.dc32127.svg);mask:url(../../img/feather-customised/maximise.dc32127.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:10px}.mx_HostSignup_maximize_button,.mx_HostSignup_minimize_button{width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px}.mx_HostSignup_minimize_button{-webkit-mask:url(../../img/feather-customised/minimise.aec9142.svg);mask:url(../../img/feather-customised/minimise.aec9142.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:25px}.mx_HostSignup_persisted{width:90vw;max-width:580px;height:80vh;max-height:600px;top:0;left:0;position:fixed;display:none}.mx_HostSignupDialog_minimized{position:fixed;bottom:80px;right:26px;width:314px;height:217px;overflow:hidden}.mx_HostSignupDialog_minimized.mx_Dialog{padding:12px}.mx_HostSignupDialog_minimized .mx_Dialog_title{text-align:left!important;padding-left:20px;font-size:1.5rem}.mx_HostSignupDialog_minimized iframe{width:100%;height:100%;border:none;background-color:#fff}.mx_IncomingSasDialog_opponentProfile_image{position:relative}.mx_IncomingSasDialog_opponentProfile h2{display:inline-block;margin-left:10px}.mx_InviteDialog_addressBar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_InviteDialog_addressBar .mx_InviteDialog_editor{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;background-color:#f3f8fd;border-radius:4px;min-height:25px;padding-left:8px;overflow-x:hidden;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile{margin:6px 6px 0 0;display:inline-block;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.mx_InviteDialog_addressBar .mx_InviteDialog_editor>input[type=text]{margin:6px 0!important;height:24px;line-height:2.4rem;font-size:1.4rem;padding-left:12px;border:0!important;outline:0!important;resize:none;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:40%;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important}.mx_InviteDialog_addressBar .mx_InviteDialog_goButton{min-width:48px;margin-left:10px;height:25px;line-height:2.5rem}.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner{width:20px;height:20px;margin-left:5px;display:inline-block;vertical-align:middle}.mx_InviteDialog_section{padding-bottom:10px}.mx_InviteDialog_section h3{font-size:1.2rem;color:#61708b;font-weight:700;text-transform:uppercase}.mx_InviteDialog_section .mx_InviteDialog_subname{margin-bottom:10px;margin-top:-10px;font-size:1.2rem;color:#61708b}.mx_InviteDialog_roomTile{cursor:pointer;padding:5px 10px}.mx_InviteDialog_roomTile:hover{background-color:#f3f8fd;border-radius:4px}.mx_InviteDialog_roomTile *{vertical-align:middle}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack{display:inline-block;position:relative;width:36px;height:36px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack>*{position:absolute;top:0;left:0}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected{width:36px;height:36px;border-radius:36px;background-color:#368bd6;display:inline-block;position:relative}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before{content:"";width:24px;height:24px;grid-column:1;grid-row:1;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;position:absolute;top:6px;left:6px;background-color:#fff}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack{display:inline-block}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time{text-align:right;font-size:1.2rem;color:#61708b;float:right;line-height:3.6rem}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight{font-weight:900}.mx_InviteDialog_userTile{margin-right:8px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill{background-color:#368bd6;border-radius:12px;display:inline-block;height:24px;line-height:2.4rem;padding-left:8px;padding-right:8px;color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_avatar{border-radius:20px;position:relative;left:-5px;top:2px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_name,.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill img.mx_InviteDialog_userTile_avatar{vertical-align:top}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_threepidAvatar{background-color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove{display:inline-block;margin-left:4px}.mx_InviteDialog{height:590px;padding-left:20px}.mx_InviteDialog_userSections{margin-top:10px;overflow-y:auto;padding-right:45px;height:455px}.mx_InviteDialog_addressBar,.mx_InviteDialog_helpText{margin-right:45px}.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link{padding:0}.mx_KeyboardShortcutsDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:-50px;max-height:1100px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category{width:33.3333%;margin:0 0 40px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category>div{padding-left:5px}.mx_KeyboardShortcutsDialog h3{margin:0 0 10px}.mx_KeyboardShortcutsDialog h5{margin:15px 0 5px;font-weight:400}.mx_KeyboardShortcutsDialog kbd{padding:5px;border-radius:4px;background-color:#f3f8fd;margin-right:5px;min-width:20px;text-align:center;display:inline-block;border:1px solid #e9edf1;-webkit-box-shadow:0 2px #e9edf1;box-shadow:0 2px #e9edf1;margin-bottom:4px;text-transform:capitalize}.mx_KeyboardShortcutsDialog kbd+kbd{margin-left:5px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div{display:inline}.mx_MessageEditHistoryDialog .mx_Dialog_header>.mx_Dialog_title{text-align:center}.mx_MessageEditHistoryDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:60vh}.mx_MessageEditHistoryDialog_scrollPanel{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_MessageEditHistoryDialog_error{color:#ff4b55;text-align:center}.mx_MessageEditHistoryDialog_edits{list-style-type:none;font-size:1.4rem;padding:0;color:#2e2f32}.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion,.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion{padding:0 2px}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion{color:#ff4c55;background-color:rgba(255,76,85,.1);text-decoration:line-through}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion{color:#1aa97b;background-color:rgba(26,169,123,.1);text-decoration:underline}.mx_MessageEditHistoryDialog_edits .mx_EventTile_content,.mx_MessageEditHistoryDialog_edits .mx_EventTile_line{margin-right:0}.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton{font-size:1rem;padding:0 8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning{margin-bottom:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning>img{vertical-align:middle;margin-right:8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons{float:right;margin-top:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:8px}.mx_ModalWidgetDialog iframe{width:100%;height:450px;border:0;border-radius:8px}.mx_NewSessionReviewDialog_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:0}.mx_NewSessionReviewDialog_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_NewSessionReviewDialog_deviceName{font-weight:600}.mx_NewSessionReviewDialog_deviceID{font-size:1.2rem;color:#8d99a5}.mx_RegistrationEmailPromptDialog{width:417px}.mx_RegistrationEmailPromptDialog .mx_Dialog_content{margin-bottom:24px;color:#8d99a5}.mx_RegistrationEmailPromptDialog .mx_Dialog_primary{width:100%}.mx_RoomSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_RoomSettingsDialog_rolesIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg);mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg)}.mx_RoomSettingsDialog_notificationsIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomSettingsDialog_bridgesIcon:before{-webkit-mask-image:url(../../img/feather-customised/bridge.b2ca042.svg);mask-image:url(../../img/feather-customised/bridge.b2ca042.svg)}.mx_RoomSettingsDialog_warningIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg);mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg)}.mx_RoomSettingsDialog .mx_Dialog_title{-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0 auto;padding-right:80px}.mx_RoomSettingsDialog .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{-webkit-mask:url(../../img/feather-customised/image.a8671b8.svg);mask:url(../../img/feather-customised/image.a8671b8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center}.mx_RoomSettingsDialog_BridgeList{padding:0}.mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton{display:inline;margin:0;padding:0}.mx_RoomSettingsDialog_BridgeList li{list-style-type:none;padding:5px;margin-bottom:8px;border:1px solid transparent;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon{float:left;padding-right:10px}.mx_RoomSettingsDialog_BridgeList li .column-icon *{border-radius:5px;border:1px solid #e3e8f0}.mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon{width:48px;height:48px;background:#e3e8f0;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon{float:left;margin-right:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img{border-radius:5px;border-width:1px;border-color:transparent}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span{left:auto}.mx_RoomSettingsDialog_BridgeList li .column-data{display:inline-block;width:85%}.mx_RoomSettingsDialog_BridgeList li .column-data>h3{margin-top:0;margin-bottom:0;font-size:16pt;color:#2e2f32}.mx_RoomSettingsDialog_BridgeList li .column-data>*{margin-top:4px;margin-bottom:0}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details{color:#2e2f32;font-weight:600}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details .channel{margin-left:5px}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata{color:#61708b;margin-bottom:0;overflow-y:visible;text-overflow:ellipsis;white-space:normal;padding:0}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata>li{padding:0;border:0}.mx_RoomUpgradeDialog{padding-right:70px}.mx_RoomUpgradeWarningDialog{max-width:38vw;width:38vw}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag{font-weight:700}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:8px;float:right}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content{padding-right:85px;color:#2e2f32}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr{border-color:#2e2f32;opacity:.1;border-bottom:none}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul{padding:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n+2){margin-top:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timestamp{display:inline-block;width:115px;color:#61708b;line-height:24px;vertical-align:top}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline{display:inline-block;width:calc(100% - 155px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_timeline_header span{margin-left:8px;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn{position:relative;margin-top:8px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_ServerOfflineDialog_content_context_txn_desc{width:calc(100% - 100px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_AccessibleButton{float:right;padding:0}.mx_ServerPickerDialog{width:468px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ServerPickerDialog .mx_Dialog_content{margin-bottom:0}.mx_ServerPickerDialog .mx_Dialog_content>p{color:#737d8c;font-size:1.4rem;margin:16px 0}.mx_ServerPickerDialog .mx_Dialog_content>p:first-of-type{margin-bottom:40px}.mx_ServerPickerDialog .mx_Dialog_content>p:last-of-type{margin:0 24px 24px}.mx_ServerPickerDialog .mx_Dialog_content>h4{font-size:1.5rem;font-weight:600;color:#737d8c;margin-left:8px}.mx_ServerPickerDialog .mx_Dialog_content>a{color:#0dbd8b;margin-left:8px}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserverRadio input[type=radio]+div{margin-top:auto;margin-bottom:auto}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver{border-top:none;border-left:none;border-right:none;border-radius:unset}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>input{padding-left:0}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>label{margin-left:0}.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary{width:calc(100% - 64px);margin:0 8px;padding:15px 18px}.mx_SetEmailDialog_email_input{border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:rgba(74,74,74,.9);background-color:#fff;font-size:1.5rem;width:100%;max-width:280px;margin-bottom:10px}.mx_SetEmailDialog_email_input:focus{outline:none;-webkit-box-shadow:none;box-shadow:none;border:1px solid #0dbd8b}.mx_RoomSettingsDialog,.mx_UserSettingsDialog{width:90vw;max-width:1000px;height:80vh}.mx_RoomSettingsDialog .mx_TabbedView,.mx_UserSettingsDialog .mx_TabbedView{top:65px}.mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab,.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab{-webkit-box-sizing:border-box;box-sizing:border-box;min-width:580px;padding-right:100px;padding-bottom:100px}.mx_RoomSettingsDialog .mx_Dialog_title,.mx_UserSettingsDialog .mx_Dialog_title{margin-bottom:24px}.mx_ShareDialog hr{margin-top:25px;margin-bottom:25px;border-color:#747474}.mx_ShareDialog_content{margin:10px 0}.mx_ShareDialog_matrixto{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:30px;padding:10px}.mx_ShareDialog_matrixto a{text-decoration:none}.mx_ShareDialog_matrixto_link{-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.mx_ShareDialog_matrixto_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_ShareDialog_matrixto_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_ShareDialog_split{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_ShareDialog_qrcode_container{float:left;height:256px;width:256px;margin-right:64px}.mx_ShareDialog_qrcode_container+.mx_ShareDialog_social_container{width:299px}.mx_ShareDialog_social_container{display:inline-block}.mx_ShareDialog_social_icon{display:inline-grid;margin-right:10px;margin-bottom:10px}.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2{margin-bottom:2px}.mx_SlashCommandHelpDialog .mx_Dialog_content{margin-top:12px;margin-bottom:34px}.mx_SpaceSettingsDialog{width:480px;color:#2e2f32}.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceSettingsDialog .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:16px}.mx_SpaceSettingsDialog .mx_AccessibleButton_kind_danger{margin-top:28px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:64px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton{display:inline-block}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton_kind_link{margin-left:auto}.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind{padding:8px 22px}.mx_TabbedIntegrationManagerDialog .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none;position:relative}.mx_TabbedIntegrationManagerDialog_container{position:absolute;top:0;bottom:0;left:0;right:0}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager{width:100%;height:100%;border-top:1px solid #0dbd8b}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_TabbedIntegrationManagerDialog_tab{display:inline-block;border:1px solid #0dbd8b;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;padding:10px 8px;margin-right:5px}.mx_TabbedIntegrationManagerDialog_currentTab{background-color:#0dbd8b;color:#fff}.mx_TermsDialog_forIntegrationManager .mx_Dialog{width:60%;height:70%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_TermsDialog_termsTableHeader{font-weight:700;text-align:left}.mx_TermsDialog_termsTable{font-size:1.2rem;width:100%}.mx_TermsDialog_service,.mx_TermsDialog_summary{padding-right:10px}.mx_TermsDialog_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;width:10px;height:10px}.mx_UntrustedDeviceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon{margin-left:0}.mx_UploadConfirmDialog_fileIcon{margin-right:5px}.mx_UploadConfirmDialog_previewOuter{text-align:center}.mx_UploadConfirmDialog_previewInner{display:inline-block;text-align:left}.mx_UploadConfirmDialog_imagePreview{max-height:300px;max-width:100%;border-radius:4px;border:1px solid #c1c1c1}.mx_UserSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserSettingsDialog_appearanceIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg);mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg)}.mx_UserSettingsDialog_voiceIcon:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_UserSettingsDialog_bellIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserSettingsDialog_preferencesIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg);mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg)}.mx_UserSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserSettingsDialog_helpIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/help.68b703f.svg);mask-image:url(../../img/element-icons/settings/help.68b703f.svg)}.mx_UserSettingsDialog_labsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg);mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg)}.mx_UserSettingsDialog_mjolnirIcon:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_UserSettingsDialog_flairIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/flair.4227a88.svg);mask-image:url(../../img/element-icons/settings/flair.4227a88.svg)}.mx_WidgetCapabilitiesPromptDialog .text-muted{font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content{margin-bottom:16px}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap{margin-top:20px;font-size:1.5rem;line-height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap .mx_WidgetCapabilitiesPromptDialog_byline{color:#61708b;margin-left:26px;font-size:1.2rem;line-height:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons{margin-top:40px}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag{line-height:calc(1.4rem + 14px);color:#61708b;font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px;width:3.2rem;height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 1.5rem)}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch .mx_ToggleSwitch_ball{width:1.5rem;height:1.5rem;border-radius:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_AccessSecretStorageDialog_reset{position:relative;padding-left:24px;margin-top:7px}.mx_AccessSecretStorageDialog_reset:before{content:"";display:inline-block;position:absolute;height:16px;width:16px;left:0;top:2px;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link{color:#ff4b55}.mx_AccessSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_AccessSecretStorageDialog_resetBadge:before{background-image:url(../../img/element-icons/warning-badge.de1033e.svg);background-size:24px;background-color:transparent}.mx_AccessSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_AccessSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_AccessSecretStorageDialog_keyStatus{height:30px}.mx_AccessSecretStorageDialog_passPhraseInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_AccessSecretStorageDialog_recoveryKeyEntry{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText{margin:16px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback:before{content:"";display:inline-block;vertical-align:bottom;width:20px;height:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;margin-right:5px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid{color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid{color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput{display:none}.mx_CreateCrossSigningDialog{width:560px}.mx_CreateCrossSigningDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateCrossSigningDialog .mx_Dialog_title,.mx_CreateKeyBackupDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateKeyBackupDialog_primaryContainer{padding:20px}.mx_CreateKeyBackupDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateKeyBackupDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_CreateKeyBackupDialog_passPhraseInput{-webkit-box-flex:0;-ms-flex:none;flex:none;width:250px;border:1px solid #0dbd8b;border-radius:5px;padding:10px;margin-bottom:1em}.mx_CreateKeyBackupDialog_passPhraseMatch{margin-left:20px}.mx_CreateKeyBackupDialog_recoveryKeyHeader{margin-bottom:1em}.mx_CreateKeyBackupDialog_recoveryKeyContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateKeyBackupDialog_recoveryKey{width:262px;padding:20px;color:#888;background-color:#f7f7f7;margin-right:12px}.mx_CreateKeyBackupDialog_recoveryKeyButtons{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateKeyBackupDialog_recoveryKeyButtons button{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap}.mx_CreateKeyBackupDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog{width:560px}.mx_CreateSecretStorageDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateSecretStorageDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateSecretStorageDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateSecretStorageDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_centeredBody,.mx_CreateSecretStorageDialog_centeredTitle{text-align:center}.mx_CreateSecretStorageDialog_primaryContainer{padding-top:20px}.mx_CreateSecretStorageDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton{margin-bottom:16px;padding:11px}.mx_CreateSecretStorageDialog_optionTitle{color:#45474a;font-weight:600;font-size:1.8rem;padding-bottom:10px}.mx_CreateSecretStorageDialog_optionIcon{display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_optionIcon_securePhrase{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_optionIcon_secureBackup{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Field.mx_CreateSecretStorageDialog_passPhraseField{margin-top:0}.mx_CreateSecretStorageDialog_passPhraseMatch{width:200px;margin-left:20px}.mx_CreateSecretStorageDialog_recoveryKeyContainer{width:380px;margin-left:auto;margin-right:auto}.mx_CreateSecretStorageDialog_recoveryKey{font-weight:700;text-align:center;padding:20px;color:#888;background-color:#f7f7f7;border-radius:6px;word-spacing:1em;margin-bottom:20px}.mx_CreateSecretStorageDialog_recoveryKeyButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton{width:160px;padding-left:0;padding-right:0;white-space:nowrap}.mx_CreateSecretStorageDialog_continueSpinner{margin-top:33px;text-align:right}.mx_CreateSecretStorageDialog_continueSpinner img{width:20px;height:20px}.mx_KeyBackupFailedDialog .mx_Dialog_title{margin-bottom:32px}.mx_KeyBackupFailedDialog_title{position:relative;padding-left:45px;padding-bottom:10px}.mx_KeyBackupFailedDialog_title:before{-webkit-mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;content:"";position:absolute;top:-6px;right:0;bottom:0;left:0}.mx_KeyBackupFailedDialog .mx_Dialog_buttons{margin-top:36px}.mx_RestoreKeyBackupDialog_keyStatus{height:30px}.mx_RestoreKeyBackupDialog_primaryContainer{padding:20px}.mx_RestoreKeyBackupDialog_passPhraseInput,.mx_RestoreKeyBackupDialog_recoveryKeyInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_RestoreKeyBackupDialog_content>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:110px}.mx_NetworkDropdown{height:32px;position:relative;padding-right:32px;margin-left:auto;margin-right:9px;margin-top:12px}.mx_NetworkDropdown,.mx_NetworkDropdown .mx_AccessibleButton{width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_NetworkDropdown_menu{min-width:204px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border:1px solid #c1c1c1;background-color:#fff;max-height:calc(100vh - 20px);overflow-y:auto}.mx_NetworkDropdown_menu_network{font-weight:700}.mx_NetworkDropdown_server{padding:12px 0;border-bottom:1px solid #9fa9ba}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title{padding:0 10px;font-size:1.5rem;font-weight:600;line-height:2rem;margin-bottom:4px;position:relative}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton{position:absolute;display:inline;right:10px;height:16px;width:16px;margin-top:2px}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton:after{content:"";position:absolute;width:16px;height:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle{padding:0 10px;font-size:1rem;line-height:1.4rem;margin-top:-4px;margin-bottom:4px;color:#61708b}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network{font-size:1.2rem;line-height:1.6rem;padding:4px 10px;cursor:pointer;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network[aria-checked=true]:after{content:"";position:absolute;width:16px;height:16px;right:10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_NetworkDropdown_server_add:hover,.mx_NetworkDropdown_server_network:hover{background-color:#f3f8fd}.mx_NetworkDropdown_server_add{padding:16px 10px 16px 32px;position:relative;border-radius:0 0 4px 4px}.mx_NetworkDropdown_server_add:before{content:"";position:absolute;width:16px;height:16px;left:7px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);background-color:#61708b}.mx_NetworkDropdown_handle{position:relative}.mx_NetworkDropdown_handle:after{content:"";position:absolute;width:26px;height:26px;right:-27.5px;top:-3px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);background-color:#2e2f32}.mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server{color:#61708b;font-size:1.2rem}.mx_NetworkDropdown_dialog .mx_Dialog{width:45vw}.mx_AccessibleButton{cursor:pointer}.mx_AccessibleButton_disabled{cursor:default}.mx_AccessibleButton_hasKind{padding:7px 18px;text-align:center;border-radius:8px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:1.4rem}.mx_AccessibleButton_kind_primary{color:#fff;background-color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary_outline{color:#0dbd8b;background-color:#fff;border:1px solid #0dbd8b;font-weight:600}.mx_AccessibleButton_kind_secondary{color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled,.mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm{padding:5px 12px;color:#fff;background-color:#0dbd8b}.mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_kind_danger{color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_outline{color:#ff4b55;background-color:#fff;border:1px solid #ff4b55}.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled{color:#f5b6bb;border-color:#f5b6bb}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm{padding:5px 12px;color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_link{color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm{padding:5px 12px;color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AddressSelector{position:absolute;background-color:#fff;width:485px;max-height:116px;overflow-y:auto;border-radius:3px;border:1px solid #0dbd8b;cursor:pointer;z-index:1}.mx_AddressSelector.mx_AddressSelector_empty{display:none}.mx_AddressSelector_addressListElement .mx_AddressTile{background-color:#fff;border:1px solid #fff}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected{background-color:#f2f5f8}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile{background-color:#f2f5f8;border:1px solid #f2f5f8}.mx_AddressTile{display:inline-block;border-radius:3px;background-color:rgba(74,73,74,.1);border:1px solid #e7e7e7;line-height:2.6rem;color:#2e2f32;font-size:1.4rem;font-weight:400;margin-right:4px}.mx_AddressTile.mx_AddressTile_error{background-color:rgba(255,0,100,.1);color:#ff4b55;border-color:#ff4b55}.mx_AddressTile_network{padding-right:4px}.mx_AddressTile_avatar,.mx_AddressTile_network{display:inline-block;position:relative;padding-left:2px;vertical-align:middle}.mx_AddressTile_avatar{padding-right:7px}.mx_AddressTile_mx{display:inline-block;margin:0;border:0;padding:0}.mx_AddressTile_name{display:inline-block;padding-right:4px;font-weight:600;overflow:hidden;height:26px;vertical-align:middle}.mx_AddressTile_name.mx_AddressTile_justified{width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_id{display:inline-block;padding-right:11px}.mx_AddressTile_id.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknownMx{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_unknownMxl.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_email{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_email.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknown{display:inline-block;padding-right:11px}.mx_AddressTile_unknown.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_dismiss{display:inline-block;padding-right:11px;padding-left:1px;cursor:pointer}.mx_AddressTile_dismiss object{pointer-events:none}.mx_DesktopBuildsNotice{text-align:center;padding:0 16px}.mx_DesktopBuildsNotice>*{vertical-align:middle}.mx_DesktopBuildsNotice>img{margin-right:8px}.mx_desktopCapturerSourcePicker{overflow:hidden}.mx_desktopCapturerSourcePicker_tabLabels{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 0 8px}.mx_desktopCapturerSourcePicker_tabLabel,.mx_desktopCapturerSourcePicker_tabLabel_selected{width:100%;text-align:center;border-radius:8px;padding:8px 0;font-size:1.3rem}.mx_desktopCapturerSourcePicker_tabLabel_selected{background-color:#0dbd8b;color:#fff}.mx_desktopCapturerSourcePicker_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:500px;overflow:overlay}.mx_desktopCapturerSourcePicker_stream_button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:8px;border-radius:4px}.mx_desktopCapturerSourcePicker_stream_button:focus,.mx_desktopCapturerSourcePicker_stream_button:hover{background:#fff}.mx_desktopCapturerSourcePicker_stream_thumbnail{margin:4px;width:312px}.mx_desktopCapturerSourcePicker_stream_name{margin:0 4px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:312px}.mx_DirectorySearchBox{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:9px;padding-right:9px}.mx_DirectorySearchBox_joinButton{display:table-cell;padding:3px 10px;background-color:#f2f5f8;border-radius:3px;background-image:url(../../img/icon-return.cb24475.svg);background-position:8px 70%;background-repeat:no-repeat;text-indent:18px;font-weight:600;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.mx_DirectorySearchBox_clear{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:10px;mask-size:10px;width:15px;height:15px;cursor:pointer}.mx_Dropdown{position:relative;color:#2e2f32}.mx_Dropdown_disabled{opacity:.3}.mx_Dropdown_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:3px;border:1px solid #c7c7c7;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_Dropdown_input.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_Dropdown_input:focus{border-color:#238cf5}.mx_Dropdown_input.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_Dropdown_arrow{width:10px;height:6px;padding-right:9px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_Dropdown_option{height:35px;line-height:3.5rem;padding-left:8px;padding-right:8px}.mx_Dropdown_input>.mx_Dropdown_option{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dropdown_input>.mx_Dropdown_option,.mx_Dropdown_option div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_Dropdown_option .mx_Dropdown_option_emoji,.mx_Dropdown_option img{margin:5px;width:16px;vertical-align:middle}.mx_Dropdown_option_emoji{font-size:1.6rem;line-height:1.6rem}input.mx_Dropdown_option,input.mx_Dropdown_option:focus{font-weight:400;border:0;padding-top:0;padding-bottom:0;width:60%}.mx_Dropdown_menu{position:absolute;left:-1px;right:-1px;top:100%;z-index:2;margin:0;padding:0;border-radius:3px;border:1px solid #238cf5;background-color:#fff;max-height:200px;overflow-y:auto}.mx_Dropdown_menu .mx_Dropdown_option{height:auto;min-height:35px}.mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_Dropdown_searchPrompt{font-weight:400;margin-left:5px;margin-bottom:5px}.mx_EditableItemList{margin-top:12px;margin-bottom:10px}.mx_EditableItem{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:5px}.mx_EditableItem_delete{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;margin-right:5px;cursor:pointer;vertical-align:middle;width:14px;height:14px;-webkit-mask-image:url(../../img/feather-customised/cancel.23c2689.svg);mask-image:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#ff4b55;-webkit-mask-size:100%;mask-size:100%}.mx_EditableItem_email{vertical-align:middle}.mx_EditableItem_promptText{margin-right:10px;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_EditableItem_confirmBtn{margin-right:5px}.mx_EditableItem_item{-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;width:calc(100% - 14px);overflow-x:hidden;text-overflow:ellipsis}.mx_EditableItemList_label{margin-bottom:5px}.mx_ErrorBoundary{width:100%;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_ErrorBoundary,.mx_ErrorBoundary_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ErrorBoundary_body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:400px}.mx_ErrorBoundary_body .mx_AccessibleButton{margin-top:5px}.mx_EventListSummary{position:relative}.mx_TextualEvent.mx_EventListSummary_summary{font-size:1.4rem;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_EventListSummary_avatars{display:inline-block;margin-right:8px;padding-top:8px;line-height:1.2rem}.mx_EventListSummary_avatars .mx_BaseAvatar{margin-right:-4px;cursor:pointer}.mx_EventListSummary_toggle{color:#0dbd8b;cursor:pointer;float:right;margin-right:10px;margin-top:8px}.mx_EventListSummary_line{border-bottom:1px solid transparent;margin-left:63px;line-height:3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_line{line-height:2.2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle{margin-top:3px}.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary{font-size:1.3rem}.mx_FacePile .mx_FacePile_faces{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;vertical-align:middle}.mx_FacePile .mx_FacePile_faces>.mx_FacePile_face+.mx_FacePile_face{margin-right:-8px}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image{border:1px solid #fff}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial{margin:1px}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more{position:relative;border-radius:100%;width:30px;height:30px;background-color:hsla(0,0%,91%,.77)}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before{content:"";z-index:1;position:absolute;top:0;left:0;height:inherit;width:inherit;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_FacePile .mx_FacePile_summary{margin-left:12px;font-size:1.4rem;line-height:2.4rem;color:#8d99a5}.mx_Field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;position:relative;margin:1em 0;border-radius:4px;-webkit-transition:border-color .25s;transition:border-color .25s;border:1px solid #e7e7e7}.mx_Field_prefix{border-right:1px solid #e7e7e7}.mx_Field_postfix{border-left:1px solid #e7e7e7}.mx_Field input,.mx_Field select,.mx_Field textarea{font-weight:400;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;border:none;border-radius:4px;padding:8px 9px;color:#2e2f32;background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_Field select{-moz-appearance:none;-webkit-appearance:none}.mx_Field_select:before{content:"";position:absolute;top:15px;right:10px;width:10px;height:6px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;z-index:1;pointer-events:none}.mx_Field:focus-within{border-color:#238cf5}.mx_Field input:focus,.mx_Field select:focus,.mx_Field textarea:focus{outline:0}.mx_Field input::-webkit-input-placeholder,.mx_Field textarea::-webkit-input-placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-moz-placeholder,.mx_Field textarea::-moz-placeholder{-moz-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:-ms-input-placeholder,.mx_Field textarea:-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-ms-input-placeholder,.mx_Field textarea::-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::placeholder,.mx_Field textarea::placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-moz-placeholder,.mx_Field textarea:placeholder-shown:focus::-moz-placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus:-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-moz-placeholder-shown:focus::placeholder,.mx_Field textarea:-moz-placeholder-shown:focus::placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-ms-input-placeholder:focus::placeholder,.mx_Field textarea:-ms-input-placeholder:focus::placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::placeholder,.mx_Field textarea:placeholder-shown:focus::placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field label{-webkit-transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;color:#2e2f32;background-color:transparent;font-size:1.4rem;position:absolute;left:0;top:0;margin:7px 8px;padding:2px;pointer-events:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 20px)}.mx_Field input:not(:-moz-placeholder-shown)+label,.mx_Field textarea:not(:-moz-placeholder-shown)+label{-moz-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:not(:-ms-input-placeholder)+label,.mx_Field textarea:not(:-ms-input-placeholder)+label{-ms-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field_labelAlwaysTopLeft label,.mx_Field input:focus+label,.mx_Field input:not(:placeholder-shown)+label,.mx_Field select+label,.mx_Field textarea:focus+label,.mx_Field textarea:not(:placeholder-shown)+label{-webkit-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:focus+label,.mx_Field select:focus+label,.mx_Field textarea:focus+label{color:#238cf5}.mx_Field input:disabled,.mx_Field input:disabled+label,.mx_Field select:disabled,.mx_Field select:disabled+label,.mx_Field textarea:disabled,.mx_Field textarea:disabled+label{background-color:#fff;color:#888}.mx_Field_valid.mx_Field,.mx_Field_valid.mx_Field:focus-within{border-color:#0dbd8b}.mx_Field_valid.mx_Field:focus-within label,.mx_Field_valid.mx_Field label{color:#0dbd8b}.mx_Field_invalid.mx_Field,.mx_Field_invalid.mx_Field:focus-within{border-color:#ff4b55}.mx_Field_invalid.mx_Field:focus-within label,.mx_Field_invalid.mx_Field label{color:#ff4b55}.mx_Field_tooltip{margin-top:-12px;margin-left:4px;width:200px}.mx_Field_tooltip.mx_Field_valid{-webkit-animation:mx_fadeout 1s 2s forwards;animation:mx_fadeout 1s 2s forwards}.mx_Field .mx_Dropdown_input{border:initial;border-radius:0;border-radius:initial}.mx_Field .mx_CountryDropdown{width:7.8rem}.mx_FormButton{line-height:1.6rem;padding:5px 15px;font-size:1.2rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_FormButton:not(:last-child){margin-right:8px}.mx_FormButton.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_FormButton.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_FormButton.mx_AccessibleButton_kind_secondary{color:#737d8c;border:1px solid #737d8c;background-color:unset}.mx_ImageView{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView,.mx_ImageView_image_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%}.mx_ImageView_image_wrapper{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_ImageView_image{pointer-events:all;-ms-flex-negative:0;flex-shrink:0}.mx_ImageView_panel{width:100%;height:68px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_ImageView_info_wrapper,.mx_ImageView_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_info_wrapper{pointer-events:all;padding-left:32px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#fff}.mx_ImageView_info{padding-left:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView_info_sender{font-weight:700}.mx_ImageView_toolbar{padding-right:16px;pointer-events:all;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_button{margin-left:24px;display:block}.mx_ImageView_button:before{content:"";height:22px;width:22px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;display:block;background-color:#c1c6cd}.mx_ImageView_button_rotateCW:before{-webkit-mask-image:url(../../img/image-view/rotate-cw.60d903e.svg);mask-image:url(../../img/image-view/rotate-cw.60d903e.svg)}.mx_ImageView_button_rotateCCW:before{-webkit-mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg);mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg)}.mx_ImageView_button_zoomOut:before{-webkit-mask-image:url(../../img/image-view/zoom-out.8506f80.svg);mask-image:url(../../img/image-view/zoom-out.8506f80.svg)}.mx_ImageView_button_zoomIn:before{-webkit-mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg);mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg)}.mx_ImageView_button_download:before{-webkit-mask-image:url(../../img/image-view/download.2eac468.svg);mask-image:url(../../img/image-view/download.2eac468.svg)}.mx_ImageView_button_more:before{-webkit-mask-image:url(../../img/image-view/more.0427c6c.svg);mask-image:url(../../img/image-view/more.0427c6c.svg)}.mx_ImageView_button_close{border-radius:100%;background:#21262c}.mx_ImageView_button_close:before{width:32px;height:32px;-webkit-mask-image:url(../../img/image-view/close.97d1731.svg);mask-image:url(../../img/image-view/close.97d1731.svg);-webkit-mask-size:40%;mask-size:40%}.mx_InfoTooltip_icon,.mx_InfoTooltip_icon:before{width:16px;height:16px;display:inline-block}.mx_InfoTooltip_icon:before{background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/info.dc07e19.svg);mask-image:url(../../img/element-icons/info.dc07e19.svg)}.mx_InlineSpinner{display:inline}.mx_InlineSpinner_spin img{margin:0 6px;vertical-align:-3px}.mx_InviteReason{position:relative;margin-bottom:1em}.mx_InviteReason .mx_InviteReason_reason{visibility:visible}.mx_InviteReason .mx_InviteReason_view{display:none;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;color:#737d8c}.mx_InviteReason .mx_InviteReason_view:before{content:"";margin-right:8px;background-color:#737d8c;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_InviteReason_hidden .mx_InviteReason_reason{visibility:hidden}.mx_InviteReason_hidden .mx_InviteReason_view{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ManageIntegsButton_error{position:relative;float:right;cursor:not-allowed}.mx_ManageIntegsButton_error img{position:absolute;right:-5px;top:-5px}.mx_ManageIntegsButton_errorPopup{position:absolute;top:110%;left:-275%;width:550%;padding:30%;font-size:10pt;line-height:1.5em;border-radius:5px;background-color:#0dbd8b;color:#fff;text-align:center;z-index:1000}.mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup{display:none}.mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup{display:inline}.mx_MiniAvatarUploader{position:relative;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_MiniAvatarUploader .mx_Tooltip{display:inline-block;position:absolute;z-index:unset;width:-webkit-max-content;width:-moz-max-content;width:max-content;left:72px;top:0}.mx_MiniAvatarUploader:after,.mx_MiniAvatarUploader:before{content:"";position:absolute;height:26px;width:26px;right:-6px;bottom:-6px}.mx_MiniAvatarUploader:before{background-color:#fff;border-radius:50%;z-index:1}.mx_MiniAvatarUploader:after{background-color:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg);-webkit-mask-size:16px;mask-size:16px;z-index:2}.mx_MiniAvatarUploader.mx_MiniAvatarUploader_busy:after{background:url(../../img/spinner.0b29ec9.gif) no-repeat 50%;background-size:80%;-webkit-mask:unset;mask:unset}.mx_MiniAvatarUploader_input{display:none}.mx_PowerSelector{width:100%}.mx_PowerSelector .mx_Field input,.mx_PowerSelector .mx_Field select{-webkit-box-sizing:border-box;box-sizing:border-box}progress.mx_ProgressBar{height:6px;width:60px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:6px}progress.mx_ProgressBar::-moz-progress-bar{border-radius:6px}progress.mx_ProgressBar::-webkit-progress-bar,progress.mx_ProgressBar::-webkit-progress-value{border-radius:6px}progress.mx_ProgressBar{color:#0dbd8b}progress.mx_ProgressBar::-moz-progress-bar{background-color:#0dbd8b}progress.mx_ProgressBar::-webkit-progress-value{background-color:#0dbd8b}progress.mx_ProgressBar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar::-webkit-progress-bar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar ::-webkit-progress-value{-webkit-transition:width 1s;transition:width 1s}progress.mx_ProgressBar ::-moz-progress-bar{-moz-transition:padding-bottom 1s;transition:padding-bottom 1s;padding-bottom:var(--value);transform-origin:0 0;transform:rotate(-90deg) translateX(-15px);padding-left:15px;height:0}.mx_QRCode img{border-radius:8px}.mx_ReplyThread{margin-top:0}.mx_ReplyThread .mx_DateSeparator{font-size:1em!important;margin-top:0;margin-bottom:0;padding-bottom:1px;bottom:-5px}.mx_ReplyThread_show{cursor:pointer}blockquote.mx_ReplyThread{margin-left:0;padding-left:10px;border-left:4px solid #ddd}.mx_ResizeHandle{cursor:row-resize;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;z-index:100}.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -5px;padding:0 5px;cursor:col-resize}.mx_ResizeHandle.mx_ResizeHandle_vertical{margin:-5px 0;padding:5px 0;cursor:row-resize}.mx_MatrixChat>.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -10px 0 0;padding:0 8px 0 0}.mx_ResizeHandle>div{background:transparent}.mx_ResizeHandle.mx_ResizeHandle_horizontal>div{width:1px;height:100%}.mx_ResizeHandle.mx_ResizeHandle_vertical>div{height:1px}.mx_AtRoomPill,.mx_GroupPill,.mx_RoomPill,.mx_UserPill{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle;border-radius:1.6rem;line-height:1.5rem;padding-left:0}a.mx_Pill{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 1ch)}.mx_Pill{padding:.1rem .4em .1rem .1rem;vertical-align:text-top;line-height:1.7rem}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_GroupPill{color:#fff;background-color:#aaa}.mx_EventTile_content .markdown-body a.mx_Pill{text-decoration:none}.mx_EventTile_content .markdown-body a.mx_UserPill,.mx_UserPill{color:#2e2f32;background-color:rgba(0,0,0,.1)}.mx_UserPill_selected{background-color:#0dbd8b!important}.mx_EventTile_content .markdown-body a.mx_AtRoomPill,.mx_EventTile_content .mx_AtRoomPill,.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me,.mx_MessageComposer_input .mx_AtRoomPill{color:#fff;background-color:#ff4b55}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_EventTile_content .markdown-body a.mx_RoomPill,.mx_GroupPill,.mx_RoomPill{color:#fff;background-color:#aaa}.mx_EventTile_body .mx_GroupPill,.mx_EventTile_body .mx_RoomPill,.mx_EventTile_body .mx_UserPill{cursor:pointer}.mx_AtRoomPill .mx_BaseAvatar,.mx_GroupPill .mx_BaseAvatar,.mx_RoomPill .mx_BaseAvatar,.mx_UserPill .mx_BaseAvatar{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:10rem;margin-right:.24rem}.mx_Markdown_BOLD{font-weight:700}.mx_Markdown_ITALIC{font-style:italic}.mx_Markdown_CODE{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.mx_Markdown_HR{display:block;background:#e9e9e9}.mx_Markdown_STRIKETHROUGH{text-decoration:line-through}.mx_RoleButton{margin-left:4px;margin-right:4px;cursor:pointer;display:inline-block}.mx_RoleButton object{pointer-events:none}.mx_RoleButton_tooltip{display:inline-block;position:relative;top:-25px;left:6px}.mx_RoomAliasField{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;min-width:0;max-width:100%}.mx_RoomAliasField input{width:150px;padding-left:0;padding-right:0}.mx_RoomAliasField input::-webkit-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-moz-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input:-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::placeholder{color:#888;font-weight:400}.mx_RoomAliasField .mx_Field_postfix,.mx_RoomAliasField .mx_Field_prefix{color:#888;border-left:none;border-right:none;font-weight:600;padding:9px 10px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomAliasField .mx_Field_postfix{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 180px)}.mx_SSOButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_SSOButtons .mx_SSOButtons_row+.mx_SSOButtons_row{margin-top:16px}.mx_SSOButtons .mx_SSOButton{position:relative;width:100%;padding:7px 32px;text-align:center;border-radius:8px;display:inline-block;font-size:1.4rem;font-weight:600;border:1px solid #e7e7e7;color:#2e2f32}.mx_SSOButtons .mx_SSOButton>img{-o-object-fit:contain;object-fit:contain;position:absolute;left:8px;top:4px}.mx_SSOButtons .mx_SSOButton_default{color:#0dbd8b;background-color:#fff;border-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary{color:#fff;background-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_mini{-webkit-box-sizing:border-box;box-sizing:border-box;width:50px;height:50px;min-width:50px;padding:12px}.mx_SSOButtons .mx_SSOButton_mini>img{left:12px;top:12px}.mx_SSOButtons .mx_SSOButton_mini+.mx_SSOButton_mini{margin-left:16px}.mx_ServerPicker{margin-bottom:14px;border-bottom:1px solid rgba(141,151,165,.2);display:grid;grid-template-columns:auto -webkit-min-content;grid-template-columns:auto min-content;grid-template-rows:auto auto auto;font-size:1.4rem;line-height:2rem}.mx_ServerPicker>h3{font-weight:600;margin:0 0 20px;grid-column:1;grid-row:1}.mx_ServerPicker .mx_ServerPicker_help{width:20px;height:20px;background-color:#c1c6cd;border-radius:10px;grid-column:2;grid-row:1;margin-left:auto;text-align:center;color:#fff;font-size:16px;position:relative}.mx_ServerPicker .mx_ServerPicker_help:before{content:"";width:24px;height:24px;position:absolute;top:-2px;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/i.80d84f3.svg);mask-image:url(../../img/element-icons/i.80d84f3.svg);background:#fff}.mx_ServerPicker .mx_ServerPicker_server{color:#232f32;grid-column:1;grid-row:2;margin-bottom:16px}.mx_ServerPicker .mx_ServerPicker_change{padding:0;font-size:inherit;grid-column:2;grid-row:2}.mx_ServerPicker .mx_ServerPicker_desc{margin-top:-12px;color:#8d99a5;grid-column:1/2;grid-row:3;margin-bottom:16px}.mx_ServerPicker_helpDialog .mx_Dialog_content{width:456px}.mx_Slider{position:relative;margin:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Slider_dotContainer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_Slider_bar,.mx_Slider_dotContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_Slider_bar{-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;height:1em;width:100%;padding:0 .5em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Slider_bar>hr{width:100%;height:.4em;background-color:#c1c9d6;border:0}.mx_Slider_selection{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:calc(100% - 1em);height:1em;position:absolute;pointer-events:none}.mx_Slider_selectionDot{position:absolute;width:1.1em;height:1.1em;background-color:#0dbd8b;border-radius:50%;-webkit-box-shadow:0 0 6px #d3d3d3;box-shadow:0 0 6px #d3d3d3;z-index:10}.mx_Slider_selection>hr{margin:0;border:.2em solid #0dbd8b}.mx_Slider_dot{height:1em;width:1em;border-radius:50%;background-color:#c1c9d6;z-index:0}.mx_Slider_dotActive{background-color:#0dbd8b}.mx_Slider_dotValue{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#c1c9d6}.mx_Slider_labelContainer{width:1em}.mx_Slider_label{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;left:-50%}.mx_Spinner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_MatrixChat_middlePanel .mx_Spinner{height:auto}.mx_Checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Checkbox input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0}.mx_Checkbox input[type=checkbox]+label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;-ms-flex-negative:0;flex-shrink:0;height:1.6rem;width:1.6rem;size:.5rem;border:.15rem solid rgba(97,112,139,.5);-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:.4rem}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background img{display:none;height:100%;width:100%;-webkit-filter:invert(100%);filter:invert(100%)}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background{background:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background img{display:block}.mx_Checkbox input[type=checkbox]+label>:not(.mx_Checkbox_background){margin-left:10px}.mx_Checkbox input[type=checkbox]:disabled+label{opacity:.5;cursor:not-allowed}.mx_Checkbox input[type=checkbox]:checked:disabled+label>.mx_Checkbox_background{background-color:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton{position:relative;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_RadioButton,.mx_RadioButton>.mx_RadioButton_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_RadioButton>.mx_RadioButton_content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:8px;margin-right:8px}.mx_RadioButton .mx_RadioButton_spacer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.6rem;width:1.6rem}.mx_RadioButton>input[type=radio]{margin:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mx_RadioButton>input[type=radio]+div{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;height:1.6rem;width:1.6rem;margin-left:2px;border:.15rem solid #61708b;border-radius:1.6rem}.mx_RadioButton>input[type=radio]+div>div{-webkit-box-sizing:border-box;box-sizing:border-box;height:.8rem;width:.8rem;border-radius:.8rem}.mx_RadioButton>input[type=radio].focus-visible+div{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_RadioButton>input[type=radio].focus-visible+div{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton>input[type=radio]:checked+div{border-color:#0dbd8b}.mx_RadioButton>input[type=radio]:checked+div>div{background:#0dbd8b}.mx_RadioButton>input[type=radio]:disabled+div,.mx_RadioButton>input[type=radio]:disabled+div+span{opacity:.5;cursor:not-allowed}.mx_RadioButton>input[type=radio]:disabled+div{border-color:#61708b}.mx_RadioButton>input[type=radio]:checked:disabled+div>div{background-color:#61708b}.mx_RadioButton_outlined{border:1px solid #e3e8f0;border-radius:8px}.mx_RadioButton_checked{border-color:#0dbd8b}.mx_SyntaxHighlight{background:none!important;color:#747474!important}.mx_TextWithTooltip_tooltip{display:none}.mx_ToggleSwitch{-webkit-transition:background-color .2s ease-out .1s;transition:background-color .2s ease-out .1s;width:4.4rem;height:2rem;border-radius:1.5rem;padding:2px;background-color:#c1c9d6;opacity:.5}.mx_ToggleSwitch_enabled{cursor:pointer;opacity:1}.mx_ToggleSwitch.mx_ToggleSwitch_on{background-color:#0dbd8b}.mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 2rem)}.mx_ToggleSwitch_ball{position:relative;width:2rem;height:2rem;border-radius:2rem;background-color:#fff;-webkit-transition:left .15s ease-out .1s;transition:left .15s ease-out .1s;left:0}@-webkit-keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@-webkit-keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}@keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}.mx_Tooltip_chevron{position:absolute;left:-7px;top:10px;width:0;height:0;border-top:7px solid transparent;border-right:7px solid #e7e7e7;border-bottom:7px solid transparent}.mx_Tooltip_chevron:after{content:"";width:0;height:0;border-top:6px solid transparent;border-right:6px solid #fff;border-bottom:6px solid transparent;position:absolute;top:-6px;left:1px}.mx_Tooltip{position:fixed;border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);z-index:6000;padding:10px;pointer-events:none;line-height:1.4rem;font-size:1.2rem;font-weight:500;max-width:200px;word-break:break-word;margin-right:50px;background-color:#27303a;color:#fff;border:0;text-align:center}.mx_Tooltip,.mx_Tooltip .mx_Tooltip_chevron{display:none}.mx_Tooltip.mx_Tooltip_visible{-webkit-animation:mx_fadein .2s forwards;animation:mx_fadein .2s forwards}.mx_Tooltip.mx_Tooltip_invisible{-webkit-animation:mx_fadeout .1s forwards;animation:mx_fadeout .1s forwards}.mx_Field_tooltip{background-color:#fff;color:#2e2f32;border:1px solid #e7e7e7;text-align:unset}.mx_Field_tooltip .mx_Tooltip_chevron{display:unset}.mx_Tooltip_title{font-weight:600}.mx_Tooltip_sub{opacity:.7;margin-top:4px}.mx_TooltipButton{display:inline-block;width:11px;height:11px;margin-left:5px;border:2px solid #dbdbdb;border-radius:20px;color:#dbdbdb;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in;opacity:.6;line-height:1.1rem;text-align:center;cursor:pointer}.mx_TooltipButton:hover{opacity:1}.mx_TooltipButton_container{position:relative;top:-18px;left:4px}.mx_TooltipButton_helpText{width:400px;text-align:start;line-height:17px!important}.mx_Validation{position:relative}.mx_Validation_details{padding-left:20px;margin:0}.mx_Validation_description+.mx_Validation_details{margin:1em 0 0}.mx_Validation_detail{position:relative;font-weight:400;list-style:none;margin-bottom:.5em}.mx_Validation_detail:last-child{margin-bottom:0}.mx_Validation_detail:before{content:"";position:absolute;width:14px;height:14px;top:0;left:-18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_Validation_detail.mx_Validation_valid{color:#0dbd8b}.mx_Validation_detail.mx_Validation_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_Validation_detail.mx_Validation_invalid{color:#ff4b55}.mx_Validation_detail.mx_Validation_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_EmojiPicker{width:340px;height:450px;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.mx_EmojiPicker_header{padding:4px 8px 0;border-bottom:1px solid #e9edf1}.mx_EmojiPicker_anchor{padding:8px 8px 6px;border:none;border-bottom:2px solid transparent;background-color:transparent;border-radius:4px 4px 0 0;width:36px;height:38px}.mx_EmojiPicker_anchor:not(:disabled){cursor:pointer}.mx_EmojiPicker_anchor:not(:disabled):hover{background-color:#ddd;border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_anchor:before{background-color:#2e2f32;content:"";display:inline-block;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:100%;height:100%}.mx_EmojiPicker_anchor:disabled:before{background-color:#ddd}.mx_EmojiPicker_anchor_activity:before{-webkit-mask-image:url(../../img/emojipicker/activity.921ec9f.svg);mask-image:url(../../img/emojipicker/activity.921ec9f.svg)}.mx_EmojiPicker_anchor_custom:before{-webkit-mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg);mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg)}.mx_EmojiPicker_anchor_flags:before{-webkit-mask-image:url(../../img/emojipicker/flags.1a8855e.svg);mask-image:url(../../img/emojipicker/flags.1a8855e.svg)}.mx_EmojiPicker_anchor_foods:before{-webkit-mask-image:url(../../img/emojipicker/foods.c6b220a.svg);mask-image:url(../../img/emojipicker/foods.c6b220a.svg)}.mx_EmojiPicker_anchor_nature:before{-webkit-mask-image:url(../../img/emojipicker/nature.6540b99.svg);mask-image:url(../../img/emojipicker/nature.6540b99.svg)}.mx_EmojiPicker_anchor_objects:before{-webkit-mask-image:url(../../img/emojipicker/objects.4d34f58.svg);mask-image:url(../../img/emojipicker/objects.4d34f58.svg)}.mx_EmojiPicker_anchor_people:before{-webkit-mask-image:url(../../img/emojipicker/people.e918580.svg);mask-image:url(../../img/emojipicker/people.e918580.svg)}.mx_EmojiPicker_anchor_places:before{-webkit-mask-image:url(../../img/emojipicker/places.7310322.svg);mask-image:url(../../img/emojipicker/places.7310322.svg)}.mx_EmojiPicker_anchor_recent:before{-webkit-mask-image:url(../../img/emojipicker/recent.13b42e2.svg);mask-image:url(../../img/emojipicker/recent.13b42e2.svg)}.mx_EmojiPicker_anchor_symbols:before{-webkit-mask-image:url(../../img/emojipicker/symbols.15a557d.svg);mask-image:url(../../img/emojipicker/symbols.15a557d.svg)}.mx_EmojiPicker_anchor_visible{border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_search{margin:8px;border-radius:4px;border:1px solid #e7e7e7;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_EmojiPicker_search input{-webkit-box-flex:1;-ms-flex:1;flex:1;border:none;padding:8px 12px;border-radius:4px 0}.mx_EmojiPicker_search button{border:none;background-color:inherit;margin:0;padding:8px;-ms-flex-item-align:center;align-self:center;width:32px;height:32px}.mx_EmojiPicker_search_clear{cursor:pointer}.mx_EmojiPicker_search_icon{width:16px;margin:8px}.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear){pointer-events:none}.mx_EmojiPicker_search_icon:after{-webkit-mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:#2e2f32;content:"";display:inline-block;width:100%;height:100%}.mx_EmojiPicker_search_clear:after{-webkit-mask-image:url(../../img/emojipicker/delete.f7344c5.svg);mask-image:url(../../img/emojipicker/delete.f7344c5.svg)}.mx_EmojiPicker_category{padding:0 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_category_label{width:304px}.mx_EmojiPicker_list{width:304px;padding:0;margin:0}.mx_EmojiPicker_item_wrapper{display:inline-block;list-style:none;width:38px;cursor:pointer}.mx_EmojiPicker_item{display:inline-block;font-size:2rem;padding:5px;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-radius:4px}.mx_EmojiPicker_item:hover{background-color:#ddd}.mx_EmojiPicker_item_selected{color:rgba(0,0,0,.5);border:1px solid #0dbd8b;padding:4px}.mx_EmojiPicker_category_label,.mx_EmojiPicker_preview_name{font-size:1.6rem;font-weight:600;margin:0}.mx_EmojiPicker_footer{border-top:1px solid #e9edf1;min-height:72px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_preview_emoji{font-size:3.2rem;padding:8px 16px}.mx_EmojiPicker_preview_text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_name{text-transform:capitalize}.mx_EmojiPicker_shortcode{color:#747474;font-size:1.4rem}.mx_EmojiPicker_shortcode:after,.mx_EmojiPicker_shortcode:before{content:":"}.mx_EmojiPicker_quick{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.mx_EmojiPicker_quick_header .mx_EmojiPicker_name{margin-right:4px}.mx_GroupPublicity_toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:8px}.mx_GroupPublicity_toggle .mx_GroupTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.mx_GroupPublicity_toggle .mx_ToggleSwitch{float:right}.mx_GroupRoomTile{position:relative;color:#2e2f32;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupRoomList_wrapper{padding:10px}.mx_GroupUserSettings_groupPublicity_scrollbox{height:200px;border:1px solid transparent;border-radius:3px;overflow:hidden}.mx_CreateEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg)}.mx_DateSeparator{clear:both;margin:4px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.4rem;color:#9e9e9e}.mx_DateSeparator>hr{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:0;border:none;border-bottom:1px solid transparent}.mx_DateSeparator>div{margin:0 25px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_EventTileBubble{background-color:#f2f5f8;padding:10px;border-radius:8px;margin:10px auto;max-width:75%;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:24px minmax(0,1fr) -webkit-min-content;grid-template-columns:24px minmax(0,1fr) min-content}.mx_EventTileBubble:after,.mx_EventTileBubble:before{position:relative;grid-column:1;grid-row:1/3;width:16px;height:16px;content:"";top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;margin-top:4px}.mx_EventTileBubble .mx_EventTileBubble_subtitle,.mx_EventTileBubble .mx_EventTileBubble_title{overflow-wrap:break-word}.mx_EventTileBubble .mx_EventTileBubble_title{font-weight:600;font-size:1.5rem;grid-column:2;grid-row:1}.mx_EventTileBubble .mx_EventTileBubble_subtitle{font-size:1.2rem;grid-column:2;grid-row:2}.mx_MEmoteBody{white-space:pre-wrap}.mx_MEmoteBody_sender{cursor:pointer}.mx_MFileBody_download{color:#0dbd8b}.mx_MFileBody_download .mx_MFileBody_download_icon{width:12px;height:12px;-webkit-mask-size:12px;mask-size:12px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/download.4f331f0.svg);mask-image:url(../../img/download.4f331f0.svg);background-color:#0dbd8b;display:inline-block}.mx_MFileBody_download a{color:#0dbd8b;text-decoration:none;cursor:pointer}.mx_MFileBody_download object{margin-left:-16px;padding-right:4px;margin-top:-4px;vertical-align:middle;pointer-events:none}.mx_MFileBody_download iframe{margin:0;padding:0;border:none;width:100%;height:1.5em}.mx_MFileBody_info{background-color:#e3e8f0;border-radius:12px;width:243px;padding:6px 12px;color:#737d8c}.mx_MFileBody_info .mx_MFileBody_info_icon{background-color:#fff;border-radius:20px;display:inline-block;width:32px;height:32px;position:relative;vertical-align:middle;margin-right:12px}.mx_MFileBody_info .mx_MFileBody_info_icon:before{content:"";-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:url(../icons/attach.svg);mask-image:url(../icons/attach.svg);background-color:#737d8c;width:13px;height:15px;position:absolute;top:8px;left:9px}.mx_MFileBody_info .mx_MFileBody_info_filename{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;display:inline-block;width:calc(100% - 44px);vertical-align:middle}.mx_MImageBody{display:block;margin-right:34px}.mx_MImageBody_thumbnail{position:absolute;width:100%;height:100%;left:0;top:0;border-radius:4px}.mx_MImageBody_thumbnail_container{overflow:hidden;position:relative}.mx_MImageBody_thumbnail_spinner{position:absolute;left:50%;top:50%}.mx_MImageBody_thumbnail_spinner>*{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.mx_MImageBody_gifLabel{position:absolute;display:block;top:0;left:14px;padding:5px;border-radius:5px;background:rgba(0,0,0,.7);border:2px solid rgba(0,0,0,.2);color:#fff;pointer-events:none}.mx_HiddenImagePlaceholder{position:absolute;left:0;top:0;bottom:0;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;cursor:pointer;background-color:#f3f8fd}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button{color:#0dbd8b}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span.mx_HiddenImagePlaceholder_eye{margin-right:8px;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span:not(.mx_HiddenImagePlaceholder_eye){vertical-align:text-bottom}.mx_EventTile:hover .mx_HiddenImagePlaceholder{background-color:#fff}.mx_MJitsiWidgetEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_MNoticeBody{white-space:pre-wrap;opacity:.6}.mx_MStickerBody_wrapper{padding:20px 0}.mx_MStickerBody_tooltip{position:absolute;top:50%}.mx_MStickerBody_hidden{max-width:220px;text-decoration:none;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MTextBody{white-space:pre-wrap}span.mx_MVideoBody video.mx_MVideoBody{max-width:100%;height:auto;border-radius:4px}.mx_MVoiceMessageBody{display:inline-block}.mx_MessageActionBar{position:absolute;visibility:hidden;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;height:24px;line-height:2.4rem;border-radius:4px;background:#fff;top:-26px;right:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_MessageActionBar:before{content:"";position:absolute;width:calc(66px + 100%);height:calc(20px + 100%);top:-12px;left:-58px;z-index:-1;cursor:auto}.mx_MessageActionBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageActionBar>:hover{border-color:#ddd;z-index:1}.mx_MessageActionBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageActionBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageActionBar>:only-child{border-radius:3px}.mx_MessageActionBar_maskButton{width:27px}.mx_MessageActionBar_maskButton:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-size:18px;mask-size:18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageActionBar_reactButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_MessageActionBar_replyButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg);mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg)}.mx_MessageActionBar_editButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg);mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg)}.mx_MessageActionBar_optionsButton:after{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_MessageActionBar_resendButton:after{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg)}.mx_MessageActionBar_cancelButton:after{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageTimestamp{color:#acacac;font-size:1rem;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mx_MjolnirBody{opacity:.4}.mx_ReactionsRow{margin:6px 0;color:#2e2f32}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton{position:relative;display:inline-block;visibility:hidden;width:24px;height:24px;vertical-align:middle;margin-left:4px}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before{content:"";position:absolute;height:100%;width:100%;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active{visibility:visible}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before,.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before{background-color:#2e2f32}.mx_EventTile:hover .mx_ReactionsRow_addReactionButton{visibility:visible}.mx_ReactionsRow_showAll{text-decoration:none;font-size:1.2rem;line-height:2rem;margin-left:4px;vertical-align:middle}.mx_ReactionsRow_showAll:link,.mx_ReactionsRow_showAll:visited{color:#8d99a5}.mx_ReactionsRow_showAll:hover{color:#2e2f32}.mx_ReactionsRowButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid #e9edf1;border-radius:10px;background-color:#f3f8fd;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.mx_ReactionsRowButton:hover{border-color:#ddd}.mx_ReactionsRowButton.mx_ReactionsRowButton_selected{background-color:#e9fff9;border-color:#0dbd8b}.mx_ReactionsRowButton.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_ReactionsRowButton .mx_ReactionsRowButton_content{max-width:100px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:4px}.mx_RedactedBody{white-space:pre-wrap;color:#61708b;vertical-align:middle;padding-left:20px;position:relative}.mx_RedactedBody:before{height:14px;width:14px;background-color:#61708b;-webkit-mask-image:url(../icons/trash.svg);mask-image:url(../icons/trash.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;content:"";position:absolute;top:1px;left:0}.mx_RoomAvatarEvent{opacity:.5;overflow-y:hidden}.mx_RoomAvatarEvent_avatar{display:inline;position:relative;top:5px}.mx_SenderProfile_name{font-weight:600}.mx_TextualEvent{opacity:.5;overflow-y:hidden}.mx_UnknownBody{white-space:pre-wrap}.mx_EventTile_content.mx_ViewSourceEvent{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:.6;font-size:1.2rem}.mx_EventTile_content.mx_ViewSourceEvent code,.mx_EventTile_content.mx_ViewSourceEvent pre{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EventTile_content.mx_ViewSourceEvent pre{line-height:1.2;margin:3.5px 0}.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle{width:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;visibility:hidden;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle{-webkit-mask-position:0 bottom;mask-position:0 bottom;margin-bottom:7px;-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle{visibility:visible}.mx_cryptoEvent.mx_cryptoEvent_icon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_cryptoEvent.mx_cryptoEvent_icon:after,.mx_cryptoEvent.mx_cryptoEvent_icon:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_cryptoEvent.mx_cryptoEvent_icon:after{background-color:#91a1c0}.mx_cryptoEvent.mx_cryptoEvent_icon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_cryptoEvent.mx_cryptoEvent_icon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_cryptoEvent .mx_cryptoEvent_buttons,.mx_cryptoEvent .mx_cryptoEvent_state{grid-column:3;grid-row:1/3}.mx_cryptoEvent .mx_cryptoEvent_buttons{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_cryptoEvent .mx_cryptoEvent_state{width:130px;padding:10px 20px;margin:auto 0;text-align:center;color:#8d99a5;overflow-wrap:break-word;font-size:1.2rem}.mx_BaseCard{padding:0 8px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_BaseCard .mx_BaseCard_header{margin:8px 0}.mx_BaseCard .mx_BaseCard_header>h2{margin:0 44px;font-size:1.8rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{position:absolute;background-color:rgba(141,151,165,.2);height:20px;width:20px;margin:12px;top:0;border-radius:10px}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{content:"";position:absolute;height:20px;width:20px;top:0;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#91a1c0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back{left:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-size:22px;mask-size:22px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{right:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg);-webkit-mask-size:8px;mask-size:8px}.mx_BaseCard .mx_AutoHideScrollbar{margin-right:-8px;padding-right:8px;min-height:0;width:100%;height:100%}.mx_BaseCard .mx_BaseCard_Group{margin:20px 0 16px}.mx_BaseCard .mx_BaseCard_Group>*{margin-left:12px;margin-right:12px}.mx_BaseCard .mx_BaseCard_Group>h1{color:#8d99a5;font-size:1.2rem;font-weight:500}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button{padding:10px 38px 10px 12px;margin:0;position:relative;font-size:1.3rem;height:20px;line-height:20px;border-radius:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover{background-color:rgba(141,151,165,.1)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after{content:"";position:absolute;top:10px;right:6px;height:20px;width:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled{padding-right:12px}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled:after{content:unset}.mx_BaseCard .mx_BaseCard_footer{padding-top:4px;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary{color:#737d8c;background-color:rgba(141,151,165,.2);font-weight:600;font-size:1.4rem}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_FilePanel.mx_BaseCard,.mx_MemberList.mx_BaseCard,.mx_NotificationPanel.mx_BaseCard,.mx_UserInfo.mx_BaseCard{padding:32px 0 0}.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar,.mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{margin-right:unset;padding-right:unset}.mx_EncryptionInfo_spinner .mx_Spinner{margin-top:25px;margin-bottom:15px}.mx_EncryptionInfo_spinner{text-align:center}.mx_RoomSummaryCard .mx_BaseCard_header{text-align:center;margin-top:20px}.mx_RoomSummaryCard .mx_BaseCard_header h2{font-weight:600;font-size:1.8rem;margin:12px 0 4px}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias{font-size:1.3rem;color:#737d8c}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias,.mx_RoomSummaryCard .mx_BaseCard_header h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee{display:inline-block;position:relative;width:54px;height:54px;border-radius:50%;background-color:#737d8c;margin-top:-3px;margin-left:-10px;border:3px solid #f2f5f8}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee:before{content:"";position:absolute;top:13px;left:13px;height:28px;width:28px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/e2e/disabled.6c5c6be.svg);mask-image:url(../../img/e2e/disabled.6c5c6be.svg);background-color:#fff}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal{background-color:#424446}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified:before{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning{background-color:#ff4b55}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning:before{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button{padding-left:44px}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button:before{content:"";position:absolute;top:8px;left:10px;height:24px;width:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button{padding:0;height:auto;color:#8d99a5}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app{padding:10px 48px 10px 12px;text-overflow:ellipsis;overflow:hidden}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app .mx_BaseAvatar_image{vertical-align:top;margin-right:12px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app span{color:#2e2f32}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{position:absolute;top:0;height:100%;width:24px;padding:12px 4px;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:hover:after,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:hover:after{content:"";position:absolute;height:24px;width:24px;top:8px;left:0;border-radius:12px;background-color:rgba(141,151,165,.1)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{content:"";position:absolute;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{right:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{-webkit-mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg);mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options{right:48px;display:none}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after{opacity:.2}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned .mx_RoomSummaryCard_app_pinToggle:before{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_icon_app{padding-right:72px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_app_options{display:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:before{content:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:after{top:8px;pointer-events:none}.mx_RoomSummaryCard .mx_AccessibleButton_kind_link{padding:0;margin-top:12px;margin-bottom:12px;font-size:1.3rem;font-weight:600}.mx_RoomSummaryCard_icon_people:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_RoomSummaryCard_icon_files:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_RoomSummaryCard_icon_share:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_RoomSummaryCard_icon_settings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserInfo.mx_BaseCard{padding-top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;font-size:1.2rem}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel{cursor:pointer;position:absolute;top:0;border-radius:4px;background-color:#f2f5f8;margin:9px;z-index:1}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div{height:16px;width:16px;padding:4px;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:7px center;mask-position:7px center;background-color:#91a1c0}.mx_UserInfo.mx_BaseCard h2{font-size:1.8rem;font-weight:600;margin:18px 0 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container{padding:8px 16px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator{border-bottom:1px solid rgba(46,47,50,.1)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer{padding-top:0;padding-bottom:0;margin-bottom:8px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer{width:154px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge{display:none}.mx_UserInfo.mx_BaseCard .mx_RoomTile_name{width:160px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar{margin:24px 32px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div{max-width:30vh;margin:0 auto;-webkit-transition:.5s;transition:.5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div{padding-top:100%;position:relative}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div *{border-radius:100%;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:6rem!important;width:100%!important;-webkit-transition:font-size .5s;transition:font-size .5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_UserInfo.mx_BaseCard h3{text-transform:uppercase;color:#8d99a5;font-weight:600;font-size:1.2rem;margin:4px 0}.mx_UserInfo.mx_BaseCard p{margin:5px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile{text-align:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.8rem;line-height:2.5rem;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;word-break:break-all;text-overflow:ellipsis}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon{margin-top:3px;margin-right:4px;min-width:18px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus{margin-top:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField{margin:6px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField,.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{margin:11px 0 12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_Field{margin:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field{cursor:pointer;color:#0dbd8b;line-height:1.6rem;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator){padding-top:16px;padding-bottom:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator)>:not(h3){margin-left:8px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device{display:-webkit-box;display:-ms-flexbox;display:flex;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_verified .mx_UserInfo_device_trusted{color:#0dbd8b}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_unverified .mx_UserInfo_device_trusted{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device .mx_UserInfo_device_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:5px;word-break:break-word}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px 5px 0 0;width:12px;height:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:11px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind{padding:8px 18px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton,.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton{display:block;margin:16px 0 8px}.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton+.mx_AccessibleButton{margin:8px 0}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar>div{max-width:72px;margin:0 auto}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_BaseAvatar_initial{font-size:40px!important}.mx_VerificationPanel_reciprocate_section .mx_E2EIcon,.mx_VerificationPanel_verified_section .mx_E2EIcon{margin:20px auto!important}.mx_UserInfo .mx_EncryptionPanel_cancel{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#61708b;cursor:pointer;position:absolute;z-index:100;top:14px;right:14px}.mx_UserInfo .mx_VerificationPanel_qrCode{padding:4px 4px 0;background:#fff;border-radius:4px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;margin:0 auto!important}.mx_UserInfo .mx_VerificationPanel_qrCode canvas{height:auto!important;width:100%!important;max-width:240px}.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_FormButton{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px;display:block;margin:10px 0}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:10px;margin-bottom:10px;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText{width:50px;vertical-align:middle;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption{background-color:#f3f8fd;border-radius:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;max-width:310px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas{width:220px!important;height:220px!important;background-color:#fff;border-radius:4px;vertical-align:middle;text-align:center;padding:10px}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p{margin-top:0;font-weight:700}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText{font-size:1.4rem;margin:30px 0;text-align:center}.mx_CompleteSecurity_body .mx_VerificationPanel_verified_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton{float:right}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton{margin-left:10px;padding:7px 40px}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_WidgetCard{height:100%;display:contents}.mx_WidgetCard .mx_AppTileFullWidth{max-width:unset;height:100%;border:0}.mx_WidgetCard .mx_BaseCard_header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_WidgetCard .mx_BaseCard_header>h2{margin-right:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton{position:relative;margin-right:44px;height:20px;width:20px;min-width:20px;padding:0}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before{content:"";position:absolute;width:20px;height:20px;top:0;left:4px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);background-color:#737d8c}.mx_WidgetCard_maxPinnedTooltip{background-color:#ff4b55;color:#fff}.mx_AliasSettings_editable{border:0;border-bottom:1px solid #c7c7c7;padding:0;min-width:240px}.mx_AliasSettings_editable:focus{border-bottom:1px solid #0dbd8b;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_AliasSettings summary{cursor:pointer;color:#0dbd8b;font-weight:600;list-style:none}.mx_AliasSettings summary::-webkit-details-marker{display:none}.mx_AliasSettings .mx_AliasSettings_localAliasHeader{margin-top:35px}.mx_AppsDrawer{margin:5px 5px 5px 18px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer{width:100%;height:10px;margin-top:-3px;display:block;position:relative}.mx_AppsDrawer .mx_AppsContainer_resizerHandle{cursor:ns-resize;width:100%!important;height:100%!important;position:absolute;bottom:0!important}.mx_AppsDrawer .mx_AppsContainer_resizerHandle:after{content:"";position:absolute;border-radius:3px;top:6px;bottom:0;left:calc(50% - 32px);right:calc(50% - 32px)}.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after{opacity:.8;background:#2e2f32}.mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before{position:absolute;left:3px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:"";background-color:#2e2f32;opacity:.8}.mx_AppsContainer_resizer{margin-bottom:8px}.mx_AppsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_AppsContainer .mx_AppTile:first-of-type{border-left-width:8px;border-radius:10px 0 0 10px}.mx_AppsContainer .mx_AppTile:last-of-type{border-right-width:8px;border-radius:0 10px 10px 0}.mx_AppsContainer .mx_ResizeHandle_horizontal{position:relative}.mx_AppsContainer .mx_ResizeHandle_horizontal>div{width:0}.mx_AppsDrawer_2apps .mx_AppTile{width:50%}.mx_AppsDrawer_2apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppsDrawer_3apps .mx_AppTile{width:33%}.mx_AppsDrawer_3apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppTile{width:50%;min-width:240px;border-color:#f2f5f8;border-style:solid;border-width:8px 5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#f2f5f8}.mx_AppTileFullWidth{width:100%!important;border:5px solid #f2f5f8;border-radius:8px;background-color:#f2f5f8}.mx_AppTile_mini,.mx_AppTileFullWidth{margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AppTile_mini{width:100%;height:200px}.mx_AppTile .mx_AppTile_persistedWrapper,.mx_AppTile_mini .mx_AppTile_persistedWrapper,.mx_AppTileFullWidth .mx_AppTile_persistedWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTile_persistedWrapper div{width:100%;height:100%}.mx_AppTileMenuBar{margin:0;font-size:1.2rem;background-color:#f2f5f8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%;padding-top:2px;padding-bottom:8px}.mx_AppTileMenuBarTitle{line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_AppTileMenuBarTitle .mx_WidgetAvatar{margin-right:12px}.mx_AppTileMenuBarTitle>:last-child{margin-left:9px}.mx_AppTileMenuBarWidgets{float:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AppTileMenuBar_iconButton{width:12px;height:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;background-color:#212121;margin:0 3px}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout{-webkit-mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg);mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg)}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_AppTileBody{height:100%;background-color:#fff}.mx_AppTileBody,.mx_AppTileBody_mini{width:100%;overflow:hidden;border-radius:8px}.mx_AppTileBody_mini{height:200px}.mx_AppTile .mx_AppTileBody,.mx_AppTile_mini .mx_AppTileBody_mini,.mx_AppTileFullWidth .mx_AppTileBody{height:inherit;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTileBody_mini iframe,.mx_AppTileBody iframe{border:none;width:100%;height:100%}.mx_AppTileBody iframe{overflow:hidden;padding:0;margin:0;display:block}.mx_AppPermissionWarning{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.6rem}.mx_AppPermissionWarning_row{margin-bottom:12px}.mx_AppPermissionWarning_smallText{font-size:1.2rem}.mx_AppPermissionWarning_bolder{font-weight:600}.mx_AppPermissionWarning h4{margin:0;padding:0}.mx_AppPermissionWarning_helpIcon{margin-top:1px;margin-right:2px;width:10px;height:10px;display:inline-block}.mx_AppPermissionWarning_helpIcon:before{display:inline-block;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:12px;mask-size:12px;width:12px;height:12px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg);mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg)}.mx_AppPermissionWarning_tooltip{-webkit-box-shadow:none;box-shadow:none;background-color:#27303a;color:#fff;border:none;border-radius:3px;padding:6px 8px}.mx_AppPermissionWarning_tooltip ul{list-style-position:inside;padding-left:2px;margin-left:0}.mx_AppLoading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;position:relative;height:100%;background-color:#fff!important;border-radius:8px}.mx_AppLoading .mx_Spinner{position:absolute;top:0;bottom:0;left:0;right:0}.mx_AppLoading_spinner_fadeIn{-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:.5s;animation-delay:.5s;-webkit-animation-name:mx_AppLoading_spinner_fadeIn_animation;animation-name:mx_AppLoading_spinner_fadeIn_animation}@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}@keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}.mx_AppLoading iframe{display:none}.mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper{z-index:1}.mx_Autocomplete{position:absolute;bottom:0;z-index:1001;width:100%;background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_Autocomplete_ProviderSection{border-bottom:1px solid transparent}.mx_Autocomplete_Completion_block{height:34px;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_block *{margin:0 3px}.mx_Autocomplete_Completion_pill{-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2rem;height:3.4rem;padding:.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_pill>*{margin-right:.3rem}.mx_Autocomplete_Completion_subtitle{font-style:italic;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Autocomplete_Completion_description{color:grey}.mx_Autocomplete_Completion_container_pill{margin:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_Autocomplete_Completion.selected,.mx_Autocomplete_Completion:hover{background:#f2f5f8;outline:none}.mx_Autocomplete_provider_name{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.m_RoomView_auxPanel_stateViews{padding:5px 5px 5px 19px;border-bottom:1px solid transparent}.m_RoomView_auxPanel_stateViews_span a{text-decoration:none;color:inherit}.m_RoomView_auxPanel_stateViews_span[data-severity=warning]{font-weight:700;color:orange}.m_RoomView_auxPanel_stateViews_span[data-severity=alert]{font-weight:700;color:red}.m_RoomView_auxPanel_stateViews_span[data-severity=normal]{font-weight:400}.m_RoomView_auxPanel_stateViews_span[data-severity=notice]{font-weight:400;color:#a2a2a2}.m_RoomView_auxPanel_stateViews_delim{padding:0 5px;color:#a2a2a2}.mx_BasicMessageComposer{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_inputEmpty>:first-child:before{content:var(--placeholder);opacity:.333;width:0;height:0;overflow:visible;display:inline-block;pointer-events:none;white-space:nowrap}@-webkit-keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_BasicMessageComposer .mx_BasicMessageComposer_input{white-space:pre-wrap;word-wrap:break-word;outline:none;overflow-x:hidden}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill:before,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill:before{content:var(--avatar-letter);width:1.6rem;height:1.6rem;margin-right:.24rem;background:var(--avatar-background),#fff;color:#fff;background-repeat:no-repeat;background-size:1.6rem;border-radius:1.6rem;text-align:center;font-weight:400;line-height:1.6rem;font-size:1.04rem}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled{pointer-events:none}.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper{position:relative;height:0}.mx_E2EIcon{width:16px;height:16px;margin:0 9px;position:relative;display:block}.mx_E2EIcon_normal:after,.mx_E2EIcon_normal:before,.mx_E2EIcon_verified:after,.mx_E2EIcon_verified:before,.mx_E2EIcon_warning:after,.mx_E2EIcon_warning:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_E2EIcon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_E2EIcon:before,.mx_E2EIcon_bordered{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_E2EIcon_bordered{background-color:#f3f8fd}.mx_E2EIcon_bordered:after{-webkit-mask-size:75%;mask-size:75%}.mx_E2EIcon_bordered:before{-webkit-mask-size:65%;mask-size:65%}.mx_E2EIcon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_E2EIcon_normal:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_E2EIcon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_EditMessageComposer{padding:3px;margin:-7px -10px -5px;overflow:visible!important}.mx_EditMessageComposer .mx_BasicMessageComposer_input{border-radius:4px;border:1px solid transparent;background-color:#fff;max-height:200px;padding:3px 6px}.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus{border-color:rgba(13,189,139,.5)}.mx_EditMessageComposer .mx_EditMessageComposer_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;left:0;background:#f3f8fd;z-index:100;right:0;margin:0 -110px 0 0;padding:5px 147px 5px 5px}.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton{margin-left:5px;padding:5px 40px}.mx_EventTile_last .mx_EditMessageComposer_buttons{position:static;margin-right:-147px}.mx_EntityTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32;cursor:pointer}.mx_EntityTile .mx_E2EIcon{margin:0;position:absolute;bottom:2px;right:7px}.mx_EntityTile:hover{padding-right:30px;position:relative}.mx_EntityTile:hover:before{content:"";position:absolute;top:calc(50% - 8px);right:-8px;-webkit-mask:url(../../img/member_chevron.4163a20.png);mask:url(../../img/member_chevron.4163a20.png);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:16px;height:16px;background-color:#91a1c0}.mx_EntityTile .mx_PresenceLabel{display:none}.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel{display:block}.mx_EntityTile_invite{display:table-cell;vertical-align:middle;margin-left:10px;width:26px}.mx_EntityTile_avatar,.mx_GroupRoomTile_avatar{padding:4px 12px 4px 3px;position:relative}.mx_EntityTile_name,.mx_GroupRoomTile_name{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow:hidden;font-size:1.4rem;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile_details{overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EntityTile_ellipsis .mx_EntityTile_name,.mx_EntityTile_invitePlaceholder .mx_EntityTile_name{font-style:italic;color:#2e2f32}.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar,.mx_EntityTile_offline_beenactive .mx_EntityTile_name,.mx_EntityTile_unavailable .mx_EntityTile_avatar,.mx_EntityTile_unavailable .mx_EntityTile_name{opacity:.5}.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar,.mx_EntityTile_offline_neveractive .mx_EntityTile_name,.mx_EntityTile_unknown .mx_EntityTile_avatar,.mx_EntityTile_unknown .mx_EntityTile_name{opacity:.25}.mx_EntityTile_subtext{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_EntityTile_power{-webkit-padding-start:6px;padding-inline-start:6px;font-size:1rem;color:#8d99a5;max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile:hover .mx_EntityTile_power{display:none}.mx_EventTile{max-width:100%;clear:both;padding-top:18px;font-size:1.4rem;position:relative}.mx_EventTile.mx_EventTile_info{padding-top:1px}.mx_EventTile_avatar{top:14px;left:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:.6rem;left:64px}.mx_EventTile_continuation{padding-top:0!important}.mx_EventTile_continuation.mx_EventTile_isEditing{padding-top:5px!important;margin-top:-5px}.mx_EventTile_isEditing{background-color:#f3f8fd}.mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.4rem;display:inline-block;overflow:hidden;cursor:pointer;padding-bottom:0;padding-top:0;margin:0;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 64px)}.mx_EventTile .mx_SenderProfile .mx_Flair{opacity:.7;margin-left:5px;display:inline-block;vertical-align:top;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile .mx_SenderProfile .mx_Flair img{vertical-align:-2px;margin-right:2px;border-radius:8px}.mx_EventTile_isEditing .mx_MessageTimestamp{visibility:hidden!important}.mx_EventTile .mx_MessageTimestamp{display:block;visibility:hidden;white-space:nowrap;left:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile_continuation .mx_EventTile_line{clear:both}.mx_EventTile_line,.mx_EventTile_reply{position:relative;padding-left:64px;border-radius:4px}.mx_EventListSummary .mx_EventTile_line,.mx_RoomView_timeline_rr_enabled .mx_EventTile_line{margin-right:110px}.mx_EventTile_bubbleContainer{display:grid;grid-template-columns:1fr 100px}.mx_EventTile_bubbleContainer .mx_EventTile_line{margin-right:0;grid-column:1/3;padding:0!important}.mx_EventTile_bubbleContainer .mx_EventTile_msgOption{grid-column:2}.mx_EventTile_reply{margin-right:10px}.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji{font-size:48px!important;line-height:57px!important}.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp{visibility:visible}.mx_EventTile_selected>div>a>.mx_MessageTimestamp{left:3px;width:auto}.mx_EventTile.focus-visible:focus-within>div>a>.mx_MessageTimestamp,.mx_EventTile.mx_EventTile_actionBarFocused>div>a>.mx_MessageTimestamp,.mx_EventTile:hover>div>a>.mx_MessageTimestamp,.mx_EventTile_last>div>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.focus-visible:focus-within>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.mx_EventTile_actionBarFocused>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile:hover>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile_last>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_ReplyThread .mx_EventTile>a>.mx_MessageTimestamp{visibility:visible}.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar,.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar,.mx_EventTile:hover .mx_MessageActionBar,[data-whatinput=keyboard] .mx_EventTile:focus-within .mx_MessageActionBar{visibility:visible}.mx_EventTile_selected>.mx_EventTile_line{border-left:4px solid #0dbd8b;padding-left:60px;background-color:#f6f7f8}.mx_EventTile_highlight,.mx_EventTile_highlight .markdown-body{color:#ff4b55}.mx_EventTile_highlight .markdown-body .mx_EventTile_line,.mx_EventTile_highlight .mx_EventTile_line{background-color:#fff8e3}.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile.focus-visible:focus-within .mx_EventTile_line,.mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line,.mx_EventTile:hover .mx_EventTile_line{background-color:#f6f7f8}.mx_EventTile_searchHighlight{border-radius:5px;padding-left:2px;padding-right:2px;cursor:pointer}.mx_EventTile_searchHighlight,.mx_EventTile_searchHighlight a{background-color:#0dbd8b;color:#fff}.mx_EventTile_receiptSending:before,.mx_EventTile_receiptSent:before{background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;width:14px;height:14px;content:"";position:absolute;top:0;left:0;right:0}.mx_EventTile_receiptSent:before{-webkit-mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg);mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg)}.mx_EventTile_receiptSending:before{-webkit-mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg);mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg)}.mx_EventTile_contextual{opacity:.4}.mx_EventTile_msgOption{float:right;text-align:right;position:relative;width:90px;height:1px;margin-right:10px}.mx_EventTile_msgOption a{text-decoration:none}.mx_EventTile_readAvatars{position:relative;display:inline-block;width:14px;height:14px;top:-2.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_EventTile_readAvatars .mx_BaseAvatar{position:absolute;display:inline-block;height:1.4rem;width:1.4rem;-webkit-transition:left .1s ease-out,top .3s ease-out;transition:left .1s ease-out,top .3s ease-out;-webkit-transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out;transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out}.mx_EventTile_readAvatarRemainder{color:#acacac;font-size:1.1rem;position:absolute}.mx_EventTile_content{display:block;overflow-y:hidden;overflow-x:hidden;margin-right:34px}.mx_EventTile_body{overflow-y:hidden}.mx_EventTile_spoiler{cursor:pointer}.mx_EventTile_spoiler_reason{color:#acacac;font-size:1.1rem}.mx_EventTile_spoiler_content{-webkit-filter:blur(5px) saturate(.1) sepia(1);filter:blur(5px) saturate(.1) sepia(1);-webkit-transition-duration:.5s;transition-duration:.5s}.mx_EventTile_spoiler.visible>.mx_EventTile_spoiler_content{-webkit-filter:none;filter:none}.mx_EventTile_e2eIcon{position:absolute;top:6px;left:44px;width:14px;height:14px;display:block;bottom:0;right:0;opacity:.2;background-repeat:no-repeat;background-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-size:contain;mask-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_EventTile_e2eIcon:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_EventTile_e2eIcon_undecryptable:after,.mx_EventTile_e2eIcon_unverified:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_undecryptable,.mx_EventTile_e2eIcon_unverified{opacity:1}.mx_EventTile_e2eIcon_unknown:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unknown{opacity:1}.mx_EventTile_e2eIcon_unencrypted:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unencrypted{opacity:1}.mx_EventTile_e2eIcon_unauthenticated:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_EventTile_e2eIcon_unauthenticated{opacity:1}.mx_EventTile_keyRequestInfo{font-size:1.2rem}.mx_EventTile_keyRequestInfo_text{opacity:.5}.mx_EventTile_keyRequestInfo_text a{color:#2e2f32;text-decoration:underline;cursor:pointer}.mx_EventTile_keyRequestInfo_tooltip_contents p{text-align:auto;margin-left:3px;margin-right:3px}.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child{margin-top:0}.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child{margin-bottom:0}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:60px}.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{border-left:4px solid #76cfa5}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line{border-left:4px solid #e8bf37}.mx_EventTile:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile:hover .mx_EventTile_e2eIcon{opacity:1}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>a>.mx_MessageTimestamp{width:38px}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>.mx_EventTile_e2eIcon{display:block;left:41px}.mx_EventTile_content .mx_EventTile_edited{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.2rem;color:#9e9e9e;display:inline-block;margin-left:9px;cursor:pointer}.mx_EventTile_body pre{border:1px solid transparent}.mx_EventTile_content .markdown-body{font-family:inherit!important;white-space:normal!important;line-height:inherit!important;color:inherit;font-size:1.4rem}.mx_EventTile_content .markdown-body code,.mx_EventTile_content .markdown-body pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji!important;color:#333}.mx_EventTile_content .markdown-body pre{overflow-x:overlay;overflow-y:visible}.mx_EventTile_content .markdown-body code{background-color:#f8f8f8}.mx_EventTile_lineNumbers{float:left;margin:0 .5em 0 -1.5em;color:grey}.mx_EventTile_lineNumber{text-align:right;display:block;padding-left:1em}.mx_EventTile_collapsedCodeBlock{max-height:30vh}.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre,.mx_EventTile:hover .mx_EventTile_body pre{border:1px solid #e5e5e5}.mx_EventTile_pre_container{position:relative}.mx_EventTile_button{position:absolute;display:inline-block;visibility:hidden;cursor:pointer;top:8px;right:8px;width:19px;height:19px;background-color:#2e2f32}.mx_EventTile_buttonBottom{top:33px}.mx_EventTile_copyButton{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg)}.mx_EventTile_collapseButton{-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_collapseButton,.mx_EventTile_expandButton{-webkit-mask-size:75%;mask-size:75%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_EventTile_expandButton{-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_expandButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_expandButton{visibility:visible}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2,.mx_EventTile_content .markdown-body h3,.mx_EventTile_content .markdown-body h4,.mx_EventTile_content .markdown-body h5,.mx_EventTile_content .markdown-body h6{font-family:inherit!important;color:inherit}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2{font-size:1.5em;border-bottom:none!important}.mx_EventTile_content .markdown-body a{color:#238cf5}.mx_EventTile_content .markdown-body .hljs{display:inline!important}.mx_EventTile_tileError{color:red;text-align:center;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line{padding-left:0;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line span{padding:4px 8px}.mx_EventTile_tileError a{margin-left:1em}@media only screen and (max-width:480px){.mx_EventTile_line,.mx_EventTile_reply{padding-left:0;margin-right:0}.mx_EventTile_content{margin-top:10px;margin-right:0}}.mx_GroupLayout .mx_EventTile>.mx_SenderProfile{line-height:2rem;margin-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_line{padding-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_avatar{position:absolute}.mx_GroupLayout .mx_EventTile .mx_MessageTimestamp{position:absolute;width:46px}.mx_GroupLayout .mx_EventTile .mx_EventTile_line,.mx_GroupLayout .mx_EventTile .mx_EventTile_reply{padding-top:1px;padding-bottom:3px;line-height:2.2rem}.mx_GroupLayout .mx_EventTile_info .mx_EventTile_line{padding-left:82px}.mx_MatrixChat_useCompactLayout .mx_EventTile{padding-top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info{padding-top:0;font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote{padding-top:8px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply{padding-top:0;padding-bottom:1px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation{padding-top:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon{top:3px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars{top:-2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body blockquote,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body dl,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ol,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body p,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body pre,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body table,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ul{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2{margin-top:6px}.mx_IRCLayout{--name-width:70px;line-height:1.8rem!important}.mx_IRCLayout .mx_EventTile>a{text-decoration:none}.mx_IRCLayout .mx_EventTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding-top:0}.mx_IRCLayout .mx_EventTile>*{margin-right:5px}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;-ms-flex-negative:0;flex-shrink:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption .mx_EventTile_readAvatars{top:.2rem}.mx_IRCLayout .mx_EventTile>.mx_SenderProfile{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-ms-flex-negative:0;flex-shrink:0;width:var(--name-width);text-overflow:ellipsis;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_IRCLayout .mx_EventTile .mx_EventTile_line,.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-width:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;position:relative;top:0;left:0;-ms-flex-negative:0;flex-shrink:0;height:1.8rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar,.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar>*{height:1.4rem!important;width:1.4rem!important;font-size:1rem!important;line-height:1.5rem!important}.mx_IRCLayout .mx_EventTile .mx_MessageTimestamp{font-size:1rem;width:45px;text-align:right}.mx_IRCLayout .mx_EventTile>.mx_EventTile_e2eIcon{position:absolute;right:unset;left:unset;top:0;padding:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.8rem;background-position:50%}.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_ReplyThread_wrapper_empty,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent{display:inline-block}.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons{position:relative}.mx_IRCLayout .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:calc(var(--name-width) + 19px)}.mx_IRCLayout blockquote{margin:0}.mx_IRCLayout .mx_EventListSummary>.mx_EventTile_line{padding-left:calc(var(--name-width) + 74px)}.mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars{padding:0;margin:0 9px 0 0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{left:calc(var(--name-width) + 24px);top:0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line{left:calc(var(--name-width) + 24px)}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent{line-height:1.8rem}.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:0;border-left:0}.mx_IRCLayout .mx_SenderProfile_hover{background-color:#fff;overflow:hidden}.mx_IRCLayout .mx_SenderProfile_hover>span{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_IRCLayout .mx_SenderProfile_hover>span>.mx_SenderProfile_name{overflow:hidden;text-overflow:ellipsis;min-width:var(--name-width);text-align:end}.mx_IRCLayout .mx_SenderProfile:hover{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_IRCLayout .mx_SenderProfile_hover:hover{overflow:visible;width:max(auto,100%);z-index:10}.mx_IRCLayout .mx_ReplyThread{margin:0}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile{width:unset;max-width:var(--name-width)}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover{background:transparent}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover>span>.mx_SenderProfile_name{min-width:inherit}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:0}.mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp{width:auto}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon{position:relative;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mx_IRCLayout .mx_ProfileResizer{position:absolute;height:100%;width:15px;left:calc(80px + var(--name-width));cursor:col-resize;z-index:100}.mx_IRCLayout .mx_Flair>img{height:1.4rem!important;width:1.4rem!important}.mx_JumpToBottomButton{z-index:1000;position:absolute;bottom:12px;right:24px;width:38px;height:50px;text-align:center}.mx_JumpToBottomButton_badge{position:relative;top:-12px;border-radius:16px;font-weight:700;font-size:1.2rem;line-height:1.4rem;text-align:center;display:inline-block;padding:0 4px;color:#fff;background-color:#61708b}.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge{color:#f2f5f8;background-color:#ff4b55}.mx_JumpToBottomButton_scrollDown{position:relative;height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_JumpToBottomButton_scrollDown:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b}.mx_LinkPreviewWidget{margin-top:15px;margin-right:15px;margin-bottom:15px;display:-webkit-box;display:-ms-flexbox;display:flex;border-left:4px solid #ddd;color:#888}.mx_LinkPreviewWidget_image{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;margin-left:15px;text-align:center;cursor:pointer}.mx_LinkPreviewWidget_caption{margin-left:15px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_LinkPreviewWidget_title{display:inline;font-weight:700;white-space:normal}.mx_LinkPreviewWidget_siteName{display:inline}.mx_LinkPreviewWidget_description{margin-top:8px;white-space:normal;word-wrap:break-word}.mx_LinkPreviewWidget_cancel{cursor:pointer;width:18px;height:18px}.mx_LinkPreviewWidget_cancel img{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;visibility:hidden}.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel img,.mx_LinkPreviewWidget_cancel.focus-visible:focus img{visibility:visible}.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget{margin-top:6px;margin-bottom:6px}.mx_MemberInfo{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;margin-top:8px}.mx_MemberInfo,.mx_MemberInfo_name{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_MemberInfo_name{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MemberInfo_name>.mx_E2EIcon{margin-right:0}.mx_MemberInfo_cancel{height:16px;width:16px;padding:10px 0 10px 10px;cursor:pointer;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:16px center;mask-position:16px center;background-color:#91a1c0}.mx_MemberInfo_name h2{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-x:auto;max-height:50px}.mx_MemberInfo h2{font-size:1.8rem;font-weight:600;margin:16px 0 16px 15px}.mx_MemberInfo_container{margin:0 16px 16px}.mx_MemberInfo .mx_RoomTile_nameContainer{width:154px}.mx_MemberInfo .mx_RoomTile_badge{display:none}.mx_MemberInfo .mx_RoomTile_name{width:160px}.mx_MemberInfo_avatar{background:hsla(0,0%,91%,.77);margin-bottom:16px}.mx_MemberInfo_avatar>img{height:auto;width:100%;max-height:30vh;-o-object-fit:contain;object-fit:contain;display:block}.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_MemberInfo_profile{margin-bottom:16px}.mx_MemberInfo h3{text-transform:uppercase;color:#9fa9ba;font-weight:700;font-size:1.2rem;margin:4px 0}.mx_MemberInfo_profileField{font-size:1.5rem;position:relative}.mx_MemberInfo_buttons{margin-bottom:16px}.mx_MemberInfo_field{cursor:pointer;font-size:1.5rem;color:#2e2f32;margin-left:8px;line-height:2.3rem}.mx_MemberInfo_createRoom{cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 8px}.mx_MemberInfo_createRoom_label{width:auto!important;cursor:pointer}.mx_MemberInfo label{font-size:1.3rem}.mx_MemberInfo label .mx_MemberInfo_label_text{display:inline-block;max-width:180px;vertical-align:text-top}.mx_MemberInfo input[type=radio]{vertical-align:-2px;margin-right:5px;margin-left:8px}.mx_MemberInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_MemberInfo .mx_MemberInfo_scrollContainer{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_GroupMemberList,.mx_GroupRoomList,.mx_MemberList{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.mx_GroupMemberList .mx_Spinner,.mx_GroupRoomList .mx_Spinner,.mx_MemberList .mx_Spinner{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.mx_GroupMemberList .mx_SearchBox,.mx_GroupRoomList .mx_SearchBox,.mx_MemberList .mx_SearchBox{margin-bottom:5px}.mx_GroupMemberList h2,.mx_GroupRoomList h2,.mx_MemberList h2{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;padding-left:3px;padding-right:12px;margin-top:8px;margin-bottom:4px}.mx_GroupMemberList .mx_AutoHideScrollbar,.mx_GroupRoomList .mx_AutoHideScrollbar,.mx_MemberList .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_GroupMemberList .mx_RightPanel_scopeHeader,.mx_GroupRoomList .mx_RightPanel_scopeHeader,.mx_MemberList .mx_RightPanel_scopeHeader{margin-top:-8px}.mx_GroupMemberList_query,.mx_GroupRoomList_query{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_MemberList_chevron{position:absolute;right:35px;margin-top:-15px}.mx_MemberList_border{overflow-y:auto;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.mx_MemberList_query{height:16px}.mx_MemberList_query[type=text]{font-size:1.2rem}.mx_MemberList_wrapper{padding:10px}.mx_MemberList_invite{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;background-color:#0dbd8b;border-radius:4px;margin:5px 9px 9px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;font-weight:600}.mx_MemberList_invite.mx_AccessibleButton_disabled{background-color:#888;cursor:not-allowed}.mx_MemberList_invite span{padding:8px 0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_MemberList_invite span:before{content:"";display:inline-block;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px}.mx_MemberList_inviteCommunity span:before{-webkit-mask-image:url(../../img/icon-invite-people.d82f491.svg);mask-image:url(../../img/icon-invite-people.d82f491.svg)}.mx_MemberList_addRoomToCommunity span:before{-webkit-mask-image:url(../../img/icons-room-add.bd36e26.svg);mask-image:url(../../img/icons-room-add.bd36e26.svg)}.mx_MessageComposer_wrapper{vertical-align:middle;margin:auto;border-top:1px solid transparent;position:relative;padding-left:82px;padding-right:6px}.mx_MessageComposer_replaced_wrapper{margin-left:auto;margin-right:auto}.mx_MessageComposer_replaced_valign{height:60px;display:table-cell;vertical-align:middle}.mx_MessageComposer_roomReplaced_icon{float:left;margin-right:20px;margin-top:5px;width:31px;height:31px}.mx_MessageComposer_roomReplaced_header{font-weight:700}.mx_MessageComposer_autocomplete_wrapper{position:relative;height:0}.mx_MessageComposer_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.mx_MessageComposer .mx_MessageComposer_avatar{position:absolute;left:26px}.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar{display:block}.mx_MessageComposer_composecontrols{width:100%}.mx_MessageComposer_e2eIcon.mx_E2EIcon{position:absolute;left:60px;margin-right:0;margin-left:3px;width:12px;height:12px}.mx_MessageComposer_noperm_error{width:100%;height:60px;font-style:italic;color:#888;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MessageComposer_input_wrapper{cursor:text}.mx_MessageComposer_input,.mx_MessageComposer_input_wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MessageComposer_input{vertical-align:middle;min-height:60px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;font-size:1.4rem;margin-right:6px}.mx_MessageComposer_editor{width:100%;max-height:120px;min-height:19px;overflow-y:auto;overflow-x:hidden;word-break:break-word}.mx_MessageComposer_editor>:first-child{margin-top:0!important}.mx_MessageComposer_editor>:last-child{margin-bottom:0!important}@keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_MessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_MessageComposer_input blockquote{color:#777;margin:0 0 16px;padding:0 15px;border-left:4px solid #ddd}.mx_MessageComposer_input pre{background-color:rgba(0,0,0,.04);border-radius:3px;padding:10px}.mx_MessageComposer_input textarea{display:block;width:100%;padding:0;margin-top:6px;margin-bottom:6px;border:0;resize:none;outline:none;-webkit-box-shadow:none;box-shadow:none;color:#2e2f32;background-color:#fff;font-size:1.4rem;max-height:120px;overflow:auto;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji}.mx_MessageComposer_input textarea::-moz-placeholder{line-height:100%;color:#0dbd8b;opacity:1}.mx_MessageComposer_input textarea::-webkit-input-placeholder{color:#0dbd8b}.mx_MessageComposer_button_highlight{background:rgba(13,189,139,.25)}.mx_MessageComposer_button_highlight:before{background-color:#0dbd8b!important}.mx_MessageComposer_button{position:relative;margin-right:6px;cursor:pointer;height:26px;width:26px;border-radius:100%}.mx_MessageComposer_button:before{content:"";position:absolute;top:3px;left:3px;height:20px;width:20px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_MessageComposer_button:hover{background:rgba(13,189,139,.1)}.mx_MessageComposer_button:hover:before{background-color:#0dbd8b}.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before{background-color:#ff4b55}.mx_MessageComposer_upload:before{-webkit-mask-image:url(../icons/attach.svg);mask-image:url(../icons/attach.svg)}.mx_MessageComposer_voiceMessage:before{-webkit-mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg);mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg)}.mx_MessageComposer_emoji:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_MessageComposer_stickers:before{-webkit-mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg);mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg)}.mx_MessageComposer_sendMessage{cursor:pointer;position:relative;margin-right:6px;width:32px;height:32px;border-radius:100%;background-color:#0dbd8b}.mx_MessageComposer_sendMessage:before{position:absolute;height:16px;width:16px;top:8px;left:9px;-webkit-mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;background-color:#fff;content:""}.mx_MessageComposer_formatting{cursor:pointer;margin:0 11px;width:24px;height:18px}.mx_MessageComposer_formatbar_wrapper{width:100%;background-color:#fff;-webkit-box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08)}.mx_MessageComposer_formatbar{margin:auto;display:-webkit-box;display:-ms-flexbox;display:flex;height:30px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:62px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1rem;color:#888}.mx_MessageComposer_formatbar *{margin-right:4px}.mx_MessageComposer_format_button,.mx_MessageComposer_formatbar_cancel,.mx_MessageComposer_formatbar_markdown{cursor:pointer}.mx_MessageComposer_formatbar_cancel{margin-right:22px}.mx_MessageComposer_formatbar_markdown{height:17px;width:30px;margin-right:64px}.mx_MessageComposer_input_markdownIndicator{height:10px;width:12px;padding:4px 4px 4px 0}.mx_MessageComposer_formatbar_markdown,.mx_MessageComposer_input_markdownIndicator{cursor:pointer;-webkit-mask-image:url(../../img/markdown.6905ba8.svg);mask-image:url(../../img/markdown.6905ba8.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#c1c6cd}.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled,.mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled{opacity:.2}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input{min-height:50px}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error{height:50px}.mx_MessageComposerFormatBar{display:none;width:130px;height:24px;position:absolute;cursor:pointer;border-radius:4px;background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1000}.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown{display:block}.mx_MessageComposerFormatBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageComposerFormatBar>:hover{border-color:#ddd;z-index:1}.mx_MessageComposerFormatBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageComposerFormatBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageComposerFormatBar>:only-child{border-radius:3px}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button{width:27px;height:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:none;vertical-align:middle}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg);mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconItalic:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg);mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconStrikethrough:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg);mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconQuote:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg);mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg);mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg)}.mx_MessageComposerFormatBar_buttonTooltip{white-space:nowrap;font-size:1.3rem;font-weight:600;min-width:54px;text-align:center}.mx_MessageComposerFormatBar_buttonTooltip .mx_MessageComposerFormatBar_tooltipShortcut{font-size:.9rem;opacity:.7}.mx_NewRoomIntro{margin:40px 0 48px 64px}.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):after,.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):before{content:unset}.mx_NewRoomIntro .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_NewRoomIntro .mx_NewRoomIntro_buttons{margin-top:28px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton{line-height:2.4rem;display:inline-block}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:12px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before{content:"";display:inline-block;background-color:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px;vertical-align:text-bottom}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_NewRoomIntro>h2{margin-top:24px;font-size:2.4rem;font-weight:600}.mx_NewRoomIntro>p{margin:0;font-size:1.5rem;color:#737d8c}.mx_NotificationBadge:not(.mx_NotificationBadge_visible){display:none}.mx_NotificationBadge.mx_NotificationBadge_visible{background-color:#61708b;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted{background-color:#ff4b55}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot{background-color:#2e2f32;width:6px;height:6px;border-radius:6px}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char{width:1.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char{width:2.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count{font-size:1rem;line-height:1.4rem;color:#fff}.mx_PinnedEventTile{min-height:40px;margin-bottom:5px;width:100%;border-radius:5px}.mx_PinnedEventTile:hover{background-color:#f6f7f8}.mx_PinnedEventTile .mx_PinnedEventTile_sender,.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{color:#868686;font-size:.8em;vertical-align:top;display:inline-block;padding-bottom:3px}.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{padding-left:15px;display:none}.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar{float:left;margin-right:10px}.mx_PinnedEventTile_actions{float:right;margin-right:10px;display:none}.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp{display:inline-block}.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions{display:block}.mx_PinnedEventTile_unpinButton{display:inline-block;cursor:pointer;margin-left:10px}.mx_PinnedEventTile_gotoButton{display:inline-block;font-size:.7em}.mx_PinnedEventTile_message{margin-left:50px;position:relative;top:0;left:0}.mx_PinnedEventsPanel{border-top:1px solid transparent}.mx_PinnedEventsPanel_body{max-height:300px;overflow-y:auto;padding-bottom:15px}.mx_PinnedEventsPanel_header{margin:0;padding-top:8px;padding-bottom:15px}.mx_PinnedEventsPanel_cancel{margin:12px;float:right;display:inline-block}.mx_PresenceLabel{font-size:1.1rem;opacity:.5}.mx_ReplyPreview{background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_ReplyPreview_section{border-bottom:1px solid transparent}.mx_ReplyPreview_header{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.mx_ReplyPreview_title{float:left}.mx_ReplyPreview_cancel{float:right;cursor:pointer}.mx_ReplyPreview_clear{clear:both}.mx_RoomBreadcrumbs{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb{margin-right:8px;width:32px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter{margin-left:-40px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active{margin-left:0;-webkit-transition:margin-left .64s cubic-bezier(.66,.02,.36,1);transition:margin-left .64s cubic-bezier(.66,.02,.36,1)}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder{font-weight:600;font-size:1.4rem;line-height:32px;height:32px}.mx_RoomBreadcrumbs_Tooltip{margin-left:-42px;margin-top:-42px}.mx_RoomHeader{-webkit-box-flex:0;-ms-flex:0 0 50px;flex:0 0 50px;border-bottom:1px solid transparent;background-color:#fff}.mx_RoomHeader .mx_RoomHeader_e2eIcon{height:12px;width:12px}.mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon{margin:0;position:absolute;height:12px;width:12px}.mx_RoomHeader_wrapper{margin:auto;height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:0;padding:0 10px 0 18px}.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large{margin:0}.mx_RoomHeader_spinner{-webkit-box-flex:1;-ms-flex:1;flex:1;height:36px;padding-left:12px;padding-right:12px}.mx_RoomHeader_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-right:8px;margin-top:-5px}.mx_RoomHeader_textButton_danger{background-color:#ff4b55}.mx_RoomHeader_cancelButton{cursor:pointer;padding-left:12px;padding-right:12px}.mx_RoomHeader_buttons{background-color:#fff}.mx_RoomHeader_buttons,.mx_RoomHeader_info{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_info{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomHeader_simpleHeader{line-height:5.2rem;color:#45474a;font-size:1.8rem;font-weight:600;overflow:hidden;margin-left:63px;text-overflow:ellipsis;width:100%}.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton{float:right}.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon{margin-left:14px;margin-right:24px;vertical-align:-4px}.mx_RoomHeader_name{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;overflow:hidden;color:#45474a;font-weight:600;font-size:1.8rem;margin:0 7px;border-bottom:1px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_nametext{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mx_RoomHeader_settingsHint{color:#a2a2a2!important}.mx_RoomHeader_searchStatus{font-weight:400;opacity:.6}.mx_RoomHeader_avatar,.mx_RoomHeader_avatarPicker,.mx_RoomHeader_avatarPicker_edit,.mx_RoomHeader_avatarPicker_remove,.mx_RoomHeader_name{cursor:pointer}.mx_RoomHeader_avatarPicker_remove{position:absolute;top:-11px;right:-9px}.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable){color:#0dbd8b}.mx_RoomHeader_placeholder{color:#a2a2a2!important}.mx_RoomHeader_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_RoomHeader_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_RoomHeader_topic{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#9e9e9e;font-weight:400;font-size:1.3rem;margin:4px 7px 0;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid transparent;line-height:1.2em;max-height:2.4em}.mx_RoomHeader_avatar{-webkit-box-flex:0;-ms-flex:0;flex:0;margin:0 6px 0 7px;position:relative}.mx_RoomHeader_avatar .mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover}.mx_RoomHeader_avatarPicker{position:relative}.mx_RoomHeader_avatarPicker_edit{position:absolute;left:16px;top:18px}.mx_RoomHeader_avatarPicker_edit>label{cursor:pointer}.mx_RoomHeader_avatarPicker_edit>input{display:none}.mx_RoomHeader_button{position:relative;margin-left:1px;margin-right:1px;cursor:pointer;height:32px;width:32px;border-radius:100%}.mx_RoomHeader_button:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RoomHeader_button:hover{background:rgba(13,189,139,.1)}.mx_RoomHeader_button:hover:before{background-color:#0dbd8b}.mx_RoomHeader_forgetButton:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg);width:26px}.mx_RoomHeader_appsButton:before{-webkit-mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg);mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg)}.mx_RoomHeader_appsButton_highlight:before{background-color:#0dbd8b}.mx_RoomHeader_searchButton:before{-webkit-mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg);mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg)}.mx_RoomHeader_voiceCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center}.mx_RoomHeader_videoCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_RoomHeader_showPanel{height:16px}.mx_RoomHeader_voipButton{display:table-cell}.mx_RoomHeader_voipButtons{margin-top:18px}.mx_RoomHeader_pinnedButton:before{-webkit-mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg);mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg)}.mx_RoomHeader_pinsIndicator{position:absolute;right:0;bottom:4px;width:8px;height:8px;border-radius:8px;background-color:#8d99a5}.mx_RoomHeader_pinsIndicatorUnread{background-color:#ff4b55}@media only screen and (max-width:480px){.mx_RoomHeader_wrapper{padding:0}.mx_RoomHeader{overflow:hidden}}.mx_RoomList{padding-right:7px}.mx_RoomList_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_RoomList_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_RoomList_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_iconBrowse:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomList_iconDialpad:before{-webkit-mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg);mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg)}.mx_RoomList_explorePrompt{margin:4px 12px;padding-top:12px;border-top:1px solid #e7e7e7;font-size:1.4rem}.mx_RoomList_explorePrompt div:first-child{font-weight:600;line-height:1.8rem;color:#2e2f32}.mx_RoomList_explorePrompt .mx_AccessibleButton{color:#2e2f32;position:relative;padding:8px 8px 8px 32px;font-size:inherit;margin-top:12px;display:block;text-align:start;background-color:rgba(141,151,165,.2);border-radius:4px}.mx_RoomList_explorePrompt .mx_AccessibleButton:before{content:"";width:16px;height:16px;position:absolute;top:8px;left:8px;background:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomPreviewBar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-align-items:center}.mx_RoomPreviewBar h3{font-size:1.8rem;font-weight:600}.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomPreviewBar .mx_RoomPreviewBar_message p,.mx_RoomPreviewBar h3{word-break:break-all;word-break:break-word}.mx_RoomPreviewBar .mx_Spinner{width:auto;height:auto;margin:10px 10px 10px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer{font-size:1.2rem;line-height:2rem}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner{vertical-align:middle;display:inline-block}.mx_RoomPreviewBar_actions,.mx_RoomPreviewBar_message{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomPreviewBar_message{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.mx_RoomPreviewBar_message p{overflow-wrap:break-word}.mx_RoomPreviewBar_panel{padding:8px 8px 8px 20px;border-top:1px solid transparent;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:3px 8px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions>*{margin-left:12px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message>*{margin:4px}.mx_RoomPreviewBar_dialog{margin:auto;-webkit-box-sizing:content;box-sizing:content;width:400px;border-radius:4px;padding:20px;text-align:center}.mx_RoomPreviewBar_dialog,.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message>*{margin:5px 0 20px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton{padding:7px 50px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions>*{margin-top:12px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-bottom:7px}.mx_RoomPreviewBar_inviter{font-weight:600}a.mx_RoomPreviewBar_inviter{text-decoration:underline;cursor:pointer}.mx_RoomSublist{margin-left:8px;margin-bottom:4px}.mx_RoomSublist.mx_RoomSublist_hidden{display:none}.mx_RoomSublist .mx_RoomSublist_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:8px;max-height:24px;color:#8d99a5}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky{position:fixed;height:32px;width:calc(100% - 22px)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer .mx_NotificationBadge{margin-left:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_NotificationBadge{margin-right:4px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{margin-left:8px;position:relative;width:24px;height:24px;border-radius:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:hover{background:rgba(141,151,165,.2)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{visibility:hidden;width:0;margin:0}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg);mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_RoomSublist:first-child .mx_RoomSublist_headerContainer{height:0;padding-bottom:4px}.mx_RoomSublist .mx_RoomSublist_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist .mx_RoomSublist_resizeBox,.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;overflow:hidden}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-ms-flex-direction:column;flex-direction:column;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles_showNButton{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles{-webkit-box-flex:0;-ms-flex:0 0 4px;flex:0 0 4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle{cursor:ns-resize;border-radius:3px;max-width:64px;height:4px!important;position:relative!important;bottom:0!important}.mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_resizerHandle,.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_RoomSublist .mx_RoomSublist_showNButton{cursor:pointer;font-size:1.3rem;line-height:1.8rem;color:#737d8c;height:24px;padding-bottom:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{position:relative;width:18px;height:18px;margin-left:12px;margin-right:16px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;left:-1px}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron,.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showMoreButtonChevron{-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:focus-within .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;width:24px;margin-left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer{height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;-ms-flex-item-align:end;align-self:flex-end;margin-right:0}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;max-width:100%}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;visibility:visible;width:32px!important;height:32px!important;margin-left:0!important;background-color:rgba(141,151,165,.2);margin-top:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{top:8px;left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{margin-right:12px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton{height:16px}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;position:absolute;bottom:48px;right:0;width:16px;height:16px;border-radius:0;z-index:1;background-color:hsla(0,0%,96.1%,.9)}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton:before,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton:before{top:0;left:0}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton{bottom:8px}.mx_RoomSublist_contextMenu{padding:20px 16px;width:250px}.mx_RoomSublist_contextMenu hr{margin-top:16px;margin-bottom:16px;margin-right:16px;border:1px solid #2e2f32;opacity:.1}.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title{font-size:1.5rem;line-height:2rem;font-weight:600;margin-bottom:4px}.mx_RoomSublist_contextMenu .mx_Checkbox,.mx_RoomSublist_contextMenu .mx_RadioButton{margin-top:8px}.mx_RoomSublist_addRoomTooltip{margin-top:-3px}.mx_RoomSublist_skeletonUI{position:relative;margin-left:4px;height:288px}.mx_RoomSublist_skeletonUI:before{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(180deg,#fff,hsla(0,0%,100%,0));width:100%;height:100%;content:"";position:absolute;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y;-webkit-mask-size:auto 48px;mask-size:auto 48px;-webkit-mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg);mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg)}.mx_RoomTile{margin-bottom:4px;padding:4px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomTile.mx_RoomTile_hasMenuOpen,.mx_RoomTile.mx_RoomTile_selected,.mx_RoomTile:focus-within,.mx_RoomTile:hover{background-color:#fff;border-radius:8px}.mx_RoomTile .mx_DecoratedRoomAvatar,.mx_RoomTile .mx_RoomTile_avatarContainer{margin-right:8px}.mx_RoomTile .mx_RoomTile_nameContainer{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:0;margin-right:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview,.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{margin:0 2px;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{font-size:1.4rem;line-height:1.8rem}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents{font-weight:600}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview{font-size:1.3rem;line-height:1.8rem;color:#737d8c}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview{margin-top:-4px}.mx_RoomTile .mx_RoomTile_notificationsButton{margin-left:4px}.mx_RoomTile .mx_RoomTile_badgeContainer{height:16px;margin:auto 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge{margin-right:2px}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot{margin-left:5px;margin-right:7px}.mx_RoomTile .mx_RoomTile_menuButton,.mx_RoomTile .mx_RoomTile_notificationsButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;position:relative;display:none}.mx_RoomTile .mx_RoomTile_menuButton:before,.mx_RoomTile .mx_RoomTile_notificationsButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_RoomTile .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show{display:block}.mx_RoomTile .mx_RoomTile_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer{width:0;height:0;display:none}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_notificationsButton{display:block}.mx_RoomTile.mx_RoomTile_minimized{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar,.mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer{margin-right:0}.mx_RoomTile_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomTile_iconBellDot:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg);mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg)}.mx_RoomTile_iconBellCrossed:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_RoomTile_iconBellMentions:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg);mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before{-webkit-mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg);mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before{-webkit-mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg);mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_RoomUpgradeWarningBar{max-height:235px;background-color:#f7f7f7;padding-left:20px;padding-right:20px;overflow:scroll}.mx_RoomUpgradeWarningBar_wrapped{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center}.mx_RoomUpgradeWarningBar_header{color:#ff4b55;font-weight:700}.mx_RoomUpgradeWarningBar_body{color:#ff4b55}.mx_RoomUpgradeWarningBar_upgradelink{color:#ff4b55;text-decoration:underline}.mx_RoomUpgradeWarningBar_small{color:#888;font-size:70%}.mx_SearchBar{height:56px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid transparent}.mx_SearchBar .mx_SearchBar_input{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;margin-left:22px}.mx_SearchBar .mx_SearchBar_searchButton{cursor:pointer;width:37px;height:37px;background-color:#0dbd8b;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_SearchBar .mx_SearchBar_buttons{display:inherit}.mx_SearchBar .mx_SearchBar_button{border:0;margin:0 0 0 22px;padding:5px;font-size:1.5rem;cursor:pointer;color:#2e2f32;border-bottom:2px solid #0dbd8b;font-weight:600}.mx_SearchBar .mx_SearchBar_unselected{color:#9fa9ba;border-color:transparent}.mx_SearchBar .mx_SearchBar_cancel{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;padding:9px;margin:0 12px 0 3px;cursor:pointer}.mx_SendMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;font-size:1.4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;min-width:0}.mx_SendMessageComposer,.mx_SendMessageComposer .mx_BasicMessageComposer{-webkit-box-flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_SendMessageComposer .mx_BasicMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;min-height:50px}.mx_SendMessageComposer .mx_BasicMessageComposer .mx_BasicMessageComposer_input{padding:3px 0;margin:auto 0;max-height:140px;overflow-y:auto}.mx_Stickers_content{overflow:hidden}.mx_Stickers_content_container{overflow:hidden;height:300px}#mx_persistedElement_stickerPicker .mx_AppTileFullWidth{height:unset;-webkit-box-sizing:border-box;box-sizing:border-box;border-left:none;border-right:none;border-bottom:none}#mx_persistedElement_stickerPicker .mx_AppTileMenuBar{padding:0}#mx_persistedElement_stickerPicker iframe{height:283px}.mx_Stickers_contentPlaceholder{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mx_Stickers_contentPlaceholder p{max-width:200px}.mx_Stickers_addLink{display:inline;cursor:pointer;color:#0dbd8b}.mx_Stickers_hideStickers{z-index:2001}.mx_TopUnreadMessagesBar{z-index:1000;position:absolute;top:24px;right:24px;width:38px}.mx_TopUnreadMessagesBar:after{content:"";position:absolute;top:-8px;left:10.5px;width:4px;height:4px;border-radius:16px;background-color:#f2f5f8;border:6px solid #0dbd8b;pointer-events:none}.mx_TopUnreadMessagesBar_scrollUp{height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_TopUnreadMessagesBar_scrollUp:before{content:"";position:absolute;width:36px;height:36px;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_TopUnreadMessagesBar_markAsRead{display:block;width:18px;height:18px;background:#fff;border:1.3px solid #61708b;border-radius:10px;margin:5px auto}.mx_TopUnreadMessagesBar_markAsRead:before{content:"";position:absolute;width:18px;height:18px;-webkit-mask-image:url(../../img/cancel.4b9715b.svg);mask-image:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:10px;mask-size:10px;-webkit-mask-position:4px 4px;mask-position:4px 4px;background:#61708b}.mx_VoiceRecordComposerTile_stop{width:28px;height:28px;border:2px solid #e3e8f0;border-radius:32px;margin-right:16px;position:relative}.mx_VoiceRecordComposerTile_stop:after{content:"";width:14px;height:14px;position:absolute;top:7px;left:7px;border-radius:2px;background-color:#ff4b55}.mx_VoiceRecordComposerTile_delete{width:14px;height:18px;vertical-align:middle;margin-right:11px;background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer{margin:6px 12px 6px 6px;position:relative}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording{padding-left:22px}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before{-webkit-animation:recording-pulse 2s infinite;animation:recording-pulse 2s infinite;content:"";background-color:#ff4b55;width:10px;height:10px;position:absolute;left:12px;top:18px;border-radius:10px}@-webkit-keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}@keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}.mx_WhoIsTypingTile{margin-left:-18px;padding-top:18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_WhoIsTypingTile_avatars{-webkit-box-flex:0;-ms-flex:0 0 83px;flex:0 0 83px;text-align:center}.mx_WhoIsTypingTile_avatars>:not(:first-child){margin-left:-12px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial{padding-top:1px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar{border:1px solid #fff;border-radius:40px}.mx_WhoIsTypingTile_remainingAvatarPlaceholder{position:relative;display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center}.mx_WhoIsTypingTile_label{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:1.4rem;font-weight:600;color:#9e9e9e}.mx_WhoIsTypingTile_label>span{background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-size:25px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:15px;display:block}.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile{padding-top:4px}.mx_AvatarSetting_avatar{width:90px;min-width:90px;height:90px;margin-top:8px;position:relative}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover{-webkit-transition:opacity .08s cubic-bezier(.46,.03,.52,.96);transition:opacity .08s cubic-bezier(.46,.03,.52,.96);position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;line-height:90px;text-align:center}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover>span{color:#fff;position:relative;font-weight:500}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg{position:absolute;top:0;bottom:0;left:0;right:0;opacity:.5;background-color:#2e2f32;border-radius:90px}.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering .mx_AvatarSetting_hover{opacity:1}.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) .mx_AvatarSetting_hover{opacity:0}.mx_AvatarSetting_avatar>*{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-top:8px}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm{width:100%}.mx_AvatarSetting_avatar>img{cursor:pointer;-o-object-fit:cover;object-fit:cover}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder,.mx_AvatarSetting_avatar>img{display:block;height:90px;width:inherit;border-radius:90px;cursor:pointer}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{background-color:#2e2f32;-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton{width:32px;height:32px;border-radius:32px;background-color:#e7e7e7;position:absolute;bottom:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before{content:"";display:block;width:100%;height:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:55%;mask-size:55%;background-color:#2e2f32;-webkit-mask-image:url(../../img/feather-customised/edit.fd55ec2.svg);mask-image:url(../../img/feather-customised/edit.fd55ec2.svg)}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder{background-color:#f4f6fa}.mx_CrossSigningPanel_statusList{border-spacing:0}.mx_CrossSigningPanel_statusList td{padding:0}.mx_CrossSigningPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_CrossSigningPanel_buttonRow{margin:1em 0}.mx_CrossSigningPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_DevicesPanel{display:table;table-layout:fixed;width:880px;border-spacing:10px}.mx_DevicesPanel_header{display:table-header-group;font-weight:700}.mx_DevicesPanel_header>.mx_DevicesPanel_deviceButtons{height:48px}.mx_DevicesPanel_header>div{display:table-cell;vertical-align:middle}.mx_DevicesPanel_header .mx_DevicesPanel_deviceName{width:50%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen{width:30%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons{width:20%}.mx_DevicesPanel_device{display:table-row}.mx_DevicesPanel_device>div{display:table-cell}.mx_DevicesPanel_myDevice{font-weight:700}.mx_E2eAdvancedPanel_settingLongDescription{margin-right:150px}.mx_ExistingEmailAddress{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingEmailAddress_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingEmailAddress_email,.mx_ExistingEmailAddress_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingEmailAddress_confirmBtn{margin-left:5px}.mx_IntegrationManager .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none}.mx_IntegrationManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_IntegrationManager_loading h3{text-align:center}.mx_IntegrationManager_error{text-align:center;padding-top:20px}.mx_IntegrationManager_error h3{color:#ff4b55}.mx_UserNotifSettings_tableRow{display:table-row}.mx_UserNotifSettings_inputCell{display:table-cell;padding-bottom:8px;padding-right:8px;width:16px}.mx_UserNotifSettings_labelCell{padding-bottom:8px;width:400px;display:table-cell}.mx_UserNotifSettings_pushRulesTableWrapper{padding-bottom:8px}.mx_UserNotifSettings_pushRulesTable{width:100%;table-layout:fixed}.mx_UserNotifSettings_pushRulesTable thead{font-weight:700}.mx_UserNotifSettings_pushRulesTable tbody th{font-weight:400}.mx_UserNotifSettings_pushRulesTable tbody th:first-child{text-align:left}.mx_UserNotifSettings_keywords{cursor:pointer;color:#0dbd8b}.mx_UserNotifSettings_devicesTable td{padding-left:20px;padding-right:20px}.mx_UserNotifSettings_notifTable{display:table;position:relative}.mx_UserNotifSettings_notifTable .mx_Spinner{position:absolute}.mx_NotificationSound_soundUpload{display:none}.mx_NotificationSound_browse{color:#0dbd8b;border:1px solid #0dbd8b;background-color:transparent}.mx_NotificationSound_save{margin-left:5px;color:#fff;background-color:#0dbd8b}.mx_NotificationSound_resetSound{margin-top:5px;color:#fff;border:#ff4b55;background-color:#ff4b55}.mx_ExistingPhoneNumber{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingPhoneNumber_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingPhoneNumber_address,.mx_ExistingPhoneNumber_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingPhoneNumber_confirmBtn{margin-left:5px}.mx_ExistingPhoneNumber_verification{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ExistingPhoneNumber_verification .mx_Field{margin:0 0 0 1em}.mx_PhoneNumbers_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_PhoneNumbers_input>.mx_Field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_PhoneNumbers_country{width:80px}.mx_ProfileSettings_controls_topic>textarea{resize:vertical}.mx_ProfileSettings_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ProfileSettings_controls{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:54px}.mx_ProfileSettings_controls .mx_SettingsTab_subheading{margin-top:0}.mx_ProfileSettings_controls .mx_Field #profileTopic{height:4em}.mx_ProfileSettings_controls .mx_Field:first-child{margin-top:0}.mx_ProfileSettings_hostingSignup{margin-left:20px}.mx_ProfileSettings_hostingSignup img{margin-left:5px}.mx_ProfileSettings_avatarUpload{display:none}.mx_ProfileSettings_profileForm{margin-right:100px;border-bottom:1px solid #e7e7e7}.mx_ProfileSettings_buttons{margin-top:10px;margin-bottom:28px}.mx_ProfileSettings_buttons>.mx_AccessibleButton_kind_link{padding-left:0}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigInvalid,.mx_SecureBackupPanel_sigValid{font-weight:700}.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigValid{color:#76cfa5}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_sigInvalid{color:#ba6363}.mx_SecureBackupPanel_deviceName{font-style:italic}.mx_SecureBackupPanel_buttonRow{margin:1em 0}.mx_SecureBackupPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_SecureBackupPanel_statusList{border-spacing:0}.mx_SecureBackupPanel_statusList td{padding:0}.mx_SecureBackupPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_SetIdServer .mx_Field_input{margin-right:100px}.mx_SetIdServer_tooltip{max-width:120px}.mx_SetIntegrationManager{margin-top:10px;margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading{margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading>.mx_SettingsTab_subheading{display:inline-block;padding-left:5px}.mx_SetIntegrationManager .mx_ToggleSwitch{display:inline-block;float:right;top:9px;margin-right:100px}.mx_ExistingSpellCheckLanguage{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingSpellCheckLanguage_language{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_GeneralUserSettingsTab_spellCheckLanguageInput{margin-top:1em;margin-bottom:1em}.mx_SpellCheckLanguages{margin-right:100px}.mx_UpdateCheckButton_summary{margin-left:16px}.mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link{padding:0}.mx_SettingsTab{color:#61708b}.mx_SettingsTab_warningText{color:#ff4b55}.mx_SettingsTab_heading{font-size:2rem;font-weight:600;color:#2e2f32;margin-bottom:10px}.mx_SettingsTab_heading:nth-child(n+2){margin-top:30px}.mx_SettingsTab_subheading{font-size:1.6rem;display:block;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-weight:600;color:#2e2f32;margin-bottom:10px;margin-top:12px}.mx_SettingsTab_subsectionText{color:#61708b;font-size:1.4rem;display:block;margin:10px 100px 10px 0}.mx_SettingsTab_section{margin-bottom:24px}.mx_SettingsTab_section .mx_SettingsFlag{margin-right:100px;margin-bottom:10px}.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag{margin-right:0!important}.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label{vertical-align:middle;display:inline-block;font-size:1.4rem;color:#2e2f32;max-width:calc(100% - 4.8rem);-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:10px}.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch{float:right}.mx_SettingsTab_linkBtn{cursor:pointer;color:#0dbd8b;word-break:break-all}.mx_SettingsTab a{color:#238cf5}.mx_GeneralRoomSettingsTab_profileSection{margin-top:10px}.mx_RolesRoomSettingsTab ul{margin-bottom:0}.mx_RolesRoomSettingsTab_unbanBtn{margin-right:10px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_warning{display:block}.mx_SecurityRoomSettingsTab_warning img{vertical-align:middle;margin-right:5px;margin-left:3px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_encryptionSection{margin-bottom:25px}.mx_AppearanceUserSettingsTab_fontSlider,.mx_AppearanceUserSettingsTab_fontSlider_preview,.mx_AppearanceUserSettingsTab_Layout{margin-right:100px}.mx_AppearanceUserSettingsTab .mx_Field{width:256px}.mx_AppearanceUserSettingsTab_fontScaling{color:#2e2f32}.mx_AppearanceUserSettingsTab_fontSlider{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px;background:rgba(227,232,240,.2);border-radius:10px;font-size:10px;margin-top:24px;margin-bottom:24px}.mx_AppearanceUserSettingsTab_fontSlider_preview{border:1px solid #e3e8f0;border-radius:10px;padding:0 16px 9px;pointer-events:none}.mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption{display:none}.mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout{padding-top:9px}.mx_AppearanceUserSettingsTab_fontSlider_smallText{font-size:15px;padding-right:20px;padding-left:5px;font-weight:500}.mx_AppearanceUserSettingsTab_fontSlider_largeText{font-size:18px;padding-left:20px;padding-right:5px;font-weight:500}.mx_AppearanceUserSettingsTab>.mx_SettingsTab_SubHeading{margin-bottom:32px}.mx_AppearanceUserSettingsTab_themeSection{color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;margin-bottom:30px}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton{padding:1.6rem;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:10px;width:180px;background:#e3e8f0;opacity:.4;-ms-flex-negative:1;flex-shrink:1;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;margin-right:15px;margin-top:10px;font-weight:600;color:#61708b}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton>span{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled{opacity:1}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_light{background-color:#f3f8fd;color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark{background-color:#25282e;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div>div{border-color:#e3e8f0}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black{background-color:#000;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div>div{border-color:#e3e8f0}.mx_SettingsTab_customFontSizeField{margin-left:calc(1.6rem + 10px)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#2e2f32}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_AppearanceUserSettingsTab_spacer{width:24px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:300px;border:1px solid #e3e8f0;border-radius:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_msgOption,.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_MessageActionBar{display:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px;pointer-events:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_content{margin-right:0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected{border-color:#0dbd8b}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton{border-top:1px solid #e3e8f0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton>input+div{border-color:rgba(97,112,139,.2)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked{background-color:rgba(13,189,139,.08)}.mx_AppearanceUserSettingsTab_Advanced{color:#2e2f32}.mx_AppearanceUserSettingsTab_Advanced>*{margin-bottom:16px}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_AdvancedToggle{color:#0dbd8b;cursor:pointer}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_systemFont{margin-left:calc(1.6rem + 10px)}.mx_GeneralUserSettingsTab_changePassword .mx_Field{margin-right:100px}.mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child{margin-top:0}.mx_GeneralUserSettingsTab_accountSection .mx_SettingsTab_subheading:nth-child(n+1),.mx_GeneralUserSettingsTab_discovery .mx_SettingsTab_subheading:nth-child(n+2),.mx_SetIdServer .mx_SettingsTab_subheading{margin-top:24px}.mx_GeneralUserSettingsTab_accountSection .mx_Spinner,.mx_GeneralUserSettingsTab_discovery .mx_Spinner{-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left}.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses,.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers,.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress,.mx_GeneralUserSettingsTab_discovery .mx_ExistingPhoneNumber,.mx_GeneralUserSettingsTab_languageInput{margin-right:100px}.mx_GeneralUserSettingsTab_warningIcon{vertical-align:middle}.mx_HelpUserSettingsTab_debugButton{margin-bottom:5px;margin-top:5px}.mx_HelpUserSettingsTab span.mx_AccessibleButton{word-break:break-word}.mx_HelpUserSettingsTab code{word-break:break-all;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.mx_HelpUserSettingsTab_accessToken{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:10px;padding:10px}.mx_HelpUserSettingsTab_accessToken_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_HelpUserSettingsTab_accessToken_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_LabsUserSettingsTab .mx_SettingsTab_section{margin-top:32px}.mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag{margin-right:0}.mx_MjolnirUserSettingsTab .mx_Field{margin-right:100px}.mx_MjolnirUserSettingsTab_listItem{margin-bottom:2px}.mx_NotificationUserSettingsTab .mx_SettingsTab_heading{margin-bottom:10px}.mx_PreferencesUserSettingsTab .mx_Field{margin-right:100px}.mx_PreferencesUserSettingsTab .mx_SettingsTab_section{margin-bottom:30px}.mx_SecurityUserSettingsTab .mx_DevicesPanel{width:auto;max-width:880px}.mx_SecurityUserSettingsTab_deviceInfo{display:table;padding-left:0}.mx_SecurityUserSettingsTab_deviceInfo>li{display:table-row}.mx_SecurityUserSettingsTab_deviceInfo>li>label,.mx_SecurityUserSettingsTab_deviceInfo>li>span{display:table-cell;padding-right:1em}.mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton,.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab_importExportButtons{margin-bottom:15px}.mx_SecurityUserSettingsTab_ignoredUser{margin-bottom:5px}.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab .mx_SettingsTab_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning{color:#ff4b55;position:relative;padding-left:40px;margin-top:30px}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:2.4rem;mask-size:2.4rem;position:absolute;width:2.4rem;height:2.4rem;content:"";top:0;left:0;background-color:#ff4b55;-webkit-mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg);mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg)}.mx_VoiceUserSettingsTab .mx_Field{margin-right:100px}.mx_VoiceUserSettingsTab_missingMediaPermissions{margin-bottom:15px}.mx_SpaceBasicSettings .mx_Field{margin:32px 0}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:24px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer .mx_SpaceBasicSettings_avatar{position:relative;height:80px;width:80px;background-color:#8d99a5;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer img.mx_SpaceBasicSettings_avatar{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar{cursor:pointer}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar:before{content:"";position:absolute;height:80px;width:80px;top:0;left:0;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg)}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>input[type=file]{display:none}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_AccessibleButton_kind_link{display:inline-block;padding:0;margin:auto 16px;color:#368bd6}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_SpaceBasicSettings_avatar_remove{color:#ff4b55}.mx_SpaceBasicSettings .mx_FormButton{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceBasicSettings .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background{background-color:rgba(46,48,51,.38);opacity:.6;left:71px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu{padding:24px;width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;position:relative}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>h2{font-weight:600;font-size:1.8rem;margin-top:4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>p{font-size:1.5rem;color:#737d8c;margin:0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill{position:absolute;top:24px;right:24px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>h3{font-weight:600;margin:0 0 4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>span{color:#737d8c}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover{border-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover:before{background-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover>span{color:#2e2f32}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_public:before{-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_private:before{-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back{width:28px;height:28px;position:relative;background-color:rgba(141,151,165,.2);border-radius:14px;margin-bottom:12px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before{content:"";position:absolute;height:28px;width:28px;top:0;left:0;background-color:#8d99a5;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:2px 3px;mask-position:2px 3px;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_kind_primary{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpacePublicShare .mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpacePublicShare .mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpacePublicShare .mx_AccessibleButton>span{color:#737d8c}.mx_SpacePublicShare .mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpacePublicShare .mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before{-webkit-mask-image:url(../../img/element-icons/link.8f4b1fc.svg);mask-image:url(../../img/element-icons/link.8f4b1fc.svg)}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_InlineTermsAgreement_cbContainer{margin-bottom:10px;font-size:1.4rem}.mx_InlineTermsAgreement_cbContainer a{color:#0dbd8b;text-decoration:none}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox{margin-top:10px}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input{vertical-align:text-bottom}.mx_InlineTermsAgreement_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:12px;height:12px;margin-left:3px;vertical-align:middle}.mx_AnalyticsToast .mx_AccessibleButton_kind_danger{background:none;color:#0dbd8b}.mx_AnalyticsToast .mx_AccessibleButton_kind_primary{background:#0dbd8b;color:#fff}.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon{display:inline-block;width:1.8rem;height:1.8rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);margin-right:8px}.mx_NonUrgentEchoFailureToast span{vertical-align:middle}.mx_NonUrgentEchoFailureToast .mx_AccessibleButton{padding:0}.mx_VerificationShowSas_decimalSas{text-align:center;font-weight:700;padding-left:3px;padding-right:3px}.mx_VerificationShowSas_decimalSas span{margin-left:5px;margin-right:5px}.mx_VerificationShowSas_emojiSas{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:25px 0}.mx_VerificationShowSas_emojiSas_block{display:inline-block;margin-bottom:16px;position:relative;width:52px}.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block,.mx_Dialog .mx_VerificationShowSas_emojiSas_block{width:60px}.mx_VerificationShowSas_emojiSas_emoji{font-size:3.2rem}.mx_VerificationShowSas_emojiSas_label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:1.2rem}.mx_VerificationShowSas_emojiSas_break{-ms-flex-preferred-size:100%;flex-basis:100%}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_matchButton{color:#0dbd8b;background-color:rgba(3,179,129,.16);border:none}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_noMatchButton{color:#ff4b55;background-color:rgba(255,75,85,.16);border:none}.mx_PlayPauseButton{position:relative;width:32px;height:32px;border-radius:32px;background-color:#fff}.mx_PlayPauseButton:before{content:"";position:absolute;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before{opacity:.5}.mx_PlayPauseButton.mx_PlayPauseButton_play:before{width:13px;height:16px;top:8px;left:12px;-webkit-mask-image:url(../../img/element-icons/play.a72552b.svg);mask-image:url(../../img/element-icons/play.a72552b.svg)}.mx_PlayPauseButton.mx_PlayPauseButton_pause:before{width:10px;height:12px;top:10px;left:11px;-webkit-mask-image:url(../../img/element-icons/pause.c4c0886.svg);mask-image:url(../../img/element-icons/pause.c4c0886.svg)}.mx_VoiceMessagePrimaryContainer{padding:7px 12px 7px 11px;background-color:#e3e8f0;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#737d8c;font-size:1.4rem;line-height:2.4rem}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar{background-color:#c1c6cd}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar.mx_Waveform_bar_100pct{-webkit-transition:background-color .25s ease;transition:background-color .25s ease;background-color:#737d8c}.mx_VoiceMessagePrimaryContainer .mx_Clock{width:4.2rem;padding-right:6px;padding-left:8px}.mx_Waveform{position:relative;height:30px;top:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_Waveform .mx_Waveform_bar{width:0;border:1px solid transparent;border-radius:2px;min-height:0;max-height:100%;margin-left:1px;margin-right:1px}.mx_CallContainer{position:absolute;right:20px;bottom:72px;z-index:100;pointer-events:none}.mx_CallContainer .mx_CallPreview{pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_CallPreview .mx_CallView_video{width:350px}.mx_CallContainer .mx_CallPreview .mx_VideoFeed_local{border-radius:8px;overflow:hidden}.mx_CallContainer .mx_AppTile_persistedWrapper div{min-width:350px}.mx_CallContainer .mx_IncomingCallBox{min-width:250px;background-color:#f4f6fa;padding:8px;-webkit-box-shadow:0 14px 24px rgba(0,0,0,.08);box-shadow:0 14px 24px rgba(0,0,0,.08);border-radius:8px;pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo{display:-webkit-box;display:-ms-flexbox;display:flex;direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo .mx_BaseAvatar_initial,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img{margin:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p{margin:0;padding:0;font-size:1.4rem;line-height:1.6rem}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1{font-weight:700}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons{padding:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>.mx_IncomingCallBox_spacer{width:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>*{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;font-size:1.5rem;line-height:2.4rem}.mx_CallView{border-radius:8px;background-color:#f2f5f8;padding-left:8px;padding-right:8px;pointer-events:auto}.mx_CallView_large{padding-bottom:10px;margin:5px 5px 5px 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_CallView_large,.mx_CallView_large .mx_CallView_voice{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_CallView_pip{width:320px;padding-bottom:8px;margin-top:10px;background-color:#f4f6fa;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.2);box-shadow:0 4px 20px rgba(0,0,0,.2);border-radius:8px}.mx_CallView_pip .mx_CallView_voice{height:180px}.mx_CallView_pip .mx_CallView_callControls{bottom:0}.mx_CallView_pip .mx_CallView_callControls_button:before{width:36px;height:36px}.mx_CallView_pip .mx_CallView_holdTransferContent{padding-top:10px;padding-bottom:25px}.mx_CallView_content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:8px}.mx_CallView_voice{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;background-color:#27303a}.mx_CallView_voice,.mx_CallView_voice_avatarsContainer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-direction:normal}.mx_CallView_voice_avatarsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.mx_CallView_voice_avatarsContainer div{margin-left:12px;margin-right:12px}.mx_CallView_voice .mx_CallView_holdTransferContent .mx_CallView_voice_avatarContainer{border-radius:2000px;overflow:hidden;position:relative}.mx_CallView_holdTransferContent{height:20px;padding-top:20px;padding-bottom:15px;color:#fff}.mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0;font-weight:700}.mx_CallView_video{width:100%;height:100%;z-index:30;overflow:hidden}.mx_CallView_video_hold{overflow:hidden}.mx_CallView_video_hold .mx_VideoFeed{visibility:hidden}.mx_CallView_video_holdBackground{position:absolute;width:100%;height:100%;left:0;right:0;background-repeat:no-repeat;background-size:cover;background-position:50%;-webkit-filter:blur(20px);filter:blur(20px)}.mx_CallView_video_holdBackground:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;right:0;background-color:rgba(0,0,0,.6)}.mx_CallView_video .mx_CallView_holdTransferContent{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-weight:700;color:#fff;text-align:center}.mx_CallView_video .mx_CallView_holdTransferContent:before{display:block;margin-left:auto;margin-right:auto;content:"";width:40px;height:40px;background-image:url(../../img/voip/paused.77799b3.svg);background-position:50%;background-size:cover}.mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before{width:30px;height:30px}.mx_CallView_video .mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0}.mx_CallView_header{height:44px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left;-ms-flex-negative:0;flex-shrink:0}.mx_CallView_header_callType{font-size:1.2rem;font-weight:700;vertical-align:middle}.mx_CallView_header_secondaryCallInfo:before{content:"·";margin-left:6px;margin-right:6px}.mx_CallView_header_controls{margin-left:auto}.mx_CallView_header_button{display:inline-block;vertical-align:middle;cursor:pointer}.mx_CallView_header_button:before{content:"";display:inline-block;height:20px;width:20px;vertical-align:middle;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_CallView_header_button_fullscreen:before{-webkit-mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg);mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg)}.mx_CallView_header_button_expand:before{-webkit-mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg);mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg)}.mx_CallView_header_callInfo{margin-left:12px;margin-right:16px}.mx_CallView_header_roomName{font-weight:700;font-size:12px;line-height:normal;height:15px}.mx_CallView_secondaryCall_roomName{margin-left:4px}.mx_CallView_header_callTypeSmall{font-size:12px;color:#737d8c;line-height:normal;height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:240px}.mx_CallView_header_phoneIcon{display:inline-block;margin-right:6px;height:16px;width:16px;vertical-align:middle}.mx_CallView_header_phoneIcon:before{content:"";display:inline-block;vertical-align:top;height:16px;width:16px;background-color:#ff4b55;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_CallView_callControls{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;bottom:5px;width:100%;opacity:1;-webkit-transition:opacity .5s;transition:opacity .5s}.mx_CallView_callControls_hidden{opacity:.001;pointer-events:none}.mx_CallView_callControls_button{cursor:pointer;margin-left:8px;margin-right:8px}.mx_CallView_callControls_button:before{content:"";display:inline-block;height:48px;width:48px;background-repeat:no-repeat;background-size:contain;background-position:50%}.mx_CallView_callControls_dialpad{margin-right:auto}.mx_CallView_callControls_dialpad:before{background-image:url(../../img/voip/dialpad.fdda9a0.svg)}.mx_CallView_callControls_button_dialpad_hidden{margin-right:auto;cursor:auto}.mx_CallView_callControls_button_micOn:before{background-image:url(../../img/voip/mic-on.2592c14.svg)}.mx_CallView_callControls_button_micOff:before{background-image:url(../../img/voip/mic-off.774e42b.svg)}.mx_CallView_callControls_button_vidOn:before{background-image:url(../../img/voip/vid-on.b9b8bbf.svg)}.mx_CallView_callControls_button_vidOff:before{background-image:url(../../img/voip/vid-off.5552596.svg)}.mx_CallView_callControls_button_hangup:before{background-image:url(../../img/voip/hangup.9c3adeb.svg)}.mx_CallView_callControls_button_more{margin-left:auto}.mx_CallView_callControls_button_more:before{background-image:url(../../img/voip/more.5e8055e.svg)}.mx_CallView_callControls_button_more_hidden{margin-left:auto;cursor:auto}.mx_CallView_callControls_button_invisible{visibility:hidden;pointer-events:none;position:absolute}.mx_CallViewForRoom{overflow:hidden}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:8px}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle{width:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle:after{content:"";margin-top:3px;border-radius:4px;height:4px;width:100%;max-width:64px;background-color:#2e2f32}.mx_DialPad{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.mx_DialPad_button{width:40px;height:40px;background-color:#e3e8f0;border-radius:40px;font-size:18px;font-weight:600;text-align:center;vertical-align:middle;line-height:40px}.mx_DialPad_deleteButton:before,.mx_DialPad_dialButton:before{content:"";display:inline-block;height:40px;width:40px;vertical-align:middle;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center;background-color:#fff}.mx_DialPad_deleteButton{background-color:#ff4b55}.mx_DialPad_deleteButton:before{-webkit-mask-image:url(../../img/element-icons/call/delete.833d785.svg);mask-image:url(../../img/element-icons/call/delete.833d785.svg);-webkit-mask-position:9px;mask-position:9px}.mx_DialPad_dialButton{background-color:#0dbd8b}.mx_DialPad_dialButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_DialPadContextMenu_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadContextMenu_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadContextMenu_dialled{height:1em;font-size:18px;font-weight:600}.mx_DialPadContextMenu_dialPad{margin:16px}.mx_DialPadContextMenu_horizSep{position:relative}.mx_DialPadContextMenu_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_Dialog_dialPadWrapper .mx_Dialog{padding:0}.mx_DialPadModal{width:192px;height:368px}.mx_DialPadModal_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadModal_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadModal_cancel{float:right;-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer}.mx_DialPadModal_field{border:none;margin:0}.mx_DialPadModal_field input{font-size:18px;font-weight:600}.mx_DialPadModal_dialPad{margin-left:16px;margin-right:16px;margin-top:16px}.mx_DialPadModal_horizSep{position:relative}.mx_DialPadModal_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_VideoFeed_voice{padding-bottom:52px;background-color:#27303a}.mx_VideoFeed_remote{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_VideoFeed_remote.mx_VideoFeed_video{background-color:#000}.mx_VideoFeed_local{max-width:25%;max-height:25%;position:absolute;right:10px;top:10px;z-index:100;border-radius:4px}.mx_VideoFeed_local.mx_VideoFeed_video{background-color:transparent}.mx_VideoFeed_mirror{-webkit-transform:scaleX(-1);transform:scaleX(-1)} ` const snackbarCSS = ` #snackbar { diff --git a/src/utils/exportUtils/exportIcons.ts b/src/utils/exportUtils/exportIcons.ts new file mode 100644 index 0000000000..2a19e9c4d1 --- /dev/null +++ b/src/utils/exportUtils/exportIcons.ts @@ -0,0 +1,15 @@ +/* eslint-disable max-len */ +export default { + "trash.svg": `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path d="M2.25 5.5H5.16667H21.75" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> + <path d="M16.5 5.5L15 1H9L7.5 5.5" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> + <path d="M5.25 9.25V20.75C5.25 21.8546 6.14543 22.75 7.25 22.75H16.75C17.8546 22.75 18.75 21.8546 18.75 20.75V9.25" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> + <path d="M9.75 9.25V18.25" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> + <path d="M14.25 9.25V18.25" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> + </svg> + `, + "attach.svg": `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path d="M15.8155 13.0336L11.2282 17.4193C9.08205 19.45 5.53015 19.6024 3.45617 17.4193C1.4888 15.3484 1.48412 12.0136 3.63032 9.98294L11.8691 2.10597C13.2999 0.752226 15.5435 0.535035 16.984 2.05147C18.5968 3.7491 18.1298 5.99061 16.699 7.34435L8.6284 14.9682C7.913 15.645 6.7551 15.7233 6.03771 14.9682C5.34842 14.2426 5.45967 13.0625 6.17507 12.3856L10.9045 7.86398" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> + </svg> + `, +}; From 1382bd4fee3c1fcee27ff5b89e3828d84e4450b4 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 14:47:01 +0530 Subject: [PATCH 033/176] Handle icons and skip decryption checks during export --- src/components/views/messages/MAudioBody.js | 2 +- src/components/views/messages/MFileBody.js | 5 ++++- src/components/views/messages/MImageBody.js | 6 +++--- src/components/views/messages/MVideoBody.tsx | 2 +- src/components/views/messages/MessageEvent.js | 4 ++++ .../views/messages/RedactedBody.tsx | 4 +++- src/components/views/rooms/EventTile.tsx | 2 ++ src/utils/exportUtils/exportCSS.ts | 21 +++++++++++++++++++ 8 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/components/views/messages/MAudioBody.js b/src/components/views/messages/MAudioBody.js index 53aa013503..2c3eba8cb3 100644 --- a/src/components/views/messages/MAudioBody.js +++ b/src/components/views/messages/MAudioBody.js @@ -95,7 +95,7 @@ export default class MAudioBody extends React.Component { ); } - if (content.file !== undefined && this.state.decryptedUrl === null) { + if (!this.props.mediaSrc && content.file !== undefined && this.state.decryptedUrl === null) { // Need to decrypt the attachment // The attachment is decrypted in componentDidMount. // For now add an img tag with a 16x16 spinner. diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 53d37d73da..19b8d7342b 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -104,6 +104,7 @@ export default class MFileBody extends React.Component { showGenericPlaceholder: PropTypes.bool, /* to set source to local file path during export */ mediaSrc: PropTypes.string, + isExporting: PropTypes.bool, }; static defaultProps = { @@ -174,7 +175,9 @@ export default class MFileBody extends React.Component { if (this.props.showGenericPlaceholder) { placeholder = ( <div className="mx_MFileBody_info"> - <span className="mx_MFileBody_info_icon" /> + <span className="mx_MFileBody_info_icon" > + {this.props.isExporting ? <img class="mx_export_attach_icon" src="icons/attach.svg" /> : null} + </span> <span className="mx_MFileBody_info_filename">{this.presentableTextForFile(content, false)}</span> </div> ); diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 9937624a0e..56cc6a5eec 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -370,9 +370,9 @@ export default class MImageBody extends React.Component { let gifLabel = null; // e2e image hasn't been decrypted yet - if (content.file !== undefined && this.state.decryptedUrl === null) { + if (!this.props.mediaSrc && content.file !== undefined && this.state.decryptedUrl === null) { placeholder = <InlineSpinner w={32} h={32} />; - } else if (!this.state.imgLoaded) { + } else if (!this.props.mediaSrc && !this.state.imgLoaded) { // Deliberately, getSpinner is left unimplemented here, MStickerBody overides placeholder = this.getPlaceholder(); } @@ -407,7 +407,7 @@ export default class MImageBody extends React.Component { <div className="mx_MImageBody_thumbnail_container" style={{ maxHeight: maxHeight + "px" }} > { /* Calculate aspect ratio, using %padding will size _container correctly */ } <div style={{ paddingBottom: (100 * infoHeight / infoWidth) + '%' }} /> - { !this.props.mediaSrc && showPlaceholder && + {showPlaceholder && <div className="mx_MImageBody_thumbnail" style={{ // Constrain width here so that spinner appears central to the loaded thumbnail maxWidth: infoWidth + "px", diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 68cbb6702c..2b4327068e 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -209,7 +209,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } // Important: If we aren't autoplaying and we haven't decrypted it yet, show a video with a poster. - if (content.file !== undefined && this.state.decryptedUrl === null && autoplay) { + if (!this.props.mediaSrc && content.file !== undefined && this.state.decryptedUrl === null && autoplay) { // Need to decrypt the attachment // The attachment is decrypted in componentDidMount. // For now add an img tag with a spinner. diff --git a/src/components/views/messages/MessageEvent.js b/src/components/views/messages/MessageEvent.js index 84a3d56d77..e243c3c8bd 100644 --- a/src/components/views/messages/MessageEvent.js +++ b/src/components/views/messages/MessageEvent.js @@ -47,6 +47,9 @@ export default class MessageEvent extends React.Component { /* to set source to local file path during export */ mediaSrc: PropTypes.string, + /* to set source to local file path during export */ + isExporting: PropTypes.bool, + /* the maximum image height to use, if the event is an image */ maxImageHeight: PropTypes.number, @@ -124,6 +127,7 @@ export default class MessageEvent extends React.Component { showUrlPreview={this.props.showUrlPreview} tileShape={this.props.tileShape} mediaSrc={this.props.mediaSrc} + isExporting={this.props.isExporting} maxImageHeight={this.props.maxImageHeight} replacingEventId={this.props.replacingEventId} editState={this.props.editState} diff --git a/src/components/views/messages/RedactedBody.tsx b/src/components/views/messages/RedactedBody.tsx index 5f80460d03..fb4f0b0efa 100644 --- a/src/components/views/messages/RedactedBody.tsx +++ b/src/components/views/messages/RedactedBody.tsx @@ -24,9 +24,10 @@ import SettingsStore from "../../../settings/SettingsStore"; interface IProps { mxEvent: MatrixEvent; + isExporting: boolean; } -const RedactedBody = React.forwardRef<any, IProps>(({mxEvent}, ref) => { +const RedactedBody = React.forwardRef<any, IProps>(({mxEvent, isExporting}, ref) => { const cli: MatrixClient = useContext(MatrixClientContext); let text = _t("Message deleted"); @@ -44,6 +45,7 @@ const RedactedBody = React.forwardRef<any, IProps>(({mxEvent}, ref) => { return ( <span className="mx_RedactedBody" ref={ref} title={titleText}> + { isExporting ? <img className="mx_export_trash_icon" src="icons/trash.svg" title="Redacted" /> : null } { text } </span> ); diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index a7bfb40ad0..302d35fcce 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -311,6 +311,7 @@ export default class EventTile extends React.Component<IProps, IState> { static defaultProps = { // no-op function because onHeightChanged is optional yet some sub-components assume its existence onHeightChanged: function() {}, + isExporting: false, }; static contextType = MatrixClientContext; @@ -1150,6 +1151,7 @@ export default class EventTile extends React.Component<IProps, IState> { { thread } <EventTileType ref={this.tile} mxEvent={this.props.mxEvent} + isExporting={this.props.isExporting} replacingEventId={this.props.replacingEventId} editState={this.props.editState} mediaSrc={this.props.mediaSrc} diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index dd645b4362..b34d22cfae 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -58,5 +58,26 @@ a.mx_reply_anchor:hover{ from {bottom: 30px; opacity: 1;} to {bottom: 0; opacity: 0;} } + +.mx_MFileBody_info .mx_MFileBody_info_icon img.mx_export_attach_icon { + content: ''; + background-color: #ffffff; + width: 13px; + height: 15px; + position: absolute; + top: 8px; + left: 9px; +} + +.mx_RedactedBody img.mx_export_trash_icon { + height: 14px; + width: 14px; + background-color: #ffffff; + content: ''; + position: absolute; + top: 1px; + left: 0; +} + ` export default lightCSS + snackbarCSS; From 9c38af007583b7fda45620f20d26b6f53259e9b1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 17:06:39 +0530 Subject: [PATCH 034/176] Make reply UI work even when javascript is disabled --- src/components/views/elements/ReplyThread.js | 2 +- src/utils/exportUtils/HtmlExport.tsx | 2 +- src/utils/exportUtils/exportCSS.ts | 20 +++++++++++++++ src/utils/exportUtils/exportJS.ts | 27 ++++++++------------ 4 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index 018c5d1e6e..f67889cca5 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -374,7 +374,7 @@ export default class ReplyThread extends React.Component { } else if (this.props.isExporting) { const eventId = ReplyThread.getParentEventId(this.props.parentEv); header = <p style={{ marginTop: -5, marginBottom: 5 }}> - In reply to <a className="mx_reply_anchor" scroll-to={`${eventId}`}>this message</a> + In reply to <a className="mx_reply_anchor" href={`#${eventId}`} scroll-to={eventId}>this message</a> </p>; } else if (this.state.loading) { const Spinner = sdk.getComponent("elements.Spinner"); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index eeb9f6a684..87c11e59ad 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -216,7 +216,7 @@ export default class HTMLExporter extends Exporter { const hasAvatar = this.hasAvatar(mxEv); if (hasAvatar) this.saveAvatarIfNeeded(mxEv); - return <li id={mxEv.getId()}> + return <li className="mx_Export_EventWrapper" id={mxEv.getId()}> <EventTile mxEvent={mxEv} continuation={continuation} diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index b34d22cfae..8aee952cbc 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -69,6 +69,26 @@ a.mx_reply_anchor:hover{ left: 9px; } +* { + scroll-behavior: smooth !important; +} + + +li.mx_Export_EventWrapper:target { + background: white; + animation: mx_event_highlight_animation 2s linear; +} + + +@keyframes mx_event_highlight_animation { + 0%,100% { + background: white; + } + 50% { + background: #e3e2df; + } +} + .mx_RedactedBody img.mx_export_trash_icon { height: 14px; width: 14px; diff --git a/src/utils/exportUtils/exportJS.ts b/src/utils/exportUtils/exportJS.ts index 4fd0a5159d..2f7ba550e7 100644 --- a/src/utils/exportUtils/exportJS.ts +++ b/src/utils/exportUtils/exportJS.ts @@ -1,16 +1,10 @@ export default ` -function scrollToElement(replyId){ - let el = document.getElementById(replyId); - if(!el) { - showToast("The message you're looking for wasn't exported"); - return; - }; - el.scrollIntoView({ behavior: 'smooth', block: 'center' }); - el.style.backgroundColor = '#f6f7f8'; - el.style.transition = 'background-color 1s ease' - setTimeout(() => { - el.style.backgroundColor = "white" - }, 2000); +function showToastIfNeeded(replyId){ + let el = document.getElementById(replyId); + if(!el) { + showToast("The message you're looking for wasn't exported"); + return; + }; } function showToast(text) { @@ -23,10 +17,11 @@ function showToast(text) { } window.onload = () => { - document.querySelectorAll('.mx_reply_anchor').forEach(element => { - element.addEventListener('click', event => { - scrollToElement(event.target.getAttribute("scroll-to")); - }) +document.querySelectorAll('.mx_reply_anchor').forEach(element => { + element.addEventListener('click', event => { + showToastIfNeeded(event.target.getAttribute("scroll-to")); }) +}) } + ` From fc61e96218398828a40ac30c7a585b39ce41e3b1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 17:22:13 +0530 Subject: [PATCH 035/176] Remove unnecessary export --- src/HtmlUtils.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/HtmlUtils.tsx b/src/HtmlUtils.tsx index 1d5defe45d..ef5ac383e3 100644 --- a/src/HtmlUtils.tsx +++ b/src/HtmlUtils.tsx @@ -233,7 +233,7 @@ const transformTags: IExtendedSanitizeOptions["transformTags"] = { // custom to }, }; -export const sanitizeHtmlParams: IExtendedSanitizeOptions = { +const sanitizeHtmlParams: IExtendedSanitizeOptions = { allowedTags: [ 'font', // custom to matrix for IRC-style font coloring 'del', // for markdown From 01a3b854c3cad0198a631b873fffd099a66936ac Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 20:08:10 +0530 Subject: [PATCH 036/176] Add sticker support --- src/utils/exportUtils/HtmlExport.tsx | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 87c11e59ad..0babf01fe7 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -246,21 +246,15 @@ export default class HTMLExporter extends Exporter { protected async createMessageBody(mxEv: MatrixEvent, joined = false) { let eventTile: JSX.Element; - switch (mxEv.getContent().msgtype) { - case "m.image": - case "m.file": - case "m.video": - case "m.audio": { - const blob = await this.getMediaBlob(mxEv); - const filePath = this.getFilePath(mxEv); - eventTile = this.getEventTile(mxEv, joined, filePath); - this.zip.file(filePath, blob); - break; - } - default: - eventTile = this.getEventTile(mxEv, joined); - break; - } + const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"] + + if (mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype)) { + const blob = await this.getMediaBlob(mxEv); + const filePath = this.getFilePath(mxEv); + eventTile = this.getEventTile(mxEv, joined, filePath); + this.zip.file(filePath, blob); + } else eventTile = this.getEventTile(mxEv, joined); + return renderToStaticMarkup(eventTile); } From c63c59b4080de22b4a871773ac13454ce36cce37 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 1 Jun 2021 21:52:04 +0530 Subject: [PATCH 037/176] Rename date function --- src/DateUtils.ts | 2 +- src/utils/exportUtils/HtmlExport.tsx | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index 6d390e9132..e629782d6f 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -138,7 +138,7 @@ export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): bo } -export function formatFullDateNoDayNoTime(date: Date) { +export function formatFullDateNoDay(date: Date) { return ( date.getFullYear() + "-" + diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 0babf01fe7..d5a4220304 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -9,7 +9,7 @@ import { Exporter } from "./Exporter"; import { renderToStaticMarkup } from 'react-dom/server' import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; -import { formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; +import { formatFullDateNoDay, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; import * as ponyfill from "web-streams-polyfill/ponyfill" import * as Avatar from "../../Avatar"; @@ -205,7 +205,7 @@ export default class HTMLExporter extends Exporter { fileDirectory = "files"; break; } - const fileDate = formatFullDateNoDayNoTime(new Date(event.getTs())); + const fileDate = formatFullDateNoDay(new Date(event.getTs())); const [fileName, fileExt] = this.splitFileName(event.getContent().body); const filePath = fileDirectory + "/" + fileName + '-' + fileDate + '.' + fileExt; return filePath; @@ -283,7 +283,7 @@ export default class HTMLExporter extends Exporter { for (const iconName in exportIcons) { this.zip.file(`icons/${iconName}`, exportIcons[iconName]); } - const filename = `matrix-export-${formatFullDateNoDayNoTime(new Date())}.zip`; + const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; //Generate the zip file asynchronously const blob = await this.zip.generateAsync({ type: "blob" }); From 692e499cf2711b4d8fce1f0799643dd8f99cb4f0 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 2 Jun 2021 12:06:00 +0530 Subject: [PATCH 038/176] Handle encrypted stickers and store stickers in a separate folder --- src/DateUtils.ts | 1 - src/components/views/messages/MFileBody.js | 4 +++- src/utils/exportUtils/HtmlExport.tsx | 11 ++++++----- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index e629782d6f..4bfe575e3c 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -137,7 +137,6 @@ export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): bo return prevEventDate.getDay() !== nextEventDate.getDay(); } - export function formatFullDateNoDay(date: Date) { return ( date.getFullYear() + diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 19b8d7342b..8afd4abaf6 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -176,7 +176,9 @@ export default class MFileBody extends React.Component { placeholder = ( <div className="mx_MFileBody_info"> <span className="mx_MFileBody_info_icon" > - {this.props.isExporting ? <img class="mx_export_attach_icon" src="icons/attach.svg" /> : null} + {this.props.isExporting ? + <img className="mx_export_attach_icon" src="icons/attach.svg" /> + : null} </span> <span className="mx_MFileBody_info_filename">{this.presentableTextForFile(content, false)}</span> </div> diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index d5a4220304..47b318c409 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -156,7 +156,9 @@ export default class HTMLExporter extends Exporter { try { const isEncrypted = event.isEncrypted(); const content = event.getContent(); - if (isEncrypted && !content.hasOwnProperty("org.matrix.msc1767.file")) { + const shouldDecrypt = isEncrypted && !content.hasOwnProperty("org.matrix.msc1767.file") + && event.getType() !== "m.sticker"; + if (shouldDecrypt) { blob = await decryptFile(content.file); } else { const media = mediaFromContent(event.getContent()); @@ -185,7 +187,7 @@ export default class HTMLExporter extends Exporter { if (lastDot === -1) return [file, ""]; const fileName = file.slice(0, lastDot); const ext = file.slice(lastDot + 1); - return [fileName, ext]; + return [fileName, '.' + ext]; } protected getFilePath(event: MatrixEvent) { @@ -202,12 +204,11 @@ export default class HTMLExporter extends Exporter { fileDirectory = "audio"; break; default: - fileDirectory = "files"; - break; + fileDirectory = event.getType() === "m.sticker" ? "stickers" : "files"; } const fileDate = formatFullDateNoDay(new Date(event.getTs())); const [fileName, fileExt] = this.splitFileName(event.getContent().body); - const filePath = fileDirectory + "/" + fileName + '-' + fileDate + '.' + fileExt; + const filePath = fileDirectory + "/" + fileName + '-' + fileDate + fileExt; return filePath; } From f84ae4a1734f5b37f3836f7ce3de890168ae9049 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 2 Jun 2021 13:12:03 +0530 Subject: [PATCH 039/176] Add await --- src/utils/exportUtils/HtmlExport.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 47b318c409..f4fa4d0cf4 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -213,9 +213,9 @@ export default class HTMLExporter extends Exporter { } - protected getEventTile(mxEv: MatrixEvent, continuation: boolean, mediaSrc?: string) { + protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, mediaSrc?: string) { const hasAvatar = this.hasAvatar(mxEv); - if (hasAvatar) this.saveAvatarIfNeeded(mxEv); + if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); return <li className="mx_Export_EventWrapper" id={mxEv.getId()}> <EventTile @@ -252,9 +252,9 @@ export default class HTMLExporter extends Exporter { if (mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype)) { const blob = await this.getMediaBlob(mxEv); const filePath = this.getFilePath(mxEv); - eventTile = this.getEventTile(mxEv, joined, filePath); + eventTile = await this.getEventTile(mxEv, joined, filePath); this.zip.file(filePath, blob); - } else eventTile = this.getEventTile(mxEv, joined); + } else eventTile = await this.getEventTile(mxEv, joined); return renderToStaticMarkup(eventTile); } From 183166c460f5e42605399d954d944874edc835fc Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 3 Jun 2021 12:40:00 +0530 Subject: [PATCH 040/176] Unminify CSS and apply suggestions from the design team --- src/DateUtils.ts | 12 +- src/i18n/strings/en_EN.json | 3 + src/utils/exportUtils/HtmlExport.tsx | 55 +- src/utils/exportUtils/exportCSS.ts | 19469 ++++++++++++++++++++++++- 4 files changed, 19525 insertions(+), 14 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index 4bfe575e3c..481afb312b 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -141,7 +141,7 @@ export function formatFullDateNoDay(date: Date) { return ( date.getFullYear() + "-" + - pad(date.getMonth()) + + pad(date.getMonth() + 1) + "-" + pad(date.getDate()) + _t(" at ") + @@ -152,3 +152,13 @@ export function formatFullDateNoDay(date: Date) { pad(date.getSeconds()) ); } + +export function formatFullDateNoDayNoTime(date: Date) { + return ( + date.getFullYear() + + "/" + + pad(date.getMonth() + 1) + + "/" + + pad(date.getDate()) + ); +} diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 682a31e0a3..35e6839c52 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -725,6 +725,9 @@ "Invite to %(spaceName)s": "Invite to %(spaceName)s", "Share your public space": "Share your public space", "Unknown App": "Unknown App", + "%(creatorName)s created this room.": "%(creatorName)s created this room.", + "This is the start of export of <b>%(roomName)s</b>.\n Exported by %(exporterDetails)s at %(exportDate)s. ": "This is the start of export of <b>%(roomName)s</b>.\n Exported by %(exporterDetails)s at %(exportDate)s. ", + "Topic: %(topic)s": "Topic: %(topic)s", "Help us improve %(brand)s": "Help us improve %(brand)s", "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.": "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.", "Yes": "Yes", diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index f4fa4d0cf4..1432b61e85 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -9,7 +9,7 @@ import { Exporter } from "./Exporter"; import { renderToStaticMarkup } from 'react-dom/server' import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; -import { formatFullDateNoDay, wantsDateSeparator } from "../../DateUtils"; +import { formatFullDateNoDay, formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; import * as ponyfill from "web-streams-polyfill/ponyfill" import * as Avatar from "../../Avatar"; @@ -19,6 +19,9 @@ import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportIcons from "./exportIcons"; +import { _t } from "../../languageHandler"; +import { MatrixClientPeg } from "../../MatrixClientPeg"; +import { EventType } from "matrix-js-sdk/src/@types/event"; export default class HTMLExporter extends Exporter { protected zip: JSZip; @@ -32,21 +35,22 @@ export default class HTMLExporter extends Exporter { this.permalinkCreator = new RoomPermalinkCreator(this.room); } - protected async getRoomAvatar() { + protected async getRoomAvatar(avatarSide: number) { let blob: Blob; - const avatarUrl = Avatar.avatarUrlForRoom(this.room, 32, 32, "crop"); + const avatarUrl = Avatar.avatarUrlForRoom(this.room, avatarSide, avatarSide, "crop"); + const avatarPath = `room/avatar${avatarSide}.png`; if (avatarUrl) { const image = await fetch(avatarUrl); blob = await image.blob(); - this.zip.file("room.png", blob); + this.zip.file(avatarPath, blob); } const avatar = ( <BaseAvatar - width={32} - height={32} + width={avatarSide} + height={avatarSide} name={this.room.name} title={this.room.name} - url={blob ? "room.png" : null} + url={blob ? avatarPath : null} resizeMethod={"crop"} /> ); @@ -54,7 +58,32 @@ export default class HTMLExporter extends Exporter { } protected async wrapHTML(content: string, room: Room) { - const roomAvatar = await this.getRoomAvatar(); + const roomAvatar32 = await this.getRoomAvatar(32); + const exportDate = formatFullDateNoDayNoTime(new Date()); + const cli = MatrixClientPeg.get(); + const creator = room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); + const creatorName = room?.getMember(creator)?.rawDisplayName || creator; + const exporter = cli.getUserId(); + const exporterName = room?.getMember(exporter)?.rawDisplayName; + const topic = room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic + || room.topic || ""; + const createdText = _t("%(creatorName)s created this room.", { + creatorName, + }); + + const exportedText = _t(`This is the start of export of <b>%(roomName)s</b>. + Exported by %(exporterDetails)s at %(exportDate)s. `, { + exportDate, + roomName: room.name, + exporterDetails: `<a href="https://matrix.to/#/${exporter}" target="_blank" rel="noopener noreferrer"> + ${exporterName ? `<b>${ exporterName }</b>(${ exporter })` : `<b>${ exporter }</b>`} + </a>`, + }); + + const topicText = topic ? _t("Topic: %(topic)s", { topic }) : ""; + const roomAvatar52 = await this.getRoomAvatar(52); + + return ` <!DOCTYPE html> <html lang="en"> @@ -79,7 +108,7 @@ export default class HTMLExporter extends Exporter { <div class="mx_RoomHeader_wrapper" aria-owns="mx_RightPanel"> <div class="mx_RoomHeader_avatar"> <div class="mx_DecoratedRoomAvatar"> - ${roomAvatar} + ${roomAvatar32} </div> </div> <div class="mx_RoomHeader_name"> @@ -91,7 +120,7 @@ export default class HTMLExporter extends Exporter { ${room.name} </div> </div> - <div class="mx_RoomHeader_topic" dir="auto"></div> + <div class="mx_RoomHeader_topic" dir="auto"> ${topic} </div> </div> </div> <div class="mx_MainSplit"> @@ -113,6 +142,12 @@ export default class HTMLExporter extends Exporter { aria-live="polite" role="list" > + <div class="mx_NewRoomIntro"> + ${roomAvatar52} + <h2> ${room.name} </h2> + <p> ${createdText} <br/><br/> ${exportedText} </p> + <p> ${topicText} </p> + </div> ${content} </ol> </div> diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 8aee952cbc..6f2284cc32 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -1,6 +1,19469 @@ /* eslint-disable max-len */ -const lightCSS = ` -@charset "utf-8";@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Regular.4232a67.woff2) format("woff2"),url(../../fonts/Inter/Inter-Regular.3a1908c.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:400;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Italic.b791861.woff2) format("woff2"),url(../../fonts/Inter/Inter-Italic.b13e6fe.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Medium.027d14e.woff2) format("woff2"),url(../../fonts/Inter/Inter-Medium.d1f6b6e.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:500;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-MediumItalic.8154ac2.woff2) format("woff2"),url(../../fonts/Inter/Inter-MediumItalic.1912849.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBold.0802d48.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBold.8357f92.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:600;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-SemiBoldItalic.10a60d8.woff2) format("woff2"),url(../../fonts/Inter/Inter-SemiBoldItalic.1c70752.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-Bold.fc28dff.woff2) format("woff2"),url(../../fonts/Inter/Inter-Bold.025b6f2.woff) format("woff")}@font-face{font-family:Inter;font-style:italic;font-weight:700;font-display:swap;unicode-range:U+0000-20e2,U+20e4-23ce,U+23d0-24c1,U+24c3-259f,U+25c2-2664,U+2666-2763,U+2765-2b05,U+2b07-2b1b,U+2b1d-10ffff;src:url(../../fonts/Inter/Inter-BoldItalic.2129bd0.woff2) format("woff2"),url(../../fonts/Inter/Inter-BoldItalic.80f8542.woff) format("woff")}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.2aafaa1.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:400;font-display:swap;src:local("Inconsolata Regular"),local("Inconsolata-Regular"),url(../../fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.5476fd3.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.6bc411a.woff2) format("woff2");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:Inconsolata;font-style:normal;font-weight:700;font-display:swap;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../../fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.000abc6.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}.hljs-addition{background:#dfd}.hljs-deletion{background:#fdd}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.mx_LeftPanel{background-image:unset;background-image:var(--avatar-url,unset);background-repeat:no-repeat;background-size:cover;background-position:0 0}.mx_GroupFilterPanel,.mx_SpacePanel{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.mx_LeftPanel .mx_LeftPanel_roomListContainer{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}.mx_RoomSublist_showNButton{background-color:transparent!important}a:hover,a:link,a:visited{text-decoration:none}:root{font-size:10px;--transition-short:.1s;--transition-standard:.3s}@media (prefers-reduced-motion){:root{--transition-short:0;--transition-standard:0}}html{height:100%;overflow:hidden}body{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.5rem;background-color:#fff;color:#2e2f32;border:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code,pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji;font-size:100%!important}.error,.text-error,.text-warning,.warning{color:#ff4b55}.text-success{color:#0dbd8b}.text-muted{color:#61708b}b{font-weight:700}h2{color:#2e2f32;font-weight:400;font-size:1.8rem;margin-top:16px;margin-bottom:16px}a:hover,a:link,a:visited{color:#238cf5}input[type=password],input[type=search],input[type=text]{padding:9px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;font-weight:600;min-width:0}input[type=search].mx_textinput_icon,input[type=text].mx_textinput_icon{padding-left:36px;background-repeat:no-repeat;background-position:10px}input[type=search].mx_textinput_icon.mx_textinput_search,input[type=text].mx_textinput_icon.mx_textinput_search{background-image:url(../../img/feather-customised/search-input.044bfa7.svg)}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{display:none}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{opacity:1}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1}input::-ms-input-placeholder,textarea::-ms-input-placeholder{opacity:1}input::placeholder,textarea::placeholder{opacity:1}input[type=password],input[type=text],textarea{background-color:transparent;color:#2e2f32}textarea{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;color:#2e2f32}input[type=password]:focus,input[type=text]:focus,textarea:focus{outline:none;-webkit-box-shadow:none;box-shadow:none}:focus:not(.focus-visible){outline:none}.mx_Dialog .mx_textinput>input[type=search],.mx_Dialog .mx_textinput>input[type=text],.mx_MatrixChat .mx_textinput>input[type=search],.mx_MatrixChat .mx_textinput>input[type=text]{border:none;-webkit-box-flex:1;-ms-flex:1;flex:1;color:#2e2f32}.mx_Dialog .mx_textinput,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text],.mx_MatrixChat .mx_textinput,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{display:block;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:transparent;color:#9fa9ba;border-radius:4px;border:1px solid rgba(46,47,50,.1);margin:9px}.mx_Dialog .mx_textinput,.mx_MatrixChat .mx_textinput{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dialog .mx_textinput input::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder,.mx_MatrixChat .mx_textinput input::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-webkit-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-webkit-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder,.mx_MatrixChat .mx_textinput input::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-moz-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-moz-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder,.mx_MatrixChat .mx_textinput input:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]:-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]:-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder,.mx_MatrixChat .mx_textinput input::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::-ms-input-placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::-ms-input-placeholder{color:rgba(159,169,186,.75)}.mx_Dialog .mx_textinput input::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder,.mx_MatrixChat .mx_textinput input::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search]::placeholder,.mx_MatrixChat :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]::placeholder{color:rgba(159,169,186,.75)}.dark-panel{background-color:#f2f5f8}.dark-panel .mx_textinput,.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#fff;border:none}.light-panel .mx_textinput,.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=search],.light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput)>input[type=text]{color:#9fa9ba;background-color:#f2f5f8;border:none}::-moz-focus-inner{border:0}#mx_theme_accentColor{color:#0dbd8b}#mx_theme_secondaryAccentColor{color:#f2f5f8}#mx_theme_tertiaryAccentColor{color:#d3efe1}.mx_Dialog_wrapper{position:fixed;z-index:4000;top:0;left:0;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_Dialog{background-color:#fff;color:#747474;z-index:4012;font-weight:300;font-size:1.5rem;position:relative;padding:24px;max-height:80%;-webkit-box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);box-shadow:2px 15px 30px 0 rgba(0,0,0,.48);border-radius:8px;overflow-y:auto}.mx_Dialog_fixedWidth{width:60vw;max-width:704px}.mx_Dialog_staticWrapper .mx_Dialog{z-index:4010}.mx_Dialog_background{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(46,48,51,.38);opacity:.8;z-index:4011}.mx_Dialog_background.mx_Dialog_staticBackground{z-index:4009}.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background{opacity:.4}.mx_Dialog_lightbox .mx_Dialog_background{opacity:.95;background-color:#000}.mx_Dialog_lightbox .mx_Dialog{border-radius:0;background-color:transparent;width:100%;height:100%;max-width:100%;max-height:100%;pointer-events:none;padding:0}.mx_Dialog_header{position:relative;margin-bottom:10px}.mx_Dialog_titleImage{vertical-align:sub;width:25px;height:25px;margin-left:-2px;margin-right:4px}.mx_Dialog_title{font-size:2.2rem;font-weight:600;line-height:3.6rem;color:#45474a}.mx_Dialog_header.mx_Dialog_headerWithButton>.mx_Dialog_title{text-align:center}.mx_Dialog_header.mx_Dialog_headerWithCancel>.mx_Dialog_title{margin-right:20px}.mx_Dialog_title.danger{color:#ff4b55}.mx_Dialog_cancelButton{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px;right:0}.mx_Dialog_content{margin:24px 0 68px;font-size:1.4rem;color:#2e2f32;word-wrap:break-word}.mx_Dialog_buttons{margin-top:20px;text-align:right}.mx_Dialog_buttons .mx_Dialog_buttons_additive{float:left}.mx_Dialog_buttons button,.mx_Dialog_buttons input[type=submit],.mx_Dialog button,.mx_Dialog input[type=submit]{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-left:0;margin-right:8px;font-weight:600;border:1px solid #0dbd8b;color:#0dbd8b;background-color:#fff;font-family:inherit}.mx_Dialog button:last-child{margin-right:0}.mx_Dialog_buttons button:focus,.mx_Dialog_buttons input[type=submit]:focus,.mx_Dialog button:focus,.mx_Dialog input[type=submit]:focus{-webkit-filter:brightness(105%);filter:brightness(105%)}.mx_Dialog_buttons button.mx_Dialog_primary,.mx_Dialog_buttons input[type=submit].mx_Dialog_primary,.mx_Dialog button.mx_Dialog_primary,.mx_Dialog input[type=submit].mx_Dialog_primary{color:#fff;background-color:#0dbd8b;min-width:156px}.mx_Dialog_buttons button.danger,.mx_Dialog_buttons input[type=submit].danger,.mx_Dialog button.danger,.mx_Dialog input[type=submit].danger{background-color:#ff4b55;border:1px solid #ff4b55;color:#fff}.mx_Dialog button.warning,.mx_Dialog input[type=submit].warning{border:1px solid #ff4b55;color:#ff4b55}.mx_Dialog_buttons button:disabled,.mx_Dialog_buttons input[type=submit]:disabled,.mx_Dialog button:disabled,.mx_Dialog input[type=submit]:disabled{background-color:#747474;border:1px solid #747474;opacity:.7}.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog{width:auto;border-radius:8px;padding:0;-webkit-box-shadow:none;box-shadow:none;overflow-x:hidden;overflow-y:hidden}.mx_GeneralButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;display:inline;margin:auto}.mx_linkButton{cursor:pointer;color:#0dbd8b}.mx_TextInputDialog_label{text-align:left;padding-bottom:12px}.mx_TextInputDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;font-size:1.5rem;padding:0 1.5em}.mx_button_row{margin-top:69px}.mx_Username_color1{color:#368bd6}.mx_Username_color2{color:#ac3ba8}.mx_Username_color3{color:#0dbd8b}.mx_Username_color4{color:#e64f7a}.mx_Username_color5{color:#ff812d}.mx_Username_color6{color:#2dc2c5}.mx_Username_color7{color:#5c56f5}.mx_Username_color8{color:#74d12c}.mx_Tooltip_dark .mx_Tooltip_chevron:after{border-right-color:#27303a}html{scrollbar-color:rgba(0,0,0,.2) transparent}*{scrollbar-width:thin}::-webkit-scrollbar{width:6px;height:6px;background-color:transparent}::-webkit-scrollbar-thumb{border-radius:3px;background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar:hover{scrollbar-color:rgba(0,0,0,.2) transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar{background-color:transparent}.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}.mx_AutoHideScrollbar{overflow-x:hidden;overflow-y:auto;overflow-y:overlay;-ms-overflow-style:-ms-autohiding-scrollbar}.mx_AutoHideScrollbar::-webkit-scrollbar,.mx_AutoHideScrollbar::-webkit-scrollbar-thumb{background-color:transparent}.mx_AutoHideScrollbar{scrollbar-color:transparent transparent}.mx_CompatibilityPage{width:100%;height:100%;background-color:#e55}.mx_CompatibilityPage_box{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;width:500px;height:300px;border:1px solid;padding:10px;background-color:#fcc}.mx_ContextualMenu_wrapper{position:fixed;z-index:5000}.mx_ContextualMenu_background{position:fixed;top:0;left:0;width:100%;height:100%;opacity:1;z-index:5000}.mx_ContextualMenu{border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);background-color:#fff;color:#2e2f32;position:absolute;font-size:1.4rem;z-index:5001}.mx_ContextualMenu_right{right:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_right{right:8px}.mx_ContextualMenu_chevron_right{position:absolute;right:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-left:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_left{left:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_left{left:8px}.mx_ContextualMenu_chevron_left{position:absolute;left:-8px;top:0;width:0;height:0;border-top:8px solid transparent;border-right:8px solid #fff;border-bottom:8px solid transparent}.mx_ContextualMenu_top{top:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_top{top:8px}.mx_ContextualMenu_chevron_top{position:absolute;left:0;top:-8px;width:0;height:0;border-left:8px solid transparent;border-bottom:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_bottom{bottom:0}.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom{bottom:8px}.mx_ContextualMenu_chevron_bottom{position:absolute;left:0;bottom:-8px;width:0;height:0;border-left:8px solid transparent;border-top:8px solid #fff;border-right:8px solid transparent}.mx_ContextualMenu_spinner{display:block;margin:0 auto}.mx_CreateRoom{width:960px;margin-left:auto;margin-right:auto;color:#2e2f32}.mx_CreateRoom input,.mx_CreateRoom textarea{border-radius:3px;border:1px solid #c7c7c7;font-weight:300;font-size:1.3rem;padding:9px;margin-top:6px}.mx_CreateRoom_description{width:330px}.mx_CustomRoomTagPanel{background-color:hsla(0,0%,91%,.77);max-height:40vh}.mx_CustomRoomTagPanel_scroller{max-height:inherit;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CustomRoomTagPanel .mx_AccessibleButton{margin:0 auto;width:40px;padding:10px 0 9px;position:relative}.mx_CustomRoomTagPanel .mx_BaseAvatar_image{-webkit-box-sizing:border-box;box-sizing:border-box;width:40px;height:40px}.mx_CustomRoomTagPanel .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before{content:"";height:56px;background-color:#238cf5;width:5px;position:absolute;left:-9px;border-radius:0 3px 3px 0;top:5px}.mx_FilePanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_FilePanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_FilePanel .mx_RoomView_MessageList{width:100%}.mx_FilePanel .mx_EventTile_avatar,.mx_FilePanel .mx_RoomView_MessageList h2{display:none}.mx_FilePanel .mx_EventTile{word-break:break-word;margin-top:32px}.mx_FilePanel .mx_EventTile .mx_MImageBody{margin-right:0}.mx_FilePanel .mx_EventTile .mx_MFileBody{line-height:2.4rem}.mx_FilePanel .mx_EventTile .mx_MFileBody_download{padding-top:8px;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.4rem;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#747474}.mx_FilePanel .mx_EventTile .mx_MImageBody_size{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;font-size:1.4rem;text-align:right;white-space:nowrap}.mx_FilePanel .mx_EventTile_senderDetails{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:-2px}.mx_FilePanel .mx_EventTile_senderDetailsLink{text-decoration:none}.mx_FilePanel .mx_EventTile .mx_SenderProfile{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;line-height:normal;padding:0;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile .mx_MessageTimestamp{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;text-align:right;visibility:visible;position:static;font-size:1.4rem;opacity:1;color:#acacac}.mx_FilePanel .mx_EventTile_line{margin-right:0;padding-left:0}.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_FilePanel_empty:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_GenericErrorPage{width:100%;height:100%;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GenericErrorPage_box{display:inline;width:500px;min-height:125px;border:1px solid #f22;padding:10px 10px 20px;background-color:#fcc}.mx_GroupFilterPanel{-webkit-box-flex:1;-ms-flex:1;flex:1;background-color:hsla(0,0%,91%,.77);cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:0}.mx_GroupFilterPanel_items_selected{cursor:pointer}.mx_GroupFilterPanel .mx_GroupFilterPanel_divider{height:0;width:90%;border:none;border-bottom:1px solid #8d99a5}.mx_GroupFilterPanel .mx_GroupFilterPanel_scroller{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:100%}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-top:6px}.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer>div{margin:6px 0}.mx_GroupFilterPanel .mx_TagTile{position:relative}.mx_GroupFilterPanel .mx_TagTile .mx_BetaDot{position:absolute;right:-13px;top:-11px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype{padding:3px}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype{background-color:#fff;border-radius:6px}.mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before{background-color:#2e2f32}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon{background-color:rgba(92,100,112,.2);border-radius:48px}.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before{background-color:#5c6470}.mx_TagTile_homeIcon{width:32px;height:32px;position:relative}.mx_TagTile_homeIcon:before{-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:21px;mask-size:21px;content:"";display:inline-block;width:32px;height:32px;position:absolute;top:calc(50% - 16px);left:calc(50% - 16px)}.mx_GroupFilterPanel .mx_TagTile_plus{margin-bottom:12px;height:32px;width:32px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative;display:block!important}.mx_GroupFilterPanel .mx_TagTile_plus:before{background-color:#5c6470;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before{content:"";height:100%;background-color:#0dbd8b;width:4px;position:absolute;left:-12px;border-radius:0 3px 3px 0}.mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_TagTile_tooltip{position:relative;top:-30px;left:5px}.mx_TagTile_context_button{min-width:15px;height:15px;position:absolute;right:-5px;top:-8px;border-radius:8px;background-color:#dbdbdb;color:#000;font-weight:600;font-size:1rem;text-align:center;padding-top:1px;padding-left:4px;padding-right:4px}.mx_TagTile_avatar{position:relative}.mx_TagTile_badge{position:absolute;right:-4px;top:-2px;border-radius:8px;color:#fff;font-weight:600;font-size:1.4rem;padding:0 5px;background-color:#61708b}.mx_TagTile_badgeHighlight{background-color:#ff4b55}.mx_GroupView{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_GroupView_error{margin:auto}.mx_GroupView_header{min-height:52px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:10px;padding-left:19px}.mx_GroupView_header_view{border-bottom:1px solid transparent;padding-bottom:0;padding-right:8px}.mx_GroupView_header_avatar,.mx_GroupView_header_info{display:table-cell;vertical-align:middle}.mx_GroupHeader_button{position:relative;margin-left:5px;margin-right:5px;cursor:pointer;height:20px;width:20px}.mx_GroupHeader_button:before{content:"";position:absolute;height:20px;width:20px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_GroupHeader_editButton:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_GroupHeader_shareButton:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_GroupView_hostingSignup img{margin-left:5px}.mx_GroupView_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_GroupView_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable){color:#0dbd8b;cursor:pointer}.mx_GroupView_avatarPicker{position:relative}.mx_GroupView_avatarPicker_edit{position:absolute;top:50px;left:15px}.mx_GroupView_avatarPicker .mx_Spinner{width:48px;height:48px!important}.mx_GroupView_header_leftCol{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden}.mx_GroupView_header_rightCol{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupView_textButton{display:inline-block}.mx_GroupView_header_groupid{font-weight:400;font-size:medium;padding-left:10px}.mx_GroupView_header_name{vertical-align:middle;width:100%;height:31px;color:#2e2f32;font-weight:700;font-size:2.2rem;padding-right:16px}.mx_GroupView_header_name,.mx_GroupView_header_shortDesc{overflow:hidden;padding-left:19px;text-overflow:ellipsis;border-bottom:1px solid transparent}.mx_GroupView_header_shortDesc{vertical-align:bottom;float:left;max-height:42px;color:#a2a2a2;font-weight:300;font-size:1.3rem;margin-right:16px}.mx_GroupView_avatarPicker_label{cursor:pointer}.mx_GroupView_cancelButton{padding-left:8px}.mx_GroupView_cancelButton img{position:relative;top:5px}.mx_GroupView input[type=radio]{margin:10px 10px 0}.mx_GroupView_label_text{display:inline-block;max-width:80%;vertical-align:.1em;line-height:2em}.mx_GroupView_body{margin:0 24px}.mx_GroupView_body,.mx_GroupView_rooms{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_GroupView_rooms{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView h3{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;margin-bottom:10px}.mx_GroupView_rooms_header .mx_AccessibleButton{padding-left:14px;margin-bottom:14px;height:24px}.mx_GroupView_group{border-top:1px solid transparent}.mx_GroupView_group_disabled{opacity:.3;pointer-events:none}.mx_GroupView_rooms_header_addRow_button{display:inline-block}.mx_GroupView_rooms_header_addRow_button object{pointer-events:none}.mx_GroupView_rooms_header_addRow_label{display:inline-block;vertical-align:top;line-height:2.4rem;padding-left:28px;color:#0dbd8b}.mx_GroupView_rooms .mx_RoomDetailList{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;border-top:1px solid transparent;padding-top:10px;word-break:break-word}.mx_GroupView .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_GroupView_membershipSection{color:#888;margin-top:10px}.mx_GroupView_membershipSubSection{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;display:-webkit-box;display:-ms-flexbox;display:flex;padding-bottom:8px}.mx_GroupView_membershipSubSection .mx_Spinner{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_GroupView_membershipSection_description{line-height:3.4rem}.mx_GroupView_membershipSection_description .mx_BaseAvatar{margin-right:10px}.mx_GroupView_membershipSection .mx_GroupView_textButton{margin-right:0;margin-top:0;margin-left:8px}.mx_GroupView_memberSettings_toggle label{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_GroupView_memberSettings input{margin-right:6px}.mx_GroupView_featuredThings{margin-top:20px}.mx_GroupView_featuredThings_header{font-weight:700;font-size:120%;margin-bottom:20px}.mx_GroupView_featuredThings_category{font-weight:700;font-size:110%;margin-top:10px}.mx_GroupView_featuredThings_container{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_GroupView_featuredThing,.mx_GroupView_featuredThings_addButton{display:table-cell;text-align:center;width:100px;margin:0 20px}.mx_GroupView_featuredThing{position:relative}.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton{position:absolute;top:-7px;right:11px;opacity:.4}.mx_GroupView_featuredThing .mx_BaseAvatar{vertical-align:baseline;vertical-align:initial}.mx_GroupView_featuredThings_addButton object{pointer-events:none}.mx_GroupView_featuredThing_name{word-wrap:break-word}.mx_GroupView_uploadInput{display:none}.mx_GroupView_body .mx_AutoHideScrollbar>*{margin:11px 50px 50px 68px}.mx_GroupView_groupDesc textarea{width:100%;max-width:100%;height:150px}.mx_GroupView_changeDelayWarning,.mx_GroupView_groupDesc_placeholder{background-color:#f7f7f7;color:#888;border-radius:10px;text-align:center;margin:20px 0}.mx_GroupView_groupDesc_placeholder{padding:100px 20px;cursor:pointer}.mx_GroupView_changeDelayWarning{padding:40px 20px}.mx_GroupView .mx_MemberInfo .mx_AutoHideScrollbar>:not(.mx_MemberInfo_avatar){padding-left:16px;padding-right:16px}.mx_HeaderButtons{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_buttons+.mx_HeaderButtons:before{content:unset}.mx_HeaderButtons:before{content:"";background-color:#91a1c0;opacity:.5;margin:6px 8px;border-radius:1px;width:1px}.mx_HomePage{max-width:960px;width:100%;height:100%;margin-left:auto;margin-right:auto}.mx_HomePage_default{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HomePage_default .mx_HomePage_default_wrapper{margin:auto}.mx_HomePage_default img{height:48px}.mx_HomePage_default h1{font-weight:600;font-size:3.2rem;line-height:4.4rem;margin-bottom:4px}.mx_HomePage_default h4{margin-top:4px;font-weight:600;font-size:1.8rem;line-height:2.5rem;color:#61708b}.mx_HomePage_default .mx_MiniAvatarUploader{margin:0 auto}.mx_HomePage_default .mx_HomePage_default_buttons{margin:60px auto 0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton{padding:73px 8px 15px;width:160px;height:132px;margin:20px;position:relative;display:inline-block;border-radius:8px;vertical-align:top;word-break:break-word;-webkit-box-sizing:border-box;box-sizing:border-box;font-weight:600;font-size:1.5rem;line-height:2rem;color:#fff;background-color:#0dbd8b}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before{top:20px;left:60px;width:40px;height:40px;content:"";position:absolute;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_sendDm:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_createGroup:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_LeftPanel{background-color:hsla(0,0%,96.1%,.9);min-width:206px;max-width:50%;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:56px;flex-basis:56px;height:100%;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer,.mx_LeftPanel .mx_LeftPanel_roomListContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanel .mx_LeftPanel_roomListContainer{background-color:hsla(0,0%,96.1%,.9);-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{padding:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer{overflow-y:hidden;overflow-x:scroll;margin:12px 12px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000));mask-image:linear-gradient(90deg,transparent,#000 5%)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,#000,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,#000,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow{-webkit-mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);mask-image:-webkit-gradient(linear,left top,right top,from(transparent),color-stop(5%,#000),color-stop(95%,#000),to(transparent));mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{margin-left:12px;margin-right:12px;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton{-ms-flex-preferred-size:0;flex-basis:0;margin:0;width:0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_focused+.mx_LeftPanel_exploreButton:before,.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_RoomSearch_hasQuery+.mx_LeftPanel_exploreButton:before{content:none}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{width:32px;height:32px;border-radius:8px;background-color:rgba(141,151,165,.2);position:relative;margin-left:8px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton:before{content:"";position:absolute;top:8px;left:8px;width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton.mx_LeftPanel_exploreButton_space:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListFilterCount{font-size:1.3rem;font-weight:600;margin-left:12px;margin-top:14px;margin-bottom:-4px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper{overflow:hidden;margin-top:10px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom{padding-bottom:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop{padding-top:32px}.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_actualRoomListContainer{position:relative;height:100%}.mx_LeftPanel.mx_LeftPanel_minimized{min-width:unset;width:unset!important}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer{width:68px}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer .mx_LeftPanel_exploreButton{margin-left:0;margin-top:8px;background-color:transparent}.mx_LeftPanelWidget{margin-left:8px;margin-bottom:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:24px;color:#8d99a5;margin-top:4px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText .mx_LeftPanelWidget_collapseBtn.mx_LeftPanelWidget_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column;overflow:visible}.mx_LeftPanelWidget .mx_AppTileFullWidth,.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_LeftPanelWidget .mx_AppTileFullWidth{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;overflow:hidden;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle{cursor:ns-resize;border-radius:3px;width:unset!important;height:4px!important;position:absolute;top:-24px!important;left:calc(50% - 32px)!important;right:calc(50% - 32px)!important}.mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton{margin-left:8px;margin-right:7px;position:relative;width:24px;height:24px;border-radius:32px}.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg);background:#61708b}.mx_LeftPanelWidget_maximizeButtonTooltip{margin-top:-3px}.mx_MainSplit{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;min-width:0;min-height:0;height:100%}.mx_MainSplit>.mx_RightPanel_ResizeWrapper{padding:5px;margin-left:8px;height:calc(100vh - 51px)}.mx_MainSplit>.mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle{top:50%!important;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px!important;width:4px!important;border-radius:4px!important;background-color:#2e2f32;opacity:.8}.mx_MatrixChat_splash{position:relative;height:100%}.mx_MatrixChat_splashButtons{text-align:center;width:100%;position:absolute;bottom:30px}.mx_MatrixChat_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%}.mx_MatrixToolbar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;height:40px}.mx_MatrixChat{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_MatrixChat_syncError{color:#fff;background-color:#df2a8b;border-radius:5px;display:table;padding:30px;position:absolute;top:100px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.mx_MatrixChat>:not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle){background-color:#fff;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;height:100%}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover{position:relative}.mx_MatrixChat>.mx_ResizeHandle_horizontal:hover:before{position:absolute;left:6px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:" ";background-color:#2e2f32;opacity:.8}.mx_MyGroups{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MyGroups .mx_BetaCard{margin:0 72px;max-width:760px}.mx_MyGroups .mx_RoomHeader_simpleHeader{margin-left:0}.mx_MyGroups_header{margin-left:2px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_MyGroups>:not(.mx_RoomHeader):not(.mx_BetaCard){max-width:960px;margin:40px}.mx_MyGroups_headerCard{-webkit-box-flex:1;-ms-flex:1 0 50%;flex:1 0 50%;margin-bottom:30px;min-width:400px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:13px;height:40px;width:40px;border-radius:20px;background-color:rgba(92,100,112,.2);position:relative}.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before{background-color:#5c6470;-webkit-mask:url(../../img/icons-create-room.817ede2.svg);mask:url(../../img/icons-create-room.817ede2.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_MyGroups_headerCard_header{font-weight:700;margin-bottom:10px}.mx_MyGroups_headerCard_content{padding-right:15px}.mx_MyGroups_joinBox{visibility:hidden;height:0;margin:0}.mx_MyGroups_content{margin-left:2px;-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_MyGroups_scrollable{overflow-y:inherit}.mx_MyGroups_placeholder{background-color:#f7f7f7;color:#888;line-height:40rem;border-radius:10px;text-align:center}.mx_MyGroups_joinedGroups{border-top:1px solid transparent;overflow-x:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-line-pack:start;align-content:flex-start}.mx_MyGroups_joinedGroups .mx_GroupTile{min-width:300px;max-width:33%;-webkit-box-flex:1;-ms-flex:1 0 300px;flex:1 0 300px;height:75px;margin:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer}.mx_GroupTile_avatar{cursor:-webkit-grab,-webkit-grab;cursor:grab,-webkit-grab}.mx_GroupTile_profile{margin-left:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_GroupTile_profile .mx_GroupTile_desc,.mx_GroupTile_profile .mx_GroupTile_groupId,.mx_GroupTile_profile .mx_GroupTile_name{padding-right:10px}.mx_GroupTile_profile .mx_GroupTile_name{margin:0;font-size:1.5rem}.mx_GroupTile_profile .mx_GroupTile_groupId{font-size:1.3rem;opacity:.7}.mx_GroupTile_profile .mx_GroupTile_desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:1.3rem;max-height:36px;overflow:hidden}.mx_NonUrgentToastContainer{position:absolute;bottom:30px;left:28px;z-index:101}.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast{padding:10px 12px;border-radius:8px;width:320px;font-size:1.3rem;margin-top:8px;background-color:#17191c;color:#fff}.mx_NotificationPanel{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_RoomView_messageListWrapper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationPanel .mx_RoomView_MessageList{width:100%}.mx_NotificationPanel .mx_RoomView_MessageList h2{margin-left:0}.mx_NotificationPanel .mx_EventTile{word-break:break-word;position:relative;padding-bottom:18px}.mx_NotificationPanel .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after{position:absolute;bottom:0;left:0;right:0;background-color:#8d99a5;height:1px;opacity:.4;content:""}.mx_NotificationPanel .mx_EventTile_roomName{font-weight:700;font-size:1.4rem}.mx_NotificationPanel .mx_EventTile_roomName>*{vertical-align:middle}.mx_NotificationPanel .mx_EventTile_roomName>.mx_BaseAvatar{margin-right:8px}.mx_NotificationPanel .mx_EventTile_roomName a{color:#2e2f32}.mx_NotificationPanel .mx_EventTile_avatar{display:none}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp,.mx_NotificationPanel .mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.2rem;display:inline;padding-left:0}.mx_NotificationPanel .mx_EventTile_senderDetails{padding-left:36px;position:relative}.mx_NotificationPanel .mx_EventTile_senderDetails a{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_NotificationPanel .mx_EventTile_roomName a,.mx_NotificationPanel .mx_EventTile_senderDetails a{text-decoration:none!important}.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp{visibility:visible;position:static;display:inline}.mx_NotificationPanel .mx_EventTile_line{margin-right:0;padding:0 0 0 36px}.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line{padding-left:0}.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line{background-color:#fff}.mx_NotificationPanel .mx_EventTile_content{margin-right:0}.mx_NotificationPanel_empty:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RightPanel{overflow-x:hidden;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border-radius:8px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;height:100%}.mx_RightPanel .mx_RoomView_MessageList{padding:14px 18px}.mx_RightPanel_header{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;border-bottom:1px solid transparent;-webkit-box-flex:0;-ms-flex:0 0 52px;flex:0 0 52px}.mx_RightPanel_headerButtonGroup{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#fff;padding:0 9px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RightPanel_headerButton{cursor:pointer;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1px;margin-right:1px;height:32px;width:32px;position:relative;border-radius:100%}.mx_RightPanel_headerButton:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RightPanel_headerButton:hover{background:rgba(13,189,139,.1)}.mx_RightPanel_headerButton:hover:before{background-color:#0dbd8b}.mx_RightPanel_notifsButton:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomSummaryButton:before{-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_groupMembersButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_roomsButton:before{-webkit-mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);mask-image:url(../../img/element-icons/community-rooms.8f0b6c9.svg);-webkit-mask-position:center;mask-position:center}.mx_RightPanel_headerButton_highlight:before{background-color:#0dbd8b!important}.mx_RightPanel_headerButton_badge{font-size:.8rem;border-radius:8px;color:#fff;background-color:#0dbd8b;font-weight:700;position:absolute;top:-4px;left:20px;padding:2px 4px}.mx_RightPanel_collapsebutton{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:right;height:16px;border:none}.mx_RightPanel .mx_GroupRoomList,.mx_RightPanel .mx_MemberInfo,.mx_RightPanel .mx_MemberList,.mx_RightPanel_blank{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RightPanel .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:auto}.mx_RightPanel_empty{margin-right:-28px}.mx_RightPanel_empty h2{font-weight:700;margin:16px 0}.mx_RightPanel_empty h2,.mx_RightPanel_empty p{font-size:1.4rem}.mx_RightPanel_empty:before{content:"";display:block;margin:11px auto 29px;height:42px;width:42px;background-color:#91a1c0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_RightPanel_scopeHeader{margin:24px;text-align:center;font-weight:600;font-size:1.8rem;line-height:2.2rem}.mx_RightPanel_scopeHeader .mx_BaseAvatar{margin-right:8px;vertical-align:middle}.mx_RightPanel_scopeHeader .mx_BaseAvatar_image{border-radius:8px}.mx_RoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_RoomDirectory_dialog{height:100%;flex-direction:column}.mx_RoomDirectory,.mx_RoomDirectory_dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory{margin-bottom:12px;color:#2e2f32;word-break:break-word}.mx_RoomDirectory,.mx_RoomDirectory_list{flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_RoomDirectory_list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column}.mx_RoomDirectory_list .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomDirectory_listheader{display:block;margin-top:13px}.mx_RoomDirectory_searchbox{-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important}.mx_RoomDirectory_listheader .mx_NetworkDropdown{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}.mx_RoomDirectory_tableWrapper{overflow-y:auto;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomDirectory_table{color:#2e2f32;display:grid;font-size:1.2rem;grid-template-columns:-webkit-max-content auto -webkit-max-content -webkit-max-content -webkit-max-content;grid-template-columns:max-content auto max-content max-content max-content;grid-row-gap:24px;row-gap:24px;text-align:left;width:100%}.mx_RoomDirectory_roomAvatar{padding:2px 14px 0 0}.mx_RoomDirectory_roomMemberCount{-ms-flex-item-align:center;align-self:center;color:#747474;padding:3px 10px 0}.mx_RoomDirectory_roomMemberCount:before{background-color:#747474;display:inline-block;vertical-align:text-top;margin-right:2px;content:"";-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:80%;mask-size:80%;width:16px;height:16px}.mx_RoomDirectory_join,.mx_RoomDirectory_preview{-ms-flex-item-align:center;align-self:center;white-space:nowrap}.mx_RoomDirectory_name{display:inline-block;font-size:1.8rem;font-weight:600}.mx_RoomDirectory_perms{display:inline-block}.mx_RoomDirectory_perm{border-radius:10px;display:inline-block;height:20px;line-height:2rem;padding:0 5px;color:#fff;background-color:#aaa}.mx_RoomDirectory_topic{cursor:auto;color:#747474;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.mx_RoomDirectory_alias{font-size:1.2rem;color:#a2a2a2}.mx_RoomDirectory_table tr{padding-bottom:10px;cursor:pointer}.mx_RoomDirectory .mx_RoomView_MessageList{padding:0}.mx_RoomDirectory>span{font-size:1.5rem;margin-top:0}.mx_RoomDirectory>span .mx_AccessibleButton{padding:0}.mx_RoomSearch{-webkit-box-flex:1;-ms-flex:1;flex:1;border-radius:8px;background-color:rgba(141,151,165,.2);border:1px solid transparent;height:28px;padding:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSearch .mx_RoomSearch_icon{width:16px;height:16px;-webkit-mask:url(../../img/element-icons/roomlist/search.3774248.svg);mask:url(../../img/element-icons/roomlist/search.3774248.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-left:7px}.mx_RoomSearch .mx_RoomSearch_input{border:none!important;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important;padding:0;height:100%;width:100%;font-size:1.2rem;line-height:1.6rem}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder{color:#8d99a5!important}.mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder{color:#8d99a5!important}.mx_RoomSearch.mx_RoomSearch_hasQuery{border-color:#737d8c}.mx_RoomSearch.mx_RoomSearch_focused{-webkit-box-shadow:0 0 4px 4px rgba(0,132,255,.5);box-shadow:0 0 4px 4px rgba(0,132,255,.5);border-color:transparent}.mx_RoomSearch.mx_RoomSearch_focused,.mx_RoomSearch.mx_RoomSearch_hasQuery{background-color:#fff}.mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton,.mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton{width:16px;height:16px;-webkit-mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);mask-image:url(../../img/element-icons/roomlist/search-clear.6164d97.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#737d8c;margin-right:8px}.mx_RoomSearch .mx_RoomSearch_clearButton{width:0;height:0}.mx_RoomSearch.mx_RoomSearch_minimized{border-radius:32px;height:auto;width:auto;padding:8px}.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon{margin-left:0}.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){margin-left:65px;min-height:50px}.mx_RoomStatusBar_typingIndicatorAvatars{width:52px;margin-top:-1px;text-align:left}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image{margin-right:-12px;border:1px solid #fff}.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial{padding-left:1px;padding-top:1px}.mx_RoomStatusBar_typingIndicatorRemaining{display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center;position:absolute}.mx_RoomStatusBar_scrollDownIndicator{cursor:pointer;padding-left:1px}.mx_RoomStatusBar_unreadMessagesBar{padding-top:10px;color:#ff4b55;cursor:pointer}.mx_RoomStatusBar_connectionLostBar{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:19px;min-height:58px}.mx_RoomStatusBar_unsentMessages>div[role=alert]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:70px;margin:12px;padding-left:16px;background-color:#f3f8fd;border-radius:4px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge{margin-right:12px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge{width:24px!important;height:24px!important;border-radius:24px!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge .mx_NotificationBadge_count{font-size:1.6rem!important}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle{color:#ff4b55;font-size:1.5rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription{font-size:1.2rem}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:right;margin-right:22px;color:#61708b}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton{padding:5px 10px 5px 28px;display:inline-block;position:relative}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:nth-child(2){border-left:1px solid #e3e8f0}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:before{content:"";position:absolute;left:10px;background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);width:12px;height:16px;top:calc(50% - 8px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn{padding-left:34px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;top:calc(50% - 9px)}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner{vertical-align:middle;margin-right:5px;top:1px}.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner+span{margin-right:10px}.mx_RoomStatusBar_connectionLostBar img{padding-left:10px;padding-right:10px;vertical-align:middle;float:left}.mx_RoomStatusBar_connectionLostBar_title{color:#ff4b55}.mx_RoomStatusBar_connectionLostBar_desc{color:#2e2f32;font-size:1.3rem;opacity:.5;padding-bottom:20px}.mx_RoomStatusBar_resend_link{color:#2e2f32!important;text-decoration:underline!important;cursor:pointer}.mx_RoomStatusBar_typingBar{height:50px;line-height:5rem;color:#2e2f32;opacity:.5;overflow-y:hidden;display:block}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages){min-height:40px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator{margin-top:10px}.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar{height:40px;line-height:4rem}.mx_RoomView{word-wrap:break-word;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@-webkit-keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}@keyframes mx_RoomView_fileDropTarget_animation{0%{opacity:0}to{opacity:.95}}.mx_RoomView_fileDropTarget{min-width:0;width:100%;height:100%;font-size:1.8rem;text-align:center;pointer-events:none;background-color:#fff;opacity:.95;position:absolute;z-index:3000;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-animation:mx_RoomView_fileDropTarget_animation;animation:mx_RoomView_fileDropTarget_animation;-webkit-animation-duration:.5s;animation-duration:.5s}@-webkit-keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}@keyframes mx_RoomView_fileDropTarget_image_animation{0%{width:0}to{width:32px}}.mx_RoomView_fileDropTarget_image{-webkit-animation:mx_RoomView_fileDropTarget_image_animation;animation:mx_RoomView_fileDropTarget_image_animation;-webkit-animation-duration:.5s;animation-duration:.5s;margin-bottom:16px}.mx_RoomView_auxPanel{min-width:0;width:100%;margin:0 auto;overflow:auto;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomView_auxPanel_fullHeight{position:absolute;top:0;bottom:0;left:0;right:0;z-index:3000;background-color:#fff}.mx_RoomView_auxPanel_hiddenHighlights{border-bottom:1px solid transparent;padding:10px 26px;color:#ff4b55;cursor:pointer}.mx_RoomView_auxPanel_apps{max-width:1920px!important}.mx_RoomView .mx_MainSplit,.mx_RoomView_messagePanel{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_RoomView_messagePanel{width:100%;overflow-y:auto;overflow-anchor:none}.mx_RoomView_messagePanelSearchSpinner{-webkit-box-flex:1;-ms-flex:1;flex:1;background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-position:center 367px;background-size:25px;background-repeat:no-repeat;position:relative}.mx_RoomView_messagePanelSearchSpinner:before{background-color:#888;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:50px;mask-size:50px;content:"";position:absolute;top:286px;left:0;right:0;height:50px}.mx_RoomView_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_RoomView_body .mx_RoomView_messagePanel,.mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner,.mx_RoomView_body .mx_RoomView_messagePanelSpinner{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_RoomView_body .mx_RoomView_timeline{position:relative;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomView_statusArea{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;max-height:0;background-color:#fff;z-index:1000;overflow:hidden;-webkit-transition:all .2s ease-out;transition:all .2s ease-out}.mx_RoomView_statusArea_expanded{max-height:100px}.mx_RoomView_statusAreaBox{margin:auto;min-height:50px}.mx_RoomView_statusAreaBox_line{margin-left:65px;border-top:1px solid transparent;height:1px}.mx_RoomView_messageListWrapper{min-height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_RoomView_searchResultsPanel a{text-decoration:none;color:inherit}.mx_RoomView_empty{font-size:1.3rem;padding:0 24px;margin-right:30px;text-align:center;margin-bottom:80px}.mx_RoomView_MessageList{list-style-type:none;padding:18px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_RoomView_MessageList li{clear:both}li.mx_RoomView_myReadMarker_container{height:0;margin:0;padding:0;border:0}hr.mx_RoomView_myReadMarker{border-top:1px solid #0dbd8b;border-bottom:1px solid #0dbd8b;margin-top:0;position:relative;top:-1px;z-index:1;-webkit-transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;transition:width easeinsine .4s 1s,opacity easeinsine .4s 1s;width:99%;opacity:1}.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner{background-color:#fff}.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename{color:#fff;opacity:1}.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line{margin-top:2px;border:none;height:0}.mx_RoomView_inCall .mx_MessageComposer_wrapper{border-top:2px hidden;padding-top:1px}.mx_RoomView_voipChevron{position:absolute;bottom:-11px;right:11px}.mx_RoomView_voipButton{float:right;margin-right:13px;margin-top:13px;cursor:pointer}.mx_RoomView_voipButton object{pointer-events:none}.mx_RoomView .mx_MessageComposer{width:100%;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-right:2px}.mx_RoomView_ongoingConfCallNotification{width:100%;text-align:center;background-color:#ff4b55;color:#fff;font-weight:700;padding:6px 0;cursor:pointer}.mx_RoomView_ongoingConfCallNotification a{color:#fff!important}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox{min-height:42px}.mx_ScrollPanel .mx_RoomView_MessageList{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_SearchBox{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0}.mx_SearchBox.mx_SearchBox_blurred:not(:hover){background-color:transparent}.mx_SearchBox .mx_SearchBox_closeButton{cursor:pointer;background-image:url(../../img/icons-close.11ff07c.svg);background-repeat:no-repeat;width:16px;height:16px;background-position:50%;padding:9px}.mx_SpacePanel{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;background-color:hsla(0,0%,91%,.77);padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:8px 8px 16px 0}.mx_SpacePanel .mx_SpacePanel_toggleCollapse{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:40px;height:40px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:32px;mask-size:32px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;margin-left:16px;margin-bottom:12px;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg);mask-image:url(../../img/element-icons/expand-space-panel.e6f74b9.svg)}.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.mx_SpacePanel ul{margin:0;list-style:none;padding:0}.mx_SpacePanel ul>.mx_SpaceItem{padding-left:16px}.mx_SpacePanel .mx_SpaceButton_toggleCollapse{cursor:pointer}.mx_SpacePanel .mx_SpaceTreeLevel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:250px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_SpacePanel .mx_SpaceItem{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow{-ms-flex-item-align:baseline;align-self:baseline}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceButton>.mx_SpaceButton_toggleCollapse{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_SpacePanel .mx_SpaceItem.collapsed>.mx_SpaceTreeLevel{display:none}.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces)>.mx_SpaceButton{margin-left:16px;min-width:40px}.mx_SpacePanel .mx_SpaceButton{border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 4px 4px 0;width:100%}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow .mx_SpaceButton_selectionWrapper{padding:1px;border:3px solid #737d8c}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:12px;padding:4px}.mx_SpacePanel .mx_SpaceButton:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper{width:100%;padding-right:16px;overflow:hidden}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-left:8px;white-space:nowrap;display:block;text-overflow:ellipsis;overflow:hidden;padding-right:8px;font-size:1.4rem;line-height:1.8rem}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse{width:16px;height:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon{width:32px;min-width:32px;height:32px;border-radius:8px;position:relative}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before{position:absolute;content:"";width:32px;height:32px;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:18px;mask-size:18px}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon{background-color:#fff}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before{background-color:#3f3d3d;-webkit-mask-image:url(../../img/element-icons/home.b706c0e.svg);mask-image:url(../../img/element-icons/home.b706c0e.svg)}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon{background-color:#0dbd8b;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before{background-color:#fff;-webkit-mask-image:url(../../img/element-icons/plus.62cc275.svg);mask-image:url(../../img/element-icons/plus.62cc275.svg);-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon{background-color:#c1c6cd}.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image{border-radius:8px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;display:none;position:absolute;right:4px}.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);background:#2e2f32}.mx_SpacePanel .mx_SpacePanel_badgeContainer{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge{margin:0 2px}.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 7px}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer{right:0;top:0}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge{background-clip:padding-box}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot{margin:0 -1px 0 0;border:3px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_2char,.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge_3char{margin:-5px -5px 0 0;border:2px solid hsla(0,0%,91%,.77)}.mx_SpacePanel.collapsed .mx_SpaceButton.mx_SpaceButton_active .mx_SpacePanel_badgeContainer{right:-3px;top:-3px}.mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer{position:absolute;right:4px}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer{width:0;height:0;display:none}.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton,.mx_SpacePanel:not(.collapsed) .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton{display:block}.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton,.mx_SpacePanel>.mx_AutoHideScrollbar>.mx_SpaceButton.mx_SpaceButton_active:before{height:32px}.mx_SpacePanel>.mx_AutoHideScrollbar>ul{padding-left:0}.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header{margin:12px 16px;font-weight:600;font-size:1.5rem;line-height:1.8rem}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton{color:#0dbd8b}.mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton .mx_SpacePanel_iconInvite:before{background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_SpacePanel_sharePublicSpace{margin:0}.mx_SpaceRoomDirectory_dialogWrapper>.mx_Dialog{max-width:960px;height:100%}.mx_SpaceRoomDirectory{height:100%;margin-bottom:12px;color:#2e2f32;word-break:break-word;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_SpaceRoomDirectory,.mx_SpaceRoomDirectory .mx_Dialog_title,.mx_SpaceRoomView_landing .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar{margin-right:12px;-ms-flex-item-align:center;align-self:center}.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image,.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory .mx_Dialog_title>div>h1,.mx_SpaceRoomView_landing .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_SpaceRoomDirectory .mx_Dialog_title>div>div,.mx_SpaceRoomView_landing .mx_Dialog_title>div>div{font-weight:400;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link,.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link{padding:0}.mx_SpaceRoomDirectory .mx_SearchBox,.mx_SpaceRoomView_landing .mx_SearchBox{margin:24px 0 16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults{text-align:center}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults>div,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults>div{font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:32px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton{padding:4px 12px;font-weight:400}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton+.mx_AccessibleButton{margin-left:16px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_primary_outline{padding:3px 12px}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader>span,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader>span{margin-left:auto}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error{position:relative;font-weight:600;color:#ff4b55;font-size:1.5rem;line-height:1.8rem;margin:20px auto 12px;padding-left:24px;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before,.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before{content:"";position:absolute;height:16px;width:16px;left:0;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_SpaceRoomDirectory_list{margin-top:16px;padding-bottom:40px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>h3{display:inline;font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount>span{margin-left:8px;font-size:1.5rem;line-height:2.4rem;color:#737d8c}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace .mx_BaseAvatar_image{border-radius:8px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle{position:absolute;left:-1px;top:10px;height:16px;width:16px;border-radius:4px;background-color:#fff}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before{content:"";position:absolute;top:0;left:0;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-size:16px;mask-size:16px;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before{-webkit-transform:rotate(0deg);transform:rotate(0deg)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children{position:relative;padding-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile{position:relative;padding:8px 16px;border-radius:8px;min-height:56px;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:20px auto -webkit-max-content;grid-template-columns:20px auto max-content;grid-column-gap:8px;grid-row-gap:6px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar{grid-row:1;grid-column:1}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name{font-weight:600;font-size:1.5rem;line-height:1.8rem;grid-row:1;grid-column:2}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip{display:inline;margin-left:12px;color:#8d99a5;font-size:1.2rem;line-height:1.5rem}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon{margin-right:4px;position:relative;vertical-align:text-top}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name .mx_InfoTooltip .mx_InfoTooltip_icon:before{position:absolute;top:0;left:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_info{font-size:1.4rem;line-height:1.8rem;color:#737d8c;grid-row:2;grid-column:1/3;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions{text-align:right;margin-left:20px;grid-column:3;grid-row:1/3}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton{line-height:2.4rem;padding:4px 16px;display:inline-block;visibility:hidden}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_danger_outline,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_AccessibleButton_kind_primary_outline{padding:3px 16px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions .mx_Checkbox{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;margin-left:12px}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover{background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover .mx_AccessibleButton{visibility:visible}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before,.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before{content:"";position:absolute;background-color:hsla(0,0%,91%,.77);width:1px;height:100%;left:6px;top:0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_actions .mx_SpaceRoomDirectory_actionsText{font-weight:400;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_SpaceRoomDirectory_list>hr{border:none;height:1px;background-color:rgba(141,151,165,.2);margin:20px 0}.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom{display:block;margin:16px auto 0;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child{padding:80px 60px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-height:100%;overflow-y:auto}.mx_SpaceRoomView .mx_MainSplit>div:first-child h1{margin:0;font-size:2.4rem;font-weight:600;color:#2e2f32;width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_description{font-size:1.5rem;color:#737d8c;margin-top:12px;margin-bottom:24px;max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AddExistingToSpace .mx_AddExistingToSpace_content{height:calc(100vh - 360px);max-height:400px}.mx_SpaceRoomView .mx_MainSplit>div:first-child:not(.mx_SpaceRoomView_landing) .mx_SpaceFeedbackPrompt{width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons{display:block;margin-top:44px;width:428px;text-align:right}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons .mx_AccessibleButton_hasKind{padding:8px 22px;margin-left:16px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_buttons input.mx_AccessibleButton{border:none}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field{max-width:428px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_Field+.mx_Field{margin-top:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_SpaceRoomView_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceRoomView .mx_MainSplit>div:first-child .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceRoomView .mx_SpaceRoomView_preview{padding:32px 24px!important;margin:auto;max-width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:2px 15px 30px rgba(0,0,0,.48);box-shadow:2px 15px 30px rgba(0,0,0,.48);border-radius:8px;position:relative}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill{position:absolute;right:24px;top:32px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt{font-weight:600;font-size:1.4rem;line-height:2.4rem;color:#2e2f32;margin-top:24px;position:relative;padding-left:24px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt .mx_AccessibleButton_kind_link{display:inline;padding:0;font-size:inherit;line-height:inherit}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt:before{content:"";position:absolute;height:2.4rem;width:20px;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);background-color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;font-size:1.5rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div{margin-left:8px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_name{line-height:1.8rem}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter>div .mx_SpaceRoomView_preview_inviter_mxid{line-height:2.4rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_preview>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name{margin:20px 0!important}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic{font-size:1.4rem;line-height:2.2rem;color:#737d8c;margin:20px 0;max-height:160px;overflow-y:auto}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons{margin-top:20px}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton{width:200px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:14px 0}.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar>.mx_BaseAvatar_image,.mx_SpaceRoomView .mx_SpaceRoomView_landing>.mx_BaseAvatar_image{border-radius:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name{margin:24px 0 16px;font-size:1.5rem;color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name>span{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow{margin-top:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow>h1{display:inline-block}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_inviter .mx_BaseAvatar{margin-right:4px;vertical-align:middle}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_info{display:inline-block;margin:0 auto 0 0}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile{display:inline-block;margin-right:12px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_FacePile .mx_FacePile_faces{cursor:pointer}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton{position:relative;padding:4px 18px 4px 40px;line-height:2.4rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_inviteButton:before{position:absolute;content:"";left:8px;height:16px;width:16px;background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton{position:relative;margin-left:16px;width:24px;height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info .mx_SpaceRoomView_landing_settingsButton:before{position:absolute;content:"";left:0;top:0;height:24px;width:24px;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic{font-size:1.5rem;margin-top:12px;margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing>hr{border:none;height:1px;background-color:hsla(0,0%,91%,.77)}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox{margin:0 0 20px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt{margin-bottom:16px}.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt+hr{display:none}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton>span{color:#737d8c}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope>.mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_justMeButton:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before{-webkit-mask-image:url(../../img/element-icons/community-members.cbb31c1.svg);mask-image:url(../../img/element-icons/community-members.cbb31c1.svg)}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer{padding:58px 16px 16px;position:relative;border-radius:8px;background-color:#f3f8fd;max-width:428px;margin:20px 0 30px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer .mx_BetaCard_betaPill{position:absolute;left:16px;top:16px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons{color:#737d8c;margin-top:28px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton{position:relative;display:inline-block;padding-left:32px;line-height:24px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton:before{content:"";position:absolute;height:24px;width:24px;top:0;left:0;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:32px}.mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons .mx_SpaceRoomView_inviteTeammates_inviteDialogButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_SpaceRoomView_info{color:#737d8c;font-size:1.5rem;line-height:2.4rem;margin:20px 0}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public{padding-left:20px;position:relative}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before,.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{position:absolute;content:"";width:20px;height:20px;top:0;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before{-webkit-mask-size:12px;mask-size:12px;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before{-webkit-mask-size:14px;mask-size:14px;-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link{color:inherit;position:relative;padding-left:16px}.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before{content:"·";position:absolute;left:6px}.mx_SpaceFeedbackPrompt{margin-top:18px;margin-bottom:12px}.mx_SpaceFeedbackPrompt>hr{border:none;border-top:1px solid #e7e7e7;margin-bottom:12px}.mx_SpaceFeedbackPrompt>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;font-size:1.5rem;line-height:2.4rem}.mx_SpaceFeedbackPrompt>div>span{color:#737d8c;position:relative;padding-left:32px;font-size:inherit;line-height:inherit;margin-right:auto}.mx_SpaceFeedbackPrompt>div>span:before{content:"";position:absolute;left:0;top:2px;height:20px;width:20px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link{color:#0dbd8b;position:relative;padding:0 0 0 24px;margin-left:8px;font-size:inherit;line-height:inherit}.mx_SpaceFeedbackPrompt>div .mx_AccessibleButton_kind_link:before{content:"";position:absolute;left:0;height:16px;width:16px;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);-webkit-mask-position:center;mask-position:center}.mx_TabbedView{padding:0 0 0 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:absolute;top:0;bottom:0;left:0;right:0;margin:8px 0 0}.mx_TabbedView_tabLabels{width:170px;max-width:170px;color:#45474a;position:fixed}.mx_TabbedView_tabLabel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:text-top;cursor:pointer;padding:8px 0;border-radius:8px;font-size:1.3rem;position:relative}.mx_TabbedView_tabLabel_active{background-color:#0dbd8b;color:#fff}.mx_TabbedView_maskedIcon{margin-left:8px;margin-right:16px;width:16px;height:16px;display:inline-block}.mx_TabbedView_maskedIcon:before{display:inline-block;background-color:#454545;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;width:16px;height:16px;-webkit-mask-position:center;mask-position:center;content:""}.mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon:before{background-color:#fff}.mx_TabbedView_tabLabel_text{vertical-align:middle}.mx_TabbedView_tabPanel{margin-left:240px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_TabbedView_tabPanel,.mx_TabbedView_tabPanelContent{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-height:0}.mx_TabbedView_tabPanelContent{overflow:auto}.mx_ToastContainer{position:absolute;top:0;left:70px;z-index:101;padding:4px;display:grid;grid-template-rows:1fr 14px 6px}.mx_ToastContainer.mx_ToastContainer_stacked:before{content:"";margin:0 4px;grid-row:2/4}.mx_ToastContainer .mx_Toast_toast,.mx_ToastContainer.mx_ToastContainer_stacked:before{grid-column:1;background-color:#f2f5f8;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.5);box-shadow:0 4px 20px rgba(0,0,0,.5);border-radius:8px}.mx_ToastContainer .mx_Toast_toast{grid-row:1/3;color:#2e2f32;overflow:hidden;display:grid;grid-template-columns:22px 1fr;grid-column-gap:8px;-webkit-column-gap:8px;-moz-column-gap:8px;column-gap:8px;grid-row-gap:4px;row-gap:4px;padding:8px}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before{content:"";width:22px;height:22px;grid-column:1;grid-row:1;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-size:100%;background-repeat:no-repeat}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);background-color:#2e2f32}.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body,.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title{grid-column:2}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon){padding-left:12px}.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title{grid-column:1/-1}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description,.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{padding-right:8px}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2{grid-column:1/3;grid-row:1;margin:0;font-size:1.5rem;font-weight:600;display:inline;width:auto;vertical-align:middle}.mx_ToastContainer .mx_Toast_toast .mx_Toast_title span{padding-left:8px;float:right;font-size:1.2rem;line-height:2.2rem;color:#61708b}.mx_ToastContainer .mx_Toast_toast .mx_Toast_body{grid-column:1/3;grid-row:2}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons{float:right;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_FormButton{min-width:96px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description{max-width:272px;overflow:hidden;text-overflow:ellipsis;margin:4px 0 11px;font-size:1.2rem}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description .mx_AccessibleButton_kind_link{font-size:inherit;padding:0}.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a{text-decoration:none}.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail{color:#737d8c}.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID{font-size:1rem}.mx_UploadBar{padding-left:65px;position:relative}.mx_UploadBar .mx_ProgressBar{width:calc(100% - 40px)}.mx_UploadBar_filename{margin-top:5px;color:#61708b;position:relative;padding-left:22px;font-size:1.5rem;vertical-align:middle}.mx_UploadBar_filename:before{content:"";height:18px;width:18px;left:0;-webkit-mask-image:url(../../img/element-icons/upload.e2a53e0.svg);mask-image:url(../../img/element-icons/upload.e2a53e0.svg)}.mx_UploadBar_cancel,.mx_UploadBar_filename:before{position:absolute;top:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#61708b}.mx_UploadBar_cancel{right:0;height:16px;width:16px;margin-right:16px;-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg)}.mx_UserMenu{padding-right:6px}.mx_UserMenu.mx_UserMenu_prototype{margin-bottom:6px;padding-right:0}.mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons{margin-right:2px}.mx_UserMenu.mx_UserMenu_prototype:after{content:"";border-bottom:1px solid #2e2f32;opacity:.2;display:block;padding-top:8px}.mx_UserMenu .mx_UserMenu_headerButtons{width:16px;height:16px;position:relative;display:block}.mx_UserMenu .mx_UserMenu_headerButtons:before{content:"";width:16px;height:16px;position:absolute;top:0;left:0;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_UserMenu .mx_UserMenu_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer{position:relative;margin-right:8px;height:32px;padding:3px 0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer .mx_UserMenu_userAvatar{border-radius:32px;-o-object-fit:cover;object-fit:cover}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName,.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName{display:block}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName{color:#61708b;font-size:1.3rem;line-height:1.8rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName{font-weight:600;font-size:1.5rem;line-height:2rem;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd{width:24px;height:24px;margin-right:8px;position:relative}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before{content:"";position:absolute;width:24px;height:24px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_UserMenu.mx_UserMenu_minimized{padding-right:0}.mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer{margin-right:0}.mx_UserMenu_contextMenu{width:258px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype{padding-bottom:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header{padding-bottom:0;padding-top:16px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header:nth-child(n+2){padding-top:8px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr{width:85%;opacity:.2;border:none;border-bottom:1px solid #2e2f32}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList{margin-top:4px}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList:before{border:none}.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu>.mx_IconizedContextMenu_optionList>.mx_AccessibleButton{padding-top:2px;padding-bottom:2px}.mx_UserMenu_contextMenu.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{padding-top:16px;padding-bottom:16px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header{padding:20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:calc(100% - 40px)}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name *{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_displayName{font-weight:700;font-size:1.5rem;line-height:2rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name .mx_UserMenu_contextMenu_userId{font-size:1.5rem;line-height:2.4rem}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_themeButton{min-width:32px;max-width:32px;width:32px;height:32px;margin-left:8px;border-radius:32px;background-color:#e3e8f0;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts,.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink{padding-top:0}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts{display:inline-block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span{font-weight:600;display:block}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts>span+span{margin-top:8px}.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts .mx_AccessibleButton_kind_link{font-weight:400;font-size:inherit;padding:0}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon{width:16px;height:16px;display:block}.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;display:block;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before{-webkit-mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg);mask-image:url(../../img/element-icons/roomlist/home.1b4edd5.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before{-webkit-mask-image:url(../../img/element-icons/brands/element.182040d.svg);mask-image:url(../../img/element-icons/brands/element.182040d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before{-webkit-mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg);mask-image:url(../../img/element-icons/roomlist/archived.226584d.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before{-webkit-mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg);mask-image:url(../../img/element-icons/roomlist/feedback.b9a3f53.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_ViewSource_separator{clear:both;border-bottom:1px solid #e5e5e5;padding-top:.7em;padding-bottom:.7em}.mx_ViewSource_heading{font-size:1.7rem;font-weight:400;color:#2e2f32;margin-top:.7em}.mx_ViewSource pre{text-align:left;font-size:1.2rem;padding:.5em 1em;word-wrap:break-word;white-space:pre-wrap}.mx_ViewSource_details{margin-top:.8em}.mx_CompleteSecurity_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CompleteSecurity_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_CompleteSecurity_heroIcon{width:128px;height:128px;position:relative;margin:0 auto}.mx_CompleteSecurity_body{font-size:1.5rem}.mx_CompleteSecurity_waiting{color:#8d99a5}.mx_CompleteSecurity_actionRow{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:2.8rem}.mx_CompleteSecurity_actionRow .mx_AccessibleButton{-webkit-margin-start:18px;margin-inline-start:18px}.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning{color:#ff4b55}.mx_Login_submit{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;width:100%;margin-top:24px;margin-bottom:24px;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center}.mx_Login_submit:disabled{opacity:.3;cursor:default}.mx_Login_loader{display:inline;position:relative;top:2px;left:8px}.mx_Login_loader .mx_Spinner{display:inline}.mx_Login_loader .mx_Spinner img{width:16px;height:16px}.mx_Login_error{color:#ff4b55;font-weight:700;text-align:center;margin-top:12px;margin-bottom:12px}.mx_Login_error.mx_Login_serverError{text-align:left;font-weight:400}.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal{color:#ff8d13}.mx_Login_type_container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#232f32}.mx_Login_type_container .mx_Field{margin:0}.mx_Login_type_label{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Login_underlinedServerName{width:-webkit-max-content;width:-moz-max-content;width:max-content;border-bottom:1px dashed #0dbd8b}div.mx_AccessibleButton_kind_link.mx_Login_forgot{display:block;margin:0 auto;font-size:inherit;padding:0}div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_AuthBody{width:500px;font-size:1.2rem;color:#61708b;background-color:#fff;border-radius:0 4px 4px 0;padding:25px 60px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody h2{font-size:2.4rem;font-weight:600;margin-top:8px;color:#232f32}.mx_AuthBody h3{font-size:1.4rem;font-weight:600;color:#61708b}.mx_AuthBody h3.mx_AuthBody_centered{text-align:center}.mx_AuthBody a:hover,.mx_AuthBody a:link,.mx_AuthBody a:visited{color:#0dbd8b;text-decoration:none}.mx_AuthBody input[type=password],.mx_AuthBody input[type=text]{color:#232f32}.mx_AuthBody .mx_Field input,.mx_AuthBody .mx_Field select{color:#232f32;background-color:#fff}.mx_AuthBody .mx_Field label{color:#232f32}.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown)+label,.mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown)+label{background-color:#fff}.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder)+label,.mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder)+label{background-color:#fff}.mx_AuthBody .mx_Field_labelAlwaysTopLeft label,.mx_AuthBody .mx_Field input:focus+label,.mx_AuthBody .mx_Field input:not(:placeholder-shown)+label,.mx_AuthBody .mx_Field select+label,.mx_AuthBody .mx_Field textarea:focus+label,.mx_AuthBody .mx_Field textarea:not(:placeholder-shown)+label{background-color:#fff}.mx_AuthBody input.error{color:#ff4b55}.mx_AuthBody .mx_Field input{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AuthBody .mx_Field_select:before{background-color:#232f32}.mx_AuthBody .mx_Dropdown{color:#232f32}.mx_AuthBody .mx_Dropdown_arrow{background:#232f32}.mx_AuthBody .mx_Dropdown_menu{background-color:#fff}.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_AuthBody_fieldRow{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:10px}.mx_AuthBody_fieldRow>.mx_Field{margin:0 5px}.mx_AuthBody_fieldRow>.mx_Field:first-child{margin-left:0}.mx_AuthBody_fieldRow>.mx_Field:last-child{margin-right:0}.mx_AuthBody_paddedFooter{height:80px;padding-top:28px;text-align:center}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title{margin-top:16px;font-size:1.5rem;line-height:2.4rem}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title .mx_InlineSpinner img{vertical-align:sub;margin-right:5px}.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle{margin-top:8px;font-size:1rem;line-height:1.4rem}.mx_AuthBody_changeFlow{display:block;text-align:center;width:100%}.mx_AuthBody_changeFlow>a{font-weight:600}.mx_SSOButtons+.mx_AuthBody_changeFlow{margin-top:24px}.mx_AuthBody_spinner{margin:1em 0}@media only screen and (max-width:480px){.mx_AuthBody{border-radius:4px;width:auto;max-width:500px;padding:10px}}.mx_AuthButtons{min-height:24px;height:unset!important;padding-top:13px!important;padding-bottom:14px!important;-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_AuthButtons_loginButton_wrapper{text-align:center;width:100%}.mx_AuthButtons_loginButton,.mx_AuthButtons_registerButton{margin-top:3px;height:40px;border:0;border-radius:40px;margin-left:4px;margin-right:4px;min-width:80px;background-color:#0dbd8b;color:#fff;cursor:pointer;font-size:1.5rem;padding:0 11px;word-break:break-word}.mx_AuthFooter{text-align:center;width:100%;font-size:1.4rem;opacity:.72;padding:20px 0;background:-webkit-gradient(linear,left top,left bottom,from(transparent),to(rgba(0,0,0,.8)));background:linear-gradient(transparent,rgba(0,0,0,.8))}.mx_AuthFooter a:hover,.mx_AuthFooter a:link,.mx_AuthFooter a:visited{color:#fff;margin:0 22px}.mx_AuthHeader{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:206px;padding:25px;-webkit-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:480px){.mx_AuthHeader{display:none}}.mx_AuthHeaderLogo{margin-top:15px;-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 25px}.mx_AuthHeaderLogo img{width:100%}@media only screen and (max-width:480px){.mx_AuthHeaderLogo{display:none}}.mx_AuthPage{width:100%;min-height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;background-color:#2e3649}.mx_AuthPage,.mx_AuthPage_modal{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AuthPage_modal{margin:100px auto auto;border-radius:4px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.33);box-shadow:0 2px 4px 0 rgba(0,0,0,.33);background-color:hsla(0,0%,96.1%,.9)}@media only screen and (max-width:480px){.mx_AuthPage_modal{margin-top:0}}.mx_CompleteSecurityBody{width:600px;color:#232f32;background-color:#fff;border-radius:4px;padding:20px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_CompleteSecurityBody h2{font-size:2.4rem;font-weight:600;margin-top:0}.mx_CompleteSecurityBody h3{font-size:1.4rem;font-weight:600}.mx_CompleteSecurityBody a:hover,.mx_CompleteSecurityBody a:link,.mx_CompleteSecurityBody a:visited{color:#0dbd8b;text-decoration:none}.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option{padding:0 3px}.mx_CountryDropdown .mx_Dropdown_arrow{padding-right:3px}.mx_CountryDropdown_shortOption{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;height:100%}.mx_CountryDropdown_option,.mx_CountryDropdown_shortOption{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CountryDropdown_option{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_InteractiveAuthEntryComponents_emailWrapper{padding-right:100px;position:relative;margin-top:32px;margin-bottom:32px}.mx_InteractiveAuthEntryComponents_emailWrapper:after,.mx_InteractiveAuthEntryComponents_emailWrapper:before{position:absolute;width:116px;height:116px;content:"";right:-10px}.mx_InteractiveAuthEntryComponents_emailWrapper:before{background-color:rgba(244,246,250,.91);border-radius:50%;top:-20px}.mx_InteractiveAuthEntryComponents_emailWrapper:after{background-image:url(../../img/element-icons/email-prompt.1d04dfe.svg);background-repeat:no-repeat;background-position:50%;background-size:contain;top:-25px}.mx_InteractiveAuthEntryComponents_msisdnWrapper{text-align:center}.mx_InteractiveAuthEntryComponents_msisdnEntry{font-size:200%;font-weight:700;border:1px solid #c7c7c7;border-radius:3px;width:6em}.mx_InteractiveAuthEntryComponents_msisdnEntry:focus{border:1px solid #0dbd8b}.mx_InteractiveAuthEntryComponents_msisdnSubmit{margin-top:4px;margin-bottom:5px}.mx_InteractiveAuthEntryComponents_termsSubmit{margin-top:20px;margin-bottom:5px;display:block;width:100%}.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled{background-color:#747474;cursor:default}.mx_InteractiveAuthEntryComponents_termsSubmit:disabled{background-color:#92caad;cursor:default}.mx_InteractiveAuthEntryComponents_termsPolicy{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_InteractiveAuthEntryComponents_passwordSection{width:300px}.mx_InteractiveAuthEntryComponents_sso_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:20px}.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton{margin-left:5px}.mx_AuthBody_language{width:100%}.mx_AuthBody_language .mx_Dropdown_input{border:none;font-size:1.4rem;font-weight:600;color:#4e5054;width:auto}.mx_AuthBody_language .mx_Dropdown_arrow{background:#4e5054}progress.mx_PassphraseField_progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;border:0;height:4px;position:absolute;top:-12px;border-radius:"2px"}progress.mx_PassphraseField_progress::-moz-progress-bar{border-radius:"2px"}progress.mx_PassphraseField_progress::-webkit-progress-bar,progress.mx_PassphraseField_progress::-webkit-progress-value{border-radius:"2px"}progress.mx_PassphraseField_progress{color:#ff4b55}progress.mx_PassphraseField_progress::-moz-progress-bar{background-color:#ff4b55}progress.mx_PassphraseField_progress::-webkit-progress-value{background-color:#ff4b55}progress.mx_PassphraseField_progress[value="2"],progress.mx_PassphraseField_progress[value="3"]{color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar,progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar{background-color:#ff812d}progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value,progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value{background-color:#ff812d}progress.mx_PassphraseField_progress[value="4"]{color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar{background-color:#0dbd8b}progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value{background-color:#0dbd8b}.mx_Welcome{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount{display:none}.mx_Welcome .mx_AuthBody_language{width:160px;margin-bottom:10px}.mx_BaseAvatar{position:relative;display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_BaseAvatar_initial{position:absolute;left:0;color:#fff;text-align:center;speak:none;pointer-events:none;font-weight:400}.mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover;border-radius:125px;vertical-align:top;background-color:#fff}.mx_DecoratedRoomAvatar,.mx_ExtraTile{position:relative}.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar,.mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar{-webkit-mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);mask-image:url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon{position:absolute;bottom:-2px;right:-2px;margin:4px;width:8px;height:8px;border-radius:50%}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before{content:"";width:8px;height:8px;position:absolute;border-radius:8px}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before{-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#737d8c;-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before{background-color:#e3e8f0}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before{background-color:#0dbd8b}.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before,.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before{background-color:#d9b072}.mx_DecoratedRoomAvatar .mx_NotificationBadge,.mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer,.mx_ExtraTile .mx_NotificationBadge,.mx_ExtraTile .mx_RoomTile_badgeContainer{position:absolute;top:0;right:0;height:18px;width:18px}.mx_MessageComposer_avatar .mx_BaseAvatar{padding:2px;border:1px solid transparent;border-radius:100%}.mx_MessageComposer_avatar .mx_BaseAvatar_initial{left:2px}.mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar{border-color:#0dbd8b}@-webkit-keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}@keyframes shadow-pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(13,189,139,.2);box-shadow:0 0 0 0 rgba(13,189,139,.2)}to{-webkit-box-shadow:0 0 0 6px rgba(13,189,139,0);box-shadow:0 0 0 6px rgba(13,189,139,0)}}.mx_PulsedAvatar img{-webkit-animation:shadow-pulse 1s infinite;animation:shadow-pulse 1s infinite}.mx_WidgetAvatar{border-radius:4px}.mx_BetaCard{margin-bottom:20px;padding:24px;background-color:#f4f6fa;border-radius:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_BetaCard>div .mx_BetaCard_title{font-weight:600;font-size:1.8rem;line-height:2.2rem;color:#2e2f32;margin:4px 0 14px}.mx_BetaCard>div .mx_BetaCard_title .mx_BetaCard_betaPill{margin-left:12px}.mx_BetaCard>div .mx_BetaCard_caption{font-size:1.5rem;line-height:2rem;color:#737d8c;margin-bottom:20px}.mx_BetaCard>div .mx_AccessibleButton{display:block;margin:12px 0;padding:7px 40px;width:auto}.mx_BetaCard>div .mx_BetaCard_disclaimer{font-size:1.2rem;line-height:1.5rem;color:#737d8c;margin-top:20px}.mx_BetaCard>img{margin:auto 0 auto 20px;width:300px;-o-object-fit:contain;object-fit:contain;height:100%}.mx_BetaCard_betaPill{background-color:#238cf5;padding:4px 10px;border-radius:8px;text-transform:uppercase;font-size:12px;line-height:15px;color:#fff;display:inline-block;vertical-align:text-bottom}.mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable{cursor:pointer}.mx_BetaDot{border-radius:50%;margin:10px;height:12px;width:12px;-webkit-transform:scale(1);transform:scale(1);background:#238cf5;-webkit-box-shadow:0 0 0 0 #238cf5;box-shadow:0 0 0 0 #238cf5;-webkit-animation:mx_Beta_bluePulse 2s infinite;animation:mx_Beta_bluePulse 2s infinite;-webkit-animation-iteration-count:20;animation-iteration-count:20}@-webkit-keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}@keyframes mx_Beta_bluePulse{0%{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,.7);box-shadow:0 0 0 0 rgba(35,140,245,.7)}70%{-webkit-transform:scale(1);transform:scale(1);-webkit-box-shadow:0 0 0 10px rgba(35,140,245,0);box-shadow:0 0 0 10px rgba(35,140,245,0)}to{-webkit-transform:scale(.95);transform:scale(.95);-webkit-box-shadow:0 0 0 0 rgba(35,140,245,0);box-shadow:0 0 0 0 rgba(35,140,245,0)}}.mx_CallContextMenu_item{width:205px;height:40px;padding-left:16px;line-height:40px;vertical-align:center}.mx_IconizedContextMenu{min-width:146px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList>*{padding-left:20px;padding-right:20px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst:before,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:nth-child(n+2):before{border-top:1px solid #2e2f32;opacity:.1;content:"";width:100%;position:absolute;left:0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child .mx_AccessibleButton:first-child{border-radius:8px 8px 0 0}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:last-child .mx_AccessibleButton:last-child{border-radius:0 0 8px 8px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton{padding-top:12px;padding-bottom:12px;text-decoration:none;color:#2e2f32;font-size:1.5rem;line-height:2.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton:hover{background-color:#f5f8fa}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_AccessibleButton_disabled{opacity:.5;cursor:not-allowed}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon,.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton img{width:16px;min-width:16px;max-width:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton span.mx_IconizedContextMenu_label{width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton .mx_IconizedContextMenu_icon+.mx_IconizedContextMenu_label{padding-left:14px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon{position:relative;width:16px;height:16px}.mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before{content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton{color:#ff4b55!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_icon:before{background-color:#ff4b55}.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton,.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton{color:#0dbd8b!important}.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_icon:before{background-color:#0dbd8b}.mx_IconizedContextMenu.mx_IconizedContextMenu_compact .mx_IconizedContextMenu_optionList>*{padding:8px 16px 8px 11px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked{margin-left:16px;margin-right:-5px}.mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before{-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_MessageContextMenu{padding:6px}.mx_MessageContextMenu_field{display:block;padding:3px 6px;cursor:pointer;white-space:nowrap}.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet{font-weight:700}.mx_StatusMessageContextMenu{padding:10px}.mx_StatusMessageContextMenu_form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}input.mx_StatusMessageContextMenu_message{border-radius:4px;border:1px solid #e7e7e7;padding:6.5px 11px;background-color:#fff;font-weight:400;margin:0 0 10px}.mx_StatusMessageContextMenu_message::-webkit-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-moz-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message:-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::-ms-input-placeholder{color:#61708b}.mx_StatusMessageContextMenu_message::placeholder{color:#61708b}.mx_StatusMessageContextMenu_actionContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_StatusMessageContextMenu_clear,.mx_StatusMessageContextMenu_submit{vertical-align:middle;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;cursor:pointer;display:inline-block;outline:none;-ms-flex-item-align:start;align-self:start;font-size:1.2rem;padding:6px 1em;border:1px solid transparent;margin-right:10px}.mx_StatusMessageContextMenu_submit[disabled]{opacity:.49}.mx_StatusMessageContextMenu_clear{color:#ff4b55;background-color:transparent;border:1px solid #ff4b55}.mx_StatusMessageContextMenu_actionContainer .mx_Spinner{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_TagTileContextMenu_item{padding:8px 20px 8px 8px;cursor:pointer;white-space:nowrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:1.6rem}.mx_TagTileContextMenu_item:before{content:"";height:15px;width:15px;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;margin-right:8px}.mx_TagTileContextMenu_viewCommunity:before{-webkit-mask-image:url(../../img/element-icons/view-community.0cad1a5.svg);mask-image:url(../../img/element-icons/view-community.0cad1a5.svg)}.mx_TagTileContextMenu_hideCommunity:before{-webkit-mask-image:url(../../img/element-icons/hide.2b52315.svg);mask-image:url(../../img/element-icons/hide.2b52315.svg)}.mx_TagTileContextMenu_separator{margin-top:0;margin-bottom:0;border-style:none;border-top:1px solid;border-color:#e7e7e7}.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AddExistingToSpace .mx_SearchBox{margin:0 0 15px;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults{display:block;margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child){margin-top:24px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section>h3{margin:0;color:#737d8c;font-size:1.2rem;font-weight:600;line-height:1.5rem}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_DecoratedRoomAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_AddExistingToSpace_entry_name{font-size:1.5rem;line-height:30px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_Checkbox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar{margin-right:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar_image{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental{position:relative;border-radius:8px;margin:12px 0;padding:8px 8px 8px 42px;background-color:#f3f8fd;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before{content:"";position:absolute;left:10px;top:calc(50% - 8px);height:16px;width:16px;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);mask-image:url(../../img/element-icons/room/room-summary.1ad0865.svg);-webkit-mask-position:center;mask-position:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:20px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-size:1.2rem;line-height:1.5rem;color:#737d8c}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar{height:8px;width:100%;border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-moz-progress-bar{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-bar,.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_ProgressBar::-webkit-progress-value{border-radius:8px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span .mx_AddExistingToSpace_progressText{margin-top:8px;font-size:1.5rem;line-height:2.4rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer>span>*{vertical-align:middle}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error{padding-left:12px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error>img{-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorHeading{font-weight:600;font-size:1.5rem;line-height:1.8rem;color:#ff4b55}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error .mx_AddExistingToSpace_errorCaption{margin-top:4px;font-size:1.2rem;line-height:1.5rem;color:#2e2f32}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton{display:inline-block;-ms-flex-item-align:center;align-self:center}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_primary{padding:8px 36px}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton{margin-left:12px;padding-left:24px;position:relative}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton:before{content:"";position:absolute;background-color:#2e2f32;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg);width:18px;height:18px;left:0}.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_link{padding:0}.mx_AddExistingToSpaceDialog{width:480px;color:#2e2f32;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;min-height:0;height:80vh}.mx_AddExistingToSpaceDialog,.mx_AddExistingToSpaceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image{border-radius:8px;margin:0;vertical-align:unset}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin:auto 16px auto 5px;vertical-align:middle}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div>h1{font-weight:600;font-size:1.8rem;line-height:2.2rem;margin:0}.mx_AddExistingToSpaceDialog .mx_Dialog_title>div .mx_AddExistingToSpaceDialog_onlySpace{color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input{border:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option{padding-left:0;-webkit-box-flex:unset;-ms-flex:unset;flex:unset;height:unset;color:#737d8c;font-size:1.5rem;line-height:2.4rem}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input>.mx_Dropdown_option .mx_BaseAvatar{display:none}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive{color:#0dbd8b;padding-right:32px;position:relative}.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input .mx_Dropdown_menu .mx_AddExistingToSpaceDialog_dropdownOptionActive:before{content:"";width:20px;height:20px;top:8px;right:0;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#0dbd8b;-webkit-mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg);mask-image:url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg)}.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace{display:contents}.mx_AddressPickerDialog a:hover,.mx_AddressPickerDialog a:link,.mx_AddressPickerDialog a:visited{color:#0dbd8b;text-decoration:none}.mx_AddressPickerDialog_input,.mx_AddressPickerDialog_input:focus{height:26px;font-size:1.4rem;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;padding-left:12px;padding-right:12px;margin:0!important;border:0!important;outline:0!important;width:1000%;resize:none;overflow:hidden;vertical-align:middle;-webkit-box-sizing:border-box;box-sizing:border-box;word-wrap:nowrap}.mx_AddressPickerDialog .mx_Dialog_content{min-height:50px}.mx_AddressPickerDialog_inputContainer{border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 4px;max-height:150px;overflow-x:hidden;overflow-y:auto}.mx_AddressPickerDialog_error{margin-top:10px;color:#ff4b55}.mx_AddressPickerDialog_cancel{position:absolute;right:11px;top:13px;cursor:pointer}.mx_AddressPickerDialog_cancel object{pointer-events:none}.mx_AddressPickerDialog_identityServer{margin-top:1em}.mx_AnalyticsModal table{margin:10px 0}.mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading{color:#2e2f32;font-size:1.4rem;line-height:2rem;margin-bottom:24px}.mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link{padding:0;font-size:inherit;line-height:inherit}.mx_BugReportDialog .mx_BugReportDialog_download .mx_AccessibleButton_kind_link{padding-left:0}.mx_ChangelogDialog_content{max-height:300px;overflow:auto}.mx_ChangelogDialog_li{padding:.2em}.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles{margin-top:24px}.mx_ChatCreateOrReuseDialog .mx_Dialog_content{margin-bottom:24px;min-height:100px}.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge{display:none}.mx_ChatCreateOrReuseDialog_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ChatCreateOrReuseDialog_profile_name{padding:14px}.mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth{width:360px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content{margin-bottom:0}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people{position:relative;margin-bottom:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people .mx_AccessibleButton{display:inline-block;background-color:#ddd;border-radius:4px;padding:3px 5px;font-size:1.2rem;float:right}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_morePeople{margin-top:8px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person{position:relative;margin-top:4px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person>*{vertical-align:middle}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_Checkbox{position:absolute;right:0;top:calc(50% - 8px);width:16px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers{display:inline-block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers>*{display:block}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personName{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers .mx_CommunityPrototypeInviteDialog_personId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_primaryButton{display:block;font-size:1.3rem;line-height:20px;height:20px;margin-top:24px}.mx_ConfirmUserActionDialog .mx_Dialog_content{min-height:48px;margin-bottom:24px}.mx_ConfirmUserActionDialog_avatar{float:left;margin-right:20px;margin-top:-2px}.mx_ConfirmUserActionDialog_name{font-size:1.8rem}.mx_ConfirmUserActionDialog_userId{font-size:1.3rem}.mx_ConfirmUserActionDialog_reasonField{font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#2e2f32;background-color:#fff;border-radius:3px;border:1px solid #e7e7e7;line-height:3.6rem;padding:1px 16px;margin-bottom:24px;width:90%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:12px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName{-ms-flex-preferred-size:66.66%;flex-basis:66.66%;padding-right:100px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_Field input{font-size:1.6rem;line-height:2rem}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext{display:block;color:#61708b;margin-bottom:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext:last-child{margin-top:16px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error{color:#ff4b55}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId{position:relative}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId .mx_InfoTooltip{float:right}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_AccessibleButton{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar{-ms-flex-preferred-size:33.33%;flex-basis:33.33%}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer{margin-top:12px;margin-bottom:20px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_avatar,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_avatarContainer .mx_CreateCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>b,.mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar .mx_CreateCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_CreateGroupDialog_inputRow{margin-top:10px;margin-bottom:10px}.mx_CreateGroupDialog_label{text-align:left;padding-bottom:12px}.mx_CreateGroupDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff}.mx_CreateGroupDialog_input_hasPrefixAndSuffix{border-radius:0}.mx_CreateGroupDialog_input_group{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateGroupDialog_prefix,.mx_CreateGroupDialog_suffix{padding:0 5px;line-height:3.7rem;background-color:#e3e8f0;border:1px solid #e7e7e7;text-align:center}.mx_CreateGroupDialog_prefix{border-right:0;border-radius:3px 0 0 3px}.mx_CreateGroupDialog_suffix{border-left:0;border-radius:0 3px 3px 0}.mx_CreateRoomDialog_details{margin-top:15px}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary{outline:none;list-style:none;font-weight:600;cursor:pointer;color:#0dbd8b}.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary::-webkit-details-marker{display:none}.mx_CreateRoomDialog_details>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin:5px 0}.mx_CreateRoomDialog_details>div input[type=checkbox]{margin-right:10px}.mx_CreateRoomDialog_label{text-align:left;padding-bottom:12px}.mx_CreateRoomDialog_input_container{padding-right:20px}.mx_CreateRoomDialog_input{font-size:1.5rem;border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:#2e2f32;background-color:#fff;width:100%}.mx_CreateRoomDialog_aliasContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin:10px 0}.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField{margin:0}.mx_CreateRoomDialog.mx_Dialog_fixedWidth{width:450px}.mx_CreateRoomDialog .mx_Dialog_content{margin-bottom:40px}.mx_CreateRoomDialog .mx_Field_input label,.mx_CreateRoomDialog p{color:#61708b}.mx_CreateRoomDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateRoomDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateRoomDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateRoomDialog .mx_CreateRoomDialog_topic{margin-bottom:36px}.mx_CreateRoomDialog .mx_Dialog_content>.mx_SettingsFlag{margin-top:24px}.mx_CreateRoomDialog p{margin:0 85px 0 0;font-size:1.2rem}.mx_DeactivateAccountDialog .mx_Dialog_content{margin-bottom:30px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section{margin-top:60px}.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field{width:300px}.mx_DevTools_content{margin:10px 0}.mx_DevTools_ServersInRoomList_button{cursor:default!important}.mx_DevTools_RoomStateExplorer_query{margin-bottom:10px}.mx_DevTools_RoomStateExplorer_button,.mx_DevTools_ServersInRoomList_button{margin-bottom:10px;width:100%}.mx_DevTools_label_left{float:left}.mx_DevTools_label_right{float:right}.mx_DevTools_label_bottom{clear:both;border-bottom:1px solid #e5e5e5}.mx_DevTools_inputRow{display:table-row}.mx_DevTools_inputLabelCell{display:table-cell;font-weight:700;padding-right:24px}.mx_DevTools_inputCell{display:table-cell;width:240px}.mx_DevTools_inputCell input{display:inline-block;border:0;border-bottom:1px solid hsla(0,0%,59.2%,.5);padding:0;width:240px;color:rgba(74,74,74,.9);font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.6rem}.mx_DevTools_textarea{font-size:1.2rem;max-width:684px;min-height:250px;padding:10px}.mx_DevTools_eventTypeStateKeyGroup{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_DevTools_content .mx_Field_input:first-of-type{margin-right:42px}.mx_DevTools_tgl{display:none}.mx_DevTools_tgl,.mx_DevTools_tgl *,.mx_DevTools_tgl+.mx_DevTools_tgl-btn,.mx_DevTools_tgl:after,.mx_DevTools_tgl :after,.mx_DevTools_tgl:before,.mx_DevTools_tgl :before{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::-moz-selection,.mx_DevTools_tgl::-moz-selection,.mx_DevTools_tgl ::-moz-selection,.mx_DevTools_tgl:after::-moz-selection,.mx_DevTools_tgl :after::-moz-selection,.mx_DevTools_tgl:before::-moz-selection,.mx_DevTools_tgl :before::-moz-selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn::selection,.mx_DevTools_tgl::selection,.mx_DevTools_tgl ::selection,.mx_DevTools_tgl:after::selection,.mx_DevTools_tgl :after::selection,.mx_DevTools_tgl:before::selection,.mx_DevTools_tgl :before::selection{background:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn{outline:0;display:block;width:7em;height:2em;position:relative;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{position:relative;display:block;content:"";width:50%;height:100%}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:after{left:0}.mx_DevTools_tgl+.mx_DevTools_tgl-btn:before{display:none}.mx_DevTools_tgl:checked+.mx_DevTools_tgl-btn:after{left:50%}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn{padding:2px;-webkit-transition:all .2s ease;transition:all .2s ease;font-family:sans-serif;-webkit-perspective:100px;perspective:100px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after,.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{display:inline-block;-webkit-transition:all .4s ease;transition:all .4s ease;width:100%;text-align:center;position:absolute;line-height:2em;font-weight:700;color:#fff;top:0;left:0;-webkit-backface-visibility:hidden;backface-visibility:hidden;border-radius:4px}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:after{content:attr(data-tg-on);background:#02c66f;-webkit-transform:rotateY(-180deg);transform:rotateY(-180deg)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:before{background:#ff3a19;content:attr(data-tg-off)}.mx_DevTools_tgl-flip+.mx_DevTools_tgl-btn:active:before{-webkit-transform:rotateY(-20deg);transform:rotateY(-20deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:before{-webkit-transform:rotateY(180deg);transform:rotateY(180deg)}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:after{-webkit-transform:rotateY(0);transform:rotateY(0);left:0;background:#7fc6a6}.mx_DevTools_tgl-flip:checked+.mx_DevTools_tgl-btn:active:after{-webkit-transform:rotateY(20deg);transform:rotateY(20deg)}.mx_DevTools_VerificationRequest{border:1px solid #ccc;border-radius:3px;padding:1px 5px;margin-bottom:6px;font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji}.mx_DevTools_VerificationRequest dl{display:grid;grid-template-columns:-webkit-max-content auto;grid-template-columns:max-content auto;margin:0}.mx_DevTools_VerificationRequest dd{grid-column-start:2}.mx_DevTools_VerificationRequest dd:empty{color:#666}.mx_DevTools_VerificationRequest dd:empty:after{content:"(empty)"}.mx_DevTools_VerificationRequest dt{font-weight:700;grid-column-start:1}.mx_DevTools_VerificationRequest dt:after{content:":"}.mx_DevTools_SettingsExplorer table{width:100%;table-layout:fixed;border-collapse:collapse}.mx_DevTools_SettingsExplorer table th{border-bottom:1px solid #0dbd8b;text-align:left}.mx_DevTools_SettingsExplorer table td,.mx_DevTools_SettingsExplorer table th{width:360px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_DevTools_SettingsExplorer table td+td,.mx_DevTools_SettingsExplorer table th+th{width:auto}.mx_DevTools_SettingsExplorer table tr:hover{background-color:rgba(13,189,139,.5)}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable{background-color:#0dbd8b}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable{background-color:#ff4b55}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit{float:right;margin-right:16px}.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning{border:2px solid #ff4b55;border-radius:4px;padding:4px;margin-bottom:8px}.mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth{width:360px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content{margin-bottom:12px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_AccessibleButton.mx_AccessibleButton_kind_primary{display:block;height:32px;font-size:1.6rem;line-height:32px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_rowAvatar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer{margin-top:20px;margin-bottom:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_avatar,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{width:96px;height:96px;border-radius:96px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar{background-color:#368bd6}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar:before{display:inline-block;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:96px;mask-size:96px;width:96px;height:96px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg);mask-image:url(../../img/element-icons/add-photo.c0b4c3b.svg)}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip{margin-left:20px}.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>b,.mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip>span{display:block;color:#61708b}.mx_FeedbackDialog hr{margin:24px 0;border-color:#e7e7e7}.mx_FeedbackDialog .mx_Dialog_content{margin-bottom:24px}.mx_FeedbackDialog .mx_Dialog_content>h2{margin-bottom:32px}.mx_FeedbackDialog .mx_FeedbackDialog_section{position:relative;padding-left:52px}.mx_FeedbackDialog .mx_FeedbackDialog_section>p{color:#8d99a5}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link,.mx_FeedbackDialog .mx_FeedbackDialog_section a{color:#0dbd8b;text-decoration:underline}.mx_FeedbackDialog .mx_FeedbackDialog_section:after,.mx_FeedbackDialog .mx_FeedbackDialog_section:before{content:"";position:absolute;width:40px;height:40px;left:0;top:0}.mx_FeedbackDialog .mx_FeedbackDialog_section:before{background-color:#c1c6cd;border-radius:20px}.mx_FeedbackDialog .mx_FeedbackDialog_section:after{background:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after{-webkit-mask-image:url(../../img/feather-customised/bug.3dc7afa.svg);mask-image:url(../../img/feather-customised/bug.3dc7afa.svg)}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:20px;-webkit-transition:font-size 1s,border .5s;transition:font-size 1s,border .5s;border-radius:50%;border:2px solid transparent;margin-top:12px;margin-bottom:24px;vertical-align:top;cursor:pointer}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton input[type=radio]+div{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_content{background:#c1c6cd;width:40px;height:40px;text-align:center;line-height:40px;border-radius:20px;margin:5px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_spacer{display:none}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton+.mx_RadioButton{margin-left:16px}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked{font-size:24px;border-color:#0dbd8b}.mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_GroupAddressPicker_checkboxContainer{margin-top:10px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_HostSignupDialog{width:90vw;max-width:580px;height:80vh;max-height:600px;background-color:#fff}.mx_HostSignupDialog .mx_HostSignupDialog_info{text-align:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_content_top{margin-bottom:24px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs{text-align:left;padding-left:25%;padding-right:25%}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons{margin-bottom:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons button{padding:12px;margin:0 16px}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img{padding-right:5px}.mx_HostSignupDialog iframe{width:100%;height:100%;border:none;background-color:#fff;min-height:540px}.mx_HostSignupDialog_text_dark{color:#2e2f32}.mx_HostSignupDialog_text_light{color:#737d8c}.mx_HostSignup_maximize_button{-webkit-mask:url(../../img/feather-customised/maximise.dc32127.svg);mask:url(../../img/feather-customised/maximise.dc32127.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:10px}.mx_HostSignup_maximize_button,.mx_HostSignup_minimize_button{width:14px;height:14px;background-color:#c1c1c1;cursor:pointer;position:absolute;top:10px}.mx_HostSignup_minimize_button{-webkit-mask:url(../../img/feather-customised/minimise.aec9142.svg);mask:url(../../img/feather-customised/minimise.aec9142.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;right:25px}.mx_HostSignup_persisted{width:90vw;max-width:580px;height:80vh;max-height:600px;top:0;left:0;position:fixed;display:none}.mx_HostSignupDialog_minimized{position:fixed;bottom:80px;right:26px;width:314px;height:217px;overflow:hidden}.mx_HostSignupDialog_minimized.mx_Dialog{padding:12px}.mx_HostSignupDialog_minimized .mx_Dialog_title{text-align:left!important;padding-left:20px;font-size:1.5rem}.mx_HostSignupDialog_minimized iframe{width:100%;height:100%;border:none;background-color:#fff}.mx_IncomingSasDialog_opponentProfile_image{position:relative}.mx_IncomingSasDialog_opponentProfile h2{display:inline-block;margin-left:10px}.mx_InviteDialog_addressBar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_InviteDialog_addressBar .mx_InviteDialog_editor{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;background-color:#f3f8fd;border-radius:4px;min-height:25px;padding-left:8px;overflow-x:hidden;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile{margin:6px 6px 0 0;display:inline-block;min-width:-webkit-max-content;min-width:-moz-max-content;min-width:max-content}.mx_InviteDialog_addressBar .mx_InviteDialog_editor>input[type=text]{margin:6px 0!important;height:24px;line-height:2.4rem;font-size:1.4rem;padding-left:12px;border:0!important;outline:0!important;resize:none;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:40%;-webkit-box-flex:1!important;-ms-flex:1!important;flex:1!important;color:#2e2f32!important}.mx_InviteDialog_addressBar .mx_InviteDialog_goButton{min-width:48px;margin-left:10px;height:25px;line-height:2.5rem}.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner{width:20px;height:20px;margin-left:5px;display:inline-block;vertical-align:middle}.mx_InviteDialog_section{padding-bottom:10px}.mx_InviteDialog_section h3{font-size:1.2rem;color:#61708b;font-weight:700;text-transform:uppercase}.mx_InviteDialog_section .mx_InviteDialog_subname{margin-bottom:10px;margin-top:-10px;font-size:1.2rem;color:#61708b}.mx_InviteDialog_roomTile{cursor:pointer;padding:5px 10px}.mx_InviteDialog_roomTile:hover{background-color:#f3f8fd;border-radius:4px}.mx_InviteDialog_roomTile *{vertical-align:middle}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack{display:inline-block;position:relative;width:36px;height:36px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack>*{position:absolute;top:0;left:0}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected{width:36px;height:36px;border-radius:36px;background-color:#368bd6;display:inline-block;position:relative}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before{content:"";width:24px;height:24px;grid-column:1;grid-row:1;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;position:absolute;top:6px;left:6px;background-color:#fff}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack{display:inline-block}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name{font-weight:600;font-size:1.4rem;color:#2e2f32;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId{font-size:1.2rem;color:#61708b;margin-left:7px}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time{text-align:right;font-size:1.2rem;color:#61708b;float:right;line-height:3.6rem}.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight{font-weight:900}.mx_InviteDialog_userTile{margin-right:8px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill{background-color:#368bd6;border-radius:12px;display:inline-block;height:24px;line-height:2.4rem;padding-left:8px;padding-right:8px;color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_avatar{border-radius:20px;position:relative;left:-5px;top:2px}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_name,.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill img.mx_InviteDialog_userTile_avatar{vertical-align:top}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_threepidAvatar{background-color:#fff}.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove{display:inline-block;margin-left:4px}.mx_InviteDialog{height:590px;padding-left:20px}.mx_InviteDialog_userSections{margin-top:10px;overflow-y:auto;padding-right:45px;height:455px}.mx_InviteDialog_addressBar,.mx_InviteDialog_helpText{margin-right:45px}.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link{padding:0}.mx_KeyboardShortcutsDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:-50px;max-height:1100px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category{width:33.3333%;margin:0 0 40px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category>div{padding-left:5px}.mx_KeyboardShortcutsDialog h3{margin:0 0 10px}.mx_KeyboardShortcutsDialog h5{margin:15px 0 5px;font-weight:400}.mx_KeyboardShortcutsDialog kbd{padding:5px;border-radius:4px;background-color:#f3f8fd;margin-right:5px;min-width:20px;text-align:center;display:inline-block;border:1px solid #e9edf1;-webkit-box-shadow:0 2px #e9edf1;box-shadow:0 2px #e9edf1;margin-bottom:4px;text-transform:capitalize}.mx_KeyboardShortcutsDialog kbd+kbd{margin-left:5px}.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div{display:inline}.mx_MessageEditHistoryDialog .mx_Dialog_header>.mx_Dialog_title{text-align:center}.mx_MessageEditHistoryDialog{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:60vh}.mx_MessageEditHistoryDialog_scrollPanel{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_MessageEditHistoryDialog_error{color:#ff4b55;text-align:center}.mx_MessageEditHistoryDialog_edits{list-style-type:none;font-size:1.4rem;padding:0;color:#2e2f32}.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion,.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion{padding:0 2px}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion{color:#ff4c55;background-color:rgba(255,76,85,.1);text-decoration:line-through}.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion{color:#1aa97b;background-color:rgba(26,169,123,.1);text-decoration:underline}.mx_MessageEditHistoryDialog_edits .mx_EventTile_content,.mx_MessageEditHistoryDialog_edits .mx_EventTile_line{margin-right:0}.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton{font-size:1rem;padding:0 8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning{margin-bottom:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning>img{vertical-align:middle;margin-right:8px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons{float:right;margin-top:24px}.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:8px}.mx_ModalWidgetDialog iframe{width:100%;height:450px;border:0;border-radius:8px}.mx_NewSessionReviewDialog_header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:0}.mx_NewSessionReviewDialog_headerIcon{width:24px;height:24px;margin-right:4px;position:relative}.mx_NewSessionReviewDialog_deviceName{font-weight:600}.mx_NewSessionReviewDialog_deviceID{font-size:1.2rem;color:#8d99a5}.mx_RegistrationEmailPromptDialog{width:417px}.mx_RegistrationEmailPromptDialog .mx_Dialog_content{margin-bottom:24px;color:#8d99a5}.mx_RegistrationEmailPromptDialog .mx_Dialog_primary{width:100%}.mx_RoomSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_RoomSettingsDialog_rolesIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg);mask-image:url(../../img/element-icons/room/settings/roles.bad9a9e.svg)}.mx_RoomSettingsDialog_notificationsIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomSettingsDialog_bridgesIcon:before{-webkit-mask-image:url(../../img/feather-customised/bridge.b2ca042.svg);mask-image:url(../../img/feather-customised/bridge.b2ca042.svg)}.mx_RoomSettingsDialog_warningIcon:before{-webkit-mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg);mask-image:url(../../img/element-icons/room/settings/advanced.e079c15.svg)}.mx_RoomSettingsDialog .mx_Dialog_title{-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;margin:0 auto;padding-right:80px}.mx_RoomSettingsDialog .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{-webkit-mask:url(../../img/feather-customised/image.a8671b8.svg);mask:url(../../img/feather-customised/image.a8671b8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center}.mx_RoomSettingsDialog_BridgeList{padding:0}.mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton{display:inline;margin:0;padding:0}.mx_RoomSettingsDialog_BridgeList li{list-style-type:none;padding:5px;margin-bottom:8px;border:1px solid transparent;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon{float:left;padding-right:10px}.mx_RoomSettingsDialog_BridgeList li .column-icon *{border-radius:5px;border:1px solid #e3e8f0}.mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon{width:48px;height:48px;background:#e3e8f0;border-radius:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon{float:left;margin-right:5px}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img{border-radius:5px;border-width:1px;border-color:transparent}.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span{left:auto}.mx_RoomSettingsDialog_BridgeList li .column-data{display:inline-block;width:85%}.mx_RoomSettingsDialog_BridgeList li .column-data>h3{margin-top:0;margin-bottom:0;font-size:16pt;color:#2e2f32}.mx_RoomSettingsDialog_BridgeList li .column-data>*{margin-top:4px;margin-bottom:0}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details{color:#2e2f32;font-weight:600}.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details .channel{margin-left:5px}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata{color:#61708b;margin-bottom:0;overflow-y:visible;text-overflow:ellipsis;white-space:normal;padding:0}.mx_RoomSettingsDialog_BridgeList li .column-data .metadata>li{padding:0;border:0}.mx_RoomUpgradeDialog{padding-right:70px}.mx_RoomUpgradeWarningDialog{max-width:38vw;width:38vw}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag{font-weight:700}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:8px;float:right}.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content{padding-right:85px;color:#2e2f32}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr{border-color:#2e2f32;opacity:.1;border-bottom:none}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul{padding:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n+2){margin-top:16px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timestamp{display:inline-block;width:115px;color:#61708b;line-height:24px;vertical-align:top}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline{display:inline-block;width:calc(100% - 155px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_timeline_header span{margin-left:8px;vertical-align:middle}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn{position:relative;margin-top:8px}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_ServerOfflineDialog_content_context_txn_desc{width:calc(100% - 100px)}.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context .mx_ServerOfflineDialog_content_context_timeline .mx_ServerOfflineDialog_content_context_txn .mx_AccessibleButton{float:right;padding:0}.mx_ServerPickerDialog{width:468px;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_ServerPickerDialog .mx_Dialog_content{margin-bottom:0}.mx_ServerPickerDialog .mx_Dialog_content>p{color:#737d8c;font-size:1.4rem;margin:16px 0}.mx_ServerPickerDialog .mx_Dialog_content>p:first-of-type{margin-bottom:40px}.mx_ServerPickerDialog .mx_Dialog_content>p:last-of-type{margin:0 24px 24px}.mx_ServerPickerDialog .mx_Dialog_content>h4{font-size:1.5rem;font-weight:600;color:#737d8c;margin-left:8px}.mx_ServerPickerDialog .mx_Dialog_content>a{color:#0dbd8b;margin-left:8px}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserverRadio input[type=radio]+div{margin-top:auto;margin-bottom:auto}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver{border-top:none;border-left:none;border-right:none;border-radius:unset}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>input{padding-left:0}.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver>label{margin-left:0}.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary{width:calc(100% - 64px);margin:0 8px;padding:15px 18px}.mx_SetEmailDialog_email_input{border-radius:3px;border:1px solid #e7e7e7;padding:9px;color:rgba(74,74,74,.9);background-color:#fff;font-size:1.5rem;width:100%;max-width:280px;margin-bottom:10px}.mx_SetEmailDialog_email_input:focus{outline:none;-webkit-box-shadow:none;box-shadow:none;border:1px solid #0dbd8b}.mx_RoomSettingsDialog,.mx_UserSettingsDialog{width:90vw;max-width:1000px;height:80vh}.mx_RoomSettingsDialog .mx_TabbedView,.mx_UserSettingsDialog .mx_TabbedView{top:65px}.mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab,.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab{-webkit-box-sizing:border-box;box-sizing:border-box;min-width:580px;padding-right:100px;padding-bottom:100px}.mx_RoomSettingsDialog .mx_Dialog_title,.mx_UserSettingsDialog .mx_Dialog_title{margin-bottom:24px}.mx_ShareDialog hr{margin-top:25px;margin-bottom:25px;border-color:#747474}.mx_ShareDialog_content{margin:10px 0}.mx_ShareDialog_matrixto{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:30px;padding:10px}.mx_ShareDialog_matrixto a{text-decoration:none}.mx_ShareDialog_matrixto_link{-ms-flex-negative:1;flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.mx_ShareDialog_matrixto_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_ShareDialog_matrixto_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_ShareDialog_split{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.mx_ShareDialog_qrcode_container{float:left;height:256px;width:256px;margin-right:64px}.mx_ShareDialog_qrcode_container+.mx_ShareDialog_social_container{width:299px}.mx_ShareDialog_social_container{display:inline-block}.mx_ShareDialog_social_icon{display:inline-grid;margin-right:10px;margin-bottom:10px}.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2{margin-bottom:2px}.mx_SlashCommandHelpDialog .mx_Dialog_content{margin-top:12px;margin-bottom:34px}.mx_SpaceSettingsDialog{width:480px;color:#2e2f32}.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText{font-weight:600;font-size:1.2rem;line-height:1.5rem;color:#ff4b55;margin-bottom:28px}.mx_SpaceSettingsDialog .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-left:16px}.mx_SpaceSettingsDialog .mx_AccessibleButton_kind_danger{margin-top:28px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:64px}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton{display:inline-block}.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton_kind_link{margin-left:auto}.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind{padding:8px 22px}.mx_TabbedIntegrationManagerDialog .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none;position:relative}.mx_TabbedIntegrationManagerDialog_container{position:absolute;top:0;bottom:0;left:0;right:0}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager{width:100%;height:100%;border-top:1px solid #0dbd8b}.mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_TabbedIntegrationManagerDialog_tab{display:inline-block;border:1px solid #0dbd8b;border-bottom:0;border-top-left-radius:3px;border-top-right-radius:3px;padding:10px 8px;margin-right:5px}.mx_TabbedIntegrationManagerDialog_currentTab{background-color:#0dbd8b;color:#fff}.mx_TermsDialog_forIntegrationManager .mx_Dialog{width:60%;height:70%;-webkit-box-sizing:border-box;box-sizing:border-box}.mx_TermsDialog_termsTableHeader{font-weight:700;text-align:left}.mx_TermsDialog_termsTable{font-size:1.2rem;width:100%}.mx_TermsDialog_service,.mx_TermsDialog_summary{padding-right:10px}.mx_TermsDialog_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;width:10px;height:10px}.mx_UntrustedDeviceDialog .mx_Dialog_title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon{margin-left:0}.mx_UploadConfirmDialog_fileIcon{margin-right:5px}.mx_UploadConfirmDialog_previewOuter{text-align:center}.mx_UploadConfirmDialog_previewInner{display:inline-block;text-align:left}.mx_UploadConfirmDialog_imagePreview{max-height:300px;max-width:100%;border-radius:4px;border:1px solid #c1c1c1}.mx_UserSettingsDialog_settingsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserSettingsDialog_appearanceIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg);mask-image:url(../../img/element-icons/settings/appearance.cdebd40.svg)}.mx_UserSettingsDialog_voiceIcon:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_UserSettingsDialog_bellIcon:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_UserSettingsDialog_preferencesIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg);mask-image:url(../../img/element-icons/settings/preference.82bfabd.svg)}.mx_UserSettingsDialog_securityIcon:before{-webkit-mask-image:url(../../img/element-icons/security.66f2fa6.svg);mask-image:url(../../img/element-icons/security.66f2fa6.svg)}.mx_UserSettingsDialog_helpIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/help.68b703f.svg);mask-image:url(../../img/element-icons/settings/help.68b703f.svg)}.mx_UserSettingsDialog_labsIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg);mask-image:url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg)}.mx_UserSettingsDialog_mjolnirIcon:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_UserSettingsDialog_flairIcon:before{-webkit-mask-image:url(../../img/element-icons/settings/flair.4227a88.svg);mask-image:url(../../img/element-icons/settings/flair.4227a88.svg)}.mx_WidgetCapabilitiesPromptDialog .text-muted{font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content{margin-bottom:16px}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap{margin-top:20px;font-size:1.5rem;line-height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap .mx_WidgetCapabilitiesPromptDialog_byline{color:#61708b;margin-left:26px;font-size:1.2rem;line-height:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons{margin-top:40px}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag{line-height:calc(1.4rem + 14px);color:#61708b;font-size:1.2rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px;width:3.2rem;height:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 1.5rem)}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch .mx_ToggleSwitch_ball{width:1.5rem;height:1.5rem;border-radius:1.5rem}.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch{display:inline-block;vertical-align:middle;margin-right:8px}.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label{display:inline-block;vertical-align:middle}.mx_AccessSecretStorageDialog_reset{position:relative;padding-left:24px;margin-top:7px}.mx_AccessSecretStorageDialog_reset:before{content:"";display:inline-block;position:absolute;height:16px;width:16px;left:0;top:2px;background-image:url(../../img/element-icons/warning-badge.de1033e.svg)}.mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link{color:#ff4b55}.mx_AccessSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_AccessSecretStorageDialog_resetBadge:before{background-image:url(../../img/element-icons/warning-badge.de1033e.svg);background-size:24px;background-color:transparent}.mx_AccessSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_AccessSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_AccessSecretStorageDialog_keyStatus{height:30px}.mx_AccessSecretStorageDialog_passPhraseInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_AccessSecretStorageDialog_recoveryKeyEntry{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText{margin:16px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback:before{content:"";display:inline-block;vertical-align:bottom;width:20px;height:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;margin-right:5px}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid{color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid{color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput{display:none}.mx_CreateCrossSigningDialog{width:560px}.mx_CreateCrossSigningDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateCrossSigningDialog .mx_Dialog_title,.mx_CreateKeyBackupDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateKeyBackupDialog_primaryContainer{padding:20px}.mx_CreateKeyBackupDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateKeyBackupDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_CreateKeyBackupDialog_passPhraseInput{-webkit-box-flex:0;-ms-flex:none;flex:none;width:250px;border:1px solid #0dbd8b;border-radius:5px;padding:10px;margin-bottom:1em}.mx_CreateKeyBackupDialog_passPhraseMatch{margin-left:20px}.mx_CreateKeyBackupDialog_recoveryKeyHeader{margin-bottom:1em}.mx_CreateKeyBackupDialog_recoveryKeyContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateKeyBackupDialog_recoveryKey{width:262px;padding:20px;color:#888;background-color:#f7f7f7;margin-right:12px}.mx_CreateKeyBackupDialog_recoveryKeyButtons{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateKeyBackupDialog_recoveryKeyButtons button{-webkit-box-flex:1;-ms-flex:1;flex:1;white-space:nowrap}.mx_CreateKeyBackupDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog{width:560px}.mx_CreateSecretStorageDialog .mx_SettingsFlag{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_CreateSecretStorageDialog .mx_SettingsFlag_label{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;min-width:0;font-weight:600}.mx_CreateSecretStorageDialog .mx_ToggleSwitch{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:30px}.mx_CreateSecretStorageDialog details .mx_AccessibleButton{margin:1em 0}.mx_CreateSecretStorageDialog .mx_Dialog_title{margin-bottom:1em}.mx_CreateSecretStorageDialog_titleWithIcon:before{content:"";display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_secureBackupTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_securePhraseTitle:before{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_centeredBody,.mx_CreateSecretStorageDialog_centeredTitle{text-align:center}.mx_CreateSecretStorageDialog_primaryContainer{padding-top:20px}.mx_CreateSecretStorageDialog_primaryContainer:after{content:"";clear:both;display:block}.mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton{margin-bottom:16px;padding:11px}.mx_CreateSecretStorageDialog_optionTitle{color:#45474a;font-weight:600;font-size:1.8rem;padding-bottom:10px}.mx_CreateSecretStorageDialog_optionIcon{display:inline-block;width:24px;height:24px;margin-right:8px;position:relative;top:5px;background-color:#2e2f32}.mx_CreateSecretStorageDialog_optionIcon_securePhrase{-webkit-mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg);mask-image:url(../../img/feather-customised/secure-phrase.a9d3725.svg)}.mx_CreateSecretStorageDialog_optionIcon_secureBackup{-webkit-mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg);mask-image:url(../../img/feather-customised/secure-backup.329cb1c.svg)}.mx_CreateSecretStorageDialog_passPhraseContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Field.mx_CreateSecretStorageDialog_passPhraseField{margin-top:0}.mx_CreateSecretStorageDialog_passPhraseMatch{width:200px;margin-left:20px}.mx_CreateSecretStorageDialog_recoveryKeyContainer{width:380px;margin-left:auto;margin-right:auto}.mx_CreateSecretStorageDialog_recoveryKey{font-weight:700;text-align:center;padding:20px;color:#888;background-color:#f7f7f7;border-radius:6px;word-spacing:1em;margin-bottom:20px}.mx_CreateSecretStorageDialog_recoveryKeyButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton{width:160px;padding-left:0;padding-right:0;white-space:nowrap}.mx_CreateSecretStorageDialog_continueSpinner{margin-top:33px;text-align:right}.mx_CreateSecretStorageDialog_continueSpinner img{width:20px;height:20px}.mx_KeyBackupFailedDialog .mx_Dialog_title{margin-bottom:32px}.mx_KeyBackupFailedDialog_title{position:relative;padding-left:45px;padding-bottom:10px}.mx_KeyBackupFailedDialog_title:before{-webkit-mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);mask:url(../../img/e2e/lock-warning-filled.993fb6c.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;content:"";position:absolute;top:-6px;right:0;bottom:0;left:0}.mx_KeyBackupFailedDialog .mx_Dialog_buttons{margin-top:36px}.mx_RestoreKeyBackupDialog_keyStatus{height:30px}.mx_RestoreKeyBackupDialog_primaryContainer{padding:20px}.mx_RestoreKeyBackupDialog_passPhraseInput,.mx_RestoreKeyBackupDialog_recoveryKeyInput{width:300px;border:1px solid #0dbd8b;border-radius:5px;padding:10px}.mx_RestoreKeyBackupDialog_content>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;min-height:110px}.mx_NetworkDropdown{height:32px;position:relative;padding-right:32px;margin-left:auto;margin-right:9px;margin-top:12px}.mx_NetworkDropdown,.mx_NetworkDropdown .mx_AccessibleButton{width:-webkit-max-content;width:-moz-max-content;width:max-content}.mx_NetworkDropdown_menu{min-width:204px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border:1px solid #c1c1c1;background-color:#fff;max-height:calc(100vh - 20px);overflow-y:auto}.mx_NetworkDropdown_menu_network{font-weight:700}.mx_NetworkDropdown_server{padding:12px 0;border-bottom:1px solid #9fa9ba}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title{padding:0 10px;font-size:1.5rem;font-weight:600;line-height:2rem;margin-bottom:4px;position:relative}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton{position:absolute;display:inline;right:10px;height:16px;width:16px;margin-top:2px}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton:after{content:"";position:absolute;width:16px;height:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle{padding:0 10px;font-size:1rem;line-height:1.4rem;margin-top:-4px;margin-bottom:4px;color:#61708b}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network{font-size:1.2rem;line-height:1.6rem;padding:4px 10px;cursor:pointer;position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network[aria-checked=true]:after{content:"";position:absolute;width:16px;height:16px;right:10px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_NetworkDropdown_server_add:hover,.mx_NetworkDropdown_server_network:hover{background-color:#f3f8fd}.mx_NetworkDropdown_server_add{padding:16px 10px 16px 32px;position:relative;border-radius:0 0 4px 4px}.mx_NetworkDropdown_server_add:before{content:"";position:absolute;width:16px;height:16px;left:7px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/plus.38ae979.svg);mask-image:url(../../img/feather-customised/plus.38ae979.svg);background-color:#61708b}.mx_NetworkDropdown_handle{position:relative}.mx_NetworkDropdown_handle:after{content:"";position:absolute;width:26px;height:26px;right:-27.5px;top:-3px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);background-color:#2e2f32}.mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server{color:#61708b;font-size:1.2rem}.mx_NetworkDropdown_dialog .mx_Dialog{width:45vw}.mx_AccessibleButton{cursor:pointer}.mx_AccessibleButton_disabled{cursor:default}.mx_AccessibleButton_hasKind{padding:7px 18px;text-align:center;border-radius:8px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:1.4rem}.mx_AccessibleButton_kind_primary{color:#fff;background-color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary_outline{color:#0dbd8b;background-color:#fff;border:1px solid #0dbd8b;font-weight:600}.mx_AccessibleButton_kind_secondary{color:#0dbd8b;font-weight:600}.mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled,.mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm{padding:5px 12px;color:#fff;background-color:#0dbd8b}.mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_kind_danger{color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_outline{color:#ff4b55;background-color:#fff;border:1px solid #ff4b55}.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled{color:#f5b6bb;border-color:#f5b6bb}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm{padding:5px 12px;color:#fff;background-color:#ff4b55}.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled{color:#fff;background-color:#f5b6bb}.mx_AccessibleButton_kind_link{color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled{opacity:.4}.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm{padding:5px 12px;color:#0dbd8b;background-color:transparent}.mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled{opacity:.4}.mx_AddressSelector{position:absolute;background-color:#fff;width:485px;max-height:116px;overflow-y:auto;border-radius:3px;border:1px solid #0dbd8b;cursor:pointer;z-index:1}.mx_AddressSelector.mx_AddressSelector_empty{display:none}.mx_AddressSelector_addressListElement .mx_AddressTile{background-color:#fff;border:1px solid #fff}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected{background-color:#f2f5f8}.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile{background-color:#f2f5f8;border:1px solid #f2f5f8}.mx_AddressTile{display:inline-block;border-radius:3px;background-color:rgba(74,73,74,.1);border:1px solid #e7e7e7;line-height:2.6rem;color:#2e2f32;font-size:1.4rem;font-weight:400;margin-right:4px}.mx_AddressTile.mx_AddressTile_error{background-color:rgba(255,0,100,.1);color:#ff4b55;border-color:#ff4b55}.mx_AddressTile_network{padding-right:4px}.mx_AddressTile_avatar,.mx_AddressTile_network{display:inline-block;position:relative;padding-left:2px;vertical-align:middle}.mx_AddressTile_avatar{padding-right:7px}.mx_AddressTile_mx{display:inline-block;margin:0;border:0;padding:0}.mx_AddressTile_name{display:inline-block;padding-right:4px;font-weight:600;overflow:hidden;height:26px;vertical-align:middle}.mx_AddressTile_name.mx_AddressTile_justified{width:180px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_id{display:inline-block;padding-right:11px}.mx_AddressTile_id.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknownMx{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_unknownMxl.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_email{display:inline-block;font-weight:600;padding-right:11px}.mx_AddressTile_email.mx_AddressTile_justified{width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_unknown{display:inline-block;padding-right:11px}.mx_AddressTile_unknown.mx_AddressTile_justified{width:380px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}.mx_AddressTile_dismiss{display:inline-block;padding-right:11px;padding-left:1px;cursor:pointer}.mx_AddressTile_dismiss object{pointer-events:none}.mx_DesktopBuildsNotice{text-align:center;padding:0 16px}.mx_DesktopBuildsNotice>*{vertical-align:middle}.mx_DesktopBuildsNotice>img{margin-right:8px}.mx_desktopCapturerSourcePicker{overflow:hidden}.mx_desktopCapturerSourcePicker_tabLabels{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 0 8px}.mx_desktopCapturerSourcePicker_tabLabel,.mx_desktopCapturerSourcePicker_tabLabel_selected{width:100%;text-align:center;border-radius:8px;padding:8px 0;font-size:1.3rem}.mx_desktopCapturerSourcePicker_tabLabel_selected{background-color:#0dbd8b;color:#fff}.mx_desktopCapturerSourcePicker_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:500px;overflow:overlay}.mx_desktopCapturerSourcePicker_stream_button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:8px;border-radius:4px}.mx_desktopCapturerSourcePicker_stream_button:focus,.mx_desktopCapturerSourcePicker_stream_button:hover{background:#fff}.mx_desktopCapturerSourcePicker_stream_thumbnail{margin:4px;width:312px}.mx_desktopCapturerSourcePicker_stream_name{margin:0 4px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:312px}.mx_DirectorySearchBox{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:9px;padding-right:9px}.mx_DirectorySearchBox_joinButton{display:table-cell;padding:3px 10px;background-color:#f2f5f8;border-radius:3px;background-image:url(../../img/icon-return.cb24475.svg);background-position:8px 70%;background-repeat:no-repeat;text-indent:18px;font-weight:600;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.mx_DirectorySearchBox_clear{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:10px;mask-size:10px;width:15px;height:15px;cursor:pointer}.mx_Dropdown{position:relative;color:#2e2f32}.mx_Dropdown_disabled{opacity:.3}.mx_Dropdown_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;border-radius:3px;border:1px solid #c7c7c7;font-size:1.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_Dropdown_input.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_Dropdown_input:focus{border-color:#238cf5}.mx_Dropdown_input.mx_AccessibleButton:focus{-webkit-filter:none;filter:none}.mx_Dropdown_arrow{width:10px;height:6px;padding-right:9px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_Dropdown_option{height:35px;line-height:3.5rem;padding-left:8px;padding-right:8px}.mx_Dropdown_input>.mx_Dropdown_option{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Dropdown_input>.mx_Dropdown_option,.mx_Dropdown_option div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_Dropdown_option .mx_Dropdown_option_emoji,.mx_Dropdown_option img{margin:5px;width:16px;vertical-align:middle}.mx_Dropdown_option_emoji{font-size:1.6rem;line-height:1.6rem}input.mx_Dropdown_option,input.mx_Dropdown_option:focus{font-weight:400;border:0;padding-top:0;padding-bottom:0;width:60%}.mx_Dropdown_menu{position:absolute;left:-1px;right:-1px;top:100%;z-index:2;margin:0;padding:0;border-radius:3px;border:1px solid #238cf5;background-color:#fff;max-height:200px;overflow-y:auto}.mx_Dropdown_menu .mx_Dropdown_option{height:auto;min-height:35px}.mx_Dropdown_menu .mx_Dropdown_option_highlight{background-color:#ddd}.mx_Dropdown_searchPrompt{font-weight:400;margin-left:5px;margin-bottom:5px}.mx_EditableItemList{margin-top:12px;margin-bottom:10px}.mx_EditableItem{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:5px}.mx_EditableItem_delete{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;margin-right:5px;cursor:pointer;vertical-align:middle;width:14px;height:14px;-webkit-mask-image:url(../../img/feather-customised/cancel.23c2689.svg);mask-image:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#ff4b55;-webkit-mask-size:100%;mask-size:100%}.mx_EditableItem_email{vertical-align:middle}.mx_EditableItem_promptText{margin-right:10px;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.mx_EditableItem_confirmBtn{margin-right:5px}.mx_EditableItem_item{-webkit-box-flex:1;-ms-flex:auto 1 0px;flex:auto 1 0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;width:calc(100% - 14px);overflow-x:hidden;text-overflow:ellipsis}.mx_EditableItemList_label{margin-bottom:5px}.mx_ErrorBoundary{width:100%;height:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_ErrorBoundary,.mx_ErrorBoundary_body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ErrorBoundary_body{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:400px}.mx_ErrorBoundary_body .mx_AccessibleButton{margin-top:5px}.mx_EventListSummary{position:relative}.mx_TextualEvent.mx_EventListSummary_summary{font-size:1.4rem;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_EventListSummary_avatars{display:inline-block;margin-right:8px;padding-top:8px;line-height:1.2rem}.mx_EventListSummary_avatars .mx_BaseAvatar{margin-right:-4px;cursor:pointer}.mx_EventListSummary_toggle{color:#0dbd8b;cursor:pointer;float:right;margin-right:10px;margin-top:8px}.mx_EventListSummary_line{border-bottom:1px solid transparent;margin-left:63px;line-height:3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_line{line-height:2.2rem}.mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle{margin-top:3px}.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary{font-size:1.3rem}.mx_FacePile .mx_FacePile_faces{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;vertical-align:middle}.mx_FacePile .mx_FacePile_faces>.mx_FacePile_face+.mx_FacePile_face{margin-right:-8px}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image{border:1px solid #fff}.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial{margin:1px}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more{position:relative;border-radius:100%;width:30px;height:30px;background-color:hsla(0,0%,91%,.77)}.mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before{content:"";z-index:1;position:absolute;top:0;left:0;height:inherit;width:inherit;background:#8d99a5;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_FacePile .mx_FacePile_summary{margin-left:12px;font-size:1.4rem;line-height:2.4rem;color:#8d99a5}.mx_Field{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0;position:relative;margin:1em 0;border-radius:4px;-webkit-transition:border-color .25s;transition:border-color .25s;border:1px solid #e7e7e7}.mx_Field_prefix{border-right:1px solid #e7e7e7}.mx_Field_postfix{border-left:1px solid #e7e7e7}.mx_Field input,.mx_Field select,.mx_Field textarea{font-weight:400;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;border:none;border-radius:4px;padding:8px 9px;color:#2e2f32;background-color:#fff;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:0}.mx_Field select{-moz-appearance:none;-webkit-appearance:none}.mx_Field_select:before{content:"";position:absolute;top:15px;right:10px;width:10px;height:6px;-webkit-mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);mask:url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#2e2f32;z-index:1;pointer-events:none}.mx_Field:focus-within{border-color:#238cf5}.mx_Field input:focus,.mx_Field select:focus,.mx_Field textarea:focus{outline:0}.mx_Field input::-webkit-input-placeholder,.mx_Field textarea::-webkit-input-placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-moz-placeholder,.mx_Field textarea::-moz-placeholder{-moz-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:-ms-input-placeholder,.mx_Field textarea:-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::-ms-input-placeholder,.mx_Field textarea::-ms-input-placeholder{-ms-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input::placeholder,.mx_Field textarea::placeholder{-webkit-transition:color .25s ease-in 0s;transition:color .25s ease-in 0s;color:transparent}.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-moz-placeholder,.mx_Field textarea:placeholder-shown:focus::-moz-placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus:-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::-ms-input-placeholder,.mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-moz-placeholder-shown:focus::placeholder,.mx_Field textarea:-moz-placeholder-shown:focus::placeholder{-moz-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:-ms-input-placeholder:focus::placeholder,.mx_Field textarea:-ms-input-placeholder:focus::placeholder{-ms-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field input:placeholder-shown:focus::placeholder,.mx_Field textarea:placeholder-shown:focus::placeholder{-webkit-transition:color .25s ease-in .1s;transition:color .25s ease-in .1s;color:#888}.mx_Field label{-webkit-transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;transition:font-size .25s ease-out .1s,color .25s ease-out .1s,top .25s ease-out .1s,background-color .25s ease-out .1s;color:#2e2f32;background-color:transparent;font-size:1.4rem;position:absolute;left:0;top:0;margin:7px 8px;padding:2px;pointer-events:none;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 20px)}.mx_Field input:not(:-moz-placeholder-shown)+label,.mx_Field textarea:not(:-moz-placeholder-shown)+label{-moz-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:not(:-ms-input-placeholder)+label,.mx_Field textarea:not(:-ms-input-placeholder)+label{-ms-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field_labelAlwaysTopLeft label,.mx_Field input:focus+label,.mx_Field input:not(:placeholder-shown)+label,.mx_Field select+label,.mx_Field textarea:focus+label,.mx_Field textarea:not(:placeholder-shown)+label{-webkit-transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;transition:font-size .25s ease-out 0s,color .25s ease-out 0s,top .25s ease-out 0s,background-color .25s ease-out 0s;font-size:1rem;top:-13px;padding:0 2px;background-color:#fff;pointer-events:auto}.mx_Field input:focus+label,.mx_Field select:focus+label,.mx_Field textarea:focus+label{color:#238cf5}.mx_Field input:disabled,.mx_Field input:disabled+label,.mx_Field select:disabled,.mx_Field select:disabled+label,.mx_Field textarea:disabled,.mx_Field textarea:disabled+label{background-color:#fff;color:#888}.mx_Field_valid.mx_Field,.mx_Field_valid.mx_Field:focus-within{border-color:#0dbd8b}.mx_Field_valid.mx_Field:focus-within label,.mx_Field_valid.mx_Field label{color:#0dbd8b}.mx_Field_invalid.mx_Field,.mx_Field_invalid.mx_Field:focus-within{border-color:#ff4b55}.mx_Field_invalid.mx_Field:focus-within label,.mx_Field_invalid.mx_Field label{color:#ff4b55}.mx_Field_tooltip{margin-top:-12px;margin-left:4px;width:200px}.mx_Field_tooltip.mx_Field_valid{-webkit-animation:mx_fadeout 1s 2s forwards;animation:mx_fadeout 1s 2s forwards}.mx_Field .mx_Dropdown_input{border:initial;border-radius:0;border-radius:initial}.mx_Field .mx_CountryDropdown{width:7.8rem}.mx_FormButton{line-height:1.6rem;padding:5px 15px;font-size:1.2rem;height:-webkit-min-content;height:-moz-min-content;height:min-content}.mx_FormButton:not(:last-child){margin-right:8px}.mx_FormButton.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_FormButton.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_FormButton.mx_AccessibleButton_kind_secondary{color:#737d8c;border:1px solid #737d8c;background-color:unset}.mx_ImageView{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView,.mx_ImageView_image_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%}.mx_ImageView_image_wrapper{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_ImageView_image{pointer-events:all;-ms-flex-negative:0;flex-shrink:0}.mx_ImageView_panel{width:100%;height:68px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_ImageView_info_wrapper,.mx_ImageView_panel{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_info_wrapper{pointer-events:all;padding-left:32px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#fff}.mx_ImageView_info{padding-left:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_ImageView_info_sender{font-weight:700}.mx_ImageView_toolbar{padding-right:16px;pointer-events:all;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ImageView_button{margin-left:24px;display:block}.mx_ImageView_button:before{content:"";height:22px;width:22px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;display:block;background-color:#c1c6cd}.mx_ImageView_button_rotateCW:before{-webkit-mask-image:url(../../img/image-view/rotate-cw.60d903e.svg);mask-image:url(../../img/image-view/rotate-cw.60d903e.svg)}.mx_ImageView_button_rotateCCW:before{-webkit-mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg);mask-image:url(../../img/image-view/rotate-ccw.b28ae4a.svg)}.mx_ImageView_button_zoomOut:before{-webkit-mask-image:url(../../img/image-view/zoom-out.8506f80.svg);mask-image:url(../../img/image-view/zoom-out.8506f80.svg)}.mx_ImageView_button_zoomIn:before{-webkit-mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg);mask-image:url(../../img/image-view/zoom-in.3b3f32e.svg)}.mx_ImageView_button_download:before{-webkit-mask-image:url(../../img/image-view/download.2eac468.svg);mask-image:url(../../img/image-view/download.2eac468.svg)}.mx_ImageView_button_more:before{-webkit-mask-image:url(../../img/image-view/more.0427c6c.svg);mask-image:url(../../img/image-view/more.0427c6c.svg)}.mx_ImageView_button_close{border-radius:100%;background:#21262c}.mx_ImageView_button_close:before{width:32px;height:32px;-webkit-mask-image:url(../../img/image-view/close.97d1731.svg);mask-image:url(../../img/image-view/close.97d1731.svg);-webkit-mask-size:40%;mask-size:40%}.mx_InfoTooltip_icon,.mx_InfoTooltip_icon:before{width:16px;height:16px;display:inline-block}.mx_InfoTooltip_icon:before{background-color:#61708b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/element-icons/info.dc07e19.svg);mask-image:url(../../img/element-icons/info.dc07e19.svg)}.mx_InlineSpinner{display:inline}.mx_InlineSpinner_spin img{margin:0 6px;vertical-align:-3px}.mx_InviteReason{position:relative;margin-bottom:1em}.mx_InviteReason .mx_InviteReason_reason{visibility:visible}.mx_InviteReason .mx_InviteReason_view{display:none;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;color:#737d8c}.mx_InviteReason .mx_InviteReason_view:before{content:"";margin-right:8px;background-color:#737d8c;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_InviteReason_hidden .mx_InviteReason_reason{visibility:hidden}.mx_InviteReason_hidden .mx_InviteReason_view{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ManageIntegsButton_error{position:relative;float:right;cursor:not-allowed}.mx_ManageIntegsButton_error img{position:absolute;right:-5px;top:-5px}.mx_ManageIntegsButton_errorPopup{position:absolute;top:110%;left:-275%;width:550%;padding:30%;font-size:10pt;line-height:1.5em;border-radius:5px;background-color:#0dbd8b;color:#fff;text-align:center;z-index:1000}.mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup{display:none}.mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup{display:inline}.mx_MiniAvatarUploader{position:relative;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_MiniAvatarUploader .mx_Tooltip{display:inline-block;position:absolute;z-index:unset;width:-webkit-max-content;width:-moz-max-content;width:max-content;left:72px;top:0}.mx_MiniAvatarUploader:after,.mx_MiniAvatarUploader:before{content:"";position:absolute;height:26px;width:26px;right:-6px;bottom:-6px}.mx_MiniAvatarUploader:before{background-color:#fff;border-radius:50%;z-index:1}.mx_MiniAvatarUploader:after{background-color:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg);-webkit-mask-size:16px;mask-size:16px;z-index:2}.mx_MiniAvatarUploader.mx_MiniAvatarUploader_busy:after{background:url(../../img/spinner.0b29ec9.gif) no-repeat 50%;background-size:80%;-webkit-mask:unset;mask:unset}.mx_MiniAvatarUploader_input{display:none}.mx_PowerSelector{width:100%}.mx_PowerSelector .mx_Field input,.mx_PowerSelector .mx_Field select{-webkit-box-sizing:border-box;box-sizing:border-box}progress.mx_ProgressBar{height:6px;width:60px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:6px}progress.mx_ProgressBar::-moz-progress-bar{border-radius:6px}progress.mx_ProgressBar::-webkit-progress-bar,progress.mx_ProgressBar::-webkit-progress-value{border-radius:6px}progress.mx_ProgressBar{color:#0dbd8b}progress.mx_ProgressBar::-moz-progress-bar{background-color:#0dbd8b}progress.mx_ProgressBar::-webkit-progress-value{background-color:#0dbd8b}progress.mx_ProgressBar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar::-webkit-progress-bar{background-color:rgba(141,151,165,.2)}progress.mx_ProgressBar ::-webkit-progress-value{-webkit-transition:width 1s;transition:width 1s}progress.mx_ProgressBar ::-moz-progress-bar{-moz-transition:padding-bottom 1s;transition:padding-bottom 1s;padding-bottom:var(--value);transform-origin:0 0;transform:rotate(-90deg) translateX(-15px);padding-left:15px;height:0}.mx_QRCode img{border-radius:8px}.mx_ReplyThread{margin-top:0}.mx_ReplyThread .mx_DateSeparator{font-size:1em!important;margin-top:0;margin-bottom:0;padding-bottom:1px;bottom:-5px}.mx_ReplyThread_show{cursor:pointer}blockquote.mx_ReplyThread{margin-left:0;padding-left:10px;border-left:4px solid #ddd}.mx_ResizeHandle{cursor:row-resize;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;z-index:100}.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -5px;padding:0 5px;cursor:col-resize}.mx_ResizeHandle.mx_ResizeHandle_vertical{margin:-5px 0;padding:5px 0;cursor:row-resize}.mx_MatrixChat>.mx_ResizeHandle.mx_ResizeHandle_horizontal{margin:0 -10px 0 0;padding:0 8px 0 0}.mx_ResizeHandle>div{background:transparent}.mx_ResizeHandle.mx_ResizeHandle_horizontal>div{width:1px;height:100%}.mx_ResizeHandle.mx_ResizeHandle_vertical>div{height:1px}.mx_AtRoomPill,.mx_GroupPill,.mx_RoomPill,.mx_UserPill{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;vertical-align:middle;border-radius:1.6rem;line-height:1.5rem;padding-left:0}a.mx_Pill{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 1ch)}.mx_Pill{padding:.1rem .4em .1rem .1rem;vertical-align:text-top;line-height:1.7rem}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_GroupPill{color:#fff;background-color:#aaa}.mx_EventTile_content .markdown-body a.mx_Pill{text-decoration:none}.mx_EventTile_content .markdown-body a.mx_UserPill,.mx_UserPill{color:#2e2f32;background-color:rgba(0,0,0,.1)}.mx_UserPill_selected{background-color:#0dbd8b!important}.mx_EventTile_content .markdown-body a.mx_AtRoomPill,.mx_EventTile_content .mx_AtRoomPill,.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me,.mx_MessageComposer_input .mx_AtRoomPill{color:#fff;background-color:#ff4b55}.mx_EventTile_content .markdown-body a.mx_GroupPill,.mx_EventTile_content .markdown-body a.mx_RoomPill,.mx_GroupPill,.mx_RoomPill{color:#fff;background-color:#aaa}.mx_EventTile_body .mx_GroupPill,.mx_EventTile_body .mx_RoomPill,.mx_EventTile_body .mx_UserPill{cursor:pointer}.mx_AtRoomPill .mx_BaseAvatar,.mx_GroupPill .mx_BaseAvatar,.mx_RoomPill .mx_BaseAvatar,.mx_UserPill .mx_BaseAvatar{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-radius:10rem;margin-right:.24rem}.mx_Markdown_BOLD{font-weight:700}.mx_Markdown_ITALIC{font-style:italic}.mx_Markdown_CODE{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.mx_Markdown_HR{display:block;background:#e9e9e9}.mx_Markdown_STRIKETHROUGH{text-decoration:line-through}.mx_RoleButton{margin-left:4px;margin-right:4px;cursor:pointer;display:inline-block}.mx_RoleButton object{pointer-events:none}.mx_RoleButton_tooltip{display:inline-block;position:relative;top:-25px;left:6px}.mx_RoomAliasField{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;min-width:0;max-width:100%}.mx_RoomAliasField input{width:150px;padding-left:0;padding-right:0}.mx_RoomAliasField input::-webkit-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-moz-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input:-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::-ms-input-placeholder{color:#888;font-weight:400}.mx_RoomAliasField input::placeholder{color:#888;font-weight:400}.mx_RoomAliasField .mx_Field_postfix,.mx_RoomAliasField .mx_Field_prefix{color:#888;border-left:none;border-right:none;font-weight:600;padding:9px 10px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomAliasField .mx_Field_postfix{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 180px)}.mx_SSOButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_SSOButtons .mx_SSOButtons_row+.mx_SSOButtons_row{margin-top:16px}.mx_SSOButtons .mx_SSOButton{position:relative;width:100%;padding:7px 32px;text-align:center;border-radius:8px;display:inline-block;font-size:1.4rem;font-weight:600;border:1px solid #e7e7e7;color:#2e2f32}.mx_SSOButtons .mx_SSOButton>img{-o-object-fit:contain;object-fit:contain;position:absolute;left:8px;top:4px}.mx_SSOButtons .mx_SSOButton_default{color:#0dbd8b;background-color:#fff;border-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary{color:#fff;background-color:#0dbd8b}.mx_SSOButtons .mx_SSOButton_mini{-webkit-box-sizing:border-box;box-sizing:border-box;width:50px;height:50px;min-width:50px;padding:12px}.mx_SSOButtons .mx_SSOButton_mini>img{left:12px;top:12px}.mx_SSOButtons .mx_SSOButton_mini+.mx_SSOButton_mini{margin-left:16px}.mx_ServerPicker{margin-bottom:14px;border-bottom:1px solid rgba(141,151,165,.2);display:grid;grid-template-columns:auto -webkit-min-content;grid-template-columns:auto min-content;grid-template-rows:auto auto auto;font-size:1.4rem;line-height:2rem}.mx_ServerPicker>h3{font-weight:600;margin:0 0 20px;grid-column:1;grid-row:1}.mx_ServerPicker .mx_ServerPicker_help{width:20px;height:20px;background-color:#c1c6cd;border-radius:10px;grid-column:2;grid-row:1;margin-left:auto;text-align:center;color:#fff;font-size:16px;position:relative}.mx_ServerPicker .mx_ServerPicker_help:before{content:"";width:24px;height:24px;position:absolute;top:-2px;left:-2px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/element-icons/i.80d84f3.svg);mask-image:url(../../img/element-icons/i.80d84f3.svg);background:#fff}.mx_ServerPicker .mx_ServerPicker_server{color:#232f32;grid-column:1;grid-row:2;margin-bottom:16px}.mx_ServerPicker .mx_ServerPicker_change{padding:0;font-size:inherit;grid-column:2;grid-row:2}.mx_ServerPicker .mx_ServerPicker_desc{margin-top:-12px;color:#8d99a5;grid-column:1/2;grid-row:3;margin-bottom:16px}.mx_ServerPicker_helpDialog .mx_Dialog_content{width:456px}.mx_Slider{position:relative;margin:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Slider_dotContainer{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_Slider_bar,.mx_Slider_dotContainer{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_Slider_bar{-webkit-box-sizing:border-box;box-sizing:border-box;position:absolute;height:1em;width:100%;padding:0 .5em;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_Slider_bar>hr{width:100%;height:.4em;background-color:#c1c9d6;border:0}.mx_Slider_selection{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:calc(100% - 1em);height:1em;position:absolute;pointer-events:none}.mx_Slider_selectionDot{position:absolute;width:1.1em;height:1.1em;background-color:#0dbd8b;border-radius:50%;-webkit-box-shadow:0 0 6px #d3d3d3;box-shadow:0 0 6px #d3d3d3;z-index:10}.mx_Slider_selection>hr{margin:0;border:.2em solid #0dbd8b}.mx_Slider_dot{height:1em;width:1em;border-radius:50%;background-color:#c1c9d6;z-index:0}.mx_Slider_dotActive{background-color:#0dbd8b}.mx_Slider_dotValue{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#c1c9d6}.mx_Slider_labelContainer{width:1em}.mx_Slider_label{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;left:-50%}.mx_Spinner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_MatrixChat_middlePanel .mx_Spinner{height:auto}.mx_Checkbox{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_Checkbox input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:0}.mx_Checkbox input[type=checkbox]+label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;-ms-flex-negative:0;flex-shrink:0;height:1.6rem;width:1.6rem;size:.5rem;border:.15rem solid rgba(97,112,139,.5);-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:.4rem}.mx_Checkbox input[type=checkbox]+label>.mx_Checkbox_background img{display:none;height:100%;width:100%;-webkit-filter:invert(100%);filter:invert(100%)}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background{background:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox]:checked+label>.mx_Checkbox_background img{display:block}.mx_Checkbox input[type=checkbox]+label>:not(.mx_Checkbox_background){margin-left:10px}.mx_Checkbox input[type=checkbox]:disabled+label{opacity:.5;cursor:not-allowed}.mx_Checkbox input[type=checkbox]:checked:disabled+label>.mx_Checkbox_background{background-color:#0dbd8b;border-color:#0dbd8b}.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_Checkbox input[type=checkbox].focus-visible+label .mx_Checkbox_background{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton{position:relative;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.mx_RadioButton,.mx_RadioButton>.mx_RadioButton_content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_RadioButton>.mx_RadioButton_content{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:8px;margin-right:8px}.mx_RadioButton .mx_RadioButton_spacer{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.6rem;width:1.6rem}.mx_RadioButton>input[type=radio]{margin:0;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.mx_RadioButton>input[type=radio]+div{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-sizing:border-box;box-sizing:border-box;height:1.6rem;width:1.6rem;margin-left:2px;border:.15rem solid #61708b;border-radius:1.6rem}.mx_RadioButton>input[type=radio]+div>div{-webkit-box-sizing:border-box;box-sizing:border-box;height:.8rem;width:.8rem;border-radius:.8rem}.mx_RadioButton>input[type=radio].focus-visible+div{outline-width:2px;outline-style:solid;outline-color:Highlight}@media (-webkit-min-device-pixel-ratio:0){.mx_RadioButton>input[type=radio].focus-visible+div{outline-color:-webkit-focus-ring-color;outline-style:auto}}.mx_RadioButton>input[type=radio]:checked+div{border-color:#0dbd8b}.mx_RadioButton>input[type=radio]:checked+div>div{background:#0dbd8b}.mx_RadioButton>input[type=radio]:disabled+div,.mx_RadioButton>input[type=radio]:disabled+div+span{opacity:.5;cursor:not-allowed}.mx_RadioButton>input[type=radio]:disabled+div{border-color:#61708b}.mx_RadioButton>input[type=radio]:checked:disabled+div>div{background-color:#61708b}.mx_RadioButton_outlined{border:1px solid #e3e8f0;border-radius:8px}.mx_RadioButton_checked{border-color:#0dbd8b}.mx_SyntaxHighlight{background:none!important;color:#747474!important}.mx_TextWithTooltip_tooltip{display:none}.mx_ToggleSwitch{-webkit-transition:background-color .2s ease-out .1s;transition:background-color .2s ease-out .1s;width:4.4rem;height:2rem;border-radius:1.5rem;padding:2px;background-color:#c1c9d6;opacity:.5}.mx_ToggleSwitch_enabled{cursor:pointer;opacity:1}.mx_ToggleSwitch.mx_ToggleSwitch_on{background-color:#0dbd8b}.mx_ToggleSwitch.mx_ToggleSwitch_on>.mx_ToggleSwitch_ball{left:calc(100% - 2rem)}.mx_ToggleSwitch_ball{position:relative;width:2rem;height:2rem;border-radius:2rem;background-color:#fff;-webkit-transition:left .15s ease-out .1s;transition:left .15s ease-out .1s;left:0}@-webkit-keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@keyframes mx_fadein{0%{opacity:0}to{opacity:1}}@-webkit-keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}@keyframes mx_fadeout{0%{opacity:1}to{opacity:0}}.mx_Tooltip_chevron{position:absolute;left:-7px;top:10px;width:0;height:0;border-top:7px solid transparent;border-right:7px solid #e7e7e7;border-bottom:7px solid transparent}.mx_Tooltip_chevron:after{content:"";width:0;height:0;border-top:6px solid transparent;border-right:6px solid #fff;border-bottom:6px solid transparent;position:absolute;top:-6px;left:1px}.mx_Tooltip{position:fixed;border-radius:8px;-webkit-box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);box-shadow:4px 4px 12px 0 rgba(118,131,156,.6);z-index:6000;padding:10px;pointer-events:none;line-height:1.4rem;font-size:1.2rem;font-weight:500;max-width:200px;word-break:break-word;margin-right:50px;background-color:#27303a;color:#fff;border:0;text-align:center}.mx_Tooltip,.mx_Tooltip .mx_Tooltip_chevron{display:none}.mx_Tooltip.mx_Tooltip_visible{-webkit-animation:mx_fadein .2s forwards;animation:mx_fadein .2s forwards}.mx_Tooltip.mx_Tooltip_invisible{-webkit-animation:mx_fadeout .1s forwards;animation:mx_fadeout .1s forwards}.mx_Field_tooltip{background-color:#fff;color:#2e2f32;border:1px solid #e7e7e7;text-align:unset}.mx_Field_tooltip .mx_Tooltip_chevron{display:unset}.mx_Tooltip_title{font-weight:600}.mx_Tooltip_sub{opacity:.7;margin-top:4px}.mx_TooltipButton{display:inline-block;width:11px;height:11px;margin-left:5px;border:2px solid #dbdbdb;border-radius:20px;color:#dbdbdb;-webkit-transition:opacity .2s ease-in;transition:opacity .2s ease-in;opacity:.6;line-height:1.1rem;text-align:center;cursor:pointer}.mx_TooltipButton:hover{opacity:1}.mx_TooltipButton_container{position:relative;top:-18px;left:4px}.mx_TooltipButton_helpText{width:400px;text-align:start;line-height:17px!important}.mx_Validation{position:relative}.mx_Validation_details{padding-left:20px;margin:0}.mx_Validation_description+.mx_Validation_details{margin:1em 0 0}.mx_Validation_detail{position:relative;font-weight:400;list-style:none;margin-bottom:.5em}.mx_Validation_detail:last-child{margin-bottom:0}.mx_Validation_detail:before{content:"";position:absolute;width:14px;height:14px;top:0;left:-18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_Validation_detail.mx_Validation_valid{color:#0dbd8b}.mx_Validation_detail.mx_Validation_valid:before{-webkit-mask-image:url(../../img/feather-customised/check.5745b4e.svg);mask-image:url(../../img/feather-customised/check.5745b4e.svg);background-color:#0dbd8b}.mx_Validation_detail.mx_Validation_invalid{color:#ff4b55}.mx_Validation_detail.mx_Validation_invalid:before{-webkit-mask-image:url(../../img/feather-customised/x.9662221.svg);mask-image:url(../../img/feather-customised/x.9662221.svg);background-color:#ff4b55}.mx_EmojiPicker{width:340px;height:450px;border-radius:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:scroll;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.2) transparent}.mx_EmojiPicker_header{padding:4px 8px 0;border-bottom:1px solid #e9edf1}.mx_EmojiPicker_anchor{padding:8px 8px 6px;border:none;border-bottom:2px solid transparent;background-color:transparent;border-radius:4px 4px 0 0;width:36px;height:38px}.mx_EmojiPicker_anchor:not(:disabled){cursor:pointer}.mx_EmojiPicker_anchor:not(:disabled):hover{background-color:#ddd;border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_anchor:before{background-color:#2e2f32;content:"";display:inline-block;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:100%;height:100%}.mx_EmojiPicker_anchor:disabled:before{background-color:#ddd}.mx_EmojiPicker_anchor_activity:before{-webkit-mask-image:url(../../img/emojipicker/activity.921ec9f.svg);mask-image:url(../../img/emojipicker/activity.921ec9f.svg)}.mx_EmojiPicker_anchor_custom:before{-webkit-mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg);mask-image:url(../../img/emojipicker/custom.e1cd0fd.svg)}.mx_EmojiPicker_anchor_flags:before{-webkit-mask-image:url(../../img/emojipicker/flags.1a8855e.svg);mask-image:url(../../img/emojipicker/flags.1a8855e.svg)}.mx_EmojiPicker_anchor_foods:before{-webkit-mask-image:url(../../img/emojipicker/foods.c6b220a.svg);mask-image:url(../../img/emojipicker/foods.c6b220a.svg)}.mx_EmojiPicker_anchor_nature:before{-webkit-mask-image:url(../../img/emojipicker/nature.6540b99.svg);mask-image:url(../../img/emojipicker/nature.6540b99.svg)}.mx_EmojiPicker_anchor_objects:before{-webkit-mask-image:url(../../img/emojipicker/objects.4d34f58.svg);mask-image:url(../../img/emojipicker/objects.4d34f58.svg)}.mx_EmojiPicker_anchor_people:before{-webkit-mask-image:url(../../img/emojipicker/people.e918580.svg);mask-image:url(../../img/emojipicker/people.e918580.svg)}.mx_EmojiPicker_anchor_places:before{-webkit-mask-image:url(../../img/emojipicker/places.7310322.svg);mask-image:url(../../img/emojipicker/places.7310322.svg)}.mx_EmojiPicker_anchor_recent:before{-webkit-mask-image:url(../../img/emojipicker/recent.13b42e2.svg);mask-image:url(../../img/emojipicker/recent.13b42e2.svg)}.mx_EmojiPicker_anchor_symbols:before{-webkit-mask-image:url(../../img/emojipicker/symbols.15a557d.svg);mask-image:url(../../img/emojipicker/symbols.15a557d.svg)}.mx_EmojiPicker_anchor_visible{border-bottom:2px solid #0dbd8b}.mx_EmojiPicker_search{margin:8px;border-radius:4px;border:1px solid #e7e7e7;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_EmojiPicker_search input{-webkit-box-flex:1;-ms-flex:1;flex:1;border:none;padding:8px 12px;border-radius:4px 0}.mx_EmojiPicker_search button{border:none;background-color:inherit;margin:0;padding:8px;-ms-flex-item-align:center;align-self:center;width:32px;height:32px}.mx_EmojiPicker_search_clear{cursor:pointer}.mx_EmojiPicker_search_icon{width:16px;margin:8px}.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear){pointer-events:none}.mx_EmojiPicker_search_icon:after{-webkit-mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;mask:url(../../img/emojipicker/search.973c315.svg) no-repeat;-webkit-mask-size:100%;mask-size:100%;background-color:#2e2f32;content:"";display:inline-block;width:100%;height:100%}.mx_EmojiPicker_search_clear:after{-webkit-mask-image:url(../../img/emojipicker/delete.f7344c5.svg);mask-image:url(../../img/emojipicker/delete.f7344c5.svg)}.mx_EmojiPicker_category{padding:0 12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_category_label{width:304px}.mx_EmojiPicker_list{width:304px;padding:0;margin:0}.mx_EmojiPicker_item_wrapper{display:inline-block;list-style:none;width:38px;cursor:pointer}.mx_EmojiPicker_item{display:inline-block;font-size:2rem;padding:5px;width:100%;height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;border-radius:4px}.mx_EmojiPicker_item:hover{background-color:#ddd}.mx_EmojiPicker_item_selected{color:rgba(0,0,0,.5);border:1px solid #0dbd8b;padding:4px}.mx_EmojiPicker_category_label,.mx_EmojiPicker_preview_name{font-size:1.6rem;font-weight:600;margin:0}.mx_EmojiPicker_footer{border-top:1px solid #e9edf1;min-height:72px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_EmojiPicker_preview_emoji{font-size:3.2rem;padding:8px 16px}.mx_EmojiPicker_preview_text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_EmojiPicker_name{text-transform:capitalize}.mx_EmojiPicker_shortcode{color:#747474;font-size:1.4rem}.mx_EmojiPicker_shortcode:after,.mx_EmojiPicker_shortcode:before{content:":"}.mx_EmojiPicker_quick{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:distribute;justify-content:space-around}.mx_EmojiPicker_quick_header .mx_EmojiPicker_name{margin-right:4px}.mx_GroupPublicity_toggle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:8px}.mx_GroupPublicity_toggle .mx_GroupTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.mx_GroupPublicity_toggle .mx_ToggleSwitch{float:right}.mx_GroupRoomTile{position:relative;color:#2e2f32;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_GroupRoomList_wrapper{padding:10px}.mx_GroupUserSettings_groupPublicity_scrollbox{height:200px;border:1px solid transparent;border-radius:3px;overflow:hidden}.mx_CreateEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg);mask-image:url(../../img/element-icons/chat-bubbles.e2bd2cb.svg)}.mx_DateSeparator{clear:both;margin:4px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.4rem;color:#9e9e9e}.mx_DateSeparator>hr{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;height:0;border:none;border-bottom:1px solid transparent}.mx_DateSeparator>div{margin:0 25px;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_EventTileBubble{background-color:#f2f5f8;padding:10px;border-radius:8px;margin:10px auto;max-width:75%;-webkit-box-sizing:border-box;box-sizing:border-box;display:grid;grid-template-columns:24px minmax(0,1fr) -webkit-min-content;grid-template-columns:24px minmax(0,1fr) min-content}.mx_EventTileBubble:after,.mx_EventTileBubble:before{position:relative;grid-column:1;grid-row:1/3;width:16px;height:16px;content:"";top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;margin-top:4px}.mx_EventTileBubble .mx_EventTileBubble_subtitle,.mx_EventTileBubble .mx_EventTileBubble_title{overflow-wrap:break-word}.mx_EventTileBubble .mx_EventTileBubble_title{font-weight:600;font-size:1.5rem;grid-column:2;grid-row:1}.mx_EventTileBubble .mx_EventTileBubble_subtitle{font-size:1.2rem;grid-column:2;grid-row:2}.mx_MEmoteBody{white-space:pre-wrap}.mx_MEmoteBody_sender{cursor:pointer}.mx_MFileBody_download{color:#0dbd8b}.mx_MFileBody_download .mx_MFileBody_download_icon{width:12px;height:12px;-webkit-mask-size:12px;mask-size:12px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:url(../../img/download.4f331f0.svg);mask-image:url(../../img/download.4f331f0.svg);background-color:#0dbd8b;display:inline-block}.mx_MFileBody_download a{color:#0dbd8b;text-decoration:none;cursor:pointer}.mx_MFileBody_download object{margin-left:-16px;padding-right:4px;margin-top:-4px;vertical-align:middle;pointer-events:none}.mx_MFileBody_download iframe{margin:0;padding:0;border:none;width:100%;height:1.5em}.mx_MFileBody_info{background-color:#e3e8f0;border-radius:12px;width:243px;padding:6px 12px;color:#737d8c}.mx_MFileBody_info .mx_MFileBody_info_icon{background-color:#fff;border-radius:20px;display:inline-block;width:32px;height:32px;position:relative;vertical-align:middle;margin-right:12px}.mx_MFileBody_info .mx_MFileBody_info_icon:before{content:"";-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-image:url(../icons/attach.svg);mask-image:url(../icons/attach.svg);background-color:#737d8c;width:13px;height:15px;position:absolute;top:8px;left:9px}.mx_MFileBody_info .mx_MFileBody_info_filename{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;display:inline-block;width:calc(100% - 44px);vertical-align:middle}.mx_MImageBody{display:block;margin-right:34px}.mx_MImageBody_thumbnail{position:absolute;width:100%;height:100%;left:0;top:0;border-radius:4px}.mx_MImageBody_thumbnail_container{overflow:hidden;position:relative}.mx_MImageBody_thumbnail_spinner{position:absolute;left:50%;top:50%}.mx_MImageBody_thumbnail_spinner>*{-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.mx_MImageBody_gifLabel{position:absolute;display:block;top:0;left:14px;padding:5px;border-radius:5px;background:rgba(0,0,0,.7);border:2px solid rgba(0,0,0,.2);color:#fff;pointer-events:none}.mx_HiddenImagePlaceholder{position:absolute;left:0;top:0;bottom:0;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;cursor:pointer;background-color:#f3f8fd}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button{color:#0dbd8b}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span.mx_HiddenImagePlaceholder_eye{margin-right:8px;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);mask-image:url(../../img/feather-customised/eye.52aa0d2.svg);display:inline-block;width:18px;height:14px}.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span:not(.mx_HiddenImagePlaceholder_eye){vertical-align:text-bottom}.mx_EventTile:hover .mx_HiddenImagePlaceholder{background-color:#fff}.mx_MJitsiWidgetEvent:before{background-color:#91a1c0;-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_MNoticeBody{white-space:pre-wrap;opacity:.6}.mx_MStickerBody_wrapper{padding:20px 0}.mx_MStickerBody_tooltip{position:absolute;top:50%}.mx_MStickerBody_hidden{max-width:220px;text-decoration:none;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MTextBody{white-space:pre-wrap}span.mx_MVideoBody video.mx_MVideoBody{max-width:100%;height:auto;border-radius:4px}.mx_MVoiceMessageBody{display:inline-block}.mx_MessageActionBar{position:absolute;visibility:hidden;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;height:24px;line-height:2.4rem;border-radius:4px;background:#fff;top:-26px;right:8px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_MessageActionBar:before{content:"";position:absolute;width:calc(66px + 100%);height:calc(20px + 100%);top:-12px;left:-58px;z-index:-1;cursor:auto}.mx_MessageActionBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageActionBar>:hover{border-color:#ddd;z-index:1}.mx_MessageActionBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageActionBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageActionBar>:only-child{border-radius:3px}.mx_MessageActionBar_maskButton{width:27px}.mx_MessageActionBar_maskButton:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-size:18px;mask-size:18px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageActionBar_reactButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_MessageActionBar_replyButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg);mask-image:url(../../img/element-icons/room/message-bar/reply.5812741.svg)}.mx_MessageActionBar_editButton:after{-webkit-mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg);mask-image:url(../../img/element-icons/room/message-bar/edit.688678e.svg)}.mx_MessageActionBar_optionsButton:after{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_MessageActionBar_resendButton:after{-webkit-mask-image:url(../../img/element-icons/retry.6cd23ad.svg);mask-image:url(../../img/element-icons/retry.6cd23ad.svg)}.mx_MessageActionBar_cancelButton:after{-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageTimestamp{color:#acacac;font-size:1rem;-webkit-font-feature-settings:"tnum";font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mx_MjolnirBody{opacity:.4}.mx_ReactionsRow{margin:6px 0;color:#2e2f32}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton{position:relative;display:inline-block;visibility:hidden;width:24px;height:24px;vertical-align:middle;margin-left:4px}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before{content:"";position:absolute;height:100%;width:100%;-webkit-mask-size:16px;mask-size:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#8d99a5;-webkit-mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg);mask-image:url(../../img/element-icons/room/message-bar/emoji.af14771.svg)}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active{visibility:visible}.mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before,.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before{background-color:#2e2f32}.mx_EventTile:hover .mx_ReactionsRow_addReactionButton{visibility:visible}.mx_ReactionsRow_showAll{text-decoration:none;font-size:1.2rem;line-height:2rem;margin-left:4px;vertical-align:middle}.mx_ReactionsRow_showAll:link,.mx_ReactionsRow_showAll:visited{color:#8d99a5}.mx_ReactionsRow_showAll:hover{color:#2e2f32}.mx_ReactionsRowButton{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;line-height:2rem;margin-right:6px;padding:1px 6px;border:1px solid #e9edf1;border-radius:10px;background-color:#f3f8fd;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle}.mx_ReactionsRowButton:hover{border-color:#ddd}.mx_ReactionsRowButton.mx_ReactionsRowButton_selected{background-color:#e9fff9;border-color:#0dbd8b}.mx_ReactionsRowButton.mx_AccessibleButton_disabled{cursor:not-allowed}.mx_ReactionsRowButton .mx_ReactionsRowButton_content{max-width:100px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:4px}.mx_RedactedBody{white-space:pre-wrap;color:#61708b;vertical-align:middle;padding-left:20px;position:relative}.mx_RedactedBody:before{height:14px;width:14px;background-color:#61708b;-webkit-mask-image:url(../icons/trash.svg);mask-image:url(../icons/trash.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;content:"";position:absolute;top:1px;left:0}.mx_RoomAvatarEvent{opacity:.5;overflow-y:hidden}.mx_RoomAvatarEvent_avatar{display:inline;position:relative;top:5px}.mx_SenderProfile_name{font-weight:600}.mx_TextualEvent{opacity:.5;overflow-y:hidden}.mx_UnknownBody{white-space:pre-wrap}.mx_EventTile_content.mx_ViewSourceEvent{display:-webkit-box;display:-ms-flexbox;display:flex;opacity:.6;font-size:1.2rem}.mx_EventTile_content.mx_ViewSourceEvent code,.mx_EventTile_content.mx_ViewSourceEvent pre{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EventTile_content.mx_ViewSourceEvent pre{line-height:1.2;margin:3.5px 0}.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle{width:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;visibility:hidden;background-color:#0dbd8b;-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle{-webkit-mask-position:0 bottom;mask-position:0 bottom;margin-bottom:7px;-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle{visibility:visible}.mx_cryptoEvent.mx_cryptoEvent_icon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_cryptoEvent.mx_cryptoEvent_icon:after,.mx_cryptoEvent.mx_cryptoEvent_icon:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_cryptoEvent.mx_cryptoEvent_icon:after{background-color:#91a1c0}.mx_cryptoEvent.mx_cryptoEvent_icon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_cryptoEvent.mx_cryptoEvent_icon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_cryptoEvent .mx_cryptoEvent_buttons,.mx_cryptoEvent .mx_cryptoEvent_state{grid-column:3;grid-row:1/3}.mx_cryptoEvent .mx_cryptoEvent_buttons{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_cryptoEvent .mx_cryptoEvent_state{width:130px;padding:10px 20px;margin:auto 0;text-align:center;color:#8d99a5;overflow-wrap:break-word;font-size:1.2rem}.mx_BaseCard{padding:0 8px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_BaseCard .mx_BaseCard_header{margin:8px 0}.mx_BaseCard .mx_BaseCard_header>h2{margin:0 44px;font-size:1.8rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{position:absolute;background-color:rgba(141,151,165,.2);height:20px;width:20px;margin:12px;top:0;border-radius:10px}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before,.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{content:"";position:absolute;height:20px;width:20px;top:0;left:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#91a1c0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back{left:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before{-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-size:22px;mask-size:22px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close{right:0}.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before{-webkit-mask-image:url(../../img/icons-close.11ff07c.svg);mask-image:url(../../img/icons-close.11ff07c.svg);-webkit-mask-size:8px;mask-size:8px}.mx_BaseCard .mx_AutoHideScrollbar{margin-right:-8px;padding-right:8px;min-height:0;width:100%;height:100%}.mx_BaseCard .mx_BaseCard_Group{margin:20px 0 16px}.mx_BaseCard .mx_BaseCard_Group>*{margin-left:12px;margin-right:12px}.mx_BaseCard .mx_BaseCard_Group>h1{color:#8d99a5;font-size:1.2rem;font-weight:500}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button{padding:10px 38px 10px 12px;margin:0;position:relative;font-size:1.3rem;height:20px;line-height:20px;border-radius:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover{background-color:rgba(141,151,165,.1)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after{content:"";position:absolute;top:10px;right:6px;height:20px;width:20px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd;-webkit-transform:rotate(270deg);transform:rotate(270deg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled{padding-right:12px}.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled:after{content:unset}.mx_BaseCard .mx_BaseCard_footer{padding-top:4px;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary{color:#737d8c;background-color:rgba(141,151,165,.2);font-weight:600;font-size:1.4rem}.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_FilePanel.mx_BaseCard,.mx_MemberList.mx_BaseCard,.mx_NotificationPanel.mx_BaseCard,.mx_UserInfo.mx_BaseCard{padding:32px 0 0}.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar,.mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar,.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{margin-right:unset;padding-right:unset}.mx_EncryptionInfo_spinner .mx_Spinner{margin-top:25px;margin-bottom:15px}.mx_EncryptionInfo_spinner{text-align:center}.mx_RoomSummaryCard .mx_BaseCard_header{text-align:center;margin-top:20px}.mx_RoomSummaryCard .mx_BaseCard_header h2{font-weight:600;font-size:1.8rem;margin:12px 0 4px}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias{font-size:1.3rem;color:#737d8c}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias,.mx_RoomSummaryCard .mx_BaseCard_header h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee{display:inline-block;position:relative;width:54px;height:54px;border-radius:50%;background-color:#737d8c;margin-top:-3px;margin-left:-10px;border:3px solid #f2f5f8}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee:before{content:"";position:absolute;top:13px;left:13px;height:28px;width:28px;-webkit-mask-size:cover;mask-size:cover;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/e2e/disabled.6c5c6be.svg);mask-image:url(../../img/e2e/disabled.6c5c6be.svg);background-color:#fff}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal{background-color:#424446}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal:before{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified:before{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg)}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning{background-color:#ff4b55}.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning:before{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button{padding-left:44px}.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button:before{content:"";position:absolute;top:8px;left:10px;height:24px;width:24px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button{padding:0;height:auto;color:#8d99a5}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app{padding:10px 48px 10px 12px;text-overflow:ellipsis;overflow:hidden}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app .mx_BaseAvatar_image{vertical-align:top;margin-right:12px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_icon_app span{color:#2e2f32}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{position:absolute;top:0;height:100%;width:24px;padding:12px 4px;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:hover:after,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:hover:after{content:"";position:absolute;height:24px;width:24px;top:8px;left:0;border-radius:12px;background-color:rgba(141,151,165,.1)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before,.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{content:"";position:absolute;height:16px;width:16px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:16px;mask-size:16px;background-color:#c1c6cd}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle{right:24px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle:before{-webkit-mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg);mask-image:url(../../img/element-icons/room/pin-upright.65783fb.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options{right:48px;display:none}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_options:before{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after{opacity:.2}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned .mx_RoomSummaryCard_app_pinToggle:before{background-color:#0dbd8b}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_icon_app{padding-right:72px}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_app_options{display:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:before{content:unset}.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:after{top:8px;pointer-events:none}.mx_RoomSummaryCard .mx_AccessibleButton_kind_link{padding:0;margin-top:12px;margin-bottom:12px;font-size:1.3rem;font-weight:600}.mx_RoomSummaryCard_icon_people:before{-webkit-mask-image:url(../../img/element-icons/room/members.88c3e93.svg);mask-image:url(../../img/element-icons/room/members.88c3e93.svg)}.mx_RoomSummaryCard_icon_files:before{-webkit-mask-image:url(../../img/element-icons/room/files.5709c0c.svg);mask-image:url(../../img/element-icons/room/files.5709c0c.svg)}.mx_RoomSummaryCard_icon_share:before{-webkit-mask-image:url(../../img/element-icons/room/share.54dc3fb.svg);mask-image:url(../../img/element-icons/room/share.54dc3fb.svg)}.mx_RoomSummaryCard_icon_settings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_UserInfo.mx_BaseCard{padding-top:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;font-size:1.2rem}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel{cursor:pointer;position:absolute;top:0;border-radius:4px;background-color:#f2f5f8;margin:9px;z-index:1}.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div{height:16px;width:16px;padding:4px;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:7px center;mask-position:7px center;background-color:#91a1c0}.mx_UserInfo.mx_BaseCard h2{font-size:1.8rem;font-weight:600;margin:18px 0 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container{padding:8px 16px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator{border-bottom:1px solid rgba(46,47,50,.1)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer{padding-top:0;padding-bottom:0;margin-bottom:8px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer{width:154px}.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge{display:none}.mx_UserInfo.mx_BaseCard .mx_RoomTile_name{width:160px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar{margin:24px 32px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div{max-width:30vh;margin:0 auto;-webkit-transition:.5s;transition:.5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div{padding-top:100%;position:relative}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar>div>div *{border-radius:100%;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:6rem!important;width:100%!important;-webkit-transition:font-size .5s;transition:font-size .5s}.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_UserInfo.mx_BaseCard h3{text-transform:uppercase;color:#8d99a5;font-weight:600;font-size:1.2rem;margin:4px 0}.mx_UserInfo.mx_BaseCard p{margin:5px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile{text-align:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1.8rem;line-height:2.5rem;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;word-break:break-all;text-overflow:ellipsis}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon{margin-top:3px;margin-right:4px;min-width:18px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus{margin-top:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField{margin:6px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField,.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription{margin:11px 0 12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_Field{margin:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field{cursor:pointer;color:#0dbd8b;line-height:1.6rem;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator){padding-top:16px;padding-bottom:0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator)>:not(h3){margin-left:8px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device{display:-webkit-box;display:-ms-flexbox;display:flex;margin:8px 0}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_verified .mx_UserInfo_device_trusted{color:#0dbd8b}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_unverified .mx_UserInfo_device_trusted{color:#ff4b55}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device .mx_UserInfo_device_name{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:5px;word-break:break-word}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:2px 5px 0 0;width:12px;height:12px}.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:11px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind{padding:8px 18px}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary{color:#0dbd8b;background-color:rgba(3,179,129,.16)}.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger{color:#ff4b55;background-color:rgba(255,75,85,.16)}.mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton,.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton{display:block;margin:16px 0 8px}.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton+.mx_AccessibleButton{margin:8px 0}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar>div{max-width:72px;margin:0 auto}.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_BaseAvatar_initial{font-size:40px!important}.mx_VerificationPanel_reciprocate_section .mx_E2EIcon,.mx_VerificationPanel_verified_section .mx_E2EIcon{margin:20px auto!important}.mx_UserInfo .mx_EncryptionPanel_cancel{-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#61708b;cursor:pointer;position:absolute;z-index:100;top:14px;right:14px}.mx_UserInfo .mx_VerificationPanel_qrCode{padding:4px 4px 0;background:#fff;border-radius:4px;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;margin:0 auto!important}.mx_UserInfo .mx_VerificationPanel_qrCode canvas{height:auto!important;width:100%!important;max-width:240px}.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_FormButton{width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px;display:block;margin:10px 0}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:10px;margin-bottom:10px;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions>.mx_VerificationPanel_QRPhase_betweenText{width:50px;vertical-align:middle;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption{background-color:#f3f8fd;border-radius:10px;-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;padding:20px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative;max-width:310px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_noQR,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption canvas{width:220px!important;height:220px!important;background-color:#fff;border-radius:4px;vertical-align:middle;text-align:center;padding:10px}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption>p{margin-top:0;font-weight:700}.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText,.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption .mx_VerificationPanel_QRPhase_helpText{font-size:1.4rem;margin:30px 0;text-align:center}.mx_CompleteSecurity_body .mx_VerificationPanel_verified_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton{float:right}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton{margin-left:10px;padding:7px 40px}.mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons,.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_WidgetCard{height:100%;display:contents}.mx_WidgetCard .mx_AppTileFullWidth{max-width:unset;height:100%;border:0}.mx_WidgetCard .mx_BaseCard_header{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_WidgetCard .mx_BaseCard_header>h2{margin-right:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton{position:relative;margin-right:44px;height:20px;width:20px;min-width:20px;padding:0}.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before{content:"";position:absolute;width:20px;height:20px;top:0;left:4px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);background-color:#737d8c}.mx_WidgetCard_maxPinnedTooltip{background-color:#ff4b55;color:#fff}.mx_AliasSettings_editable{border:0;border-bottom:1px solid #c7c7c7;padding:0;min-width:240px}.mx_AliasSettings_editable:focus{border-bottom:1px solid #0dbd8b;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_AliasSettings summary{cursor:pointer;color:#0dbd8b;font-weight:600;list-style:none}.mx_AliasSettings summary::-webkit-details-marker{display:none}.mx_AliasSettings .mx_AliasSettings_localAliasHeader{margin-top:35px}.mx_AppsDrawer{margin:5px 5px 5px 18px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden}.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer{width:100%;height:10px;margin-top:-3px;display:block;position:relative}.mx_AppsDrawer .mx_AppsContainer_resizerHandle{cursor:ns-resize;width:100%!important;height:100%!important;position:absolute;bottom:0!important}.mx_AppsDrawer .mx_AppsContainer_resizerHandle:after{content:"";position:absolute;border-radius:3px;top:6px;bottom:0;left:calc(50% - 32px);right:calc(50% - 32px)}.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after{opacity:.8;background:#2e2f32}.mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before{position:absolute;left:3px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:64px;width:4px;border-radius:4px;content:"";background-color:#2e2f32;opacity:.8}.mx_AppsContainer_resizer{margin-bottom:8px}.mx_AppsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:100%;width:100%;-webkit-box-flex:1;-ms-flex:1;flex:1;min-height:0}.mx_AppsContainer .mx_AppTile:first-of-type{border-left-width:8px;border-radius:10px 0 0 10px}.mx_AppsContainer .mx_AppTile:last-of-type{border-right-width:8px;border-radius:0 10px 10px 0}.mx_AppsContainer .mx_ResizeHandle_horizontal{position:relative}.mx_AppsContainer .mx_ResizeHandle_horizontal>div{width:0}.mx_AppsDrawer_2apps .mx_AppTile{width:50%}.mx_AppsDrawer_2apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppsDrawer_3apps .mx_AppTile{width:33%}.mx_AppsDrawer_3apps .mx_AppTile:nth-child(3){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:0!important;min-width:240px!important}.mx_AppTile{width:50%;min-width:240px;border-color:#f2f5f8;border-style:solid;border-width:8px 5px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#f2f5f8}.mx_AppTileFullWidth{width:100%!important;border:5px solid #f2f5f8;border-radius:8px;background-color:#f2f5f8}.mx_AppTile_mini,.mx_AppTileFullWidth{margin:0;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_AppTile_mini{width:100%;height:200px}.mx_AppTile .mx_AppTile_persistedWrapper,.mx_AppTile_mini .mx_AppTile_persistedWrapper,.mx_AppTileFullWidth .mx_AppTile_persistedWrapper{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTile_persistedWrapper div{width:100%;height:100%}.mx_AppTileMenuBar{margin:0;font-size:1.2rem;background-color:#f2f5f8;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100%;padding-top:2px;padding-bottom:8px}.mx_AppTileMenuBarTitle{line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_AppTileMenuBarTitle .mx_WidgetAvatar{margin-right:12px}.mx_AppTileMenuBarTitle>:last-child{margin-left:9px}.mx_AppTileMenuBarWidgets{float:right;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_AppTileMenuBar_iconButton{width:12px;height:12px;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:auto 12px;mask-size:auto 12px;background-color:#212121;margin:0 3px}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout{-webkit-mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg);mask-image:url(../../img/feather-customised/widget/external-link.7ab6751.svg)}.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu{-webkit-mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg);mask-image:url(../../img/element-icons/room/ellipsis.b82ece6.svg)}.mx_AppTileBody{height:100%;background-color:#fff}.mx_AppTileBody,.mx_AppTileBody_mini{width:100%;overflow:hidden;border-radius:8px}.mx_AppTileBody_mini{height:200px}.mx_AppTile .mx_AppTileBody,.mx_AppTile_mini .mx_AppTileBody_mini,.mx_AppTileFullWidth .mx_AppTileBody{height:inherit;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_AppTileBody_mini iframe,.mx_AppTileBody iframe{border:none;width:100%;height:100%}.mx_AppTileBody iframe{overflow:hidden;padding:0;margin:0;display:block}.mx_AppPermissionWarning{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1.6rem}.mx_AppPermissionWarning_row{margin-bottom:12px}.mx_AppPermissionWarning_smallText{font-size:1.2rem}.mx_AppPermissionWarning_bolder{font-weight:600}.mx_AppPermissionWarning h4{margin:0;padding:0}.mx_AppPermissionWarning_helpIcon{margin-top:1px;margin-right:2px;width:10px;height:10px;display:inline-block}.mx_AppPermissionWarning_helpIcon:before{display:inline-block;background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:12px;mask-size:12px;width:12px;height:12px;-webkit-mask-position:center;mask-position:center;content:"";vertical-align:middle;-webkit-mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg);mask-image:url(../../img/feather-customised/help-circle.03fb6cf.svg)}.mx_AppPermissionWarning_tooltip{-webkit-box-shadow:none;box-shadow:none;background-color:#27303a;color:#fff;border:none;border-radius:3px;padding:6px 8px}.mx_AppPermissionWarning_tooltip ul{list-style-position:inside;padding-left:2px;margin-left:0}.mx_AppLoading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:700;position:relative;height:100%;background-color:#fff!important;border-radius:8px}.mx_AppLoading .mx_Spinner{position:absolute;top:0;bottom:0;left:0;right:0}.mx_AppLoading_spinner_fadeIn{-webkit-animation-fill-mode:backwards;animation-fill-mode:backwards;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-delay:.5s;animation-delay:.5s;-webkit-animation-name:mx_AppLoading_spinner_fadeIn_animation;animation-name:mx_AppLoading_spinner_fadeIn_animation}@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}@keyframes mx_AppLoading_spinner_fadeIn_animation{0%{opacity:0}to{opacity:1}}.mx_AppLoading iframe{display:none}.mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper{z-index:1}.mx_Autocomplete{position:absolute;bottom:0;z-index:1001;width:100%;background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_Autocomplete_ProviderSection{border-bottom:1px solid transparent}.mx_Autocomplete_Completion_block{height:34px;display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_block *{margin:0 3px}.mx_Autocomplete_Completion_pill{-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2rem;height:3.4rem;padding:.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32}.mx_Autocomplete_Completion_pill>*{margin-right:.3rem}.mx_Autocomplete_Completion_subtitle{font-style:italic;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_Autocomplete_Completion_description{color:grey}.mx_Autocomplete_Completion_container_pill{margin:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-flow:wrap;flex-flow:wrap}.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle,.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mx_Autocomplete_Completion.selected,.mx_Autocomplete_Completion:hover{background:#f2f5f8;outline:none}.mx_Autocomplete_provider_name{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.m_RoomView_auxPanel_stateViews{padding:5px 5px 5px 19px;border-bottom:1px solid transparent}.m_RoomView_auxPanel_stateViews_span a{text-decoration:none;color:inherit}.m_RoomView_auxPanel_stateViews_span[data-severity=warning]{font-weight:700;color:orange}.m_RoomView_auxPanel_stateViews_span[data-severity=alert]{font-weight:700;color:red}.m_RoomView_auxPanel_stateViews_span[data-severity=normal]{font-weight:400}.m_RoomView_auxPanel_stateViews_span[data-severity=notice]{font-weight:400;color:#a2a2a2}.m_RoomView_auxPanel_stateViews_delim{padding:0 5px;color:#a2a2a2}.mx_BasicMessageComposer{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_inputEmpty>:first-child:before{content:var(--placeholder);opacity:.333;width:0;height:0;overflow:visible;display:inline-block;pointer-events:none;white-space:nowrap}@-webkit-keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_BasicMessageComposer .mx_BasicMessageComposer_input{white-space:pre-wrap;word-wrap:break-word;outline:none;overflow-x:hidden}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill{position:relative}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill:before,.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_UserPill:before{content:var(--avatar-letter);width:1.6rem;height:1.6rem;margin-right:.24rem;background:var(--avatar-background),#fff;color:#fff;background-repeat:no-repeat;background-size:1.6rem;border-radius:1.6rem;text-align:center;font-weight:400;line-height:1.6rem;font-size:1.04rem}.mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled{pointer-events:none}.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper{position:relative;height:0}.mx_E2EIcon{width:16px;height:16px;margin:0 9px;position:relative;display:block}.mx_E2EIcon_normal:after,.mx_E2EIcon_normal:before,.mx_E2EIcon_verified:after,.mx_E2EIcon_verified:before,.mx_E2EIcon_warning:after,.mx_E2EIcon_warning:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}.mx_E2EIcon:before{background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:90%;mask-size:90%}.mx_E2EIcon:before,.mx_E2EIcon_bordered{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg)}.mx_E2EIcon_bordered{background-color:#f3f8fd}.mx_E2EIcon_bordered:after{-webkit-mask-size:75%;mask-size:75%}.mx_E2EIcon_bordered:before{-webkit-mask-size:65%;mask-size:65%}.mx_E2EIcon_warning:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_E2EIcon_normal:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_E2EIcon_verified:after{-webkit-mask-image:url(../../img/e2e/verified.5be6c9f.svg);mask-image:url(../../img/e2e/verified.5be6c9f.svg);background-color:#0dbd8b}.mx_EditMessageComposer{padding:3px;margin:-7px -10px -5px;overflow:visible!important}.mx_EditMessageComposer .mx_BasicMessageComposer_input{border-radius:4px;border:1px solid transparent;background-color:#fff;max-height:200px;padding:3px 6px}.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus{border-color:rgba(13,189,139,.5)}.mx_EditMessageComposer .mx_EditMessageComposer_buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;position:absolute;left:0;background:#f3f8fd;z-index:100;right:0;margin:0 -110px 0 0;padding:5px 147px 5px 5px}.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton{margin-left:5px;padding:5px 40px}.mx_EventTile_last .mx_EditMessageComposer_buttons{position:static;margin-right:-147px}.mx_EntityTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#2e2f32;cursor:pointer}.mx_EntityTile .mx_E2EIcon{margin:0;position:absolute;bottom:2px;right:7px}.mx_EntityTile:hover{padding-right:30px;position:relative}.mx_EntityTile:hover:before{content:"";position:absolute;top:calc(50% - 8px);right:-8px;-webkit-mask:url(../../img/member_chevron.4163a20.png);mask:url(../../img/member_chevron.4163a20.png);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:16px;height:16px;background-color:#91a1c0}.mx_EntityTile .mx_PresenceLabel{display:none}.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel{display:block}.mx_EntityTile_invite{display:table-cell;vertical-align:middle;margin-left:10px;width:26px}.mx_EntityTile_avatar,.mx_GroupRoomTile_avatar{padding:4px 12px 4px 3px;position:relative}.mx_EntityTile_name,.mx_GroupRoomTile_name{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;overflow:hidden;font-size:1.4rem;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile_details{overflow:hidden;-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_EntityTile_ellipsis .mx_EntityTile_name,.mx_EntityTile_invitePlaceholder .mx_EntityTile_name{font-style:italic;color:#2e2f32}.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar,.mx_EntityTile_offline_beenactive .mx_EntityTile_name,.mx_EntityTile_unavailable .mx_EntityTile_avatar,.mx_EntityTile_unavailable .mx_EntityTile_name{opacity:.5}.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar,.mx_EntityTile_offline_neveractive .mx_EntityTile_name,.mx_EntityTile_unknown .mx_EntityTile_avatar,.mx_EntityTile_unknown .mx_EntityTile_name{opacity:.25}.mx_EntityTile_subtext{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_EntityTile_power{-webkit-padding-start:6px;padding-inline-start:6px;font-size:1rem;color:#8d99a5;max-width:6em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mx_EntityTile:hover .mx_EntityTile_power{display:none}.mx_EventTile{max-width:100%;clear:both;padding-top:18px;font-size:1.4rem;position:relative}.mx_EventTile.mx_EventTile_info{padding-top:1px}.mx_EventTile_avatar{top:14px;left:8px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:.6rem;left:64px}.mx_EventTile_continuation{padding-top:0!important}.mx_EventTile_continuation.mx_EventTile_isEditing{padding-top:5px!important;margin-top:-5px}.mx_EventTile_isEditing{background-color:#f3f8fd}.mx_EventTile .mx_SenderProfile{color:#2e2f32;font-size:1.4rem;display:inline-block;overflow:hidden;cursor:pointer;padding-bottom:0;padding-top:0;margin:0;white-space:nowrap;text-overflow:ellipsis;max-width:calc(100% - 64px)}.mx_EventTile .mx_SenderProfile .mx_Flair{opacity:.7;margin-left:5px;display:inline-block;vertical-align:top;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile .mx_SenderProfile .mx_Flair img{vertical-align:-2px;margin-right:2px;border-radius:8px}.mx_EventTile_isEditing .mx_MessageTimestamp{visibility:hidden!important}.mx_EventTile .mx_MessageTimestamp{display:block;visibility:hidden;white-space:nowrap;left:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mx_EventTile_continuation .mx_EventTile_line{clear:both}.mx_EventTile_line,.mx_EventTile_reply{position:relative;padding-left:64px;border-radius:4px}.mx_EventListSummary .mx_EventTile_line,.mx_RoomView_timeline_rr_enabled .mx_EventTile_line{margin-right:110px}.mx_EventTile_bubbleContainer{display:grid;grid-template-columns:1fr 100px}.mx_EventTile_bubbleContainer .mx_EventTile_line{margin-right:0;grid-column:1/3;padding:0!important}.mx_EventTile_bubbleContainer .mx_EventTile_msgOption{grid-column:2}.mx_EventTile_reply{margin-right:10px}.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji{font-size:48px!important;line-height:57px!important}.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp{visibility:visible}.mx_EventTile_selected>div>a>.mx_MessageTimestamp{left:3px;width:auto}.mx_EventTile.focus-visible:focus-within>div>a>.mx_MessageTimestamp,.mx_EventTile.mx_EventTile_actionBarFocused>div>a>.mx_MessageTimestamp,.mx_EventTile:hover>div>a>.mx_MessageTimestamp,.mx_EventTile_last>div>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.focus-visible:focus-within>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile.mx_EventTile_actionBarFocused>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile:hover>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_EventTile_last>a>.mx_MessageTimestamp,.mx_IRCLayout .mx_ReplyThread .mx_EventTile>a>.mx_MessageTimestamp{visibility:visible}.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar,.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar,.mx_EventTile:hover .mx_MessageActionBar,[data-whatinput=keyboard] .mx_EventTile:focus-within .mx_MessageActionBar{visibility:visible}.mx_EventTile_selected>.mx_EventTile_line{border-left:4px solid #0dbd8b;padding-left:60px;background-color:#f6f7f8}.mx_EventTile_highlight,.mx_EventTile_highlight .markdown-body{color:#ff4b55}.mx_EventTile_highlight .markdown-body .mx_EventTile_line,.mx_EventTile_highlight .mx_EventTile_line{background-color:#fff8e3}.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile.focus-visible:focus-within .mx_EventTile_line,.mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line,.mx_EventTile:hover .mx_EventTile_line{background-color:#f6f7f8}.mx_EventTile_searchHighlight{border-radius:5px;padding-left:2px;padding-right:2px;cursor:pointer}.mx_EventTile_searchHighlight,.mx_EventTile_searchHighlight a{background-color:#0dbd8b;color:#fff}.mx_EventTile_receiptSending:before,.mx_EventTile_receiptSent:before{background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;width:14px;height:14px;content:"";position:absolute;top:0;left:0;right:0}.mx_EventTile_receiptSent:before{-webkit-mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg);mask-image:url(../../img/element-icons/circle-sent.5079cbe.svg)}.mx_EventTile_receiptSending:before{-webkit-mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg);mask-image:url(../../img/element-icons/circle-sending.bcca6aa.svg)}.mx_EventTile_contextual{opacity:.4}.mx_EventTile_msgOption{float:right;text-align:right;position:relative;width:90px;height:1px;margin-right:10px}.mx_EventTile_msgOption a{text-decoration:none}.mx_EventTile_readAvatars{position:relative;display:inline-block;width:14px;height:14px;top:-2.2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1}.mx_EventTile_readAvatars .mx_BaseAvatar{position:absolute;display:inline-block;height:1.4rem;width:1.4rem;-webkit-transition:left .1s ease-out,top .3s ease-out;transition:left .1s ease-out,top .3s ease-out;-webkit-transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out;transition:left var(--transition-short) ease-out,top var(--transition-standard) ease-out}.mx_EventTile_readAvatarRemainder{color:#acacac;font-size:1.1rem;position:absolute}.mx_EventTile_content{display:block;overflow-y:hidden;overflow-x:hidden;margin-right:34px}.mx_EventTile_body{overflow-y:hidden}.mx_EventTile_spoiler{cursor:pointer}.mx_EventTile_spoiler_reason{color:#acacac;font-size:1.1rem}.mx_EventTile_spoiler_content{-webkit-filter:blur(5px) saturate(.1) sepia(1);filter:blur(5px) saturate(.1) sepia(1);-webkit-transition-duration:.5s;transition-duration:.5s}.mx_EventTile_spoiler.visible>.mx_EventTile_spoiler_content{-webkit-filter:none;filter:none}.mx_EventTile_e2eIcon{position:absolute;top:6px;left:44px;width:14px;height:14px;display:block;bottom:0;right:0;opacity:.2;background-repeat:no-repeat;background-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{content:"";display:block;position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-size:contain;mask-size:contain}.mx_EventTile_e2eIcon:after,.mx_EventTile_e2eIcon:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_EventTile_e2eIcon:before{background-color:#fff;-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);-webkit-mask-size:90%;mask-size:90%}.mx_EventTile_e2eIcon_undecryptable:after,.mx_EventTile_e2eIcon_unverified:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_undecryptable,.mx_EventTile_e2eIcon_unverified{opacity:1}.mx_EventTile_e2eIcon_unknown:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unknown{opacity:1}.mx_EventTile_e2eIcon_unencrypted:after{-webkit-mask-image:url(../../img/e2e/warning.78bb264.svg);mask-image:url(../../img/e2e/warning.78bb264.svg);background-color:#ff4b55}.mx_EventTile_e2eIcon_unencrypted{opacity:1}.mx_EventTile_e2eIcon_unauthenticated:after{-webkit-mask-image:url(../../img/e2e/normal.76f0c09.svg);mask-image:url(../../img/e2e/normal.76f0c09.svg);background-color:#91a1c0}.mx_EventTile_e2eIcon_unauthenticated{opacity:1}.mx_EventTile_keyRequestInfo{font-size:1.2rem}.mx_EventTile_keyRequestInfo_text{opacity:.5}.mx_EventTile_keyRequestInfo_text a{color:#2e2f32;text-decoration:underline;cursor:pointer}.mx_EventTile_keyRequestInfo_tooltip_contents p{text-align:auto;margin-left:3px;margin-right:3px}.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child{margin-top:0}.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child{margin-bottom:0}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:60px}.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{border-left:4px solid #76cfa5}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line{border-left:4px solid #e8bf37}.mx_EventTile:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line,.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line{padding-left:78px}.mx_EventTile:hover .mx_EventTile_e2eIcon{opacity:1}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>a>.mx_MessageTimestamp,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>a>.mx_MessageTimestamp{width:38px}.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line>.mx_EventTile_e2eIcon,.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line>.mx_EventTile_e2eIcon{display:block;left:41px}.mx_EventTile_content .mx_EventTile_edited{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1.2rem;color:#9e9e9e;display:inline-block;margin-left:9px;cursor:pointer}.mx_EventTile_body pre{border:1px solid transparent}.mx_EventTile_content .markdown-body{font-family:inherit!important;white-space:normal!important;line-height:inherit!important;color:inherit;font-size:1.4rem}.mx_EventTile_content .markdown-body code,.mx_EventTile_content .markdown-body pre{font-family:Inconsolata,Twemoji,Apple Color Emoji,Segoe UI Emoji,Courier,monospace,Noto Color Emoji!important;color:#333}.mx_EventTile_content .markdown-body pre{overflow-x:overlay;overflow-y:visible}.mx_EventTile_content .markdown-body code{background-color:#f8f8f8}.mx_EventTile_lineNumbers{float:left;margin:0 .5em 0 -1.5em;color:grey}.mx_EventTile_lineNumber{text-align:right;display:block;padding-left:1em}.mx_EventTile_collapsedCodeBlock{max-height:30vh}.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre,.mx_EventTile:hover .mx_EventTile_body pre{border:1px solid #e5e5e5}.mx_EventTile_pre_container{position:relative}.mx_EventTile_button{position:absolute;display:inline-block;visibility:hidden;cursor:pointer;top:8px;right:8px;width:19px;height:19px;background-color:#2e2f32}.mx_EventTile_buttonBottom{top:33px}.mx_EventTile_copyButton{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg)}.mx_EventTile_collapseButton{-webkit-mask-image:url(../../img/feather-customised/minimise.aec9142.svg);mask-image:url(../../img/feather-customised/minimise.aec9142.svg)}.mx_EventTile_collapseButton,.mx_EventTile_expandButton{-webkit-mask-size:75%;mask-size:75%;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_EventTile_expandButton{-webkit-mask-image:url(../../img/feather-customised/maximise.dc32127.svg);mask-image:url(../../img/feather-customised/maximise.dc32127.svg)}.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_expandButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_collapseButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton,.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_expandButton{visibility:visible}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2,.mx_EventTile_content .markdown-body h3,.mx_EventTile_content .markdown-body h4,.mx_EventTile_content .markdown-body h5,.mx_EventTile_content .markdown-body h6{font-family:inherit!important;color:inherit}.mx_EventTile_content .markdown-body h1,.mx_EventTile_content .markdown-body h2{font-size:1.5em;border-bottom:none!important}.mx_EventTile_content .markdown-body a{color:#238cf5}.mx_EventTile_content .markdown-body .hljs{display:inline!important}.mx_EventTile_tileError{color:red;text-align:center;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line{padding-left:0;margin-right:0}.mx_EventTile_tileError .mx_EventTile_line span{padding:4px 8px}.mx_EventTile_tileError a{margin-left:1em}@media only screen and (max-width:480px){.mx_EventTile_line,.mx_EventTile_reply{padding-left:0;margin-right:0}.mx_EventTile_content{margin-top:10px;margin-right:0}}.mx_GroupLayout .mx_EventTile>.mx_SenderProfile{line-height:2rem;margin-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_line{padding-left:64px}.mx_GroupLayout .mx_EventTile>.mx_EventTile_avatar{position:absolute}.mx_GroupLayout .mx_EventTile .mx_MessageTimestamp{position:absolute;width:46px}.mx_GroupLayout .mx_EventTile .mx_EventTile_line,.mx_GroupLayout .mx_EventTile .mx_EventTile_reply{padding-top:1px;padding-bottom:3px;line-height:2.2rem}.mx_GroupLayout .mx_EventTile_info .mx_EventTile_line{padding-left:82px}.mx_MatrixChat_useCompactLayout .mx_EventTile{padding-top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info{padding-top:0;font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply{line-height:2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{top:4px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile{font-size:1.3rem}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote{padding-top:8px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply{padding-top:0;padding-bottom:1px}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation{padding-top:0}.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line,.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply{padding-top:0;padding-bottom:0}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar{top:2px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon{top:3px}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars{top:-2rem}.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body blockquote,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body dl,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ol,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body p,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body pre,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body table,.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content .markdown-body ul{margin-bottom:4px}.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2{margin-top:6px}.mx_IRCLayout{--name-width:70px;line-height:1.8rem!important}.mx_IRCLayout .mx_EventTile>a{text-decoration:none}.mx_IRCLayout .mx_EventTile{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding-top:0}.mx_IRCLayout .mx_EventTile>*{margin-right:5px}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5;-ms-flex-negative:0;flex-shrink:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_msgOption .mx_EventTile_readAvatars{top:.2rem}.mx_IRCLayout .mx_EventTile>.mx_SenderProfile{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-ms-flex-negative:0;flex-shrink:0;width:var(--name-width);text-overflow:ellipsis;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:visible;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.mx_IRCLayout .mx_EventTile .mx_EventTile_line,.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-width:0}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;position:relative;top:0;left:0;-ms-flex-negative:0;flex-shrink:0;height:1.8rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar,.mx_IRCLayout .mx_EventTile>.mx_EventTile_avatar>.mx_BaseAvatar>*{height:1.4rem!important;width:1.4rem!important;font-size:1rem!important;line-height:1.5rem!important}.mx_IRCLayout .mx_EventTile .mx_MessageTimestamp{font-size:1rem;width:45px;text-align:right}.mx_IRCLayout .mx_EventTile>.mx_EventTile_e2eIcon{position:absolute;right:unset;left:unset;top:0;padding:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;height:1.8rem;background-position:50%}.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_ReplyThread_wrapper_empty,.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent{display:inline-block}.mx_IRCLayout .mx_EventTile .mx_EventTile_reply{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons{position:relative}.mx_IRCLayout .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:calc(var(--name-width) + 19px)}.mx_IRCLayout blockquote{margin:0}.mx_IRCLayout .mx_EventListSummary>.mx_EventTile_line{padding-left:calc(var(--name-width) + 74px)}.mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars{padding:0;margin:0 9px 0 0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar{left:calc(var(--name-width) + 24px);top:0}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line{left:calc(var(--name-width) + 24px)}.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent{line-height:1.8rem}.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line,.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line{padding-left:0;border-left:0}.mx_IRCLayout .mx_SenderProfile_hover{background-color:#fff;overflow:hidden}.mx_IRCLayout .mx_SenderProfile_hover>span{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_IRCLayout .mx_SenderProfile_hover>span>.mx_SenderProfile_name{overflow:hidden;text-overflow:ellipsis;min-width:var(--name-width);text-align:end}.mx_IRCLayout .mx_SenderProfile:hover{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.mx_IRCLayout .mx_SenderProfile_hover:hover{overflow:visible;width:max(auto,100%);z-index:10}.mx_IRCLayout .mx_ReplyThread{margin:0}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile{width:unset;max-width:var(--name-width)}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover{background:transparent}.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover>span>.mx_SenderProfile_name{min-width:inherit}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote>.mx_EventTile_avatar{margin-left:0}.mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp{width:auto}.mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon{position:relative;-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.mx_IRCLayout .mx_ProfileResizer{position:absolute;height:100%;width:15px;left:calc(80px + var(--name-width));cursor:col-resize;z-index:100}.mx_IRCLayout .mx_Flair>img{height:1.4rem!important;width:1.4rem!important}.mx_JumpToBottomButton{z-index:1000;position:absolute;bottom:12px;right:24px;width:38px;height:50px;text-align:center}.mx_JumpToBottomButton_badge{position:relative;top:-12px;border-radius:16px;font-weight:700;font-size:1.2rem;line-height:1.4rem;text-align:center;display:inline-block;padding:0 4px;color:#fff;background-color:#61708b}.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge{color:#f2f5f8;background-color:#ff4b55}.mx_JumpToBottomButton_scrollDown{position:relative;height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_JumpToBottomButton_scrollDown:before{content:"";position:absolute;top:0;bottom:0;left:0;right:0;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b}.mx_LinkPreviewWidget{margin-top:15px;margin-right:15px;margin-bottom:15px;display:-webkit-box;display:-ms-flexbox;display:flex;border-left:4px solid #ddd;color:#888}.mx_LinkPreviewWidget_image{-webkit-box-flex:0;-ms-flex:0 0 100px;flex:0 0 100px;margin-left:15px;text-align:center;cursor:pointer}.mx_LinkPreviewWidget_caption{margin-left:15px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.mx_LinkPreviewWidget_title{display:inline;font-weight:700;white-space:normal}.mx_LinkPreviewWidget_siteName{display:inline}.mx_LinkPreviewWidget_description{margin-top:8px;white-space:normal;word-wrap:break-word}.mx_LinkPreviewWidget_cancel{cursor:pointer;width:18px;height:18px}.mx_LinkPreviewWidget_cancel img{-webkit-box-flex:0;-ms-flex:0 0 40px;flex:0 0 40px;visibility:hidden}.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel img,.mx_LinkPreviewWidget_cancel.focus-visible:focus img{visibility:visible}.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget{margin-top:6px;margin-bottom:6px}.mx_MemberInfo{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-y:auto;margin-top:8px}.mx_MemberInfo,.mx_MemberInfo_name{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_MemberInfo_name{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_MemberInfo_name>.mx_E2EIcon{margin-right:0}.mx_MemberInfo_cancel{height:16px;width:16px;padding:10px 0 10px 10px;cursor:pointer;-webkit-mask-image:url(../../img/minimise.871d2de.svg);mask-image:url(../../img/minimise.871d2de.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:16px center;mask-position:16px center;background-color:#91a1c0}.mx_MemberInfo_name h2{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow-x:auto;max-height:50px}.mx_MemberInfo h2{font-size:1.8rem;font-weight:600;margin:16px 0 16px 15px}.mx_MemberInfo_container{margin:0 16px 16px}.mx_MemberInfo .mx_RoomTile_nameContainer{width:154px}.mx_MemberInfo .mx_RoomTile_badge{display:none}.mx_MemberInfo .mx_RoomTile_name{width:160px}.mx_MemberInfo_avatar{background:hsla(0,0%,91%,.77);margin-bottom:16px}.mx_MemberInfo_avatar>img{height:auto;width:100%;max-height:30vh;-o-object-fit:contain;object-fit:contain;display:block}.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image{cursor:-webkit-zoom-in;cursor:zoom-in}.mx_MemberInfo_profile{margin-bottom:16px}.mx_MemberInfo h3{text-transform:uppercase;color:#9fa9ba;font-weight:700;font-size:1.2rem;margin:4px 0}.mx_MemberInfo_profileField{font-size:1.5rem;position:relative}.mx_MemberInfo_buttons{margin-bottom:16px}.mx_MemberInfo_field{cursor:pointer;font-size:1.5rem;color:#2e2f32;margin-left:8px;line-height:2.3rem}.mx_MemberInfo_createRoom{cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 8px}.mx_MemberInfo_createRoom_label{width:auto!important;cursor:pointer}.mx_MemberInfo label{font-size:1.3rem}.mx_MemberInfo label .mx_MemberInfo_label_text{display:inline-block;max-width:180px;vertical-align:text-top}.mx_MemberInfo input[type=radio]{vertical-align:-2px;margin-right:5px;margin-left:8px}.mx_MemberInfo_statusMessage{font-size:1.1rem;opacity:.5;overflow:hidden;white-space:nowrap;text-overflow:clip}.mx_MemberInfo .mx_MemberInfo_scrollContainer{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_GroupMemberList,.mx_GroupRoomList,.mx_MemberList{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.mx_GroupMemberList .mx_Spinner,.mx_GroupRoomList .mx_Spinner,.mx_MemberList .mx_Spinner{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.mx_GroupMemberList .mx_SearchBox,.mx_GroupRoomList .mx_SearchBox,.mx_MemberList .mx_SearchBox{margin-bottom:5px}.mx_GroupMemberList h2,.mx_GroupRoomList h2,.mx_MemberList h2{text-transform:uppercase;color:#3d3b39;font-weight:600;font-size:1.3rem;padding-left:3px;padding-right:12px;margin-top:8px;margin-bottom:4px}.mx_GroupMemberList .mx_AutoHideScrollbar,.mx_GroupRoomList .mx_AutoHideScrollbar,.mx_MemberList .mx_AutoHideScrollbar{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0}.mx_GroupMemberList .mx_RightPanel_scopeHeader,.mx_GroupRoomList .mx_RightPanel_scopeHeader,.mx_MemberList .mx_RightPanel_scopeHeader{margin-top:-8px}.mx_GroupMemberList_query,.mx_GroupRoomList_query{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_MemberList_chevron{position:absolute;right:35px;margin-top:-15px}.mx_MemberList_border{overflow-y:auto;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0px}.mx_MemberList_query{height:16px}.mx_MemberList_query[type=text]{font-size:1.2rem}.mx_MemberList_wrapper{padding:10px}.mx_MemberList_invite{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;background-color:#0dbd8b;border-radius:4px;margin:5px 9px 9px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;font-weight:600}.mx_MemberList_invite.mx_AccessibleButton_disabled{background-color:#888;cursor:not-allowed}.mx_MemberList_invite span{padding:8px 0;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.mx_MemberList_invite span:before{content:"";display:inline-block;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px}.mx_MemberList_inviteCommunity span:before{-webkit-mask-image:url(../../img/icon-invite-people.d82f491.svg);mask-image:url(../../img/icon-invite-people.d82f491.svg)}.mx_MemberList_addRoomToCommunity span:before{-webkit-mask-image:url(../../img/icons-room-add.bd36e26.svg);mask-image:url(../../img/icons-room-add.bd36e26.svg)}.mx_MessageComposer_wrapper{vertical-align:middle;margin:auto;border-top:1px solid transparent;position:relative;padding-left:82px;padding-right:6px}.mx_MessageComposer_replaced_wrapper{margin-left:auto;margin-right:auto}.mx_MessageComposer_replaced_valign{height:60px;display:table-cell;vertical-align:middle}.mx_MessageComposer_roomReplaced_icon{float:left;margin-right:20px;margin-top:5px;width:31px;height:31px}.mx_MessageComposer_roomReplaced_header{font-weight:700}.mx_MessageComposer_autocomplete_wrapper{position:relative;height:0}.mx_MessageComposer_row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.mx_MessageComposer .mx_MessageComposer_avatar{position:absolute;left:26px}.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar{display:block}.mx_MessageComposer_composecontrols{width:100%}.mx_MessageComposer_e2eIcon.mx_E2EIcon{position:absolute;left:60px;margin-right:0;margin-left:3px;width:12px;height:12px}.mx_MessageComposer_noperm_error{width:100%;height:60px;font-style:italic;color:#888;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_MessageComposer_input_wrapper{cursor:text}.mx_MessageComposer_input,.mx_MessageComposer_input_wrapper{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_MessageComposer_input{vertical-align:middle;min-height:60px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;font-size:1.4rem;margin-right:6px}.mx_MessageComposer_editor{width:100%;max-height:120px;min-height:19px;overflow-y:auto;overflow-x:hidden;word-break:break-word}.mx_MessageComposer_editor>:first-child{margin-top:0!important}.mx_MessageComposer_editor>:last-child{margin-bottom:0!important}@keyframes visualbell{0%{background-color:#faa}to{background-color:#fff}}.mx_MessageComposer_input_error{-webkit-animation:visualbell .2s;animation:visualbell .2s}.mx_MessageComposer_input blockquote{color:#777;margin:0 0 16px;padding:0 15px;border-left:4px solid #ddd}.mx_MessageComposer_input pre{background-color:rgba(0,0,0,.04);border-radius:3px;padding:10px}.mx_MessageComposer_input textarea{display:block;width:100%;padding:0;margin-top:6px;margin-bottom:6px;border:0;resize:none;outline:none;-webkit-box-shadow:none;box-shadow:none;color:#2e2f32;background-color:#fff;font-size:1.4rem;max-height:120px;overflow:auto;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji}.mx_MessageComposer_input textarea::-moz-placeholder{line-height:100%;color:#0dbd8b;opacity:1}.mx_MessageComposer_input textarea::-webkit-input-placeholder{color:#0dbd8b}.mx_MessageComposer_button_highlight{background:rgba(13,189,139,.25)}.mx_MessageComposer_button_highlight:before{background-color:#0dbd8b!important}.mx_MessageComposer_button{position:relative;margin-right:6px;cursor:pointer;height:26px;width:26px;border-radius:100%}.mx_MessageComposer_button:before{content:"";position:absolute;top:3px;left:3px;height:20px;width:20px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_MessageComposer_button:hover{background:rgba(13,189,139,.1)}.mx_MessageComposer_button:hover:before{background-color:#0dbd8b}.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before{background-color:#ff4b55}.mx_MessageComposer_upload:before{-webkit-mask-image:url(../icons/attach.svg);mask-image:url(../icons/attach.svg)}.mx_MessageComposer_voiceMessage:before{-webkit-mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg);mask-image:url(../../img/voip/mic-on-mask.97ec7a0.svg)}.mx_MessageComposer_emoji:before{-webkit-mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg);mask-image:url(../../img/element-icons/room/composer/emoji.52d7369.svg)}.mx_MessageComposer_stickers:before{-webkit-mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg);mask-image:url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg)}.mx_MessageComposer_sendMessage{cursor:pointer;position:relative;margin-right:6px;width:32px;height:32px;border-radius:100%;background-color:#0dbd8b}.mx_MessageComposer_sendMessage:before{position:absolute;height:16px;width:16px;top:8px;left:9px;-webkit-mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);mask-image:url(../../img/element-icons/send-message.a4e9cf8.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;background-color:#fff;content:""}.mx_MessageComposer_formatting{cursor:pointer;margin:0 11px;width:24px;height:18px}.mx_MessageComposer_formatbar_wrapper{width:100%;background-color:#fff;-webkit-box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.08)}.mx_MessageComposer_formatbar{margin:auto;display:-webkit-box;display:-ms-flexbox;display:flex;height:30px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:62px;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:1rem;color:#888}.mx_MessageComposer_formatbar *{margin-right:4px}.mx_MessageComposer_format_button,.mx_MessageComposer_formatbar_cancel,.mx_MessageComposer_formatbar_markdown{cursor:pointer}.mx_MessageComposer_formatbar_cancel{margin-right:22px}.mx_MessageComposer_formatbar_markdown{height:17px;width:30px;margin-right:64px}.mx_MessageComposer_input_markdownIndicator{height:10px;width:12px;padding:4px 4px 4px 0}.mx_MessageComposer_formatbar_markdown,.mx_MessageComposer_input_markdownIndicator{cursor:pointer;-webkit-mask-image:url(../../img/markdown.6905ba8.svg);mask-image:url(../../img/markdown.6905ba8.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#c1c6cd}.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled,.mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled{opacity:.2}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input{min-height:50px}.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error{height:50px}.mx_MessageComposerFormatBar{display:none;width:130px;height:24px;position:absolute;cursor:pointer;border-radius:4px;background-color:#fff;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1000}.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown{display:block}.mx_MessageComposerFormatBar>*{white-space:nowrap;display:inline-block;position:relative;border:1px solid #e9edf1;margin-left:-1px}.mx_MessageComposerFormatBar>:hover{border-color:#ddd;z-index:1}.mx_MessageComposerFormatBar>:first-child{border-radius:3px 0 0 3px}.mx_MessageComposerFormatBar>:last-child{border-radius:0 3px 3px 0}.mx_MessageComposerFormatBar>:only-child{border-radius:3px}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button{width:27px;height:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:none;vertical-align:middle}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after{content:"";position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;background-color:#2e2f32}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg);mask-image:url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconItalic:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg);mask-image:url(../../img/element-icons/room/format-bar/italic.bf18054.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconStrikethrough:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg);mask-image:url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconQuote:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg);mask-image:url(../../img/element-icons/room/format-bar/quote.560cd8f.svg)}.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after{-webkit-mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg);mask-image:url(../../img/element-icons/room/format-bar/code.27444ba.svg)}.mx_MessageComposerFormatBar_buttonTooltip{white-space:nowrap;font-size:1.3rem;font-weight:600;min-width:54px;text-align:center}.mx_MessageComposerFormatBar_buttonTooltip .mx_MessageComposerFormatBar_tooltipShortcut{font-size:.9rem;opacity:.7}.mx_NewRoomIntro{margin:40px 0 48px 64px}.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):after,.mx_NewRoomIntro .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):before{content:unset}.mx_NewRoomIntro .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_NewRoomIntro .mx_NewRoomIntro_buttons{margin-top:28px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton{line-height:2.4rem;display:inline-block}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton+.mx_AccessibleButton{margin-left:12px}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before{content:"";display:inline-block;background-color:#fff;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;width:20px;height:20px;margin-right:5px;vertical-align:text-bottom}.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_NewRoomIntro>h2{margin-top:24px;font-size:2.4rem;font-weight:600}.mx_NewRoomIntro>p{margin:0;font-size:1.5rem;color:#737d8c}.mx_NotificationBadge:not(.mx_NotificationBadge_visible){display:none}.mx_NotificationBadge.mx_NotificationBadge_visible{background-color:#61708b;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted{background-color:#ff4b55}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot{background-color:#2e2f32;width:6px;height:6px;border-radius:6px}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char{width:1.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char{width:2.6rem;height:1.6rem;border-radius:1.6rem}.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count{font-size:1rem;line-height:1.4rem;color:#fff}.mx_PinnedEventTile{min-height:40px;margin-bottom:5px;width:100%;border-radius:5px}.mx_PinnedEventTile:hover{background-color:#f6f7f8}.mx_PinnedEventTile .mx_PinnedEventTile_sender,.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{color:#868686;font-size:.8em;vertical-align:top;display:inline-block;padding-bottom:3px}.mx_PinnedEventTile .mx_PinnedEventTile_timestamp{padding-left:15px;display:none}.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar{float:left;margin-right:10px}.mx_PinnedEventTile_actions{float:right;margin-right:10px;display:none}.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp{display:inline-block}.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions{display:block}.mx_PinnedEventTile_unpinButton{display:inline-block;cursor:pointer;margin-left:10px}.mx_PinnedEventTile_gotoButton{display:inline-block;font-size:.7em}.mx_PinnedEventTile_message{margin-left:50px;position:relative;top:0;left:0}.mx_PinnedEventsPanel{border-top:1px solid transparent}.mx_PinnedEventsPanel_body{max-height:300px;overflow-y:auto;padding-bottom:15px}.mx_PinnedEventsPanel_header{margin:0;padding-top:8px;padding-bottom:15px}.mx_PinnedEventsPanel_cancel{margin:12px;float:right;display:inline-block}.mx_PresenceLabel{font-size:1.1rem;opacity:.5}.mx_ReplyPreview{background:#fff;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;max-height:50vh;overflow:auto;-webkit-box-shadow:0 -16px 32px rgba(0,0,0,.04);box-shadow:0 -16px 32px rgba(0,0,0,.04)}.mx_ReplyPreview_section{border-bottom:1px solid transparent}.mx_ReplyPreview_header{margin:12px;color:#2e2f32;font-weight:400;opacity:.4}.mx_ReplyPreview_title{float:left}.mx_ReplyPreview_cancel{float:right;cursor:pointer}.mx_ReplyPreview_clear{clear:both}.mx_RoomBreadcrumbs{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb{margin-right:8px;width:32px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter{margin-left:-40px}.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active{margin-left:0;-webkit-transition:margin-left .64s cubic-bezier(.66,.02,.36,1);transition:margin-left .64s cubic-bezier(.66,.02,.36,1)}.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder{font-weight:600;font-size:1.4rem;line-height:32px;height:32px}.mx_RoomBreadcrumbs_Tooltip{margin-left:-42px;margin-top:-42px}.mx_RoomHeader{-webkit-box-flex:0;-ms-flex:0 0 50px;flex:0 0 50px;border-bottom:1px solid transparent;background-color:#fff}.mx_RoomHeader .mx_RoomHeader_e2eIcon{height:12px;width:12px}.mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon{margin:0;position:absolute;height:12px;width:12px}.mx_RoomHeader_wrapper{margin:auto;height:50px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-width:0;padding:0 10px 0 18px}.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large{margin:0}.mx_RoomHeader_spinner{-webkit-box-flex:1;-ms-flex:1;flex:1;height:36px;padding-left:12px;padding-right:12px}.mx_RoomHeader_textButton{vertical-align:middle;border:0;border-radius:8px;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-size:1.4rem;color:#fff;background-color:#0dbd8b;width:auto;padding:7px 1.5em;cursor:pointer;display:inline-block;outline:none;margin-right:8px;margin-top:-5px}.mx_RoomHeader_textButton_danger{background-color:#ff4b55}.mx_RoomHeader_cancelButton{cursor:pointer;padding-left:12px;padding-right:12px}.mx_RoomHeader_buttons{background-color:#fff}.mx_RoomHeader_buttons,.mx_RoomHeader_info{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_info{-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomHeader_simpleHeader{line-height:5.2rem;color:#45474a;font-size:1.8rem;font-weight:600;overflow:hidden;margin-left:63px;text-overflow:ellipsis;width:100%}.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton{float:right}.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon{margin-left:14px;margin-right:24px;vertical-align:-4px}.mx_RoomHeader_name{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;overflow:hidden;color:#45474a;font-weight:600;font-size:1.8rem;margin:0 7px;border-bottom:1px solid transparent;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomHeader_nametext{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mx_RoomHeader_settingsHint{color:#a2a2a2!important}.mx_RoomHeader_searchStatus{font-weight:400;opacity:.6}.mx_RoomHeader_avatar,.mx_RoomHeader_avatarPicker,.mx_RoomHeader_avatarPicker_edit,.mx_RoomHeader_avatarPicker_remove,.mx_RoomHeader_name{cursor:pointer}.mx_RoomHeader_avatarPicker_remove{position:absolute;top:-11px;right:-9px}.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable){color:#0dbd8b}.mx_RoomHeader_placeholder{color:#a2a2a2!important}.mx_RoomHeader_editable{border-bottom:1px solid #c7c7c7!important;min-width:150px;cursor:text}.mx_RoomHeader_editable:focus{border-bottom:1px solid #0dbd8b!important;outline:none;-webkit-box-shadow:none;box-shadow:none}.mx_RoomHeader_topic{-webkit-box-flex:1;-ms-flex:1;flex:1;color:#9e9e9e;font-weight:400;font-size:1.3rem;margin:4px 7px 0;overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid transparent;line-height:1.2em;max-height:2.4em}.mx_RoomHeader_avatar{-webkit-box-flex:0;-ms-flex:0;flex:0;margin:0 6px 0 7px;position:relative}.mx_RoomHeader_avatar .mx_BaseAvatar_image{-o-object-fit:cover;object-fit:cover}.mx_RoomHeader_avatarPicker{position:relative}.mx_RoomHeader_avatarPicker_edit{position:absolute;left:16px;top:18px}.mx_RoomHeader_avatarPicker_edit>label{cursor:pointer}.mx_RoomHeader_avatarPicker_edit>input{display:none}.mx_RoomHeader_button{position:relative;margin-left:1px;margin-right:1px;cursor:pointer;height:32px;width:32px;border-radius:100%}.mx_RoomHeader_button:before{content:"";position:absolute;top:4px;left:4px;height:24px;width:24px;background-color:#c1c6cd;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_RoomHeader_button:hover{background:rgba(13,189,139,.1)}.mx_RoomHeader_button:hover:before{background-color:#0dbd8b}.mx_RoomHeader_forgetButton:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg);width:26px}.mx_RoomHeader_appsButton:before{-webkit-mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg);mask-image:url(../../img/element-icons/room/apps.5ee9f78.svg)}.mx_RoomHeader_appsButton_highlight:before{background-color:#0dbd8b}.mx_RoomHeader_searchButton:before{-webkit-mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg);mask-image:url(../../img/element-icons/room/search-inset.db6314d.svg)}.mx_RoomHeader_voiceCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center}.mx_RoomHeader_videoCallButton:before{-webkit-mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg);mask-image:url(../../img/element-icons/call/video-call.f465ed0.svg)}.mx_RoomHeader_showPanel{height:16px}.mx_RoomHeader_voipButton{display:table-cell}.mx_RoomHeader_voipButtons{margin-top:18px}.mx_RoomHeader_pinnedButton:before{-webkit-mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg);mask-image:url(../../img/element-icons/room/pin.6ab67ed.svg)}.mx_RoomHeader_pinsIndicator{position:absolute;right:0;bottom:4px;width:8px;height:8px;border-radius:8px;background-color:#8d99a5}.mx_RoomHeader_pinsIndicatorUnread{background-color:#ff4b55}@media only screen and (max-width:480px){.mx_RoomHeader_wrapper{padding:0}.mx_RoomHeader{overflow:hidden}}.mx_RoomList{padding-right:7px}.mx_RoomList_iconPlus:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg);mask-image:url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg)}.mx_RoomList_iconHash:before{-webkit-mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg);mask-image:url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg)}.mx_RoomList_iconExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_iconBrowse:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomList_iconDialpad:before{-webkit-mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg);mask-image:url(../../img/element-icons/roomlist/dialpad.37f876f.svg)}.mx_RoomList_explorePrompt{margin:4px 12px;padding-top:12px;border-top:1px solid #e7e7e7;font-size:1.4rem}.mx_RoomList_explorePrompt div:first-child{font-weight:600;line-height:1.8rem;color:#2e2f32}.mx_RoomList_explorePrompt .mx_AccessibleButton{color:#2e2f32;position:relative;padding:8px 8px 8px 32px;font-size:inherit;margin-top:12px;display:block;text-align:start;background-color:rgba(141,151,165,.2);border-radius:4px}.mx_RoomList_explorePrompt .mx_AccessibleButton:before{content:"";width:16px;height:16px;position:absolute;top:8px;left:8px;background:#737d8c;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before{-webkit-mask-image:url(../../img/element-icons/feedback.a91241e.svg);mask-image:url(../../img/element-icons/feedback.a91241e.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg);mask-image:url(../../img/element-icons/roomlist/explore.1523e65.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before{-webkit-mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg);mask-image:url(../../img/element-icons/roomlist/browse.080f923.svg)}.mx_RoomPreviewBar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-align-items:center}.mx_RoomPreviewBar h3{font-size:1.8rem;font-weight:600}.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomPreviewBar .mx_RoomPreviewBar_message p,.mx_RoomPreviewBar h3{word-break:break-all;word-break:break-word}.mx_RoomPreviewBar .mx_Spinner{width:auto;height:auto;margin:10px 10px 10px 0;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer{font-size:1.2rem;line-height:2rem}.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner{vertical-align:middle;display:inline-block}.mx_RoomPreviewBar_actions,.mx_RoomPreviewBar_message{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomPreviewBar_message{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.mx_RoomPreviewBar_message p{overflow-wrap:break-word}.mx_RoomPreviewBar_panel{padding:8px 8px 8px 20px;border-top:1px solid transparent;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:3px 8px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions>*{margin-left:12px}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;min-width:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message>*{margin:4px}.mx_RoomPreviewBar_dialog{margin:auto;-webkit-box-sizing:content;box-sizing:content;width:400px;border-radius:4px;padding:20px;text-align:center}.mx_RoomPreviewBar_dialog,.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message>*{margin:5px 0 20px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton{padding:7px 50px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions>*{margin-top:12px}.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-bottom:7px}.mx_RoomPreviewBar_inviter{font-weight:600}a.mx_RoomPreviewBar_inviter{text-decoration:underline;cursor:pointer}.mx_RoomSublist{margin-left:8px;margin-bottom:4px}.mx_RoomSublist.mx_RoomSublist_hidden{display:none}.mx_RoomSublist .mx_RoomSublist_headerContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-bottom:8px;max-height:24px;color:#8d99a5}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky{position:fixed;height:32px;width:calc(100% - 22px)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer .mx_NotificationBadge{margin-left:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_NotificationBadge{margin-right:4px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{margin-left:8px;position:relative;width:24px;height:24px;border-radius:8px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{content:"";width:16px;height:16px;position:absolute;top:4px;left:4px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#61708b}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover,.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:hover{background:rgba(141,151,165,.2)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton{visibility:hidden;width:0;margin:0}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{-webkit-mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg);mask-image:url(../../img/element-icons/roomlist/plus.daac9ba.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText{-webkit-box-flex:1;-ms-flex:1;flex:1;max-width:calc(100% - 16px);line-height:1.6rem;font-size:1.3rem;font-weight:600;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn{display:inline-block;position:relative;width:14px;height:14px;margin-right:6px}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn:before{content:"";width:18px;height:18px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#8d99a5;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed:before{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.mx_RoomSublist:first-child .mx_RoomSublist_headerContainer{height:0;padding-bottom:4px}.mx_RoomSublist .mx_RoomSublist_resizeBox{position:relative;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist .mx_RoomSublist_resizeBox,.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;overflow:hidden}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;-ms-flex-direction:column;flex-direction:column;-webkit-mask-image:linear-gradient(0deg,transparent,#000 4px);mask-image:linear-gradient(0deg,transparent,#000 4px)}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles_showNButton{-webkit-box-flex:0;-ms-flex:0 0 32px;flex:0 0 32px}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles{-webkit-box-flex:0;-ms-flex:0 0 4px;flex:0 0 4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle{cursor:ns-resize;border-radius:3px;max-width:64px;height:4px!important;position:relative!important;bottom:0!important}.mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_resizerHandle,.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle{opacity:.8;background-color:#2e2f32}.mx_RoomSublist .mx_RoomSublist_showNButton{cursor:pointer;font-size:1.3rem;line-height:1.8rem;color:#737d8c;height:24px;padding-bottom:4px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{position:relative;width:18px;height:18px;margin-left:12px;margin-right:16px;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#8d99a5;left:-1px}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron,.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showMoreButtonChevron{-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:focus-within .mx_RoomSublist_menuButton,.mx_RoomSublist:not(.mx_RoomSublist_minimized)>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;width:24px;margin-left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer{height:auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;position:relative}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0;-ms-flex-item-align:end;align-self:flex-end;margin-right:0}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;max-width:100%}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;visibility:visible;width:32px!important;height:32px!important;margin-left:0!important;background-color:rgba(141,151,165,.2);margin-top:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before{top:8px;left:8px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron{margin-right:12px}.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton{height:16px}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton{visibility:visible;position:absolute;bottom:48px;right:0;width:16px;height:16px;border-radius:0;z-index:1;background-color:hsla(0,0%,96.1%,.9)}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton:before,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover .mx_RoomSublist_menuButton:before{top:0;left:0}.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton,.mx_RoomSublist.mx_RoomSublist_minimized>.mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton{bottom:8px}.mx_RoomSublist_contextMenu{padding:20px 16px;width:250px}.mx_RoomSublist_contextMenu hr{margin-top:16px;margin-bottom:16px;margin-right:16px;border:1px solid #2e2f32;opacity:.1}.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title{font-size:1.5rem;line-height:2rem;font-weight:600;margin-bottom:4px}.mx_RoomSublist_contextMenu .mx_Checkbox,.mx_RoomSublist_contextMenu .mx_RadioButton{margin-top:8px}.mx_RoomSublist_addRoomTooltip{margin-top:-3px}.mx_RoomSublist_skeletonUI{position:relative;margin-left:4px;height:288px}.mx_RoomSublist_skeletonUI:before{background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(hsla(0,0%,100%,0)));background:linear-gradient(180deg,#fff,hsla(0,0%,100%,0));width:100%;height:100%;content:"";position:absolute;-webkit-mask-repeat:repeat-y;mask-repeat:repeat-y;-webkit-mask-size:auto 48px;mask-size:auto 48px;-webkit-mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg);mask-image:url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg)}.mx_RoomTile{margin-bottom:4px;padding:4px;display:-webkit-box;display:-ms-flexbox;display:flex}.mx_RoomTile.mx_RoomTile_hasMenuOpen,.mx_RoomTile.mx_RoomTile_selected,.mx_RoomTile:focus-within,.mx_RoomTile:hover{background-color:#fff;border-radius:8px}.mx_RoomTile .mx_DecoratedRoomAvatar,.mx_RoomTile .mx_RoomTile_avatarContainer{margin-right:8px}.mx_RoomTile .mx_RoomTile_nameContainer{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;min-width:0;margin-right:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview,.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{margin:0 2px;width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name{font-size:1.4rem;line-height:1.8rem}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents{font-weight:600}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview{font-size:1.3rem;line-height:1.8rem;color:#737d8c}.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview{margin-top:-4px}.mx_RoomTile .mx_RoomTile_notificationsButton{margin-left:4px}.mx_RoomTile .mx_RoomTile_badgeContainer{height:16px;margin:auto 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge{margin-right:2px}.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot{margin-left:5px;margin-right:7px}.mx_RoomTile .mx_RoomTile_menuButton,.mx_RoomTile .mx_RoomTile_notificationsButton{width:20px;min-width:20px;height:20px;margin-top:auto;margin-bottom:auto;position:relative;display:none}.mx_RoomTile .mx_RoomTile_menuButton:before,.mx_RoomTile .mx_RoomTile_notificationsButton:before{top:2px;left:2px;content:"";width:16px;height:16px;position:absolute;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background:#2e2f32}.mx_RoomTile .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show{display:block}.mx_RoomTile .mx_RoomTile_menuButton:before{-webkit-mask-image:url(../../img/element-icons/context-menu.829cc1a.svg);mask-image:url(../../img/element-icons/context-menu.829cc1a.svg)}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_badgeContainer,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer{width:0;height:0;display:none}.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_notificationsButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton,.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_notificationsButton{display:block}.mx_RoomTile.mx_RoomTile_minimized{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative}.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar,.mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer{margin-right:0}.mx_RoomTile_iconBell:before{-webkit-mask-image:url(../../img/element-icons/notifications.d298b39.svg);mask-image:url(../../img/element-icons/notifications.d298b39.svg)}.mx_RoomTile_iconBellDot:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg);mask-image:url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg)}.mx_RoomTile_iconBellCrossed:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg);mask-image:url(../../img/element-icons/roomlist/notifications-off.0c57561.svg)}.mx_RoomTile_iconBellMentions:before{-webkit-mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg);mask-image:url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before{-webkit-mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg);mask-image:url(../../img/element-icons/roomlist/favorite.ff7609d.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before{-webkit-mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg);mask-image:url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before{-webkit-mask-image:url(../../img/element-icons/settings.6b381af.svg);mask-image:url(../../img/element-icons/settings.6b381af.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before{-webkit-mask-image:url(../../img/element-icons/leave.bb917e7.svg);mask-image:url(../../img/element-icons/leave.bb917e7.svg)}.mx_RoomUpgradeWarningBar{max-height:235px;background-color:#f7f7f7;padding-left:20px;padding-right:20px;overflow:scroll}.mx_RoomUpgradeWarningBar_wrapped{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center}.mx_RoomUpgradeWarningBar_header{color:#ff4b55;font-weight:700}.mx_RoomUpgradeWarningBar_body{color:#ff4b55}.mx_RoomUpgradeWarningBar_upgradelink{color:#ff4b55;text-decoration:underline}.mx_RoomUpgradeWarningBar_small{color:#888;font-size:70%}.mx_SearchBar{height:56px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid transparent}.mx_SearchBar .mx_SearchBar_input{-webkit-box-flex:1;-ms-flex:1 1 0px;flex:1 1 0;margin-left:22px}.mx_SearchBar .mx_SearchBar_searchButton{cursor:pointer;width:37px;height:37px;background-color:#0dbd8b;-webkit-mask:url(../../img/feather-customised/search-input.044bfa7.svg);mask:url(../../img/feather-customised/search-input.044bfa7.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.mx_SearchBar .mx_SearchBar_buttons{display:inherit}.mx_SearchBar .mx_SearchBar_button{border:0;margin:0 0 0 22px;padding:5px;font-size:1.5rem;cursor:pointer;color:#2e2f32;border-bottom:2px solid #0dbd8b;font-weight:600}.mx_SearchBar .mx_SearchBar_unselected{color:#9fa9ba;border-color:transparent}.mx_SearchBar .mx_SearchBar_cancel{background-color:#ff4b55;-webkit-mask:url(../../img/cancel.4b9715b.svg);mask:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:14px;mask-size:14px;padding:9px;margin:0 12px 0 3px;cursor:pointer}.mx_SendMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;font-size:1.4rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:6px;min-width:0}.mx_SendMessageComposer,.mx_SendMessageComposer .mx_BasicMessageComposer{-webkit-box-flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal}.mx_SendMessageComposer .mx_BasicMessageComposer{-ms-flex:1;flex:1;-ms-flex-direction:column;flex-direction:column;min-height:50px}.mx_SendMessageComposer .mx_BasicMessageComposer .mx_BasicMessageComposer_input{padding:3px 0;margin:auto 0;max-height:140px;overflow-y:auto}.mx_Stickers_content{overflow:hidden}.mx_Stickers_content_container{overflow:hidden;height:300px}#mx_persistedElement_stickerPicker .mx_AppTileFullWidth{height:unset;-webkit-box-sizing:border-box;box-sizing:border-box;border-left:none;border-right:none;border-bottom:none}#mx_persistedElement_stickerPicker .mx_AppTileMenuBar{padding:0}#mx_persistedElement_stickerPicker iframe{height:283px}.mx_Stickers_contentPlaceholder{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.mx_Stickers_contentPlaceholder p{max-width:200px}.mx_Stickers_addLink{display:inline;cursor:pointer;color:#0dbd8b}.mx_Stickers_hideStickers{z-index:2001}.mx_TopUnreadMessagesBar{z-index:1000;position:absolute;top:24px;right:24px;width:38px}.mx_TopUnreadMessagesBar:after{content:"";position:absolute;top:-8px;left:10.5px;width:4px;height:4px;border-radius:16px;background-color:#f2f5f8;border:6px solid #0dbd8b;pointer-events:none}.mx_TopUnreadMessagesBar_scrollUp{height:38px;border-radius:19px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;border:1.3px solid #61708b;cursor:pointer}.mx_TopUnreadMessagesBar_scrollUp:before{content:"";position:absolute;width:36px;height:36px;-webkit-mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);mask-image:url(../../img/feather-customised/chevron-down-thin.f9a2477.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;background:#61708b;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.mx_TopUnreadMessagesBar_markAsRead{display:block;width:18px;height:18px;background:#fff;border:1.3px solid #61708b;border-radius:10px;margin:5px auto}.mx_TopUnreadMessagesBar_markAsRead:before{content:"";position:absolute;width:18px;height:18px;-webkit-mask-image:url(../../img/cancel.4b9715b.svg);mask-image:url(../../img/cancel.4b9715b.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:10px;mask-size:10px;-webkit-mask-position:4px 4px;mask-position:4px 4px;background:#61708b}.mx_VoiceRecordComposerTile_stop{width:28px;height:28px;border:2px solid #e3e8f0;border-radius:32px;margin-right:16px;position:relative}.mx_VoiceRecordComposerTile_stop:after{content:"";width:14px;height:14px;position:absolute;top:7px;left:7px;border-radius:2px;background-color:#ff4b55}.mx_VoiceRecordComposerTile_delete{width:14px;height:18px;vertical-align:middle;margin-right:11px;background-color:#8d99a5;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-image:url(../../img/element-icons/trashcan.26f6c28.svg);mask-image:url(../../img/element-icons/trashcan.26f6c28.svg)}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer{margin:6px 12px 6px 6px;position:relative}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording{padding-left:22px}.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before{-webkit-animation:recording-pulse 2s infinite;animation:recording-pulse 2s infinite;content:"";background-color:#ff4b55;width:10px;height:10px;position:absolute;left:12px;top:18px;border-radius:10px}@-webkit-keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}@keyframes recording-pulse{0%{opacity:1}35%{opacity:0}65%{opacity:1}}.mx_WhoIsTypingTile{margin-left:-18px;padding-top:18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_WhoIsTypingTile_avatars{-webkit-box-flex:0;-ms-flex:0 0 83px;flex:0 0 83px;text-align:center}.mx_WhoIsTypingTile_avatars>:not(:first-child){margin-left:-12px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial{padding-top:1px}.mx_WhoIsTypingTile_avatars .mx_BaseAvatar{border:1px solid #fff;border-radius:40px}.mx_WhoIsTypingTile_remainingAvatarPlaceholder{position:relative;display:inline-block;color:#acacac;background-color:#ddd;border:1px solid #fff;border-radius:40px;width:24px;height:24px;line-height:2.4rem;font-size:.8em;vertical-align:top;text-align:center}.mx_WhoIsTypingTile_label{-webkit-box-flex:1;-ms-flex:1;flex:1;font-size:1.4rem;font-weight:600;color:#9e9e9e}.mx_WhoIsTypingTile_label>span{background-image:url(../../img/typing-indicator-2x.0eb9f0e.gif);background-size:25px;background-position:0 100%;background-repeat:no-repeat;padding-bottom:15px;display:block}.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile{padding-top:4px}.mx_AvatarSetting_avatar{width:90px;min-width:90px;height:90px;margin-top:8px;position:relative}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover{-webkit-transition:opacity .08s cubic-bezier(.46,.03,.52,.96);transition:opacity .08s cubic-bezier(.46,.03,.52,.96);position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;line-height:90px;text-align:center}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover>span{color:#fff;position:relative;font-weight:500}.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg{position:absolute;top:0;bottom:0;left:0;right:0;opacity:.5;background-color:#2e2f32;border-radius:90px}.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering .mx_AvatarSetting_hover{opacity:1}.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) .mx_AvatarSetting_hover{opacity:0}.mx_AvatarSetting_avatar>*{-webkit-box-sizing:border-box;box-sizing:border-box}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary{margin-top:8px}.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm{width:100%}.mx_AvatarSetting_avatar>img{cursor:pointer;-o-object-fit:cover;object-fit:cover}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder,.mx_AvatarSetting_avatar>img{display:block;height:90px;width:inherit;border-radius:90px;cursor:pointer}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before{background-color:#2e2f32;-webkit-mask:url(../../img/feather-customised/user.7a4d23d.svg);mask:url(../../img/feather-customised/user.7a4d23d.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:36px;mask-size:36px;-webkit-mask-position:center;mask-position:center;content:"";position:absolute;top:0;bottom:0;left:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton{width:32px;height:32px;border-radius:32px;background-color:#e7e7e7;position:absolute;bottom:0;right:0}.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before{content:"";display:block;width:100%;height:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:55%;mask-size:55%;background-color:#2e2f32;-webkit-mask-image:url(../../img/feather-customised/edit.fd55ec2.svg);mask-image:url(../../img/feather-customised/edit.fd55ec2.svg)}.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder{background-color:#f4f6fa}.mx_CrossSigningPanel_statusList{border-spacing:0}.mx_CrossSigningPanel_statusList td{padding:0}.mx_CrossSigningPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_CrossSigningPanel_buttonRow{margin:1em 0}.mx_CrossSigningPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_DevicesPanel{display:table;table-layout:fixed;width:880px;border-spacing:10px}.mx_DevicesPanel_header{display:table-header-group;font-weight:700}.mx_DevicesPanel_header>.mx_DevicesPanel_deviceButtons{height:48px}.mx_DevicesPanel_header>div{display:table-cell;vertical-align:middle}.mx_DevicesPanel_header .mx_DevicesPanel_deviceName{width:50%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen{width:30%}.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons{width:20%}.mx_DevicesPanel_device{display:table-row}.mx_DevicesPanel_device>div{display:table-cell}.mx_DevicesPanel_myDevice{font-weight:700}.mx_E2eAdvancedPanel_settingLongDescription{margin-right:150px}.mx_ExistingEmailAddress{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingEmailAddress_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingEmailAddress_email,.mx_ExistingEmailAddress_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingEmailAddress_confirmBtn{margin-left:5px}.mx_IntegrationManager .mx_Dialog{width:60%;height:70%;overflow:hidden;padding:0;max-width:none;max-height:none}.mx_IntegrationManager iframe{background-color:#fff;border:0;width:100%;height:100%}.mx_IntegrationManager_loading h3{text-align:center}.mx_IntegrationManager_error{text-align:center;padding-top:20px}.mx_IntegrationManager_error h3{color:#ff4b55}.mx_UserNotifSettings_tableRow{display:table-row}.mx_UserNotifSettings_inputCell{display:table-cell;padding-bottom:8px;padding-right:8px;width:16px}.mx_UserNotifSettings_labelCell{padding-bottom:8px;width:400px;display:table-cell}.mx_UserNotifSettings_pushRulesTableWrapper{padding-bottom:8px}.mx_UserNotifSettings_pushRulesTable{width:100%;table-layout:fixed}.mx_UserNotifSettings_pushRulesTable thead{font-weight:700}.mx_UserNotifSettings_pushRulesTable tbody th{font-weight:400}.mx_UserNotifSettings_pushRulesTable tbody th:first-child{text-align:left}.mx_UserNotifSettings_keywords{cursor:pointer;color:#0dbd8b}.mx_UserNotifSettings_devicesTable td{padding-left:20px;padding-right:20px}.mx_UserNotifSettings_notifTable{display:table;position:relative}.mx_UserNotifSettings_notifTable .mx_Spinner{position:absolute}.mx_NotificationSound_soundUpload{display:none}.mx_NotificationSound_browse{color:#0dbd8b;border:1px solid #0dbd8b;background-color:transparent}.mx_NotificationSound_save{margin-left:5px;color:#fff;background-color:#0dbd8b}.mx_NotificationSound_resetSound{margin-top:5px;color:#fff;border:#ff4b55;background-color:#ff4b55}.mx_ExistingPhoneNumber{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingPhoneNumber_delete{margin-right:5px;cursor:pointer;vertical-align:middle}.mx_ExistingPhoneNumber_address,.mx_ExistingPhoneNumber_promptText{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_ExistingPhoneNumber_confirmBtn{margin-left:5px}.mx_ExistingPhoneNumber_verification{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_ExistingPhoneNumber_verification .mx_Field{margin:0 0 0 1em}.mx_PhoneNumbers_input{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_PhoneNumbers_input>.mx_Field{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mx_PhoneNumbers_country{width:80px}.mx_ProfileSettings_controls_topic>textarea{resize:vertical}.mx_ProfileSettings_profile{display:-webkit-box;display:-ms-flexbox;display:flex}.mx_ProfileSettings_controls{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:54px}.mx_ProfileSettings_controls .mx_SettingsTab_subheading{margin-top:0}.mx_ProfileSettings_controls .mx_Field #profileTopic{height:4em}.mx_ProfileSettings_controls .mx_Field:first-child{margin-top:0}.mx_ProfileSettings_hostingSignup{margin-left:20px}.mx_ProfileSettings_hostingSignup img{margin-left:5px}.mx_ProfileSettings_avatarUpload{display:none}.mx_ProfileSettings_profileForm{margin-right:100px;border-bottom:1px solid #e7e7e7}.mx_ProfileSettings_buttons{margin-top:10px;margin-bottom:28px}.mx_ProfileSettings_buttons>.mx_AccessibleButton_kind_link{padding-left:0}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigInvalid,.mx_SecureBackupPanel_sigValid{font-weight:700}.mx_SecureBackupPanel_deviceVerified,.mx_SecureBackupPanel_sigValid{color:#76cfa5}.mx_SecureBackupPanel_deviceNotVerified,.mx_SecureBackupPanel_sigInvalid{color:#ba6363}.mx_SecureBackupPanel_deviceName{font-style:italic}.mx_SecureBackupPanel_buttonRow{margin:1em 0}.mx_SecureBackupPanel_buttonRow :nth-child(n+1){-webkit-margin-end:10px;margin-inline-end:10px}.mx_SecureBackupPanel_statusList{border-spacing:0}.mx_SecureBackupPanel_statusList td{padding:0}.mx_SecureBackupPanel_statusList td:first-of-type{-webkit-padding-end:1em;padding-inline-end:1em}.mx_SetIdServer .mx_Field_input{margin-right:100px}.mx_SetIdServer_tooltip{max-width:120px}.mx_SetIntegrationManager{margin-top:10px;margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading{margin-bottom:10px}.mx_SetIntegrationManager>.mx_SettingsTab_heading>.mx_SettingsTab_subheading{display:inline-block;padding-left:5px}.mx_SetIntegrationManager .mx_ToggleSwitch{display:inline-block;float:right;top:9px;margin-right:100px}.mx_ExistingSpellCheckLanguage{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:5px}.mx_ExistingSpellCheckLanguage_language{-webkit-box-flex:1;-ms-flex:1;flex:1;margin-right:10px}.mx_GeneralUserSettingsTab_spellCheckLanguageInput{margin-top:1em;margin-bottom:1em}.mx_SpellCheckLanguages{margin-right:100px}.mx_UpdateCheckButton_summary{margin-left:16px}.mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link{padding:0}.mx_SettingsTab{color:#61708b}.mx_SettingsTab_warningText{color:#ff4b55}.mx_SettingsTab_heading{font-size:2rem;font-weight:600;color:#2e2f32;margin-bottom:10px}.mx_SettingsTab_heading:nth-child(n+2){margin-top:30px}.mx_SettingsTab_subheading{font-size:1.6rem;display:block;font-family:Inter,Twemoji,Apple Color Emoji,Segoe UI Emoji,Arial,Helvetica,Sans-Serif,Noto Color Emoji;font-weight:600;color:#2e2f32;margin-bottom:10px;margin-top:12px}.mx_SettingsTab_subsectionText{color:#61708b;font-size:1.4rem;display:block;margin:10px 100px 10px 0}.mx_SettingsTab_section{margin-bottom:24px}.mx_SettingsTab_section .mx_SettingsFlag{margin-right:100px;margin-bottom:10px}.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag{margin-right:0!important}.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label{vertical-align:middle;display:inline-block;font-size:1.4rem;color:#2e2f32;max-width:calc(100% - 4.8rem);-webkit-box-sizing:border-box;box-sizing:border-box;padding-right:10px}.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch{float:right}.mx_SettingsTab_linkBtn{cursor:pointer;color:#0dbd8b;word-break:break-all}.mx_SettingsTab a{color:#238cf5}.mx_GeneralRoomSettingsTab_profileSection{margin-top:10px}.mx_RolesRoomSettingsTab ul{margin-bottom:0}.mx_RolesRoomSettingsTab_unbanBtn{margin-right:10px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_warning{display:block}.mx_SecurityRoomSettingsTab_warning img{vertical-align:middle;margin-right:5px;margin-left:3px;margin-bottom:5px}.mx_SecurityRoomSettingsTab_encryptionSection{margin-bottom:25px}.mx_AppearanceUserSettingsTab_fontSlider,.mx_AppearanceUserSettingsTab_fontSlider_preview,.mx_AppearanceUserSettingsTab_Layout{margin-right:100px}.mx_AppearanceUserSettingsTab .mx_Field{width:256px}.mx_AppearanceUserSettingsTab_fontScaling{color:#2e2f32}.mx_AppearanceUserSettingsTab_fontSlider{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:15px;background:rgba(227,232,240,.2);border-radius:10px;font-size:10px;margin-top:24px;margin-bottom:24px}.mx_AppearanceUserSettingsTab_fontSlider_preview{border:1px solid #e3e8f0;border-radius:10px;padding:0 16px 9px;pointer-events:none}.mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption{display:none}.mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout{padding-top:9px}.mx_AppearanceUserSettingsTab_fontSlider_smallText{font-size:15px;padding-right:20px;padding-left:5px;font-weight:500}.mx_AppearanceUserSettingsTab_fontSlider_largeText{font-size:18px;padding-left:20px;padding-right:5px;font-weight:500}.mx_AppearanceUserSettingsTab>.mx_SettingsTab_SubHeading{margin-bottom:32px}.mx_AppearanceUserSettingsTab_themeSection{color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:4px;margin-bottom:30px}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton{padding:1.6rem;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:10px;width:180px;background:#e3e8f0;opacity:.4;-ms-flex-negative:1;flex-shrink:1;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;margin-right:15px;margin-top:10px;font-weight:600;color:#61708b}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton>span{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled{opacity:1}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_light{background-color:#f3f8fd;color:#2e2f32}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark{background-color:#25282e;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_dark>input>div>div{border-color:#e3e8f0}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black{background-color:#000;color:#f3f8fd}.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div,.mx_AppearanceUserSettingsTab_themeSection>.mx_ThemeSelectors>.mx_RadioButton_enabled.mx_ThemeSelector_black>input>div>div{border-color:#e3e8f0}.mx_SettingsTab_customFontSizeField{margin-left:calc(1.6rem + 10px)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;color:#2e2f32}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_AppearanceUserSettingsTab_spacer{width:24px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:300px;border:1px solid #e3e8f0;border-radius:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_msgOption,.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_MessageActionBar{display:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:10px;pointer-events:none}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_RadioButton{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:10px}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_content{margin-right:0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons>.mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected{border-color:#0dbd8b}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton{border-top:1px solid #e3e8f0}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton>input+div{border-color:rgba(97,112,139,.2)}.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked{background-color:rgba(13,189,139,.08)}.mx_AppearanceUserSettingsTab_Advanced{color:#2e2f32}.mx_AppearanceUserSettingsTab_Advanced>*{margin-bottom:16px}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_AdvancedToggle{color:#0dbd8b;cursor:pointer}.mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_systemFont{margin-left:calc(1.6rem + 10px)}.mx_GeneralUserSettingsTab_changePassword .mx_Field{margin-right:100px}.mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child{margin-top:0}.mx_GeneralUserSettingsTab_accountSection .mx_SettingsTab_subheading:nth-child(n+1),.mx_GeneralUserSettingsTab_discovery .mx_SettingsTab_subheading:nth-child(n+2),.mx_SetIdServer .mx_SettingsTab_subheading{margin-top:24px}.mx_GeneralUserSettingsTab_accountSection .mx_Spinner,.mx_GeneralUserSettingsTab_discovery .mx_Spinner{-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left}.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses,.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers,.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress,.mx_GeneralUserSettingsTab_discovery .mx_ExistingPhoneNumber,.mx_GeneralUserSettingsTab_languageInput{margin-right:100px}.mx_GeneralUserSettingsTab_warningIcon{vertical-align:middle}.mx_HelpUserSettingsTab_debugButton{margin-bottom:5px;margin-top:5px}.mx_HelpUserSettingsTab span.mx_AccessibleButton{word-break:break-word}.mx_HelpUserSettingsTab code{word-break:break-all;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.mx_HelpUserSettingsTab_accessToken{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-radius:5px;border:1px solid #747474;margin-bottom:10px;margin-top:10px;padding:10px}.mx_HelpUserSettingsTab_accessToken_copy{-ms-flex-negative:0;flex-shrink:0;cursor:pointer;margin-left:20px;display:inherit}.mx_HelpUserSettingsTab_accessToken_copy>div{-webkit-mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);mask-image:url(../../img/feather-customised/clipboard.24dd87a.svg);background-color:#2e2f32;margin-left:5px;width:20px;height:20px;background-repeat:no-repeat}.mx_LabsUserSettingsTab .mx_SettingsTab_section{margin-top:32px}.mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag{margin-right:0}.mx_MjolnirUserSettingsTab .mx_Field{margin-right:100px}.mx_MjolnirUserSettingsTab_listItem{margin-bottom:2px}.mx_NotificationUserSettingsTab .mx_SettingsTab_heading{margin-bottom:10px}.mx_PreferencesUserSettingsTab .mx_Field{margin-right:100px}.mx_PreferencesUserSettingsTab .mx_SettingsTab_section{margin-bottom:30px}.mx_SecurityUserSettingsTab .mx_DevicesPanel{width:auto;max-width:880px}.mx_SecurityUserSettingsTab_deviceInfo{display:table;padding-left:0}.mx_SecurityUserSettingsTab_deviceInfo>li{display:table-row}.mx_SecurityUserSettingsTab_deviceInfo>li>label,.mx_SecurityUserSettingsTab_deviceInfo>li>span{display:table-cell;padding-right:1em}.mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton,.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab_importExportButtons{margin-bottom:15px}.mx_SecurityUserSettingsTab_ignoredUser{margin-bottom:5px}.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton{margin-right:10px}.mx_SecurityUserSettingsTab .mx_SettingsTab_section .mx_AccessibleButton_kind_link{padding:0;font-size:inherit}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning{color:#ff4b55;position:relative;padding-left:40px;margin-top:30px}.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:0 center;mask-position:0 center;-webkit-mask-size:2.4rem;mask-size:2.4rem;position:absolute;width:2.4rem;height:2.4rem;content:"";top:0;left:0;background-color:#ff4b55;-webkit-mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg);mask-image:url(../../img/feather-customised/alert-triangle.38aca3a.svg)}.mx_VoiceUserSettingsTab .mx_Field{margin-right:100px}.mx_VoiceUserSettingsTab_missingMediaPermissions{margin-bottom:15px}.mx_SpaceBasicSettings .mx_Field{margin:32px 0}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer{display:-webkit-box;display:-ms-flexbox;display:flex;margin-top:24px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer .mx_SpaceBasicSettings_avatar{position:relative;height:80px;width:80px;background-color:#8d99a5;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer img.mx_SpaceBasicSettings_avatar{width:80px;height:80px;-o-object-fit:cover;object-fit:cover;border-radius:16px}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar{cursor:pointer}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar:before{content:"";position:absolute;height:80px;width:80px;top:0;left:0;background-color:#fff;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-image:url(../../img/element-icons/camera.a81a395.svg);mask-image:url(../../img/element-icons/camera.a81a395.svg)}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>input[type=file]{display:none}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_AccessibleButton_kind_link{display:inline-block;padding:0;margin:auto 16px;color:#368bd6}.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer>.mx_SpaceBasicSettings_avatar_remove{color:#ff4b55}.mx_SpaceBasicSettings .mx_FormButton{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceBasicSettings .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background{background-color:rgba(46,48,51,.38);opacity:.6;left:71px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu{padding:24px;width:480px;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;position:relative}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>h2{font-weight:600;font-size:1.8rem;margin-top:4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu>div>p{font-size:1.5rem;color:#737d8c;margin:0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill{position:absolute;top:24px;right:24px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>h3{font-weight:600;margin:0 0 4px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType>span{color:#737d8c}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover{border-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover:before{background-color:#0dbd8b}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover>span{color:#2e2f32}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_public:before{-webkit-mask-image:url(../../img/globe.8201f08.svg);mask-image:url(../../img/globe.8201f08.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_private:before{-webkit-mask-image:url(../../img/element-icons/lock.1f264bd.svg);mask-image:url(../../img/element-icons/lock.1f264bd.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back{width:28px;height:28px;position:relative;background-color:rgba(141,151,165,.2);border-radius:14px;margin-bottom:12px}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before{content:"";position:absolute;height:28px;width:28px;top:0;left:0;background-color:#8d99a5;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:2px 3px;mask-position:2px 3px;-webkit-mask-size:24px;mask-size:24px;-webkit-mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg);mask-image:url(../../img/feather-customised/chevron-down.5278abe.svg)}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_kind_primary{padding:8px 22px;margin-left:auto;display:block;width:-webkit-min-content;width:-moz-min-content;width:min-content}.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled{cursor:not-allowed}.mx_SpacePublicShare .mx_AccessibleButton{position:relative;padding:16px 32px 16px 72px;width:432px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:8px;border:1px solid #e7e7e7;font-size:1.5rem;margin:20px 0}.mx_SpacePublicShare .mx_AccessibleButton>h3{font-weight:600;margin:0 0 4px}.mx_SpacePublicShare .mx_AccessibleButton>span{color:#737d8c}.mx_SpacePublicShare .mx_AccessibleButton:before{position:absolute;content:"";width:32px;height:32px;top:24px;left:20px;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:24px;mask-size:24px;background-color:#8d99a5}.mx_SpacePublicShare .mx_AccessibleButton:hover{border-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover:before{background-color:#0dbd8b}.mx_SpacePublicShare .mx_AccessibleButton:hover>span{color:#2e2f32}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before{-webkit-mask-image:url(../../img/element-icons/link.8f4b1fc.svg);mask-image:url(../../img/element-icons/link.8f4b1fc.svg)}.mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before{-webkit-mask-image:url(../../img/element-icons/room/invite.946a71b.svg);mask-image:url(../../img/element-icons/room/invite.946a71b.svg)}.mx_InlineTermsAgreement_cbContainer{margin-bottom:10px;font-size:1.4rem}.mx_InlineTermsAgreement_cbContainer a{color:#0dbd8b;text-decoration:none}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox{margin-top:10px}.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input{vertical-align:text-bottom}.mx_InlineTermsAgreement_link{display:inline-block;-webkit-mask-image:url(../../img/external-link.a8d3e9b.svg);mask-image:url(../../img/external-link.a8d3e9b.svg);background-color:#0dbd8b;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:12px;height:12px;margin-left:3px;vertical-align:middle}.mx_AnalyticsToast .mx_AccessibleButton_kind_danger{background:none;color:#0dbd8b}.mx_AnalyticsToast .mx_AccessibleButton_kind_primary{background:#0dbd8b;color:#fff}.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon{display:inline-block;width:1.8rem;height:1.8rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:#fff;-webkit-mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);mask-image:url(../../img/element-icons/cloud-off.33cd28e.svg);margin-right:8px}.mx_NonUrgentEchoFailureToast span{vertical-align:middle}.mx_NonUrgentEchoFailureToast .mx_AccessibleButton{padding:0}.mx_VerificationShowSas_decimalSas{text-align:center;font-weight:700;padding-left:3px;padding-right:3px}.mx_VerificationShowSas_decimalSas span{margin-left:5px;margin-right:5px}.mx_VerificationShowSas_emojiSas{text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:25px 0}.mx_VerificationShowSas_emojiSas_block{display:inline-block;margin-bottom:16px;position:relative;width:52px}.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block,.mx_Dialog .mx_VerificationShowSas_emojiSas_block{width:60px}.mx_VerificationShowSas_emojiSas_emoji{font-size:3.2rem}.mx_VerificationShowSas_emojiSas_label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:1.2rem}.mx_VerificationShowSas_emojiSas_break{-ms-flex-preferred-size:100%;flex-basis:100%}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_matchButton{color:#0dbd8b;background-color:rgba(3,179,129,.16);border:none}.mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_noMatchButton{color:#ff4b55;background-color:rgba(255,75,85,.16);border:none}.mx_PlayPauseButton{position:relative;width:32px;height:32px;border-radius:32px;background-color:#fff}.mx_PlayPauseButton:before{content:"";position:absolute;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before{opacity:.5}.mx_PlayPauseButton.mx_PlayPauseButton_play:before{width:13px;height:16px;top:8px;left:12px;-webkit-mask-image:url(../../img/element-icons/play.a72552b.svg);mask-image:url(../../img/element-icons/play.a72552b.svg)}.mx_PlayPauseButton.mx_PlayPauseButton_pause:before{width:10px;height:12px;top:10px;left:11px;-webkit-mask-image:url(../../img/element-icons/pause.c4c0886.svg);mask-image:url(../../img/element-icons/pause.c4c0886.svg)}.mx_VoiceMessagePrimaryContainer{padding:7px 12px 7px 11px;background-color:#e3e8f0;border-radius:12px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#737d8c;font-size:1.4rem;line-height:2.4rem}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar{background-color:#c1c6cd}.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar.mx_Waveform_bar_100pct{-webkit-transition:background-color .25s ease;transition:background-color .25s ease;background-color:#737d8c}.mx_VoiceMessagePrimaryContainer .mx_Clock{width:4.2rem;padding-right:6px;padding-left:8px}.mx_Waveform{position:relative;height:30px;top:1px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;overflow:hidden}.mx_Waveform .mx_Waveform_bar{width:0;border:1px solid transparent;border-radius:2px;min-height:0;max-height:100%;margin-left:1px;margin-right:1px}.mx_CallContainer{position:absolute;right:20px;bottom:72px;z-index:100;pointer-events:none}.mx_CallContainer .mx_CallPreview{pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_CallPreview .mx_CallView_video{width:350px}.mx_CallContainer .mx_CallPreview .mx_VideoFeed_local{border-radius:8px;overflow:hidden}.mx_CallContainer .mx_AppTile_persistedWrapper div{min-width:350px}.mx_CallContainer .mx_IncomingCallBox{min-width:250px;background-color:#f4f6fa;padding:8px;-webkit-box-shadow:0 14px 24px rgba(0,0,0,.08);box-shadow:0 14px 24px rgba(0,0,0,.08);border-radius:8px;pointer-events:auto;cursor:pointer}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo{display:-webkit-box;display:-ms-flexbox;display:flex;direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo .mx_BaseAvatar_initial,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img{margin:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1,.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p{margin:0;padding:0;font-size:1.4rem;line-height:1.6rem}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1{font-weight:700}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons{padding:8px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>.mx_IncomingCallBox_spacer{width:8px}.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons>*{-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;font-size:1.5rem;line-height:2.4rem}.mx_CallView{border-radius:8px;background-color:#f2f5f8;padding-left:8px;padding-right:8px;pointer-events:auto}.mx_CallView_large{padding-bottom:10px;margin:5px 5px 5px 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mx_CallView_large,.mx_CallView_large .mx_CallView_voice{-webkit-box-flex:1;-ms-flex:1;flex:1}.mx_CallView_pip{width:320px;padding-bottom:8px;margin-top:10px;background-color:#f4f6fa;-webkit-box-shadow:0 4px 20px rgba(0,0,0,.2);box-shadow:0 4px 20px rgba(0,0,0,.2);border-radius:8px}.mx_CallView_pip .mx_CallView_voice{height:180px}.mx_CallView_pip .mx_CallView_callControls{bottom:0}.mx_CallView_pip .mx_CallView_callControls_button:before{width:36px;height:36px}.mx_CallView_pip .mx_CallView_holdTransferContent{padding-top:10px;padding-bottom:25px}.mx_CallView_content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:8px}.mx_CallView_voice{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column;background-color:#27303a}.mx_CallView_voice,.mx_CallView_voice_avatarsContainer{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-direction:normal}.mx_CallView_voice_avatarsContainer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.mx_CallView_voice_avatarsContainer div{margin-left:12px;margin-right:12px}.mx_CallView_voice .mx_CallView_holdTransferContent .mx_CallView_voice_avatarContainer{border-radius:2000px;overflow:hidden;position:relative}.mx_CallView_holdTransferContent{height:20px;padding-top:20px;padding-bottom:15px;color:#fff}.mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0;font-weight:700}.mx_CallView_video{width:100%;height:100%;z-index:30;overflow:hidden}.mx_CallView_video_hold{overflow:hidden}.mx_CallView_video_hold .mx_VideoFeed{visibility:hidden}.mx_CallView_video_holdBackground{position:absolute;width:100%;height:100%;left:0;right:0;background-repeat:no-repeat;background-size:cover;background-position:50%;-webkit-filter:blur(20px);filter:blur(20px)}.mx_CallView_video_holdBackground:after{content:"";display:block;position:absolute;width:100%;height:100%;left:0;right:0;background-color:rgba(0,0,0,.6)}.mx_CallView_video .mx_CallView_holdTransferContent{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);font-weight:700;color:#fff;text-align:center}.mx_CallView_video .mx_CallView_holdTransferContent:before{display:block;margin-left:auto;margin-right:auto;content:"";width:40px;height:40px;background-image:url(../../img/voip/paused.77799b3.svg);background-position:50%;background-size:cover}.mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before{width:30px;height:30px}.mx_CallView_video .mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind{padding:0}.mx_CallView_header{height:44px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:left;-ms-flex-pack:left;justify-content:left;-ms-flex-negative:0;flex-shrink:0}.mx_CallView_header_callType{font-size:1.2rem;font-weight:700;vertical-align:middle}.mx_CallView_header_secondaryCallInfo:before{content:"·";margin-left:6px;margin-right:6px}.mx_CallView_header_controls{margin-left:auto}.mx_CallView_header_button{display:inline-block;vertical-align:middle;cursor:pointer}.mx_CallView_header_button:before{content:"";display:inline-block;height:20px;width:20px;vertical-align:middle;background-color:#737d8c;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.mx_CallView_header_button_fullscreen:before{-webkit-mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg);mask-image:url(../../img/element-icons/call/fullscreen.43be138.svg)}.mx_CallView_header_button_expand:before{-webkit-mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg);mask-image:url(../../img/element-icons/call/expand.7ef9f56.svg)}.mx_CallView_header_callInfo{margin-left:12px;margin-right:16px}.mx_CallView_header_roomName{font-weight:700;font-size:12px;line-height:normal;height:15px}.mx_CallView_secondaryCall_roomName{margin-left:4px}.mx_CallView_header_callTypeSmall{font-size:12px;color:#737d8c;line-height:normal;height:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:240px}.mx_CallView_header_phoneIcon{display:inline-block;margin-right:6px;height:16px;width:16px;vertical-align:middle}.mx_CallView_header_phoneIcon:before{content:"";display:inline-block;vertical-align:top;height:16px;width:16px;background-color:#ff4b55;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_CallView_callControls{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;bottom:5px;width:100%;opacity:1;-webkit-transition:opacity .5s;transition:opacity .5s}.mx_CallView_callControls_hidden{opacity:.001;pointer-events:none}.mx_CallView_callControls_button{cursor:pointer;margin-left:8px;margin-right:8px}.mx_CallView_callControls_button:before{content:"";display:inline-block;height:48px;width:48px;background-repeat:no-repeat;background-size:contain;background-position:50%}.mx_CallView_callControls_dialpad{margin-right:auto}.mx_CallView_callControls_dialpad:before{background-image:url(../../img/voip/dialpad.fdda9a0.svg)}.mx_CallView_callControls_button_dialpad_hidden{margin-right:auto;cursor:auto}.mx_CallView_callControls_button_micOn:before{background-image:url(../../img/voip/mic-on.2592c14.svg)}.mx_CallView_callControls_button_micOff:before{background-image:url(../../img/voip/mic-off.774e42b.svg)}.mx_CallView_callControls_button_vidOn:before{background-image:url(../../img/voip/vid-on.b9b8bbf.svg)}.mx_CallView_callControls_button_vidOff:before{background-image:url(../../img/voip/vid-off.5552596.svg)}.mx_CallView_callControls_button_hangup:before{background-image:url(../../img/voip/hangup.9c3adeb.svg)}.mx_CallView_callControls_button_more{margin-left:auto}.mx_CallView_callControls_button_more:before{background-image:url(../../img/voip/more.5e8055e.svg)}.mx_CallView_callControls_button_more_hidden{margin-left:auto;cursor:auto}.mx_CallView_callControls_button_invisible{visibility:hidden;pointer-events:none;position:absolute}.mx_CallViewForRoom{overflow:hidden}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:8px}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle{width:100%!important;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle:after{content:"";margin-top:3px;border-radius:4px;height:4px;width:100%;max-width:64px;background-color:#2e2f32}.mx_DialPad{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px}.mx_DialPad_button{width:40px;height:40px;background-color:#e3e8f0;border-radius:40px;font-size:18px;font-weight:600;text-align:center;vertical-align:middle;line-height:40px}.mx_DialPad_deleteButton:before,.mx_DialPad_dialButton:before{content:"";display:inline-block;height:40px;width:40px;vertical-align:middle;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:20px;mask-size:20px;-webkit-mask-position:center;mask-position:center;background-color:#fff}.mx_DialPad_deleteButton{background-color:#ff4b55}.mx_DialPad_deleteButton:before{-webkit-mask-image:url(../../img/element-icons/call/delete.833d785.svg);mask-image:url(../../img/element-icons/call/delete.833d785.svg);-webkit-mask-position:9px;mask-position:9px}.mx_DialPad_dialButton{background-color:#0dbd8b}.mx_DialPad_dialButton:before{-webkit-mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg);mask-image:url(../../img/element-icons/call/voice-call.303eba8.svg)}.mx_DialPadContextMenu_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadContextMenu_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadContextMenu_dialled{height:1em;font-size:18px;font-weight:600}.mx_DialPadContextMenu_dialPad{margin:16px}.mx_DialPadContextMenu_horizSep{position:relative}.mx_DialPadContextMenu_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_Dialog_dialPadWrapper .mx_Dialog{padding:0}.mx_DialPadModal{width:192px;height:368px}.mx_DialPadModal_header{margin-top:12px;margin-left:12px;margin-right:12px}.mx_DialPadModal_title{color:#61708b;font-size:12px;font-weight:600}.mx_DialPadModal_cancel{float:right;-webkit-mask:url(../../img/feather-customised/cancel.23c2689.svg);mask:url(../../img/feather-customised/cancel.23c2689.svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:cover;mask-size:cover;width:14px;height:14px;background-color:#c1c1c1;cursor:pointer}.mx_DialPadModal_field{border:none;margin:0}.mx_DialPadModal_field input{font-size:18px;font-weight:600}.mx_DialPadModal_dialPad{margin-left:16px;margin-right:16px;margin-top:16px}.mx_DialPadModal_horizSep{position:relative}.mx_DialPadModal_horizSep:before{content:"";position:absolute;width:100%;border-bottom:1px solid #e3e8f0}.mx_VideoFeed_voice{padding-bottom:52px;background-color:#27303a}.mx_VideoFeed_remote{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mx_VideoFeed_remote.mx_VideoFeed_video{background-color:#000}.mx_VideoFeed_local{max-width:25%;max-height:25%;position:absolute;right:10px;top:10px;z-index:100;border-radius:4px}.mx_VideoFeed_local.mx_VideoFeed_video{background-color:transparent}.mx_VideoFeed_mirror{-webkit-transform:scaleX(-1);transform:scaleX(-1)} +const lightCSS = `@charset "utf-8"; +.hljs-addition { + background: #dfd; +} +.hljs-deletion { + background: #fdd; +} +@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { + .mx_LeftPanel { + background-image: unset; + background-image: var(--avatar-url, unset); + background-repeat: no-repeat; + background-size: cover; + background-position: 0 0; + } + .mx_GroupFilterPanel, + .mx_SpacePanel { + -webkit-backdrop-filter: blur(20px); + backdrop-filter: blur(20px); + } + .mx_LeftPanel .mx_LeftPanel_roomListContainer { + -webkit-backdrop-filter: blur(40px); + backdrop-filter: blur(40px); + } +} +.mx_RoomSublist_showNButton { + background-color: transparent !important; +} +a:hover, +a:link, +a:visited { + text-decoration: none; +} +:root { + font-size: 10px; + --transition-short: 0.1s; + --transition-standard: 0.3s; +} +@media (prefers-reduced-motion) { + :root { + --transition-short: 0; + --transition-standard: 0; + } +} +html { + height: 100%; + overflow: hidden; +} +body { + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-size: 1.5rem; + background-color: #fff; + color: #2e2f32; + border: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +code, +pre { + font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; + font-size: 100% !important; +} +.error, +.text-error, +.text-warning, +.warning { + color: #ff4b55; +} +.text-success { + color: #0dbd8b; +} +.text-muted { + color: #61708b; +} +b { + font-weight: 700; +} +h2 { + color: #2e2f32; + font-weight: 400; + font-size: 1.8rem; + margin-top: 16px; + margin-bottom: 16px; +} +a:hover, +a:link, +a:visited { + color: #238cf5; +} +input[type="password"], +input[type="search"], +input[type="text"] { + padding: 9px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-size: 1.4rem; + font-weight: 600; + min-width: 0; +} +input[type="search"].mx_textinput_icon, +input[type="text"].mx_textinput_icon { + padding-left: 36px; + background-repeat: no-repeat; + background-position: 10px; +} +input[type="search"].mx_textinput_icon.mx_textinput_search, +input[type="text"].mx_textinput_icon.mx_textinput_search { + background-image: url(../../img/feather-customised/search-input.044bfa7.svg); +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-results-button, +input[type="search"]::-webkit-search-results-decoration { + display: none; +} +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + opacity: 1; +} +input::-moz-placeholder, +textarea::-moz-placeholder { + opacity: 1; +} +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + opacity: 1; +} +input::-ms-input-placeholder, +textarea::-ms-input-placeholder { + opacity: 1; +} +input::placeholder, +textarea::placeholder { + opacity: 1; +} +input[type="password"], +input[type="text"], +textarea { + background-color: transparent; + color: #2e2f32; +} +textarea { + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + color: #2e2f32; +} +input[type="password"]:focus, +input[type="text"]:focus, +textarea:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} +:focus:not(.focus-visible) { + outline: none; +} +.mx_Dialog .mx_textinput > input[type="search"], +.mx_Dialog .mx_textinput > input[type="text"], +.mx_MatrixChat .mx_textinput > input[type="search"], +.mx_MatrixChat .mx_textinput > input[type="text"] { + border: none; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + color: #2e2f32; +} +.mx_Dialog .mx_textinput, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"], +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"], +.mx_MatrixChat .mx_textinput, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"], +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"] { + display: block; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background-color: transparent; + color: #9fa9ba; + border-radius: 4px; + border: 1px solid rgba(46, 47, 50, 0.1); + margin: 9px; +} +.mx_Dialog .mx_textinput, +.mx_MatrixChat .mx_textinput { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_Dialog .mx_textinput input::-webkit-input-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::-webkit-input-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::-webkit-input-placeholder, +.mx_MatrixChat .mx_textinput input::-webkit-input-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::-webkit-input-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::-webkit-input-placeholder { + color: rgba(159, 169, 186, 0.75); +} +.mx_Dialog .mx_textinput input::-moz-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::-moz-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::-moz-placeholder, +.mx_MatrixChat .mx_textinput input::-moz-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::-moz-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::-moz-placeholder { + color: rgba(159, 169, 186, 0.75); +} +.mx_Dialog .mx_textinput input:-ms-input-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]:-ms-input-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]:-ms-input-placeholder, +.mx_MatrixChat .mx_textinput input:-ms-input-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]:-ms-input-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]:-ms-input-placeholder { + color: rgba(159, 169, 186, 0.75); +} +.mx_Dialog .mx_textinput input::-ms-input-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::-ms-input-placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::-ms-input-placeholder, +.mx_MatrixChat .mx_textinput input::-ms-input-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::-ms-input-placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::-ms-input-placeholder { + color: rgba(159, 169, 186, 0.75); +} +.mx_Dialog .mx_textinput input::placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::placeholder, +.mx_Dialog + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::placeholder, +.mx_MatrixChat .mx_textinput input::placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"]::placeholder, +.mx_MatrixChat + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"]::placeholder { + color: rgba(159, 169, 186, 0.75); +} +.dark-panel { + background-color: #f2f5f8; +} +.dark-panel .mx_textinput, +.dark-panel + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"], +.dark-panel + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"] { + color: #9fa9ba; + background-color: #fff; + border: none; +} +.light-panel .mx_textinput, +.light-panel + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="search"], +.light-panel + :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) + > input[type="text"] { + color: #9fa9ba; + background-color: #f2f5f8; + border: none; +} +::-moz-focus-inner { + border: 0; +} +#mx_theme_accentColor { + color: #0dbd8b; +} +#mx_theme_secondaryAccentColor { + color: #f2f5f8; +} +#mx_theme_tertiaryAccentColor { + color: #d3efe1; +} +.mx_Dialog_wrapper { + position: fixed; + z-index: 4000; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_Dialog { + background-color: #fff; + color: #747474; + z-index: 4012; + font-weight: 300; + font-size: 1.5rem; + position: relative; + padding: 24px; + max-height: 80%; + -webkit-box-shadow: 2px 15px 30px 0 rgba(0, 0, 0, 0.48); + box-shadow: 2px 15px 30px 0 rgba(0, 0, 0, 0.48); + border-radius: 8px; + overflow-y: auto; +} +.mx_Dialog_fixedWidth { + width: 60vw; + max-width: 704px; +} +.mx_Dialog_staticWrapper .mx_Dialog { + z-index: 4010; +} +.mx_Dialog_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(46, 48, 51, 0.38); + opacity: 0.8; + z-index: 4011; +} +.mx_Dialog_background.mx_Dialog_staticBackground { + z-index: 4009; +} +.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background { + opacity: 0.4; +} +.mx_Dialog_lightbox .mx_Dialog_background { + opacity: 0.95; + background-color: #000; +} +.mx_Dialog_lightbox .mx_Dialog { + border-radius: 0; + background-color: transparent; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + pointer-events: none; + padding: 0; +} +.mx_Dialog_header { + position: relative; + margin-bottom: 10px; +} +.mx_Dialog_titleImage { + vertical-align: sub; + width: 25px; + height: 25px; + margin-left: -2px; + margin-right: 4px; +} +.mx_Dialog_title { + font-size: 2.2rem; + font-weight: 600; + line-height: 3.6rem; + color: #45474a; +} +.mx_Dialog_header.mx_Dialog_headerWithButton > .mx_Dialog_title { + text-align: center; +} +.mx_Dialog_header.mx_Dialog_headerWithCancel > .mx_Dialog_title { + margin-right: 20px; +} +.mx_Dialog_title.danger { + color: #ff4b55; +} +.mx_Dialog_cancelButton { + -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); + mask: url(../../img/feather-customised/cancel.23c2689.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + width: 14px; + height: 14px; + background-color: #c1c1c1; + cursor: pointer; + position: absolute; + top: 10px; + right: 0; +} +.mx_Dialog_content { + margin: 24px 0 68px; + font-size: 1.4rem; + color: #2e2f32; + word-wrap: break-word; +} +.mx_Dialog_buttons { + margin-top: 20px; + text-align: right; +} +.mx_Dialog_buttons .mx_Dialog_buttons_additive { + float: left; +} +.mx_Dialog_buttons button, +.mx_Dialog_buttons input[type="submit"], +.mx_Dialog button, +.mx_Dialog input[type="submit"] { + vertical-align: middle; + border-radius: 8px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-size: 1.4rem; + color: #fff; + background-color: #0dbd8b; + width: auto; + padding: 7px 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin-left: 0; + margin-right: 8px; + font-weight: 600; + border: 1px solid #0dbd8b; + color: #0dbd8b; + background-color: #fff; + font-family: inherit; +} +.mx_Dialog button:last-child { + margin-right: 0; +} +.mx_Dialog_buttons button:focus, +.mx_Dialog_buttons input[type="submit"]:focus, +.mx_Dialog button:focus, +.mx_Dialog input[type="submit"]:focus { + -webkit-filter: brightness(105%); + filter: brightness(105%); +} +.mx_Dialog_buttons button.mx_Dialog_primary, +.mx_Dialog_buttons input[type="submit"].mx_Dialog_primary, +.mx_Dialog button.mx_Dialog_primary, +.mx_Dialog input[type="submit"].mx_Dialog_primary { + color: #fff; + background-color: #0dbd8b; + min-width: 156px; +} +.mx_Dialog_buttons button.danger, +.mx_Dialog_buttons input[type="submit"].danger, +.mx_Dialog button.danger, +.mx_Dialog input[type="submit"].danger { + background-color: #ff4b55; + border: 1px solid #ff4b55; + color: #fff; +} +.mx_Dialog button.warning, +.mx_Dialog input[type="submit"].warning { + border: 1px solid #ff4b55; + color: #ff4b55; +} +.mx_Dialog_buttons button:disabled, +.mx_Dialog_buttons input[type="submit"]:disabled, +.mx_Dialog button:disabled, +.mx_Dialog input[type="submit"]:disabled { + background-color: #747474; + border: 1px solid #747474; + opacity: 0.7; +} +.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { + width: auto; + border-radius: 8px; + padding: 0; + -webkit-box-shadow: none; + box-shadow: none; + overflow-x: hidden; + overflow-y: hidden; +} +.mx_GeneralButton { + vertical-align: middle; + border: 0; + border-radius: 8px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-size: 1.4rem; + color: #fff; + background-color: #0dbd8b; + width: auto; + padding: 7px 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + display: inline; + margin: auto; +} +.mx_linkButton { + cursor: pointer; + color: #0dbd8b; +} +.mx_TextInputDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_TextInputDialog_input { + font-size: 1.5rem; + border-radius: 3px; + border: 1px solid #e7e7e7; + padding: 9px; + color: #2e2f32; + background-color: #fff; +} +.mx_textButton { + vertical-align: middle; + border: 0; + border-radius: 8px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-size: 1.4rem; + color: #fff; + background-color: #0dbd8b; + width: auto; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 1.5rem; + padding: 0 1.5em; +} +.mx_button_row { + margin-top: 69px; +} +.mx_Username_color1 { + color: #368bd6; +} +.mx_Username_color2 { + color: #ac3ba8; +} +.mx_Username_color3 { + color: #0dbd8b; +} +.mx_Username_color4 { + color: #e64f7a; +} +.mx_Username_color5 { + color: #ff812d; +} +.mx_Username_color6 { + color: #2dc2c5; +} +.mx_Username_color7 { + color: #5c56f5; +} +.mx_Username_color8 { + color: #74d12c; +} +.mx_Tooltip_dark .mx_Tooltip_chevron:after { + border-right-color: #27303a; +} +html { + scrollbar-color: rgba(0, 0, 0, 0.2) transparent; +} +* { + scrollbar-width: thin; +} +::-webkit-scrollbar { + width: 6px; + height: 6px; + background-color: transparent; +} +::-webkit-scrollbar-thumb { + border-radius: 3px; + background-color: rgba(0, 0, 0, 0.2); +} +.mx_AutoHideScrollbar:hover { + scrollbar-color: rgba(0, 0, 0, 0.2) transparent; +} +.mx_AutoHideScrollbar:hover::-webkit-scrollbar { + background-color: transparent; +} +.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.2); +} +.mx_AutoHideScrollbar { + overflow-x: hidden; + overflow-y: auto; + overflow-y: overlay; + -ms-overflow-style: -ms-autohiding-scrollbar; +} +.mx_AutoHideScrollbar::-webkit-scrollbar, +.mx_AutoHideScrollbar::-webkit-scrollbar-thumb { + background-color: transparent; +} +.mx_AutoHideScrollbar { + scrollbar-color: transparent transparent; +} +.mx_CompatibilityPage { + width: 100%; + height: 100%; + background-color: #e55; +} +.mx_CompatibilityPage_box { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 500px; + height: 300px; + border: 1px solid; + padding: 10px; + background-color: #fcc; +} +.mx_ContextualMenu_wrapper { + position: fixed; + z-index: 5000; +} +.mx_ContextualMenu_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1; + z-index: 5000; +} +.mx_ContextualMenu { + border-radius: 8px; + -webkit-box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); + box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); + background-color: #fff; + color: #2e2f32; + position: absolute; + font-size: 1.4rem; + z-index: 5001; +} +.mx_ContextualMenu_right { + right: 0; +} +.mx_ContextualMenu.mx_ContextualMenu_withChevron_right { + right: 8px; +} +.mx_ContextualMenu_chevron_right { + position: absolute; + right: -8px; + top: 0; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-left: 8px solid #fff; + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_left { + left: 0; +} +.mx_ContextualMenu.mx_ContextualMenu_withChevron_left { + left: 8px; +} +.mx_ContextualMenu_chevron_left { + position: absolute; + left: -8px; + top: 0; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid #fff; + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_top { + top: 0; +} +.mx_ContextualMenu.mx_ContextualMenu_withChevron_top { + top: 8px; +} +.mx_ContextualMenu_chevron_top { + position: absolute; + left: 0; + top: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-bottom: 8px solid #fff; + border-right: 8px solid transparent; +} +.mx_ContextualMenu_bottom { + bottom: 0; +} +.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom { + bottom: 8px; +} +.mx_ContextualMenu_chevron_bottom { + position: absolute; + left: 0; + bottom: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-top: 8px solid #fff; + border-right: 8px solid transparent; +} +.mx_ContextualMenu_spinner { + display: block; + margin: 0 auto; +} +.mx_CreateRoom { + width: 960px; + margin-left: auto; + margin-right: auto; + color: #2e2f32; +} +.mx_CreateRoom input, +.mx_CreateRoom textarea { + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 1.3rem; + padding: 9px; + margin-top: 6px; +} +.mx_CreateRoom_description { + width: 330px; +} +.mx_CustomRoomTagPanel { + background-color: hsla(0, 0%, 91%, 0.77); + max-height: 40vh; +} +.mx_CustomRoomTagPanel_scroller { + max-height: inherit; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_CustomRoomTagPanel .mx_AccessibleButton { + margin: 0 auto; + width: 40px; + padding: 10px 0 9px; + position: relative; +} +.mx_CustomRoomTagPanel .mx_BaseAvatar_image { + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 40px; + height: 40px; +} +.mx_CustomRoomTagPanel + .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before { + content: ""; + height: 56px; + background-color: #238cf5; + width: 5px; + position: absolute; + left: -9px; + border-radius: 0 3px 3px 0; + top: 5px; +} +.mx_FilePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + overflow-y: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_FilePanel .mx_RoomView_messageListWrapper { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_FilePanel .mx_RoomView_MessageList { + width: 100%; +} +.mx_FilePanel .mx_EventTile_avatar, +.mx_FilePanel .mx_RoomView_MessageList h2 { + display: none; +} +.mx_FilePanel .mx_EventTile { + word-break: break-word; + margin-top: 32px; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody { + margin-right: 0; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody { + line-height: 2.4rem; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_download { + padding-top: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 1.4rem; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + color: #747474; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody_size { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + font-size: 1.4rem; + text-align: right; + white-space: nowrap; +} +.mx_FilePanel .mx_EventTile_senderDetails { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: -2px; +} +.mx_FilePanel .mx_EventTile_senderDetailsLink { + text-decoration: none; +} +.mx_FilePanel .mx_EventTile .mx_SenderProfile { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + line-height: normal; + padding: 0; + font-size: 1.4rem; + opacity: 1; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MessageTimestamp { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + text-align: right; + visibility: visible; + position: static; + font-size: 1.4rem; + opacity: 1; + color: #acacac; +} +.mx_FilePanel .mx_EventTile_line { + margin-right: 0; + padding-left: 0; +} +.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0; +} +.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #fff; +} +.mx_FilePanel_empty:before { + -webkit-mask-image: url(../../img/element-icons/room/files.5709c0c.svg); + mask-image: url(../../img/element-icons/room/files.5709c0c.svg); +} +.mx_GenericErrorPage { + width: 100%; + height: 100%; + background-color: #fff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_GenericErrorPage_box { + display: inline; + width: 500px; + min-height: 125px; + border: 1px solid #f22; + padding: 10px 10px 20px; + background-color: #fcc; +} +.mx_GroupFilterPanel { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + background-color: hsla(0, 0%, 91%, 0.77); + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + min-height: 0; +} +.mx_GroupFilterPanel_items_selected { + cursor: pointer; +} +.mx_GroupFilterPanel .mx_GroupFilterPanel_divider { + height: 0; + width: 90%; + border: none; + border-bottom: 1px solid #8d99a5; +} +.mx_GroupFilterPanel .mx_GroupFilterPanel_scroller { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 100%; +} +.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-top: 6px; +} +.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer > div { + margin: 6px 0; +} +.mx_GroupFilterPanel .mx_TagTile { + position: relative; +} +.mx_GroupFilterPanel .mx_TagTile .mx_BetaDot { + position: absolute; + right: -13px; + top: -11px; +} +.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype { + padding: 3px; +} +.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype { + background-color: #fff; + border-radius: 6px; +} +.mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before { + background-color: #2e2f32; +} +.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon { + background-color: rgba(92, 100, 112, 0.2); + border-radius: 48px; +} +.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before { + background-color: #5c6470; +} +.mx_TagTile_homeIcon { + width: 32px; + height: 32px; + position: relative; +} +.mx_TagTile_homeIcon:before { + -webkit-mask-image: url(../../img/element-icons/home.b706c0e.svg); + mask-image: url(../../img/element-icons/home.b706c0e.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 21px; + mask-size: 21px; + content: ""; + display: inline-block; + width: 32px; + height: 32px; + position: absolute; + top: calc(50% - 16px); + left: calc(50% - 16px); +} +.mx_GroupFilterPanel .mx_TagTile_plus { + margin-bottom: 12px; + height: 32px; + width: 32px; + border-radius: 20px; + background-color: rgba(92, 100, 112, 0.2); + position: relative; + display: block !important; +} +.mx_GroupFilterPanel .mx_TagTile_plus:before { + background-color: #5c6470; + -webkit-mask-image: url(../../img/feather-customised/plus.38ae979.svg); + mask-image: url(../../img/feather-customised/plus.38ae979.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before { + content: ""; + height: 100%; + background-color: #0dbd8b; + width: 4px; + position: absolute; + left: -12px; + border-radius: 0 3px 3px 0; +} +.mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_TagTile_tooltip { + position: relative; + top: -30px; + left: 5px; +} +.mx_TagTile_context_button { + min-width: 15px; + height: 15px; + position: absolute; + right: -5px; + top: -8px; + border-radius: 8px; + background-color: #dbdbdb; + color: #000; + font-weight: 600; + font-size: 1rem; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_TagTile_avatar { + position: relative; +} +.mx_TagTile_badge { + position: absolute; + right: -4px; + top: -2px; + border-radius: 8px; + color: #fff; + font-weight: 600; + font-size: 1.4rem; + padding: 0 5px; + background-color: #61708b; +} +.mx_TagTile_badgeHighlight { + background-color: #ff4b55; +} +.mx_GroupView { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow: hidden; +} +.mx_GroupView_error { + margin: auto; +} +.mx_GroupView_header { + min-height: 52px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-bottom: 10px; + padding-left: 19px; +} +.mx_GroupView_header_view { + border-bottom: 1px solid transparent; + padding-bottom: 0; + padding-right: 8px; +} +.mx_GroupView_header_avatar, +.mx_GroupView_header_info { + display: table-cell; + vertical-align: middle; +} +.mx_GroupHeader_button { + position: relative; + margin-left: 5px; + margin-right: 5px; + cursor: pointer; + height: 20px; + width: 20px; +} +.mx_GroupHeader_button:before { + content: ""; + position: absolute; + height: 20px; + width: 20px; + background-color: #91a1c0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_GroupHeader_editButton:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_GroupHeader_shareButton:before { + -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); + mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); +} +.mx_GroupView_hostingSignup img { + margin-left: 5px; +} +.mx_GroupView_editable { + border-bottom: 1px solid #c7c7c7 !important; + min-width: 150px; + cursor: text; +} +.mx_GroupView_editable:focus { + border-bottom: 1px solid #0dbd8b !important; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.mx_GroupView_header_isUserMember + .mx_GroupView_header_name:hover + div:not(.mx_GroupView_editable) { + color: #0dbd8b; + cursor: pointer; +} +.mx_GroupView_avatarPicker { + position: relative; +} +.mx_GroupView_avatarPicker_edit { + position: absolute; + top: 50px; + left: 15px; +} +.mx_GroupView_avatarPicker .mx_Spinner { + width: 48px; + height: 48px !important; +} +.mx_GroupView_header_leftCol { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; +} +.mx_GroupView_header_rightCol { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_GroupView_textButton { + display: inline-block; +} +.mx_GroupView_header_groupid { + font-weight: 400; + font-size: medium; + padding-left: 10px; +} +.mx_GroupView_header_name { + vertical-align: middle; + width: 100%; + height: 31px; + color: #2e2f32; + font-weight: 700; + font-size: 2.2rem; + padding-right: 16px; +} +.mx_GroupView_header_name, +.mx_GroupView_header_shortDesc { + overflow: hidden; + padding-left: 19px; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_header_shortDesc { + vertical-align: bottom; + float: left; + max-height: 42px; + color: #a2a2a2; + font-weight: 300; + font-size: 1.3rem; + margin-right: 16px; +} +.mx_GroupView_avatarPicker_label { + cursor: pointer; +} +.mx_GroupView_cancelButton { + padding-left: 8px; +} +.mx_GroupView_cancelButton img { + position: relative; + top: 5px; +} +.mx_GroupView input[type="radio"] { + margin: 10px 10px 0; +} +.mx_GroupView_label_text { + display: inline-block; + max-width: 80%; + vertical-align: 0.1em; + line-height: 2em; +} +.mx_GroupView_body { + margin: 0 24px; +} +.mx_GroupView_body, +.mx_GroupView_rooms { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_GroupView_rooms { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 200px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 1.3rem; + margin-bottom: 10px; +} +.mx_GroupView_rooms_header .mx_AccessibleButton { + padding-left: 14px; + margin-bottom: 14px; + height: 24px; +} +.mx_GroupView_group { + border-top: 1px solid transparent; +} +.mx_GroupView_group_disabled { + opacity: 0.3; + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_button { + display: inline-block; +} +.mx_GroupView_rooms_header_addRow_button object { + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_label { + display: inline-block; + vertical-align: top; + line-height: 2.4rem; + padding-left: 28px; + color: #0dbd8b; +} +.mx_GroupView_rooms .mx_RoomDetailList { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-top: 1px solid transparent; + padding-top: 10px; + word-break: break-word; +} +.mx_GroupView .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_GroupView_membershipSection { + color: #888; + margin-top: 10px; +} +.mx_GroupView_membershipSubSection { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-bottom: 8px; +} +.mx_GroupView_membershipSubSection .mx_Spinner { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_GroupView_membershipSection_description { + line-height: 3.4rem; +} +.mx_GroupView_membershipSection_description .mx_BaseAvatar { + margin-right: 10px; +} +.mx_GroupView_membershipSection .mx_GroupView_textButton { + margin-right: 0; + margin-top: 0; + margin-left: 8px; +} +.mx_GroupView_memberSettings_toggle label { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView_memberSettings input { + margin-right: 6px; +} +.mx_GroupView_featuredThings { + margin-top: 20px; +} +.mx_GroupView_featuredThings_header { + font-weight: 700; + font-size: 120%; + margin-bottom: 20px; +} +.mx_GroupView_featuredThings_category { + font-weight: 700; + font-size: 110%; + margin-top: 10px; +} +.mx_GroupView_featuredThings_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_featuredThing, +.mx_GroupView_featuredThings_addButton { + display: table-cell; + text-align: center; + width: 100px; + margin: 0 20px; +} +.mx_GroupView_featuredThing { + position: relative; +} +.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { + position: absolute; + top: -7px; + right: 11px; + opacity: 0.4; +} +.mx_GroupView_featuredThing .mx_BaseAvatar { + vertical-align: baseline; + vertical-align: initial; +} +.mx_GroupView_featuredThings_addButton object { + pointer-events: none; +} +.mx_GroupView_featuredThing_name { + word-wrap: break-word; +} +.mx_GroupView_uploadInput { + display: none; +} +.mx_GroupView_body .mx_AutoHideScrollbar > * { + margin: 11px 50px 50px 68px; +} +.mx_GroupView_groupDesc textarea { + width: 100%; + max-width: 100%; + height: 150px; +} +.mx_GroupView_changeDelayWarning, +.mx_GroupView_groupDesc_placeholder { + background-color: #f7f7f7; + color: #888; + border-radius: 10px; + text-align: center; + margin: 20px 0; +} +.mx_GroupView_groupDesc_placeholder { + padding: 100px 20px; + cursor: pointer; +} +.mx_GroupView_changeDelayWarning { + padding: 40px 20px; +} +.mx_GroupView + .mx_MemberInfo + .mx_AutoHideScrollbar + > :not(.mx_MemberInfo_avatar) { + padding-left: 16px; + padding-right: 16px; +} +.mx_HeaderButtons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomHeader_buttons + .mx_HeaderButtons:before { + content: unset; +} +.mx_HeaderButtons:before { + content: ""; + background-color: #91a1c0; + opacity: 0.5; + margin: 6px 8px; + border-radius: 1px; + width: 1px; +} +.mx_HomePage { + max-width: 960px; + width: 100%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.mx_HomePage_default { + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_HomePage_default .mx_HomePage_default_wrapper { + margin: auto; +} +.mx_HomePage_default img { + height: 48px; +} +.mx_HomePage_default h1 { + font-weight: 600; + font-size: 3.2rem; + line-height: 4.4rem; + margin-bottom: 4px; +} +.mx_HomePage_default h4 { + margin-top: 4px; + font-weight: 600; + font-size: 1.8rem; + line-height: 2.5rem; + color: #61708b; +} +.mx_HomePage_default .mx_MiniAvatarUploader { + margin: 0 auto; +} +.mx_HomePage_default .mx_HomePage_default_buttons { + margin: 60px auto 0; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; +} +.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton { + padding: 73px 8px 15px; + width: 160px; + height: 132px; + margin: 20px; + position: relative; + display: inline-block; + border-radius: 8px; + vertical-align: top; + word-break: break-word; + -webkit-box-sizing: border-box; + box-sizing: border-box; + font-weight: 600; + font-size: 1.5rem; + line-height: 2rem; + color: #fff; + background-color: #0dbd8b; +} +.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before { + top: 20px; + left: 60px; + width: 40px; + height: 40px; + content: ""; + position: absolute; + background-color: #fff; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_HomePage_default + .mx_HomePage_default_buttons + .mx_AccessibleButton.mx_HomePage_button_sendDm:before { + -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); + mask-image: url(../../img/element-icons/feedback.a91241e.svg); +} +.mx_HomePage_default + .mx_HomePage_default_buttons + .mx_AccessibleButton.mx_HomePage_button_explore:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); + mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); +} +.mx_HomePage_default + .mx_HomePage_default_buttons + .mx_AccessibleButton.mx_HomePage_button_createGroup:before { + -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); + mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); +} +.mx_LeftPanel { + background-color: hsla(0, 0%, 96.1%, 0.9); + min-width: 206px; + max-width: 50%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-preferred-size: 56px; + flex-basis: 56px; + height: 100%; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer, +.mx_LeftPanel .mx_LeftPanel_roomListContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} +.mx_LeftPanel .mx_LeftPanel_roomListContainer { + background-color: hsla(0, 0%, 96.1%, 0.9); + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + min-width: 0; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader { + padding: 12px; + -ms-flex-negative: 0; + flex-shrink: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_breadcrumbsContainer { + overflow-y: hidden; + overflow-x: scroll; + margin: 12px 12px 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow { + -webkit-mask-image: -webkit-gradient( + linear, + left top, + right top, + from(transparent), + color-stop(5%, #000) + ); + -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%); + mask-image: -webkit-gradient( + linear, + left top, + right top, + from(transparent), + color-stop(5%, #000) + ); + mask-image: linear-gradient(90deg, transparent, #000 5%); +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow { + -webkit-mask-image: -webkit-gradient( + linear, + left top, + right top, + from(#000), + color-stop(95%, #000), + to(transparent) + ); + -webkit-mask-image: linear-gradient(90deg, #000, #000 95%, transparent); + mask-image: -webkit-gradient( + linear, + left top, + right top, + from(#000), + color-stop(95%, #000), + to(transparent) + ); + mask-image: linear-gradient(90deg, #000, #000 95%, transparent); +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow { + -webkit-mask-image: -webkit-gradient( + linear, + left top, + right top, + from(transparent), + color-stop(5%, #000), + color-stop(95%, #000), + to(transparent) + ); + -webkit-mask-image: linear-gradient( + 90deg, + transparent, + #000 5%, + #000 95%, + transparent + ); + mask-image: -webkit-gradient( + linear, + left top, + right top, + from(transparent), + color-stop(5%, #000), + color-stop(95%, #000), + to(transparent) + ); + mask-image: linear-gradient( + 90deg, + transparent, + #000 5%, + #000 95%, + transparent + ); +} +.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer { + margin-left: 12px; + margin-right: 12px; + -ms-flex-negative: 0; + flex-shrink: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_RoomSearch_focused + + .mx_LeftPanel_exploreButton, +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_RoomSearch_hasQuery + + .mx_LeftPanel_exploreButton { + -ms-flex-preferred-size: 0; + flex-basis: 0; + margin: 0; + width: 0; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_RoomSearch_focused + + .mx_LeftPanel_exploreButton:before, +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_RoomSearch_hasQuery + + .mx_LeftPanel_exploreButton:before { + content: none; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_exploreButton { + width: 32px; + height: 32px; + border-radius: 8px; + background-color: rgba(141, 151, 165, 0.2); + position: relative; + margin-left: 8px; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_exploreButton:before { + content: ""; + position: absolute; + top: 8px; + left: 8px; + width: 16px; + height: 16px; + -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); + mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #737d8c; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_exploreButton.mx_LeftPanel_exploreButton_space:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); + mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_roomListFilterCount { + font-size: 1.3rem; + font-weight: 600; + margin-left: 12px; + margin-top: 14px; + margin-bottom: -4px; +} +.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper { + overflow: hidden; + margin-top: 10px; + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom { + padding-bottom: 32px; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop { + padding-top: 32px; +} +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_actualRoomListContainer { + position: relative; + height: 100%; +} +.mx_LeftPanel.mx_LeftPanel_minimized { + min-width: unset; + width: unset !important; +} +.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer { + width: 68px; +} +.mx_LeftPanel.mx_LeftPanel_minimized + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_userHeader { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_LeftPanel.mx_LeftPanel_minimized + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_LeftPanel.mx_LeftPanel_minimized + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_exploreButton { + margin-left: 0; + margin-top: 8px; + background-color: transparent; +} +.mx_LeftPanelWidget { + margin-left: 8px; + margin-bottom: 4px; +} +.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + height: 24px; + color: #8d99a5; + margin-top: 4px; +} +.mx_LeftPanelWidget + .mx_LeftPanelWidget_headerContainer + .mx_LeftPanelWidget_stickable { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + max-width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_LeftPanelWidget + .mx_LeftPanelWidget_headerContainer + .mx_LeftPanelWidget_headerText { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + max-width: calc(100% - 16px); + line-height: 1.6rem; + font-size: 1.3rem; + font-weight: 600; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_LeftPanelWidget + .mx_LeftPanelWidget_headerContainer + .mx_LeftPanelWidget_headerText + .mx_LeftPanelWidget_collapseBtn { + display: inline-block; + position: relative; + width: 14px; + height: 14px; + margin-right: 6px; +} +.mx_LeftPanelWidget + .mx_LeftPanelWidget_headerContainer + .mx_LeftPanelWidget_headerText + .mx_LeftPanelWidget_collapseBtn:before { + content: ""; + width: 18px; + height: 18px; + position: absolute; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #8d99a5; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_LeftPanelWidget + .mx_LeftPanelWidget_headerContainer + .mx_LeftPanelWidget_headerText + .mx_LeftPanelWidget_collapseBtn.mx_LeftPanelWidget_collapseBtn_collapsed:before { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox { + position: relative; + -ms-flex-direction: column; + flex-direction: column; + overflow: visible; +} +.mx_LeftPanelWidget .mx_AppTileFullWidth, +.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} +.mx_LeftPanelWidget .mx_AppTileFullWidth { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + overflow: hidden; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-mask-image: linear-gradient(0deg, transparent, #000 4px); + mask-image: linear-gradient(0deg, transparent, #000 4px); +} +.mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle { + cursor: ns-resize; + border-radius: 3px; + width: unset !important; + height: 4px !important; + position: absolute; + top: -24px !important; + left: calc(50% - 32px) !important; + right: calc(50% - 32px) !important; +} +.mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle { + opacity: 0.8; + background-color: #2e2f32; +} +.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton { + margin-left: 8px; + margin-right: 7px; + position: relative; + width: 24px; + height: 24px; + border-radius: 32px; +} +.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + top: 4px; + left: 4px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); + mask-image: url(../../img/feather-customised/maximise.dc32127.svg); + background: #61708b; +} +.mx_LeftPanelWidget_maximizeButtonTooltip { + margin-top: -3px; +} +.mx_MainSplit { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + min-width: 0; + min-height: 0; + height: 100%; +} +.mx_MainSplit > .mx_RightPanel_ResizeWrapper { + padding: 5px; + margin-left: 8px; + height: calc(100vh - 51px); +} +.mx_MainSplit > .mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle { + top: 50% !important; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + height: 64px !important; + width: 4px !important; + border-radius: 4px !important; + background-color: #2e2f32; + opacity: 0.8; +} +.mx_MatrixChat_splash { + position: relative; + height: 100%; +} +.mx_MatrixChat_splashButtons { + text-align: center; + width: 100%; + position: absolute; + bottom: 30px; +} +.mx_MatrixChat_wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + height: 100%; +} +.mx_MatrixToolbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + height: 40px; +} +.mx_MatrixChat { + width: 100%; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-height: 0; +} +.mx_MatrixChat_syncError { + color: #fff; + background-color: #df2a8b; + border-radius: 5px; + display: table; + padding: 30px; + position: absolute; + top: 100px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} +.mx_MatrixChat > :not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle) { + background-color: #fff; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + min-width: 0; + height: 100%; +} +.mx_MatrixChat > .mx_ResizeHandle_horizontal:hover { + position: relative; +} +.mx_MatrixChat > .mx_ResizeHandle_horizontal:hover:before { + position: absolute; + left: 6px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + height: 64px; + width: 4px; + border-radius: 4px; + content: " "; + background-color: #2e2f32; + opacity: 0.8; +} +.mx_MyGroups { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups .mx_BetaCard { + margin: 0 72px; + max-width: 760px; +} +.mx_MyGroups .mx_RoomHeader_simpleHeader { + margin-left: 0; +} +.mx_MyGroups_header { + margin-left: 2px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_MyGroups > :not(.mx_RoomHeader):not(.mx_BetaCard) { + max-width: 960px; + margin: 40px; +} +.mx_MyGroups_headerCard { + -webkit-box-flex: 1; + -ms-flex: 1 0 50%; + flex: 1 0 50%; + margin-bottom: 30px; + min-width: 400px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 13px; + height: 40px; + width: 40px; + border-radius: 20px; + background-color: rgba(92, 100, 112, 0.2); + position: relative; +} +.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before { + background-color: #5c6470; + -webkit-mask: url(../../img/icons-create-room.817ede2.svg); + mask: url(../../img/icons-create-room.817ede2.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 80%; + mask-size: 80%; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_MyGroups_headerCard_header { + font-weight: 700; + margin-bottom: 10px; +} +.mx_MyGroups_headerCard_content { + padding-right: 15px; +} +.mx_MyGroups_joinBox { + visibility: hidden; + height: 0; + margin: 0; +} +.mx_MyGroups_content { + margin-left: 2px; + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow-y: auto; +} +.mx_MyGroups_scrollable { + overflow-y: inherit; +} +.mx_MyGroups_placeholder { + background-color: #f7f7f7; + color: #888; + line-height: 40rem; + border-radius: 10px; + text-align: center; +} +.mx_MyGroups_joinedGroups { + border-top: 1px solid transparent; + overflow-x: hidden; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -ms-flex-line-pack: start; + align-content: flex-start; +} +.mx_MyGroups_joinedGroups .mx_GroupTile { + min-width: 300px; + max-width: 33%; + -webkit-box-flex: 1; + -ms-flex: 1 0 300px; + flex: 1 0 300px; + height: 75px; + margin: 10px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +.mx_GroupTile_avatar { + cursor: -webkit-grab, -webkit-grab; + cursor: grab, -webkit-grab; +} +.mx_GroupTile_profile { + margin-left: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_GroupTile_profile .mx_GroupTile_desc, +.mx_GroupTile_profile .mx_GroupTile_groupId, +.mx_GroupTile_profile .mx_GroupTile_name { + padding-right: 10px; +} +.mx_GroupTile_profile .mx_GroupTile_name { + margin: 0; + font-size: 1.5rem; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + font-size: 1.3rem; + opacity: 0.7; +} +.mx_GroupTile_profile .mx_GroupTile_desc { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 1.3rem; + max-height: 36px; + overflow: hidden; +} +.mx_NonUrgentToastContainer { + position: absolute; + bottom: 30px; + left: 28px; + z-index: 101; +} +.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast { + padding: 10px 12px; + border-radius: 8px; + width: 320px; + font-size: 1.3rem; + margin-top: 8px; + background-color: #17191c; + color: #fff; +} +.mx_NotificationPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + overflow-y: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_NotificationPanel .mx_RoomView_messageListWrapper { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_NotificationPanel .mx_RoomView_MessageList { + width: 100%; +} +.mx_NotificationPanel .mx_RoomView_MessageList h2 { + margin-left: 0; +} +.mx_NotificationPanel .mx_EventTile { + word-break: break-word; + position: relative; + padding-bottom: 18px; +} +.mx_NotificationPanel + .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background-color: #8d99a5; + height: 1px; + opacity: 0.4; + content: ""; +} +.mx_NotificationPanel .mx_EventTile_roomName { + font-weight: 700; + font-size: 1.4rem; +} +.mx_NotificationPanel .mx_EventTile_roomName > * { + vertical-align: middle; +} +.mx_NotificationPanel .mx_EventTile_roomName > .mx_BaseAvatar { + margin-right: 8px; +} +.mx_NotificationPanel .mx_EventTile_roomName a { + color: #2e2f32; +} +.mx_NotificationPanel .mx_EventTile_avatar { + display: none; +} +.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp, +.mx_NotificationPanel .mx_EventTile .mx_SenderProfile { + color: #2e2f32; + font-size: 1.2rem; + display: inline; + padding-left: 0; +} +.mx_NotificationPanel .mx_EventTile_senderDetails { + padding-left: 36px; + position: relative; +} +.mx_NotificationPanel .mx_EventTile_senderDetails a { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_NotificationPanel .mx_EventTile_roomName a, +.mx_NotificationPanel .mx_EventTile_senderDetails a { + text-decoration: none !important; +} +.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + visibility: visible; + position: static; + display: inline; +} +.mx_NotificationPanel .mx_EventTile_line { + margin-right: 0; + padding: 0 0 0 36px; +} +.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0; +} +.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #fff; +} +.mx_NotificationPanel .mx_EventTile_content { + margin-right: 0; +} +.mx_NotificationPanel_empty:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); +} +.mx_RightPanel { + overflow-x: hidden; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + border-radius: 8px; + padding: 4px 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 100%; +} +.mx_RightPanel .mx_RoomView_MessageList { + padding: 14px 18px; +} +.mx_RightPanel_header { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + border-bottom: 1px solid transparent; + -webkit-box-flex: 0; + -ms-flex: 0 0 52px; + flex: 0 0 52px; +} +.mx_RightPanel_headerButtonGroup { + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #fff; + padding: 0 9px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RightPanel_headerButton { + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 1px; + margin-right: 1px; + height: 32px; + width: 32px; + position: relative; + border-radius: 100%; +} +.mx_RightPanel_headerButton:before { + content: ""; + position: absolute; + top: 4px; + left: 4px; + height: 24px; + width: 24px; + background-color: #c1c6cd; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_RightPanel_headerButton:hover { + background: rgba(13, 189, 139, 0.1); +} +.mx_RightPanel_headerButton:hover:before { + background-color: #0dbd8b; +} +.mx_RightPanel_notifsButton:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_RightPanel_roomSummaryButton:before { + -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_RightPanel_groupMembersButton:before { + -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); + mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_RightPanel_roomsButton:before { + -webkit-mask-image: url(../../img/element-icons/community-rooms.8f0b6c9.svg); + mask-image: url(../../img/element-icons/community-rooms.8f0b6c9.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_RightPanel_headerButton_highlight:before { + background-color: #0dbd8b !important; +} +.mx_RightPanel_headerButton_badge { + font-size: 0.8rem; + border-radius: 8px; + color: #fff; + background-color: #0dbd8b; + font-weight: 700; + position: absolute; + top: -4px; + left: 20px; + padding: 2px 4px; +} +.mx_RightPanel_collapsebutton { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + height: 16px; + border: none; +} +.mx_RightPanel .mx_GroupRoomList, +.mx_RightPanel .mx_MemberInfo, +.mx_RightPanel .mx_MemberList, +.mx_RightPanel_blank { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RightPanel .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RightPanel_empty { + margin-right: -28px; +} +.mx_RightPanel_empty h2 { + font-weight: 700; + margin: 16px 0; +} +.mx_RightPanel_empty h2, +.mx_RightPanel_empty p { + font-size: 1.4rem; +} +.mx_RightPanel_empty:before { + content: ""; + display: block; + margin: 11px auto 29px; + height: 42px; + width: 42px; + background-color: #91a1c0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; +} +.mx_RightPanel_scopeHeader { + margin: 24px; + text-align: center; + font-weight: 600; + font-size: 1.8rem; + line-height: 2.2rem; +} +.mx_RightPanel_scopeHeader .mx_BaseAvatar { + margin-right: 8px; + vertical-align: middle; +} +.mx_RightPanel_scopeHeader .mx_BaseAvatar_image { + border-radius: 8px; +} +.mx_RoomDirectory_dialogWrapper > .mx_Dialog { + max-width: 960px; + height: 100%; +} +.mx_RoomDirectory_dialog { + height: 100%; + flex-direction: column; +} +.mx_RoomDirectory, +.mx_RoomDirectory_dialog { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; +} +.mx_RoomDirectory { + margin-bottom: 12px; + color: #2e2f32; + word-break: break-word; +} +.mx_RoomDirectory, +.mx_RoomDirectory_list { + flex-direction: column; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_RoomDirectory_list { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; +} +.mx_RoomDirectory_list .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomDirectory_listheader { + display: block; + margin-top: 13px; +} +.mx_RoomDirectory_searchbox { + -webkit-box-flex: 1 !important; + -ms-flex: 1 !important; + flex: 1 !important; +} +.mx_RoomDirectory_listheader .mx_NetworkDropdown { + -webkit-box-flex: 0; + -ms-flex: 0 0 200px; + flex: 0 0 200px; +} +.mx_RoomDirectory_tableWrapper { + overflow-y: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RoomDirectory_table { + color: #2e2f32; + display: grid; + font-size: 1.2rem; + grid-template-columns: -webkit-max-content auto -webkit-max-content -webkit-max-content -webkit-max-content; + grid-template-columns: max-content auto max-content max-content max-content; + grid-row-gap: 24px; + row-gap: 24px; + text-align: left; + width: 100%; +} +.mx_RoomDirectory_roomAvatar { + padding: 2px 14px 0 0; +} +.mx_RoomDirectory_roomMemberCount { + -ms-flex-item-align: center; + align-self: center; + color: #747474; + padding: 3px 10px 0; +} +.mx_RoomDirectory_roomMemberCount:before { + background-color: #747474; + display: inline-block; + vertical-align: text-top; + margin-right: 2px; + content: ""; + -webkit-mask: url(../../img/feather-customised/user.7a4d23d.svg); + mask: url(../../img/feather-customised/user.7a4d23d.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 80%; + mask-size: 80%; + width: 16px; + height: 16px; +} +.mx_RoomDirectory_join, +.mx_RoomDirectory_preview { + -ms-flex-item-align: center; + align-self: center; + white-space: nowrap; +} +.mx_RoomDirectory_name { + display: inline-block; + font-size: 1.8rem; + font-weight: 600; +} +.mx_RoomDirectory_perms { + display: inline-block; +} +.mx_RoomDirectory_perm { + border-radius: 10px; + display: inline-block; + height: 20px; + line-height: 2rem; + padding: 0 5px; + color: #fff; + background-color: #aaa; +} +.mx_RoomDirectory_topic { + cursor: auto; + color: #747474; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; + overflow: hidden; +} +.mx_RoomDirectory_alias { + font-size: 1.2rem; + color: #a2a2a2; +} +.mx_RoomDirectory_table tr { + padding-bottom: 10px; + cursor: pointer; +} +.mx_RoomDirectory .mx_RoomView_MessageList { + padding: 0; +} +.mx_RoomDirectory > span { + font-size: 1.5rem; + margin-top: 0; +} +.mx_RoomDirectory > span .mx_AccessibleButton { + padding: 0; +} +.mx_RoomSearch { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + border-radius: 8px; + background-color: rgba(141, 151, 165, 0.2); + border: 1px solid transparent; + height: 28px; + padding: 1px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomSearch .mx_RoomSearch_icon { + width: 16px; + height: 16px; + -webkit-mask: url(../../img/element-icons/roomlist/search.3774248.svg); + mask: url(../../img/element-icons/roomlist/search.3774248.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #737d8c; + margin-left: 7px; +} +.mx_RoomSearch .mx_RoomSearch_input { + border: none !important; + -webkit-box-flex: 1 !important; + -ms-flex: 1 !important; + flex: 1 !important; + color: #2e2f32 !important; + padding: 0; + height: 100%; + width: 100%; + font-size: 1.2rem; + line-height: 1.6rem; +} +.mx_RoomSearch + .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder { + color: #8d99a5 !important; +} +.mx_RoomSearch + .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder { + color: #8d99a5 !important; +} +.mx_RoomSearch + .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder { + color: #8d99a5 !important; +} +.mx_RoomSearch + .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder { + color: #8d99a5 !important; +} +.mx_RoomSearch + .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder { + color: #8d99a5 !important; +} +.mx_RoomSearch.mx_RoomSearch_hasQuery { + border-color: #737d8c; +} +.mx_RoomSearch.mx_RoomSearch_focused { + -webkit-box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); + box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); + border-color: transparent; +} +.mx_RoomSearch.mx_RoomSearch_focused, +.mx_RoomSearch.mx_RoomSearch_hasQuery { + background-color: #fff; +} +.mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton, +.mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton { + width: 16px; + height: 16px; + -webkit-mask-image: url(../../img/element-icons/roomlist/search-clear.6164d97.svg); + mask-image: url(../../img/element-icons/roomlist/search-clear.6164d97.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #737d8c; + margin-right: 8px; +} +.mx_RoomSearch .mx_RoomSearch_clearButton { + width: 0; + height: 0; +} +.mx_RoomSearch.mx_RoomSearch_minimized { + border-radius: 32px; + height: auto; + width: auto; + padding: 8px; +} +.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon { + margin-left: 0; +} +.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) { + margin-left: 65px; + min-height: 50px; +} +.mx_RoomStatusBar_typingIndicatorAvatars { + width: 52px; + margin-top: -1px; + text-align: left; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { + margin-right: -12px; + border: 1px solid #fff; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { + padding-left: 1px; + padding-top: 1px; +} +.mx_RoomStatusBar_typingIndicatorRemaining { + display: inline-block; + color: #acacac; + background-color: #ddd; + border: 1px solid #fff; + border-radius: 40px; + width: 24px; + height: 24px; + line-height: 2.4rem; + font-size: 0.8em; + vertical-align: top; + text-align: center; + position: absolute; +} +.mx_RoomStatusBar_scrollDownIndicator { + cursor: pointer; + padding-left: 1px; +} +.mx_RoomStatusBar_unreadMessagesBar { + padding-top: 10px; + color: #ff4b55; + cursor: pointer; +} +.mx_RoomStatusBar_connectionLostBar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 19px; + min-height: 58px; +} +.mx_RoomStatusBar_unsentMessages > div[role="alert"] { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: 70px; + margin: 12px; + padding-left: 16px; + background-color: #f3f8fd; + border-radius: 4px; +} +.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge { + margin-right: 12px; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentBadge + .mx_NotificationBadge { + width: 24px !important; + height: 24px !important; + border-radius: 24px !important; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentBadge + .mx_NotificationBadge + .mx_NotificationBadge_count { + font-size: 1.6rem !important; +} +.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle { + color: #ff4b55; + font-size: 1.5rem; +} +.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription { + font-size: 1.2rem; +} +.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: right; + margin-right: 22px; + color: #61708b; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_AccessibleButton { + padding: 5px 10px 5px 28px; + display: inline-block; + position: relative; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_AccessibleButton:nth-child(2) { + border-left: 1px solid #e3e8f0; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_AccessibleButton:before { + content: ""; + position: absolute; + left: 10px; + background-color: #61708b; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before { + -webkit-mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); + mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); + width: 12px; + height: 16px; + top: calc(50% - 8px); +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn { + padding-left: 34px; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before { + -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); + mask-image: url(../../img/element-icons/retry.6cd23ad.svg); + width: 18px; + height: 18px; + top: calc(50% - 9px); +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_InlineSpinner { + vertical-align: middle; + margin-right: 5px; + top: 1px; +} +.mx_RoomStatusBar_unsentMessages + .mx_RoomStatusBar_unsentButtonBar + .mx_InlineSpinner + + span { + margin-right: 10px; +} +.mx_RoomStatusBar_connectionLostBar img { + padding-left: 10px; + padding-right: 10px; + vertical-align: middle; + float: left; +} +.mx_RoomStatusBar_connectionLostBar_title { + color: #ff4b55; +} +.mx_RoomStatusBar_connectionLostBar_desc { + color: #2e2f32; + font-size: 1.3rem; + opacity: 0.5; + padding-bottom: 20px; +} +.mx_RoomStatusBar_resend_link { + color: #2e2f32 !important; + text-decoration: underline !important; + cursor: pointer; +} +.mx_RoomStatusBar_typingBar { + height: 50px; + line-height: 5rem; + color: #2e2f32; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_MatrixChat_useCompactLayout + .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) { + min-height: 40px; +} +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator { + margin-top: 10px; +} +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar { + height: 40px; + line-height: 4rem; +} +.mx_RoomView { + word-wrap: break-word; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +@-webkit-keyframes mx_RoomView_fileDropTarget_animation { + 0% { + opacity: 0; + } + to { + opacity: 0.95; + } +} +@keyframes mx_RoomView_fileDropTarget_animation { + 0% { + opacity: 0; + } + to { + opacity: 0.95; + } +} +.mx_RoomView_fileDropTarget { + min-width: 0; + width: 100%; + height: 100%; + font-size: 1.8rem; + text-align: center; + pointer-events: none; + background-color: #fff; + opacity: 0.95; + position: absolute; + z-index: 3000; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-animation: mx_RoomView_fileDropTarget_animation; + animation: mx_RoomView_fileDropTarget_animation; + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; +} +@-webkit-keyframes mx_RoomView_fileDropTarget_image_animation { + 0% { + width: 0; + } + to { + width: 32px; + } +} +@keyframes mx_RoomView_fileDropTarget_image_animation { + 0% { + width: 0; + } + to { + width: 32px; + } +} +.mx_RoomView_fileDropTarget_image { + -webkit-animation: mx_RoomView_fileDropTarget_image_animation; + animation: mx_RoomView_fileDropTarget_image_animation; + -webkit-animation-duration: 0.5s; + animation-duration: 0.5s; + margin-bottom: 16px; +} +.mx_RoomView_auxPanel { + min-width: 0; + width: 100%; + margin: 0 auto; + overflow: auto; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_RoomView_auxPanel_fullHeight { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 3000; + background-color: #fff; +} +.mx_RoomView_auxPanel_hiddenHighlights { + border-bottom: 1px solid transparent; + padding: 10px 26px; + color: #ff4b55; + cursor: pointer; +} +.mx_RoomView_auxPanel_apps { + max-width: 1920px !important; +} +.mx_RoomView .mx_MainSplit, +.mx_RoomView_messagePanel { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RoomView_messagePanel { + width: 100%; + overflow-y: auto; + overflow-anchor: none; +} +.mx_RoomView_messagePanelSearchSpinner { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + background-image: url(../../img/typing-indicator-2x.0eb9f0e.gif); + background-position: center 367px; + background-size: 25px; + background-repeat: no-repeat; + position: relative; +} +.mx_RoomView_messagePanelSearchSpinner:before { + background-color: #888; + -webkit-mask: url(../../img/feather-customised/search-input.044bfa7.svg); + mask: url(../../img/feather-customised/search-input.044bfa7.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 50px; + mask-size: 50px; + content: ""; + position: absolute; + top: 286px; + left: 0; + right: 0; + height: 50px; +} +.mx_RoomView_body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-width: 0; +} +.mx_RoomView_body .mx_RoomView_messagePanel, +.mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner, +.mx_RoomView_body .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomView_body .mx_RoomView_timeline { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RoomView_statusArea { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + max-height: 0; + background-color: #fff; + z-index: 1000; + overflow: hidden; + -webkit-transition: all 0.2s ease-out; + transition: all 0.2s ease-out; +} +.mx_RoomView_statusArea_expanded { + max-height: 100px; +} +.mx_RoomView_statusAreaBox { + margin: auto; + min-height: 50px; +} +.mx_RoomView_statusAreaBox_line { + margin-left: 65px; + border-top: 1px solid transparent; + height: 1px; +} +.mx_RoomView_messageListWrapper { + min-height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomView_searchResultsPanel a { + text-decoration: none; + color: inherit; +} +.mx_RoomView_empty { + font-size: 1.3rem; + padding: 0 24px; + margin-right: 30px; + text-align: center; + margin-bottom: 80px; +} +.mx_RoomView_MessageList { + list-style-type: none; + padding: 18px; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_RoomView_MessageList li { + clear: both; +} +li.mx_RoomView_myReadMarker_container { + height: 0; + margin: 0; + padding: 0; + border: 0; +} +hr.mx_RoomView_myReadMarker { + border-top: 1px solid #0dbd8b; + border-bottom: 1px solid #0dbd8b; + margin-top: 0; + position: relative; + top: -1px; + z-index: 1; + -webkit-transition: width easeinsine 0.4s 1s, opacity easeinsine 0.4s 1s; + transition: width easeinsine 0.4s 1s, opacity easeinsine 0.4s 1s; + width: 99%; + opacity: 1; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { + background-color: #fff; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { + color: #fff; + opacity: 1; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { + margin-top: 2px; + border: none; + height: 0; +} +.mx_RoomView_inCall .mx_MessageComposer_wrapper { + border-top: 2px hidden; + padding-top: 1px; +} +.mx_RoomView_voipChevron { + position: absolute; + bottom: -11px; + right: 11px; +} +.mx_RoomView_voipButton { + float: right; + margin-right: 13px; + margin-top: 13px; + cursor: pointer; +} +.mx_RoomView_voipButton object { + pointer-events: none; +} +.mx_RoomView .mx_MessageComposer { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 2px; +} +.mx_RoomView_ongoingConfCallNotification { + width: 100%; + text-align: center; + background-color: #ff4b55; + color: #fff; + font-weight: 700; + padding: 6px 0; + cursor: pointer; +} +.mx_RoomView_ongoingConfCallNotification a { + color: #fff !important; +} +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList { + margin-bottom: 4px; +} +.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox { + min-height: 42px; +} +.mx_ScrollPanel .mx_RoomView_MessageList { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_SearchBox { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + min-width: 0; +} +.mx_SearchBox.mx_SearchBox_blurred:not(:hover) { + background-color: transparent; +} +.mx_SearchBox .mx_SearchBox_closeButton { + cursor: pointer; + background-image: url(../../img/icons-close.11ff07c.svg); + background-repeat: no-repeat; + width: 16px; + height: 16px; + background-position: 50%; + padding: 9px; +} +.mx_SpacePanel { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + background-color: hsla(0, 0%, 91%, 0.77); + padding: 0; + margin: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow-y: auto; +} +.mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 8px 8px 16px 0; +} +.mx_SpacePanel .mx_SpacePanel_toggleCollapse { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 40px; + height: 40px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 32px; + mask-size: 32px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + margin-left: 16px; + margin-bottom: 12px; + background-color: #8d99a5; + -webkit-mask-image: url(../../img/element-icons/expand-space-panel.e6f74b9.svg); + mask-image: url(../../img/element-icons/expand-space-panel.e6f74b9.svg); +} +.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); +} +.mx_SpacePanel ul { + margin: 0; + list-style: none; + padding: 0; +} +.mx_SpacePanel ul > .mx_SpaceItem { + padding-left: 16px; +} +.mx_SpacePanel .mx_SpaceButton_toggleCollapse { + cursor: pointer; +} +.mx_SpacePanel .mx_SpaceTreeLevel { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 250px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_SpacePanel .mx_SpaceItem { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -ms-flex-flow: wrap; + flex-flow: wrap; +} +.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow { + -ms-flex-item-align: baseline; + align-self: baseline; +} +.mx_SpacePanel + .mx_SpaceItem.collapsed + > .mx_SpaceButton + > .mx_SpaceButton_toggleCollapse { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.mx_SpacePanel .mx_SpaceItem.collapsed > .mx_SpaceTreeLevel { + display: none; +} +.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces) > .mx_SpaceButton { + margin-left: 16px; + min-width: 40px; +} +.mx_SpacePanel .mx_SpaceButton { + border-radius: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 4px 4px 4px 0; + width: 100%; +} +.mx_SpacePanel + .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) + .mx_SpaceButton_selectionWrapper { + background-color: #fff; +} +.mx_SpacePanel + .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow + .mx_SpaceButton_selectionWrapper { + padding: 1px; + border: 3px solid #737d8c; +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border-radius: 12px; + padding: 4px; +} +.mx_SpacePanel + .mx_SpaceButton:not(.mx_SpaceButton_narrow) + .mx_SpaceButton_selectionWrapper { + width: 100%; + padding-right: 16px; + overflow: hidden; +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin-left: 8px; + white-space: nowrap; + display: block; + text-overflow: ellipsis; + overflow: hidden; + padding-right: 8px; + font-size: 1.4rem; + line-height: 1.8rem; +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse { + width: 16px; + height: 20px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #8d99a5; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon { + width: 32px; + min-width: 32px; + height: 32px; + border-radius: 8px; + position: relative; +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before { + position: absolute; + content: ""; + width: 32px; + height: 32px; + top: 0; + left: 0; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 18px; + mask-size: 18px; +} +.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon { + background-color: #fff; +} +.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before { + background-color: #3f3d3d; + -webkit-mask-image: url(../../img/element-icons/home.b706c0e.svg); + mask-image: url(../../img/element-icons/home.b706c0e.svg); +} +.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon { + background-color: #0dbd8b; + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; +} +.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before { + background-color: #fff; + -webkit-mask-image: url(../../img/element-icons/plus.62cc275.svg); + mask-image: url(../../img/element-icons/plus.62cc275.svg); + -webkit-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon { + background-color: #c1c6cd; +} +.mx_SpacePanel + .mx_SpaceButton.mx_SpaceButton_newCancel + .mx_SpaceButton_icon:before { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); +} +.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image { + border-radius: 8px; +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton { + width: 20px; + min-width: 20px; + height: 20px; + margin-top: auto; + margin-bottom: auto; + display: none; + position: absolute; + right: 4px; +} +.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before { + top: 2px; + left: 2px; + content: ""; + width: 16px; + height: 16px; + position: absolute; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); + mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); + background: #2e2f32; +} +.mx_SpacePanel .mx_SpacePanel_badgeContainer { + position: absolute; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge { + margin: 0 2px; +} +.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot { + margin: 0 7px; +} +.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer { + right: 0; + top: 0; +} +.mx_SpacePanel.collapsed + .mx_SpaceButton + .mx_SpacePanel_badgeContainer + .mx_NotificationBadge { + background-clip: padding-box; +} +.mx_SpacePanel.collapsed + .mx_SpaceButton + .mx_SpacePanel_badgeContainer + .mx_NotificationBadge_dot { + margin: 0 -1px 0 0; + border: 3px solid hsla(0, 0%, 91%, 0.77); +} +.mx_SpacePanel.collapsed + .mx_SpaceButton + .mx_SpacePanel_badgeContainer + .mx_NotificationBadge_2char, +.mx_SpacePanel.collapsed + .mx_SpaceButton + .mx_SpacePanel_badgeContainer + .mx_NotificationBadge_3char { + margin: -5px -5px 0 0; + border: 2px solid hsla(0, 0%, 91%, 0.77); +} +.mx_SpacePanel.collapsed + .mx_SpaceButton.mx_SpaceButton_active + .mx_SpacePanel_badgeContainer { + right: -3px; + top: -3px; +} +.mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer { + position: absolute; + right: 4px; +} +.mx_SpacePanel:not(.collapsed) + .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) + .mx_SpacePanel_badgeContainer, +.mx_SpacePanel:not(.collapsed) + .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) + .mx_SpacePanel_badgeContainer, +.mx_SpacePanel:not(.collapsed) + .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) + .mx_SpacePanel_badgeContainer { + width: 0; + height: 0; + display: none; +} +.mx_SpacePanel:not(.collapsed) + .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) + .mx_SpaceButton_menuButton, +.mx_SpacePanel:not(.collapsed) + .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) + .mx_SpaceButton_menuButton, +.mx_SpacePanel:not(.collapsed) + .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) + .mx_SpaceButton_menuButton { + display: block; +} +.mx_SpacePanel > .mx_AutoHideScrollbar > .mx_SpaceButton, +.mx_SpacePanel + > .mx_AutoHideScrollbar + > .mx_SpaceButton.mx_SpaceButton_active:before { + height: 32px; +} +.mx_SpacePanel > .mx_AutoHideScrollbar > ul { + padding-left: 0; +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header { + margin: 12px 16px; + font-weight: 600; + font-size: 1.5rem; + line-height: 1.8rem; +} +.mx_SpacePanel_contextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton { + color: #0dbd8b; +} +.mx_SpacePanel_contextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton + .mx_SpacePanel_iconInvite:before { + background-color: #0dbd8b; + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before { + -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); + mask-image: url(../../img/element-icons/leave.bb917e7.svg); +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before { + -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); + mask-image: url(../../img/element-icons/room/members.88c3e93.svg); +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); + mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); + mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); +} +.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); + mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); +} +.mx_SpacePanel_sharePublicSpace { + margin: 0; +} +.mx_SpaceRoomDirectory_dialogWrapper > .mx_Dialog { + max-width: 960px; + height: 100%; +} +.mx_SpaceRoomDirectory { + height: 100%; + margin-bottom: 12px; + color: #2e2f32; + word-break: break-word; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_SpaceRoomDirectory, +.mx_SpaceRoomDirectory .mx_Dialog_title, +.mx_SpaceRoomView_landing .mx_Dialog_title { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar, +.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar { + margin-right: 12px; + -ms-flex-item-align: center; + align-self: center; +} +.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image, +.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image { + border-radius: 8px; +} +.mx_SpaceRoomDirectory .mx_Dialog_title > div > h1, +.mx_SpaceRoomView_landing .mx_Dialog_title > div > h1 { + font-weight: 600; + font-size: 1.8rem; + line-height: 2.2rem; + margin: 0; +} +.mx_SpaceRoomDirectory .mx_Dialog_title > div > div, +.mx_SpaceRoomView_landing .mx_Dialog_title > div > div { + font-weight: 400; + color: #737d8c; + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link, +.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link { + padding: 0; +} +.mx_SpaceRoomDirectory .mx_SearchBox, +.mx_SpaceRoomView_landing .mx_SearchBox { + margin: 24px 0 16px; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults, +.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults { + text-align: center; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults > div, +.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults > div { + font-size: 1.5rem; + line-height: 2.4rem; + color: #737d8c; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader, +.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + min-height: 32px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 1.5rem; + line-height: 2.4rem; + color: #2e2f32; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton, +.mx_SpaceRoomView_landing + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton { + padding: 4px 12px; + font-weight: 400; +} +.mx_SpaceRoomDirectory + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton + + .mx_AccessibleButton, +.mx_SpaceRoomView_landing + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 16px; +} +.mx_SpaceRoomDirectory + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton_kind_danger_outline, +.mx_SpaceRoomDirectory + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton_kind_primary_outline, +.mx_SpaceRoomView_landing + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton_kind_danger_outline, +.mx_SpaceRoomView_landing + .mx_SpaceRoomDirectory_listHeader + .mx_AccessibleButton_kind_primary_outline { + padding: 3px 12px; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader > span, +.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader > span { + margin-left: auto; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error, +.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error { + position: relative; + font-weight: 600; + color: #ff4b55; + font-size: 1.5rem; + line-height: 1.8rem; + margin: 20px auto 12px; + padding-left: 24px; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} +.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before, +.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before { + content: ""; + position: absolute; + height: 16px; + width: 16px; + left: 0; + background-image: url(../../img/element-icons/warning-badge.de1033e.svg); +} +.mx_SpaceRoomDirectory_list { + margin-top: 16px; + padding-bottom: 40px; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount > h3 { + display: inline; + font-weight: 600; + font-size: 1.8rem; + line-height: 2.2rem; + color: #2e2f32; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount > span { + margin-left: 8px; + font-size: 1.5rem; + line-height: 2.4rem; + color: #737d8c; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_subspace + .mx_BaseAvatar_image { + border-radius: 8px; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle { + position: absolute; + left: -1px; + top: 10px; + height: 16px; + width: 16px; + border-radius: 4px; + background-color: #fff; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before { + content: ""; + position: absolute; + top: 0; + left: 0; + height: 16px; + width: 16px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #8d99a5; + -webkit-mask-size: 16px; + mask-size: 16px; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children { + position: relative; + padding-left: 12px; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile { + position: relative; + padding: 8px 16px; + border-radius: 8px; + min-height: 56px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: grid; + grid-template-columns: 20px auto -webkit-max-content; + grid-template-columns: 20px auto max-content; + grid-column-gap: 8px; + grid-row-gap: 6px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar { + grid-row: 1; + grid-column: 1; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_roomTile_name { + font-weight: 600; + font-size: 1.5rem; + line-height: 1.8rem; + grid-row: 1; + grid-column: 2; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_roomTile_name + .mx_InfoTooltip { + display: inline; + margin-left: 12px; + color: #8d99a5; + font-size: 1.2rem; + line-height: 1.5rem; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_roomTile_name + .mx_InfoTooltip + .mx_InfoTooltip_icon { + margin-right: 4px; + position: relative; + vertical-align: text-top; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_roomTile_name + .mx_InfoTooltip + .mx_InfoTooltip_icon:before { + position: absolute; + top: 0; + left: 0; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_roomTile_info { + font-size: 1.4rem; + line-height: 1.8rem; + color: #737d8c; + grid-row: 2; + grid-column: 1/3; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_actions { + text-align: right; + margin-left: 20px; + grid-column: 3; + grid-row: 1/3; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_actions + .mx_AccessibleButton { + line-height: 2.4rem; + padding: 4px 16px; + display: inline-block; + visibility: hidden; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_actions + .mx_AccessibleButton_kind_danger_outline, +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_actions + .mx_AccessibleButton_kind_primary_outline { + padding: 3px 16px; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile + .mx_SpaceRoomDirectory_actions + .mx_Checkbox { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; + margin-left: 12px; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover { + background-color: hsla(0, 0%, 91%, 0.77); +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_roomTile:hover + .mx_AccessibleButton { + visibility: visible; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before, +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before { + content: ""; + position: absolute; + background-color: hsla(0, 0%, 91%, 0.77); + width: 1px; + height: 100%; + left: 6px; + top: 0; +} +.mx_SpaceRoomDirectory_list + .mx_SpaceRoomDirectory_actions + .mx_SpaceRoomDirectory_actionsText { + font-weight: 400; + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; +} +.mx_SpaceRoomDirectory_list > hr { + border: none; + height: 1px; + background-color: rgba(141, 151, 165, 0.2); + margin: 20px 0; +} +.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom { + display: block; + margin: 16px auto 0; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child { + padding: 80px 60px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + max-height: 100%; + overflow-y: auto; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child h1 { + margin: 0; + font-size: 2.4rem; + font-weight: 600; + color: #2e2f32; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} +.mx_SpaceRoomView + .mx_MainSplit + > div:first-child + .mx_SpaceRoomView_description { + font-size: 1.5rem; + color: #737d8c; + margin-top: 12px; + margin-bottom: 24px; + max-width: 428px; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AddExistingToSpace { + max-width: 428px; +} +.mx_SpaceRoomView + .mx_MainSplit + > div:first-child + .mx_AddExistingToSpace + .mx_AddExistingToSpace_content { + height: calc(100vh - 360px); + max-height: 400px; +} +.mx_SpaceRoomView + .mx_MainSplit + > div:first-child:not(.mx_SpaceRoomView_landing) + .mx_SpaceFeedbackPrompt { + width: 428px; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_buttons { + display: block; + margin-top: 44px; + width: 428px; + text-align: right; +} +.mx_SpaceRoomView + .mx_MainSplit + > div:first-child + .mx_SpaceRoomView_buttons + .mx_AccessibleButton_hasKind { + padding: 8px 22px; + margin-left: 16px; +} +.mx_SpaceRoomView + .mx_MainSplit + > div:first-child + .mx_SpaceRoomView_buttons + input.mx_AccessibleButton { + border: none; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field { + max-width: 428px; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field + .mx_Field { + margin-top: 28px; +} +.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_errorText { + font-weight: 600; + font-size: 1.2rem; + line-height: 1.5rem; + color: #ff4b55; + margin-bottom: 28px; +} +.mx_SpaceRoomView + .mx_MainSplit + > div:first-child + .mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_SpaceRoomView .mx_SpaceRoomView_preview { + padding: 32px 24px !important; + margin: auto; + max-width: 480px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + -webkit-box-shadow: 2px 15px 30px rgba(0, 0, 0, 0.48); + box-shadow: 2px 15px 30px rgba(0, 0, 0, 0.48); + border-radius: 8px; + position: relative; +} +.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill { + position: absolute; + right: 24px; + top: 32px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_spaceBetaPrompt { + font-weight: 600; + font-size: 1.4rem; + line-height: 2.4rem; + color: #2e2f32; + margin-top: 24px; + position: relative; + padding-left: 24px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_spaceBetaPrompt + .mx_AccessibleButton_kind_link { + display: inline; + padding: 0; + font-size: inherit; + line-height: inherit; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_spaceBetaPrompt:before { + content: ""; + position: absolute; + height: 2.4rem; + width: 20px; + left: 0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + background-color: #737d8c; +} +.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 20px; + font-size: 1.5rem; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_inviter + > div { + margin-left: 8px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_inviter + > div + .mx_SpaceRoomView_preview_inviter_name { + line-height: 1.8rem; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_inviter + > div + .mx_SpaceRoomView_preview_inviter_mxid { + line-height: 2.4rem; + color: #737d8c; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + > .mx_BaseAvatar + > .mx_BaseAvatar_image, +.mx_SpaceRoomView .mx_SpaceRoomView_preview > .mx_BaseAvatar_image { + border-radius: 12px; +} +.mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name { + margin: 20px 0 !important; +} +.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic { + font-size: 1.4rem; + line-height: 2.2rem; + color: #737d8c; + margin: 20px 0; + max-height: 160px; + overflow-y: auto; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_joinButtons { + margin-top: 20px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_joinButtons + .mx_AccessibleButton { + width: 200px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 14px 0; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_preview + .mx_SpaceRoomView_preview_joinButtons + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 20px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + > .mx_BaseAvatar + > .mx_BaseAvatar_image, +.mx_SpaceRoomView .mx_SpaceRoomView_landing > .mx_BaseAvatar_image { + border-radius: 12px; +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name { + margin: 24px 0 16px; + font-size: 1.5rem; + color: #737d8c; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_name + > span { + display: inline-block; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_name + .mx_SpaceRoomView_landing_nameRow { + margin-top: 12px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_name + .mx_SpaceRoomView_landing_nameRow + > h1 { + display: inline-block; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_name + .mx_SpaceRoomView_landing_inviter + .mx_BaseAvatar { + margin-right: 4px; + vertical-align: middle; +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_SpaceRoomView_info { + display: inline-block; + margin: 0 auto 0 0; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_FacePile { + display: inline-block; + margin-right: 12px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_FacePile + .mx_FacePile_faces { + cursor: pointer; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_SpaceRoomView_landing_inviteButton { + position: relative; + padding: 4px 18px 4px 40px; + line-height: 2.4rem; + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_SpaceRoomView_landing_inviteButton:before { + position: absolute; + content: ""; + left: 8px; + height: 16px; + width: 16px; + background: #fff; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 16px; + mask-size: 16px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_SpaceRoomView_landing_settingsButton { + position: relative; + margin-left: 16px; + width: 24px; + height: 24px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_landing + .mx_SpaceRoomView_landing_info + .mx_SpaceRoomView_landing_settingsButton:before { + position: absolute; + content: ""; + left: 0; + top: 0; + height: 24px; + width: 24px; + background: #8d99a5; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic { + font-size: 1.5rem; + margin-top: 12px; + margin-bottom: 16px; +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing > hr { + border: none; + height: 1px; + background-color: hsla(0, 0%, 91%, 0.77); +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox { + margin: 0 0 20px; +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt { + margin-bottom: 16px; +} +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt + hr { + display: none; +} +.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton { + position: relative; + padding: 16px 32px 16px 72px; + width: 432px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 8px; + border: 1px solid #e7e7e7; + font-size: 1.5rem; + margin: 20px 0; +} +.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > h3 { + font-weight: 600; + margin: 0 0 4px; +} +.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > span { + color: #737d8c; +} +.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:before { + position: absolute; + content: ""; + width: 32px; + height: 32px; + top: 24px; + left: 20px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 24px; + mask-size: 24px; + background-color: #8d99a5; +} +.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover { + border-color: #0dbd8b; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_privateScope + > .mx_AccessibleButton:hover:before { + background-color: #0dbd8b; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_privateScope + > .mx_AccessibleButton:hover + > span { + color: #2e2f32; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_privateScope + .mx_SpaceRoomView_privateScope_justMeButton:before { + -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); + mask-image: url(../../img/element-icons/room/members.88c3e93.svg); +} +.mx_SpaceRoomView + .mx_SpaceRoomView_privateScope + .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before { + -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); + mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_betaDisclaimer { + padding: 58px 16px 16px; + position: relative; + border-radius: 8px; + background-color: #f3f8fd; + max-width: 428px; + margin: 20px 0 30px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_betaDisclaimer + .mx_BetaCard_betaPill { + position: absolute; + left: 16px; + top: 16px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_buttons { + color: #737d8c; + margin-top: 28px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_buttons + .mx_AccessibleButton { + position: relative; + display: inline-block; + padding-left: 32px; + line-height: 24px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_buttons + .mx_AccessibleButton:before { + content: ""; + position: absolute; + height: 24px; + width: 24px; + top: 0; + left: 0; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_buttons + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 32px; +} +.mx_SpaceRoomView + .mx_SpaceRoomView_inviteTeammates + .mx_SpaceRoomView_inviteTeammates_buttons + .mx_SpaceRoomView_inviteTeammates_inviteDialogButton:before { + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_SpaceRoomView_info { + color: #737d8c; + font-size: 1.5rem; + line-height: 2.4rem; + margin: 20px 0; +} +.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private, +.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public { + padding-left: 20px; + position: relative; +} +.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before, +.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before { + position: absolute; + content: ""; + width: 20px; + height: 20px; + top: 0; + left: -2px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #8d99a5; +} +.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before { + -webkit-mask-size: 12px; + mask-size: 12px; + -webkit-mask-image: url(../../img/globe.8201f08.svg); + mask-image: url(../../img/globe.8201f08.svg); +} +.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before { + -webkit-mask-size: 14px; + mask-size: 14px; + -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); + mask-image: url(../../img/element-icons/lock.1f264bd.svg); +} +.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link { + color: inherit; + position: relative; + padding-left: 16px; +} +.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before { + content: "·"; + position: absolute; + left: 6px; +} +.mx_SpaceFeedbackPrompt { + margin-top: 18px; + margin-bottom: 12px; +} +.mx_SpaceFeedbackPrompt > hr { + border: none; + border-top: 1px solid #e7e7e7; + margin-bottom: 12px; +} +.mx_SpaceFeedbackPrompt > div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_SpaceFeedbackPrompt > div > span { + color: #737d8c; + position: relative; + padding-left: 32px; + font-size: inherit; + line-height: inherit; + margin-right: auto; +} +.mx_SpaceFeedbackPrompt > div > span:before { + content: ""; + position: absolute; + left: 0; + top: 2px; + height: 20px; + width: 20px; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_SpaceFeedbackPrompt > div .mx_AccessibleButton_kind_link { + color: #0dbd8b; + position: relative; + padding: 0 0 0 24px; + margin-left: 8px; + font-size: inherit; + line-height: inherit; +} +.mx_SpaceFeedbackPrompt > div .mx_AccessibleButton_kind_link:before { + content: ""; + position: absolute; + left: 0; + height: 16px; + width: 16px; + background-color: #0dbd8b; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); + mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_TabbedView { + padding: 0 0 0 16px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 8px 0 0; +} +.mx_TabbedView_tabLabels { + width: 170px; + max-width: 170px; + color: #45474a; + position: fixed; +} +.mx_TabbedView_tabLabel { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: text-top; + cursor: pointer; + padding: 8px 0; + border-radius: 8px; + font-size: 1.3rem; + position: relative; +} +.mx_TabbedView_tabLabel_active { + background-color: #0dbd8b; + color: #fff; +} +.mx_TabbedView_maskedIcon { + margin-left: 8px; + margin-right: 16px; + width: 16px; + height: 16px; + display: inline-block; +} +.mx_TabbedView_maskedIcon:before { + display: inline-block; + background-color: #454545; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 16px; + mask-size: 16px; + width: 16px; + height: 16px; + -webkit-mask-position: center; + mask-position: center; + content: ""; +} +.mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon:before { + background-color: #fff; +} +.mx_TabbedView_tabLabel_text { + vertical-align: middle; +} +.mx_TabbedView_tabPanel { + margin-left: 240px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_TabbedView_tabPanel, +.mx_TabbedView_tabPanelContent { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + min-height: 0; +} +.mx_TabbedView_tabPanelContent { + overflow: auto; +} +.mx_ToastContainer { + position: absolute; + top: 0; + left: 70px; + z-index: 101; + padding: 4px; + display: grid; + grid-template-rows: 1fr 14px 6px; +} +.mx_ToastContainer.mx_ToastContainer_stacked:before { + content: ""; + margin: 0 4px; + grid-row: 2/4; +} +.mx_ToastContainer .mx_Toast_toast, +.mx_ToastContainer.mx_ToastContainer_stacked:before { + grid-column: 1; + background-color: #f2f5f8; + -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); + border-radius: 8px; +} +.mx_ToastContainer .mx_Toast_toast { + grid-row: 1/3; + color: #2e2f32; + overflow: hidden; + display: grid; + grid-template-columns: 22px 1fr; + grid-column-gap: 8px; + -webkit-column-gap: 8px; + -moz-column-gap: 8px; + column-gap: 8px; + grid-row-gap: 4px; + row-gap: 4px; + padding: 8px; +} +.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after, +.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before { + content: ""; + width: 22px; + height: 22px; + grid-column: 1; + grid-row: 1; + -webkit-mask-size: 100%; + mask-size: 100%; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-size: 100%; + background-repeat: no-repeat; +} +.mx_ToastContainer + .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after { + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); + background-color: #2e2f32; +} +.mx_ToastContainer + .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before { + background-color: #fff; + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); + -webkit-mask-size: 90%; + mask-size: 90%; +} +.mx_ToastContainer + .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); + background-color: #ff4b55; +} +.mx_ToastContainer + .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after { + -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); + mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); + background-color: #2e2f32; +} +.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body, +.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title { + grid-column: 2; +} +.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) { + padding-left: 12px; +} +.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title { + grid-column: 1/-1; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_description, +.mx_ToastContainer .mx_Toast_toast .mx_Toast_title { + padding-right: 8px; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_title { + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2 { + grid-column: 1/3; + grid-row: 1; + margin: 0; + font-size: 1.5rem; + font-weight: 600; + display: inline; + width: auto; + vertical-align: middle; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_title span { + padding-left: 8px; + float: right; + font-size: 1.2rem; + line-height: 2.2rem; + color: #61708b; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_body { + grid-column: 1/3; + grid-row: 2; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons { + float: right; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_FormButton { + min-width: 96px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_description { + max-width: 272px; + overflow: hidden; + text-overflow: ellipsis; + margin: 4px 0 11px; + font-size: 1.2rem; +} +.mx_ToastContainer + .mx_Toast_toast + .mx_Toast_description + .mx_AccessibleButton_kind_link { + font-size: inherit; + padding: 0; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a { + text-decoration: none; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail { + color: #737d8c; +} +.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID { + font-size: 1rem; +} +.mx_UploadBar { + padding-left: 65px; + position: relative; +} +.mx_UploadBar .mx_ProgressBar { + width: calc(100% - 40px); +} +.mx_UploadBar_filename { + margin-top: 5px; + color: #61708b; + position: relative; + padding-left: 22px; + font-size: 1.5rem; + vertical-align: middle; +} +.mx_UploadBar_filename:before { + content: ""; + height: 18px; + width: 18px; + left: 0; + -webkit-mask-image: url(../../img/element-icons/upload.e2a53e0.svg); + mask-image: url(../../img/element-icons/upload.e2a53e0.svg); +} +.mx_UploadBar_cancel, +.mx_UploadBar_filename:before { + position: absolute; + top: 0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #61708b; +} +.mx_UploadBar_cancel { + right: 0; + height: 16px; + width: 16px; + margin-right: 16px; + -webkit-mask-image: url(../../img/icons-close.11ff07c.svg); + mask-image: url(../../img/icons-close.11ff07c.svg); +} +.mx_UserMenu { + padding-right: 6px; +} +.mx_UserMenu.mx_UserMenu_prototype { + margin-bottom: 6px; + padding-right: 0; +} +.mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons { + margin-right: 2px; +} +.mx_UserMenu.mx_UserMenu_prototype:after { + content: ""; + border-bottom: 1px solid #2e2f32; + opacity: 0.2; + display: block; + padding-top: 8px; +} +.mx_UserMenu .mx_UserMenu_headerButtons { + width: 16px; + height: 16px; + position: relative; + display: block; +} +.mx_UserMenu .mx_UserMenu_headerButtons:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + top: 0; + left: 0; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #8d99a5; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_UserMenu .mx_UserMenu_row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer { + position: relative; + margin-right: 8px; + height: 32px; + padding: 3px 0; +} +.mx_UserMenu + .mx_UserMenu_row + .mx_UserMenu_userAvatarContainer + .mx_UserMenu_userAvatar { + border-radius: 32px; + -o-object-fit: cover; + object-fit: cover; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-width: 0; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName, +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName { + display: block; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName { + color: #61708b; + font-size: 1.3rem; + line-height: 1.8rem; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName { + font-weight: 600; + font-size: 1.5rem; + line-height: 2rem; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd { + width: 24px; + height: 24px; + margin-right: 8px; + position: relative; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before { + content: ""; + position: absolute; + width: 24px; + height: 24px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #61708b; +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); +} +.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); + mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); +} +.mx_UserMenu.mx_UserMenu_minimized { + padding-right: 0; +} +.mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer { + margin-right: 0; +} +.mx_UserMenu_contextMenu { + width: 258px; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype { + padding-bottom: 16px; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype + .mx_UserMenu_contextMenu_header { + padding-bottom: 0; + padding-top: 16px; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype + .mx_UserMenu_contextMenu_header:nth-child(n + 2) { + padding-top: 8px; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr { + width: 85%; + opacity: 0.2; + border: none; + border-bottom: 1px solid #2e2f32; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu + > .mx_IconizedContextMenu_optionList { + margin-top: 4px; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu + > .mx_IconizedContextMenu_optionList:before { + border: none; +} +.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu + > .mx_IconizedContextMenu_optionList + > .mx_AccessibleButton { + padding-top: 2px; + padding-bottom: 2px; +} +.mx_UserMenu_contextMenu.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList_red + .mx_AccessibleButton { + padding-top: 16px; + padding-bottom: 16px; +} +.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header { + padding: 20px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header + .mx_UserMenu_contextMenu_name { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: calc(100% - 40px); +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header + .mx_UserMenu_contextMenu_name + * { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header + .mx_UserMenu_contextMenu_name + .mx_UserMenu_contextMenu_displayName { + font-weight: 700; + font-size: 1.5rem; + line-height: 2rem; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header + .mx_UserMenu_contextMenu_name + .mx_UserMenu_contextMenu_userId { + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header + .mx_UserMenu_contextMenu_themeButton { + min-width: 32px; + max-width: 32px; + width: 32px; + height: 32px; + margin-left: 8px; + border-radius: 32px; + background-color: #e3e8f0; + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts, +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink { + padding-top: 0; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts { + display: inline-block; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts + > span { + font-weight: 600; + display: block; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts + > span + + span { + margin-top: 8px; +} +.mx_UserMenu_contextMenu + .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts + .mx_AccessibleButton_kind_link { + font-weight: 400; + font-size: inherit; + padding: 0; +} +.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon { + width: 16px; + height: 16px; + display: block; +} +.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before { + content: ""; + width: 16px; + height: 16px; + display: block; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #2e2f32; +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/home.1b4edd5.svg); + mask-image: url(../../img/element-icons/roomlist/home.1b4edd5.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before { + -webkit-mask-image: url(../../img/element-icons/brands/element.182040d.svg); + mask-image: url(../../img/element-icons/brands/element.182040d.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before { + -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); + mask-image: url(../../img/element-icons/security.66f2fa6.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/archived.226584d.svg); + mask-image: url(../../img/element-icons/roomlist/archived.226584d.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/feedback.b9a3f53.svg); + mask-image: url(../../img/element-icons/roomlist/feedback.b9a3f53.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before { + -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); + mask-image: url(../../img/element-icons/leave.bb917e7.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before { + -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); + mask-image: url(../../img/element-icons/room/members.88c3e93.svg); +} +.mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before { + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_ViewSource_separator { + clear: both; + border-bottom: 1px solid #e5e5e5; + padding-top: 0.7em; + padding-bottom: 0.7em; +} +.mx_ViewSource_heading { + font-size: 1.7rem; + font-weight: 400; + color: #2e2f32; + margin-top: 0.7em; +} +.mx_ViewSource pre { + text-align: left; + font-size: 1.2rem; + padding: 0.5em 1em; + word-wrap: break-word; + white-space: pre-wrap; +} +.mx_ViewSource_details { + margin-top: 0.8em; +} +.mx_CompleteSecurity_header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_CompleteSecurity_headerIcon { + width: 24px; + height: 24px; + margin-right: 4px; + position: relative; +} +.mx_CompleteSecurity_heroIcon { + width: 128px; + height: 128px; + position: relative; + margin: 0 auto; +} +.mx_CompleteSecurity_body { + font-size: 1.5rem; +} +.mx_CompleteSecurity_waiting { + color: #8d99a5; +} +.mx_CompleteSecurity_actionRow { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + margin-top: 2.8rem; +} +.mx_CompleteSecurity_actionRow .mx_AccessibleButton { + -webkit-margin-start: 18px; + margin-inline-start: 18px; +} +.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning { + color: #ff4b55; +} +.mx_Login_submit { + vertical-align: middle; + border: 0; + border-radius: 8px; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-size: 1.4rem; + color: #fff; + background-color: #0dbd8b; + width: auto; + padding: 7px 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + width: 100%; + margin-top: 24px; + margin-bottom: 24px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; +} +.mx_Login_submit:disabled { + opacity: 0.3; + cursor: default; +} +.mx_Login_loader { + display: inline; + position: relative; + top: 2px; + left: 8px; +} +.mx_Login_loader .mx_Spinner { + display: inline; +} +.mx_Login_loader .mx_Spinner img { + width: 16px; + height: 16px; +} +.mx_Login_error { + color: #ff4b55; + font-weight: 700; + text-align: center; + margin-top: 12px; + margin-bottom: 12px; +} +.mx_Login_error.mx_Login_serverError { + text-align: left; + font-weight: 400; +} +.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal { + color: #ff8d13; +} +.mx_Login_type_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #232f32; +} +.mx_Login_type_container .mx_Field { + margin: 0; +} +.mx_Login_type_label { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_Login_underlinedServerName { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + border-bottom: 1px dashed #0dbd8b; +} +div.mx_AccessibleButton_kind_link.mx_Login_forgot { + display: block; + margin: 0 auto; + font-size: inherit; + padding: 0; +} +div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_AuthBody { + width: 500px; + font-size: 1.2rem; + color: #61708b; + background-color: #fff; + border-radius: 0 4px 4px 0; + padding: 25px 60px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_AuthBody h2 { + font-size: 2.4rem; + font-weight: 600; + margin-top: 8px; + color: #232f32; +} +.mx_AuthBody h3 { + font-size: 1.4rem; + font-weight: 600; + color: #61708b; +} +.mx_AuthBody h3.mx_AuthBody_centered { + text-align: center; +} +.mx_AuthBody a:hover, +.mx_AuthBody a:link, +.mx_AuthBody a:visited { + color: #0dbd8b; + text-decoration: none; +} +.mx_AuthBody input[type="password"], +.mx_AuthBody input[type="text"] { + color: #232f32; +} +.mx_AuthBody .mx_Field input, +.mx_AuthBody .mx_Field select { + color: #232f32; + background-color: #fff; +} +.mx_AuthBody .mx_Field label { + color: #232f32; +} +.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown) + label, +.mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown) + label { + background-color: #fff; +} +.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder) + label, +.mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder) + label { + background-color: #fff; +} +.mx_AuthBody .mx_Field_labelAlwaysTopLeft label, +.mx_AuthBody .mx_Field input:focus + label, +.mx_AuthBody .mx_Field input:not(:placeholder-shown) + label, +.mx_AuthBody .mx_Field select + label, +.mx_AuthBody .mx_Field textarea:focus + label, +.mx_AuthBody .mx_Field textarea:not(:placeholder-shown) + label { + background-color: #fff; +} +.mx_AuthBody input.error { + color: #ff4b55; +} +.mx_AuthBody .mx_Field input { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_AuthBody .mx_Field_select:before { + background-color: #232f32; +} +.mx_AuthBody .mx_Dropdown { + color: #232f32; +} +.mx_AuthBody .mx_Dropdown_arrow { + background: #232f32; +} +.mx_AuthBody .mx_Dropdown_menu { + background-color: #fff; +} +.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight { + background-color: #ddd; +} +.mx_AuthBody_fieldRow { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 10px; +} +.mx_AuthBody_fieldRow > .mx_Field { + margin: 0 5px; +} +.mx_AuthBody_fieldRow > .mx_Field:first-child { + margin-left: 0; +} +.mx_AuthBody_fieldRow > .mx_Field:last-child { + margin-right: 0; +} +.mx_AuthBody_paddedFooter { + height: 80px; + padding-top: 28px; + text-align: center; +} +.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title { + margin-top: 16px; + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_AuthBody_paddedFooter + .mx_AuthBody_paddedFooter_title + .mx_InlineSpinner + img { + vertical-align: sub; + margin-right: 5px; +} +.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle { + margin-top: 8px; + font-size: 1rem; + line-height: 1.4rem; +} +.mx_AuthBody_changeFlow { + display: block; + text-align: center; + width: 100%; +} +.mx_AuthBody_changeFlow > a { + font-weight: 600; +} +.mx_SSOButtons + .mx_AuthBody_changeFlow { + margin-top: 24px; +} +.mx_AuthBody_spinner { + margin: 1em 0; +} +@media only screen and (max-width: 480px) { + .mx_AuthBody { + border-radius: 4px; + width: auto; + max-width: 500px; + padding: 10px; + } +} +.mx_AuthButtons { + min-height: 24px; + height: unset !important; + padding-top: 13px !important; + padding-bottom: 14px !important; + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_AuthButtons_loginButton_wrapper { + text-align: center; + width: 100%; +} +.mx_AuthButtons_loginButton, +.mx_AuthButtons_registerButton { + margin-top: 3px; + height: 40px; + border: 0; + border-radius: 40px; + margin-left: 4px; + margin-right: 4px; + min-width: 80px; + background-color: #0dbd8b; + color: #fff; + cursor: pointer; + font-size: 1.5rem; + padding: 0 11px; + word-break: break-word; +} +.mx_AuthFooter { + text-align: center; + width: 100%; + font-size: 1.4rem; + opacity: 0.72; + padding: 20px 0; + background: -webkit-gradient( + linear, + left top, + left bottom, + from(transparent), + to(rgba(0, 0, 0, 0.8)) + ); + background: linear-gradient(transparent, rgba(0, 0, 0, 0.8)); +} +.mx_AuthFooter a:hover, +.mx_AuthFooter a:link, +.mx_AuthFooter a:visited { + color: #fff; + margin: 0 22px; +} +.mx_AuthHeader { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 206px; + padding: 25px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +@media only screen and (max-width: 480px) { + .mx_AuthHeader { + display: none; + } +} +.mx_AuthHeaderLogo { + margin-top: 15px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 0 25px; +} +.mx_AuthHeaderLogo img { + width: 100%; +} +@media only screen and (max-width: 480px) { + .mx_AuthHeaderLogo { + display: none; + } +} +.mx_AuthPage { + width: 100%; + min-height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + background-color: #2e3649; +} +.mx_AuthPage, +.mx_AuthPage_modal { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_AuthPage_modal { + margin: 100px auto auto; + border-radius: 4px; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33); + background-color: hsla(0, 0%, 96.1%, 0.9); +} +@media only screen and (max-width: 480px) { + .mx_AuthPage_modal { + margin-top: 0; + } +} +.mx_CompleteSecurityBody { + width: 600px; + color: #232f32; + background-color: #fff; + border-radius: 4px; + padding: 20px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_CompleteSecurityBody h2 { + font-size: 2.4rem; + font-weight: 600; + margin-top: 0; +} +.mx_CompleteSecurityBody h3 { + font-size: 1.4rem; + font-weight: 600; +} +.mx_CompleteSecurityBody a:hover, +.mx_CompleteSecurityBody a:link, +.mx_CompleteSecurityBody a:visited { + color: #0dbd8b; + text-decoration: none; +} +.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option { + padding: 0 3px; +} +.mx_CountryDropdown .mx_Dropdown_arrow { + padding-right: 3px; +} +.mx_CountryDropdown_shortOption { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + height: 100%; +} +.mx_CountryDropdown_option, +.mx_CountryDropdown_shortOption { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_CountryDropdown_option { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_InteractiveAuthEntryComponents_emailWrapper { + padding-right: 100px; + position: relative; + margin-top: 32px; + margin-bottom: 32px; +} +.mx_InteractiveAuthEntryComponents_emailWrapper:after, +.mx_InteractiveAuthEntryComponents_emailWrapper:before { + position: absolute; + width: 116px; + height: 116px; + content: ""; + right: -10px; +} +.mx_InteractiveAuthEntryComponents_emailWrapper:before { + background-color: rgba(244, 246, 250, 0.91); + border-radius: 50%; + top: -20px; +} +.mx_InteractiveAuthEntryComponents_emailWrapper:after { + background-image: url(../../img/element-icons/email-prompt.1d04dfe.svg); + background-repeat: no-repeat; + background-position: 50%; + background-size: contain; + top: -25px; +} +.mx_InteractiveAuthEntryComponents_msisdnWrapper { + text-align: center; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry { + font-size: 200%; + font-weight: 700; + border: 1px solid #c7c7c7; + border-radius: 3px; + width: 6em; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry:focus { + border: 1px solid #0dbd8b; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_InteractiveAuthEntryComponents_termsSubmit { + margin-top: 20px; + margin-bottom: 5px; + display: block; + width: 100%; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { + background-color: #747474; + cursor: default; +} +.mx_InteractiveAuthEntryComponents_termsSubmit:disabled { + background-color: #92caad; + cursor: default; +} +.mx_InteractiveAuthEntryComponents_termsPolicy { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_InteractiveAuthEntryComponents_passwordSection { + width: 300px; +} +.mx_InteractiveAuthEntryComponents_sso_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + margin-top: 20px; +} +.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton { + margin-left: 5px; +} +.mx_AuthBody_language { + width: 100%; +} +.mx_AuthBody_language .mx_Dropdown_input { + border: none; + font-size: 1.4rem; + font-weight: 600; + color: #4e5054; + width: auto; +} +.mx_AuthBody_language .mx_Dropdown_arrow { + background: #4e5054; +} +progress.mx_PassphraseField_progress { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 100%; + border: 0; + height: 4px; + position: absolute; + top: -12px; + border-radius: "2px"; +} +progress.mx_PassphraseField_progress::-moz-progress-bar { + border-radius: "2px"; +} +progress.mx_PassphraseField_progress::-webkit-progress-bar, +progress.mx_PassphraseField_progress::-webkit-progress-value { + border-radius: "2px"; +} +progress.mx_PassphraseField_progress { + color: #ff4b55; +} +progress.mx_PassphraseField_progress::-moz-progress-bar { + background-color: #ff4b55; +} +progress.mx_PassphraseField_progress::-webkit-progress-value { + background-color: #ff4b55; +} +progress.mx_PassphraseField_progress[value="2"], +progress.mx_PassphraseField_progress[value="3"] { + color: #ff812d; +} +progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar, +progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar { + background-color: #ff812d; +} +progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value, +progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value { + background-color: #ff812d; +} +progress.mx_PassphraseField_progress[value="4"] { + color: #0dbd8b; +} +progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar { + background-color: #0dbd8b; +} +progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { + background-color: #0dbd8b; +} +.mx_Welcome { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount { + display: none; +} +.mx_Welcome .mx_AuthBody_language { + width: 160px; + margin-bottom: 10px; +} +.mx_BaseAvatar { + position: relative; + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_BaseAvatar_initial { + position: absolute; + left: 0; + color: #fff; + text-align: center; + speak: none; + pointer-events: none; + font-weight: 400; +} +.mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; + border-radius: 125px; + vertical-align: top; + background-color: #fff; +} +.mx_DecoratedRoomAvatar, +.mx_ExtraTile { + position: relative; +} +.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar, +.mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar { + -webkit-mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg); + mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} +.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon, +.mx_ExtraTile .mx_DecoratedRoomAvatar_icon { + position: absolute; + bottom: -2px; + right: -2px; + margin: 4px; + width: 8px; + height: 8px; + border-radius: 50%; +} +.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before, +.mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before { + content: ""; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; +} +.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before, +.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before { + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #737d8c; + -webkit-mask-image: url(../../img/globe.8201f08.svg); + mask-image: url(../../img/globe.8201f08.svg); +} +.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before, +.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before { + background-color: #e3e8f0; +} +.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before, +.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before { + background-color: #0dbd8b; +} +.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before, +.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before { + background-color: #d9b072; +} +.mx_DecoratedRoomAvatar .mx_NotificationBadge, +.mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer, +.mx_ExtraTile .mx_NotificationBadge, +.mx_ExtraTile .mx_RoomTile_badgeContainer { + position: absolute; + top: 0; + right: 0; + height: 18px; + width: 18px; +} +.mx_MessageComposer_avatar .mx_BaseAvatar { + padding: 2px; + border: 1px solid transparent; + border-radius: 100%; +} +.mx_MessageComposer_avatar .mx_BaseAvatar_initial { + left: 2px; +} +.mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar { + border-color: #0dbd8b; +} +@-webkit-keyframes shadow-pulse { + 0% { + -webkit-box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); + box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); + } + to { + -webkit-box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); + box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); + } +} +@keyframes shadow-pulse { + 0% { + -webkit-box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); + box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); + } + to { + -webkit-box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); + box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); + } +} +.mx_PulsedAvatar img { + -webkit-animation: shadow-pulse 1s infinite; + animation: shadow-pulse 1s infinite; +} +.mx_WidgetAvatar { + border-radius: 4px; +} +.mx_BetaCard { + margin-bottom: 20px; + padding: 24px; + background-color: #f4f6fa; + border-radius: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_BetaCard > div .mx_BetaCard_title { + font-weight: 600; + font-size: 1.8rem; + line-height: 2.2rem; + color: #2e2f32; + margin: 4px 0 14px; +} +.mx_BetaCard > div .mx_BetaCard_title .mx_BetaCard_betaPill { + margin-left: 12px; +} +.mx_BetaCard > div .mx_BetaCard_caption { + font-size: 1.5rem; + line-height: 2rem; + color: #737d8c; + margin-bottom: 20px; +} +.mx_BetaCard > div .mx_AccessibleButton { + display: block; + margin: 12px 0; + padding: 7px 40px; + width: auto; +} +.mx_BetaCard > div .mx_BetaCard_disclaimer { + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; + margin-top: 20px; +} +.mx_BetaCard > img { + margin: auto 0 auto 20px; + width: 300px; + -o-object-fit: contain; + object-fit: contain; + height: 100%; +} +.mx_BetaCard_betaPill { + background-color: #238cf5; + padding: 4px 10px; + border-radius: 8px; + text-transform: uppercase; + font-size: 12px; + line-height: 15px; + color: #fff; + display: inline-block; + vertical-align: text-bottom; +} +.mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable { + cursor: pointer; +} +.mx_BetaDot { + border-radius: 50%; + margin: 10px; + height: 12px; + width: 12px; + -webkit-transform: scale(1); + transform: scale(1); + background: #238cf5; + -webkit-box-shadow: 0 0 0 0 #238cf5; + box-shadow: 0 0 0 0 #238cf5; + -webkit-animation: mx_Beta_bluePulse 2s infinite; + animation: mx_Beta_bluePulse 2s infinite; + -webkit-animation-iteration-count: 20; + animation-iteration-count: 20; +} +@-webkit-keyframes mx_Beta_bluePulse { + 0% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); + box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); + } + 70% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); + box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); + } + to { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); + box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); + } +} +@keyframes mx_Beta_bluePulse { + 0% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); + box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); + } + 70% { + -webkit-transform: scale(1); + transform: scale(1); + -webkit-box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); + box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); + } + to { + -webkit-transform: scale(0.95); + transform: scale(0.95); + -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); + box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); + } +} +.mx_CallContextMenu_item { + width: 205px; + height: 40px; + padding-left: 16px; + line-height: 40px; + vertical-align: center; +} +.mx_IconizedContextMenu { + min-width: 146px; +} +.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList > * { + padding-left: 20px; + padding-right: 20px; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_IconizedContextMenu_optionList_notFirst:before, +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList:nth-child(n + 2):before { + border-top: 1px solid #2e2f32; + opacity: 0.1; + content: ""; + width: 100%; + position: absolute; + left: 0; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList:first-child + .mx_AccessibleButton:first-child { + border-radius: 8px 8px 0 0; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList:last-child + .mx_AccessibleButton:last-child { + border-radius: 0 0 8px 8px; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton { + padding-top: 12px; + padding-bottom: 12px; + text-decoration: none; + color: #2e2f32; + font-size: 1.5rem; + line-height: 2.4rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton:hover { + background-color: #f5f8fa; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton.mx_AccessibleButton_disabled { + opacity: 0.5; + cursor: not-allowed; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton + .mx_IconizedContextMenu_icon, +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton + img { + width: 16px; + min-width: 16px; + max-width: 16px; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton + span.mx_IconizedContextMenu_label { + width: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList + .mx_AccessibleButton + .mx_IconizedContextMenu_icon + + .mx_IconizedContextMenu_label { + padding-left: 14px; +} +.mx_IconizedContextMenu .mx_IconizedContextMenu_icon { + position: relative; + width: 16px; + height: 16px; +} +.mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #2e2f32; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList_red + .mx_AccessibleButton { + color: #ff4b55 !important; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_optionList_red + .mx_IconizedContextMenu_icon:before { + background-color: #ff4b55; +} +.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton, +.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton { + color: #0dbd8b !important; +} +.mx_IconizedContextMenu + .mx_IconizedContextMenu_active + .mx_IconizedContextMenu_icon:before { + background-color: #0dbd8b; +} +.mx_IconizedContextMenu.mx_IconizedContextMenu_compact + .mx_IconizedContextMenu_optionList + > * { + padding: 8px 16px 8px 11px; +} +.mx_IconizedContextMenu .mx_IconizedContextMenu_checked { + margin-left: 16px; + margin-right: -5px; +} +.mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); + mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); +} +.mx_MessageContextMenu { + padding: 6px; +} +.mx_MessageContextMenu_field { + display: block; + padding: 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { + font-weight: 700; +} +.mx_StatusMessageContextMenu { + padding: 10px; +} +.mx_StatusMessageContextMenu_form { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +input.mx_StatusMessageContextMenu_message { + border-radius: 4px; + border: 1px solid #e7e7e7; + padding: 6.5px 11px; + background-color: #fff; + font-weight: 400; + margin: 0 0 10px; +} +.mx_StatusMessageContextMenu_message::-webkit-input-placeholder { + color: #61708b; +} +.mx_StatusMessageContextMenu_message::-moz-placeholder { + color: #61708b; +} +.mx_StatusMessageContextMenu_message:-ms-input-placeholder { + color: #61708b; +} +.mx_StatusMessageContextMenu_message::-ms-input-placeholder { + color: #61708b; +} +.mx_StatusMessageContextMenu_message::placeholder { + color: #61708b; +} +.mx_StatusMessageContextMenu_actionContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_StatusMessageContextMenu_clear, +.mx_StatusMessageContextMenu_submit { + vertical-align: middle; + border-radius: 8px; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-size: 1.4rem; + color: #fff; + background-color: #0dbd8b; + width: auto; + cursor: pointer; + display: inline-block; + outline: none; + -ms-flex-item-align: start; + align-self: start; + font-size: 1.2rem; + padding: 6px 1em; + border: 1px solid transparent; + margin-right: 10px; +} +.mx_StatusMessageContextMenu_submit[disabled] { + opacity: 0.49; +} +.mx_StatusMessageContextMenu_clear { + color: #ff4b55; + background-color: transparent; + border: 1px solid #ff4b55; +} +.mx_StatusMessageContextMenu_actionContainer .mx_Spinner { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_TagTileContextMenu_item { + padding: 8px 20px 8px 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 1.6rem; +} +.mx_TagTileContextMenu_item:before { + content: ""; + height: 15px; + width: 15px; + background-color: currentColor; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + margin-right: 8px; +} +.mx_TagTileContextMenu_viewCommunity:before { + -webkit-mask-image: url(../../img/element-icons/view-community.0cad1a5.svg); + mask-image: url(../../img/element-icons/view-community.0cad1a5.svg); +} +.mx_TagTileContextMenu_hideCommunity:before { + -webkit-mask-image: url(../../img/element-icons/hide.2b52315.svg); + mask-image: url(../../img/element-icons/hide.2b52315.svg); +} +.mx_TagTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-style: none; + border-top: 1px solid; + border-color: #e7e7e7; +} +.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_AddExistingToSpace .mx_SearchBox { + margin: 0 0 15px; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_content { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults { + display: block; + margin-top: 24px; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child) { + margin-top: 24px; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_section > h3 { + margin: 0; + color: #737d8c; + font-size: 1.2rem; + font-weight: 600; + line-height: 1.5rem; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_section + .mx_AddExistingToSpace_entry { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 12px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_section + .mx_AddExistingToSpace_entry + .mx_DecoratedRoomAvatar { + margin-right: 12px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_section + .mx_AddExistingToSpace_entry + .mx_AddExistingToSpace_entry_name { + font-size: 1.5rem; + line-height: 30px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin-right: 12px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_section + .mx_AddExistingToSpace_entry + .mx_Checkbox { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar { + margin-right: 12px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_section_spaces + .mx_BaseAvatar_image { + border-radius: 8px; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental { + position: relative; + border-radius: 8px; + margin: 12px 0; + padding: 8px 8px 8px 42px; + background-color: #f3f8fd; + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before { + content: ""; + position: absolute; + left: 10px; + top: calc(50% - 8px); + height: 16px; + width: 16px; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + -webkit-mask-position: center; + mask-position: center; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 20px; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar { + height: 8px; + width: 100%; + border-radius: 8px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + > span + .mx_ProgressBar::-moz-progress-bar { + border-radius: 8px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + > span + .mx_ProgressBar::-webkit-progress-bar, +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + > span + .mx_ProgressBar::-webkit-progress-value { + border-radius: 8px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + > span + .mx_AddExistingToSpace_progressText { + margin-top: 8px; + font-size: 1.5rem; + line-height: 2.4rem; + color: #2e2f32; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span > * { + vertical-align: middle; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AddExistingToSpace_error { + padding-left: 12px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AddExistingToSpace_error + > img { + -ms-flex-item-align: center; + align-self: center; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AddExistingToSpace_error + .mx_AddExistingToSpace_errorHeading { + font-weight: 600; + font-size: 1.5rem; + line-height: 1.8rem; + color: #ff4b55; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AddExistingToSpace_error + .mx_AddExistingToSpace_errorCaption { + margin-top: 4px; + font-size: 1.2rem; + line-height: 1.5rem; + color: #2e2f32; +} +.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton { + display: inline-block; + -ms-flex-item-align: center; + align-self: center; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AccessibleButton_kind_primary { + padding: 8px 36px; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AddExistingToSpace_retryButton { + margin-left: 12px; + padding-left: 24px; + position: relative; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AddExistingToSpace_retryButton:before { + content: ""; + position: absolute; + background-color: #2e2f32; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); + mask-image: url(../../img/element-icons/retry.6cd23ad.svg); + width: 18px; + height: 18px; + left: 0; +} +.mx_AddExistingToSpace + .mx_AddExistingToSpace_footer + .mx_AccessibleButton_kind_link { + padding: 0; +} +.mx_AddExistingToSpaceDialog { + width: 480px; + color: #2e2f32; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + min-height: 0; + height: 80vh; +} +.mx_AddExistingToSpaceDialog, +.mx_AddExistingToSpaceDialog .mx_Dialog_title { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image { + border-radius: 8px; + margin: 0; + vertical-align: unset; +} +.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin: auto 16px auto 5px; + vertical-align: middle; +} +.mx_AddExistingToSpaceDialog .mx_Dialog_title > div > h1 { + font-weight: 600; + font-size: 1.8rem; + line-height: 2.2rem; + margin: 0; +} +.mx_AddExistingToSpaceDialog + .mx_Dialog_title + > div + .mx_AddExistingToSpaceDialog_onlySpace { + color: #737d8c; + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input { + border: none; +} +.mx_AddExistingToSpaceDialog + .mx_Dialog_title + .mx_Dropdown_input + > .mx_Dropdown_option { + padding-left: 0; + -webkit-box-flex: unset; + -ms-flex: unset; + flex: unset; + height: unset; + color: #737d8c; + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_AddExistingToSpaceDialog + .mx_Dialog_title + .mx_Dropdown_input + > .mx_Dropdown_option + .mx_BaseAvatar { + display: none; +} +.mx_AddExistingToSpaceDialog + .mx_Dialog_title + .mx_Dropdown_input + .mx_Dropdown_menu + .mx_AddExistingToSpaceDialog_dropdownOptionActive { + color: #0dbd8b; + padding-right: 32px; + position: relative; +} +.mx_AddExistingToSpaceDialog + .mx_Dialog_title + .mx_Dropdown_input + .mx_Dropdown_menu + .mx_AddExistingToSpaceDialog_dropdownOptionActive:before { + content: ""; + width: 20px; + height: 20px; + top: 8px; + right: 0; + position: absolute; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #0dbd8b; + -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); + mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); +} +.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace { + display: contents; +} +.mx_AddressPickerDialog a:hover, +.mx_AddressPickerDialog a:link, +.mx_AddressPickerDialog a:visited { + color: #0dbd8b; + text-decoration: none; +} +.mx_AddressPickerDialog_input, +.mx_AddressPickerDialog_input:focus { + height: 26px; + font-size: 1.4rem; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + padding-left: 12px; + padding-right: 12px; + margin: 0 !important; + border: 0 !important; + outline: 0 !important; + width: 1000%; + resize: none; + overflow: hidden; + vertical-align: middle; + -webkit-box-sizing: border-box; + box-sizing: border-box; + word-wrap: nowrap; +} +.mx_AddressPickerDialog .mx_Dialog_content { + min-height: 50px; +} +.mx_AddressPickerDialog_inputContainer { + border-radius: 3px; + border: 1px solid #e7e7e7; + line-height: 3.6rem; + padding: 1px 4px; + max-height: 150px; + overflow-x: hidden; + overflow-y: auto; +} +.mx_AddressPickerDialog_error { + margin-top: 10px; + color: #ff4b55; +} +.mx_AddressPickerDialog_cancel { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_AddressPickerDialog_cancel object { + pointer-events: none; +} +.mx_AddressPickerDialog_identityServer { + margin-top: 1em; +} +.mx_AnalyticsModal table { + margin: 10px 0; +} +.mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading { + color: #2e2f32; + font-size: 1.4rem; + line-height: 2rem; + margin-bottom: 24px; +} +.mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link { + padding: 0; + font-size: inherit; + line-height: inherit; +} +.mx_BugReportDialog + .mx_BugReportDialog_download + .mx_AccessibleButton_kind_link { + padding-left: 0; +} +.mx_ChangelogDialog_content { + max-height: 300px; + overflow: auto; +} +.mx_ChangelogDialog_li { + padding: 0.2em; +} +.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { + margin-top: 24px; +} +.mx_ChatCreateOrReuseDialog .mx_Dialog_content { + margin-bottom: 24px; + min-height: 100px; +} +.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { + display: none; +} +.mx_ChatCreateOrReuseDialog_profile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ChatCreateOrReuseDialog_profile_name { + padding: 14px; +} +.mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth { + width: 360px; +} +.mx_CommunityPrototypeInviteDialog .mx_Dialog_content { + margin-bottom: 0; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_people { + position: relative; + margin-bottom: 4px; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_people + .mx_AccessibleButton { + display: inline-block; + background-color: #ddd; + border-radius: 4px; + padding: 3px 5px; + font-size: 1.2rem; + float: right; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_morePeople { + margin-top: 8px; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person { + position: relative; + margin-top: 4px; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person + > * { + vertical-align: middle; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person + .mx_Checkbox { + position: absolute; + right: 0; + top: calc(50% - 8px); + width: 16px; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person + .mx_CommunityPrototypeInviteDialog_personIdentifiers { + display: inline-block; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person + .mx_CommunityPrototypeInviteDialog_personIdentifiers + > * { + display: block; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person + .mx_CommunityPrototypeInviteDialog_personIdentifiers + .mx_CommunityPrototypeInviteDialog_personName { + font-weight: 600; + font-size: 1.4rem; + color: #2e2f32; + margin-left: 7px; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_person + .mx_CommunityPrototypeInviteDialog_personIdentifiers + .mx_CommunityPrototypeInviteDialog_personId { + font-size: 1.2rem; + color: #61708b; + margin-left: 7px; +} +.mx_CommunityPrototypeInviteDialog + .mx_Dialog_content + .mx_CommunityPrototypeInviteDialog_primaryButton { + display: block; + font-size: 1.3rem; + line-height: 20px; + height: 20px; + margin-top: 24px; +} +.mx_ConfirmUserActionDialog .mx_Dialog_content { + min-height: 48px; + margin-bottom: 24px; +} +.mx_ConfirmUserActionDialog_avatar { + float: left; + margin-right: 20px; + margin-top: -2px; +} +.mx_ConfirmUserActionDialog_name { + font-size: 1.8rem; +} +.mx_ConfirmUserActionDialog_userId { + font-size: 1.3rem; +} +.mx_ConfirmUserActionDialog_reasonField { + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-size: 1.4rem; + color: #2e2f32; + background-color: #fff; + border-radius: 3px; + border: 1px solid #e7e7e7; + line-height: 3.6rem; + padding: 1px 16px; + margin-bottom: 24px; + width: 90%; +} +.mx_CreateCommunityPrototypeDialog .mx_Dialog_content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + margin-bottom: 12px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName { + -ms-flex-preferred-size: 66.66%; + flex-basis: 66.66%; + padding-right: 100px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_Field + input { + font-size: 1.6rem; + line-height: 2rem; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_CreateCommunityPrototypeDialog_subtext { + display: block; + color: #61708b; + margin-bottom: 16px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_CreateCommunityPrototypeDialog_subtext:last-child { + margin-top: 16px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error { + color: #ff4b55; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_CreateCommunityPrototypeDialog_communityId { + position: relative; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_CreateCommunityPrototypeDialog_communityId + .mx_InfoTooltip { + float: right; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colName + .mx_AccessibleButton { + display: block; + height: 32px; + font-size: 1.6rem; + line-height: 32px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar { + -ms-flex-preferred-size: 33.33%; + flex-basis: 33.33%; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_avatarContainer { + margin-top: 12px; + margin-bottom: 20px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_avatarContainer + .mx_CreateCommunityPrototypeDialog_avatar, +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_avatarContainer + .mx_CreateCommunityPrototypeDialog_placeholderAvatar { + width: 96px; + height: 96px; + border-radius: 96px; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_avatarContainer + .mx_CreateCommunityPrototypeDialog_placeholderAvatar { + background-color: #368bd6; +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_avatarContainer + .mx_CreateCommunityPrototypeDialog_placeholderAvatar:before { + display: inline-block; + background-color: #fff; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 96px; + mask-size: 96px; + width: 96px; + height: 96px; + -webkit-mask-position: center; + mask-position: center; + content: ""; + vertical-align: middle; + -webkit-mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); + mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); +} +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_tip + > b, +.mx_CreateCommunityPrototypeDialog + .mx_Dialog_content + .mx_CreateCommunityPrototypeDialog_colAvatar + .mx_CreateCommunityPrototypeDialog_tip + > span { + display: block; + color: #61708b; +} +.mx_CreateGroupDialog_inputRow { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_CreateGroupDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateGroupDialog_input { + font-size: 1.5rem; + border-radius: 3px; + border: 1px solid #e7e7e7; + padding: 9px; + color: #2e2f32; + background-color: #fff; +} +.mx_CreateGroupDialog_input_hasPrefixAndSuffix { + border-radius: 0; +} +.mx_CreateGroupDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateGroupDialog_prefix, +.mx_CreateGroupDialog_suffix { + padding: 0 5px; + line-height: 3.7rem; + background-color: #e3e8f0; + border: 1px solid #e7e7e7; + text-align: center; +} +.mx_CreateGroupDialog_prefix { + border-right: 0; + border-radius: 3px 0 0 3px; +} +.mx_CreateGroupDialog_suffix { + border-left: 0; + border-radius: 0 3px 3px 0; +} +.mx_CreateRoomDialog_details { + margin-top: 15px; +} +.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary { + outline: none; + list-style: none; + font-weight: 600; + cursor: pointer; + color: #0dbd8b; +} +.mx_CreateRoomDialog_details + .mx_CreateRoomDialog_details_summary::-webkit-details-marker { + display: none; +} +.mx_CreateRoomDialog_details > div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + margin: 5px 0; +} +.mx_CreateRoomDialog_details > div input[type="checkbox"] { + margin-right: 10px; +} +.mx_CreateRoomDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateRoomDialog_input_container { + padding-right: 20px; +} +.mx_CreateRoomDialog_input { + font-size: 1.5rem; + border-radius: 3px; + border: 1px solid #e7e7e7; + padding: 9px; + color: #2e2f32; + background-color: #fff; + width: 100%; +} +.mx_CreateRoomDialog_aliasContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 10px 0; +} +.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField { + margin: 0; +} +.mx_CreateRoomDialog.mx_Dialog_fixedWidth { + width: 450px; +} +.mx_CreateRoomDialog .mx_Dialog_content { + margin-bottom: 40px; +} +.mx_CreateRoomDialog .mx_Field_input label, +.mx_CreateRoomDialog p { + color: #61708b; +} +.mx_CreateRoomDialog .mx_SettingsFlag { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateRoomDialog .mx_SettingsFlag_label { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + min-width: 0; + font-weight: 600; +} +.mx_CreateRoomDialog .mx_ToggleSwitch { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 30px; +} +.mx_CreateRoomDialog .mx_CreateRoomDialog_topic { + margin-bottom: 36px; +} +.mx_CreateRoomDialog .mx_Dialog_content > .mx_SettingsFlag { + margin-top: 24px; +} +.mx_CreateRoomDialog p { + margin: 0 85px 0 0; + font-size: 1.2rem; +} +.mx_DeactivateAccountDialog .mx_Dialog_content { + margin-bottom: 30px; +} +.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { + margin-top: 60px; +} +.mx_DeactivateAccountDialog + .mx_DeactivateAccountDialog_input_section + .mx_Field { + width: 300px; +} +.mx_DevTools_content { + margin: 10px 0; +} +.mx_DevTools_ServersInRoomList_button { + cursor: default !important; +} +.mx_DevTools_RoomStateExplorer_query { + margin-bottom: 10px; +} +.mx_DevTools_RoomStateExplorer_button, +.mx_DevTools_ServersInRoomList_button { + margin-bottom: 10px; + width: 100%; +} +.mx_DevTools_label_left { + float: left; +} +.mx_DevTools_label_right { + float: right; +} +.mx_DevTools_label_bottom { + clear: both; + border-bottom: 1px solid #e5e5e5; +} +.mx_DevTools_inputRow { + display: table-row; +} +.mx_DevTools_inputLabelCell { + display: table-cell; + font-weight: 700; + padding-right: 24px; +} +.mx_DevTools_inputCell { + display: table-cell; + width: 240px; +} +.mx_DevTools_inputCell input { + display: inline-block; + border: 0; + border-bottom: 1px solid hsla(0, 0%, 59.2%, 0.5); + padding: 0; + width: 240px; + color: rgba(74, 74, 74, 0.9); + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-size: 1.6rem; +} +.mx_DevTools_textarea { + font-size: 1.2rem; + max-width: 684px; + min-height: 250px; + padding: 10px; +} +.mx_DevTools_eventTypeStateKeyGroup { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_DevTools_content .mx_Field_input:first-of-type { + margin-right: 42px; +} +.mx_DevTools_tgl { + display: none; +} +.mx_DevTools_tgl, +.mx_DevTools_tgl *, +.mx_DevTools_tgl + .mx_DevTools_tgl-btn, +.mx_DevTools_tgl:after, +.mx_DevTools_tgl :after, +.mx_DevTools_tgl:before, +.mx_DevTools_tgl :before { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_DevTools_tgl + .mx_DevTools_tgl-btn::-moz-selection, +.mx_DevTools_tgl::-moz-selection, +.mx_DevTools_tgl ::-moz-selection, +.mx_DevTools_tgl:after::-moz-selection, +.mx_DevTools_tgl :after::-moz-selection, +.mx_DevTools_tgl:before::-moz-selection, +.mx_DevTools_tgl :before::-moz-selection { + background: none; +} +.mx_DevTools_tgl + .mx_DevTools_tgl-btn::selection, +.mx_DevTools_tgl::selection, +.mx_DevTools_tgl ::selection, +.mx_DevTools_tgl:after::selection, +.mx_DevTools_tgl :after::selection, +.mx_DevTools_tgl:before::selection, +.mx_DevTools_tgl :before::selection { + background: none; +} +.mx_DevTools_tgl + .mx_DevTools_tgl-btn { + outline: 0; + display: block; + width: 7em; + height: 2em; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after, +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + position: relative; + display: block; + content: ""; + width: 50%; + height: 100%; +} +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after { + left: 0; +} +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + display: none; +} +.mx_DevTools_tgl:checked + .mx_DevTools_tgl-btn:after { + left: 50%; +} +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn { + padding: 2px; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + font-family: sans-serif; + -webkit-perspective: 100px; + perspective: 100px; +} +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + display: inline-block; + -webkit-transition: all 0.4s ease; + transition: all 0.4s ease; + width: 100%; + text-align: center; + position: absolute; + line-height: 2em; + font-weight: 700; + color: #fff; + top: 0; + left: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + border-radius: 4px; +} +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { + content: attr(data-tg-on); + background: #02c66f; + -webkit-transform: rotateY(-180deg); + transform: rotateY(-180deg); +} +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + background: #ff3a19; + content: attr(data-tg-off); +} +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { + -webkit-transform: rotateY(-20deg); + transform: rotateY(-20deg); +} +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); +} +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { + -webkit-transform: rotateY(0); + transform: rotateY(0); + left: 0; + background: #7fc6a6; +} +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { + -webkit-transform: rotateY(20deg); + transform: rotateY(20deg); +} +.mx_DevTools_VerificationRequest { + border: 1px solid #ccc; + border-radius: 3px; + padding: 1px 5px; + margin-bottom: 6px; + font-family: Inconsolata, Twemoji, Apple Color Emoji, Segoe UI Emoji, Courier, + monospace, Noto Color Emoji; +} +.mx_DevTools_VerificationRequest dl { + display: grid; + grid-template-columns: -webkit-max-content auto; + grid-template-columns: max-content auto; + margin: 0; +} +.mx_DevTools_VerificationRequest dd { + grid-column-start: 2; +} +.mx_DevTools_VerificationRequest dd:empty { + color: #666; +} +.mx_DevTools_VerificationRequest dd:empty:after { + content: "(empty)"; +} +.mx_DevTools_VerificationRequest dt { + font-weight: 700; + grid-column-start: 1; +} +.mx_DevTools_VerificationRequest dt:after { + content: ":"; +} +.mx_DevTools_SettingsExplorer table { + width: 100%; + table-layout: fixed; + border-collapse: collapse; +} +.mx_DevTools_SettingsExplorer table th { + border-bottom: 1px solid #0dbd8b; + text-align: left; +} +.mx_DevTools_SettingsExplorer table td, +.mx_DevTools_SettingsExplorer table th { + width: 360px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_DevTools_SettingsExplorer table td + td, +.mx_DevTools_SettingsExplorer table th + th { + width: auto; +} +.mx_DevTools_SettingsExplorer table tr:hover { + background-color: rgba(13, 189, 139, 0.5); +} +.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable { + background-color: #0dbd8b; +} +.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable { + background-color: #ff4b55; +} +.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit { + float: right; + margin-right: 16px; +} +.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning { + border: 2px solid #ff4b55; + border-radius: 4px; + padding: 4px; + margin-bottom: 8px; +} +.mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth { + width: 360px; +} +.mx_EditCommunityPrototypeDialog .mx_Dialog_content { + margin-bottom: 12px; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_AccessibleButton.mx_AccessibleButton_kind_primary { + display: block; + height: 32px; + font-size: 1.6rem; + line-height: 32px; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_rowAvatar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_avatarContainer { + margin-top: 20px; + margin-bottom: 20px; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_avatarContainer + .mx_EditCommunityPrototypeDialog_avatar, +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_avatarContainer + .mx_EditCommunityPrototypeDialog_placeholderAvatar { + width: 96px; + height: 96px; + border-radius: 96px; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_avatarContainer + .mx_EditCommunityPrototypeDialog_placeholderAvatar { + background-color: #368bd6; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_avatarContainer + .mx_EditCommunityPrototypeDialog_placeholderAvatar:before { + display: inline-block; + background-color: #fff; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 96px; + mask-size: 96px; + width: 96px; + height: 96px; + -webkit-mask-position: center; + mask-position: center; + content: ""; + vertical-align: middle; + -webkit-mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); + mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_tip { + margin-left: 20px; +} +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_tip + > b, +.mx_EditCommunityPrototypeDialog + .mx_Dialog_content + .mx_EditCommunityPrototypeDialog_tip + > span { + display: block; + color: #61708b; +} +.mx_FeedbackDialog hr { + margin: 24px 0; + border-color: #e7e7e7; +} +.mx_FeedbackDialog .mx_Dialog_content { + margin-bottom: 24px; +} +.mx_FeedbackDialog .mx_Dialog_content > h2 { + margin-bottom: 32px; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section { + position: relative; + padding-left: 52px; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section > p { + color: #8d99a5; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link { + padding: 0; + font-size: inherit; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link, +.mx_FeedbackDialog .mx_FeedbackDialog_section a { + color: #0dbd8b; + text-decoration: underline; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section:after, +.mx_FeedbackDialog .mx_FeedbackDialog_section:before { + content: ""; + position: absolute; + width: 40px; + height: 40px; + left: 0; + top: 0; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section:before { + background-color: #c1c6cd; + border-radius: 20px; +} +.mx_FeedbackDialog .mx_FeedbackDialog_section:after { + background: #fff; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 24px; + mask-size: 24px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} +.mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after { + -webkit-mask-image: url(../../img/feather-customised/bug.3dc7afa.svg); + mask-image: url(../../img/feather-customised/bug.3dc7afa.svg); +} +.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + font-size: 20px; + -webkit-transition: font-size 1s, border 0.5s; + transition: font-size 1s, border 0.5s; + border-radius: 50%; + border: 2px solid transparent; + margin-top: 12px; + margin-bottom: 24px; + vertical-align: top; + cursor: pointer; +} +.mx_FeedbackDialog + .mx_FeedbackDialog_rateApp + .mx_RadioButton + input[type="radio"] + + div { + display: none; +} +.mx_FeedbackDialog + .mx_FeedbackDialog_rateApp + .mx_RadioButton + .mx_RadioButton_content { + background: #c1c6cd; + width: 40px; + height: 40px; + text-align: center; + line-height: 40px; + border-radius: 20px; + margin: 5px; +} +.mx_FeedbackDialog + .mx_FeedbackDialog_rateApp + .mx_RadioButton + .mx_RadioButton_spacer { + display: none; +} +.mx_FeedbackDialog + .mx_FeedbackDialog_rateApp + .mx_RadioButton + + .mx_RadioButton { + margin-left: 16px; +} +.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked { + font-size: 24px; + border-color: #0dbd8b; +} +.mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after { + -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); + mask-image: url(../../img/element-icons/feedback.a91241e.svg); +} +.mx_GroupAddressPicker_checkboxContainer { + margin-top: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_HostSignupDialog { + width: 90vw; + max-width: 580px; + height: 80vh; + max-height: 600px; + background-color: #fff; +} +.mx_HostSignupDialog .mx_HostSignupDialog_info { + text-align: center; +} +.mx_HostSignupDialog + .mx_HostSignupDialog_info + .mx_HostSignupDialog_content_top { + margin-bottom: 24px; +} +.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs { + text-align: left; + padding-left: 25%; + padding-right: 25%; +} +.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons { + margin-bottom: 24px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_HostSignupDialog + .mx_HostSignupDialog_info + .mx_HostSignupDialog_buttons + button { + padding: 12px; + margin: 0 16px; +} +.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; +} +.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img { + padding-right: 5px; +} +.mx_HostSignupDialog iframe { + width: 100%; + height: 100%; + border: none; + background-color: #fff; + min-height: 540px; +} +.mx_HostSignupDialog_text_dark { + color: #2e2f32; +} +.mx_HostSignupDialog_text_light { + color: #737d8c; +} +.mx_HostSignup_maximize_button { + -webkit-mask: url(../../img/feather-customised/maximise.dc32127.svg); + mask: url(../../img/feather-customised/maximise.dc32127.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + right: 10px; +} +.mx_HostSignup_maximize_button, +.mx_HostSignup_minimize_button { + width: 14px; + height: 14px; + background-color: #c1c1c1; + cursor: pointer; + position: absolute; + top: 10px; +} +.mx_HostSignup_minimize_button { + -webkit-mask: url(../../img/feather-customised/minimise.aec9142.svg); + mask: url(../../img/feather-customised/minimise.aec9142.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + right: 25px; +} +.mx_HostSignup_persisted { + width: 90vw; + max-width: 580px; + height: 80vh; + max-height: 600px; + top: 0; + left: 0; + position: fixed; + display: none; +} +.mx_HostSignupDialog_minimized { + position: fixed; + bottom: 80px; + right: 26px; + width: 314px; + height: 217px; + overflow: hidden; +} +.mx_HostSignupDialog_minimized.mx_Dialog { + padding: 12px; +} +.mx_HostSignupDialog_minimized .mx_Dialog_title { + text-align: left !important; + padding-left: 20px; + font-size: 1.5rem; +} +.mx_HostSignupDialog_minimized iframe { + width: 100%; + height: 100%; + border: none; + background-color: #fff; +} +.mx_IncomingSasDialog_opponentProfile_image { + position: relative; +} +.mx_IncomingSasDialog_opponentProfile h2 { + display: inline-block; + margin-left: 10px; +} +.mx_InviteDialog_addressBar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} +.mx_InviteDialog_addressBar .mx_InviteDialog_editor { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; + background-color: #f3f8fd; + border-radius: 4px; + min-height: 25px; + padding-left: 8px; + overflow-x: hidden; + overflow-y: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile { + margin: 6px 6px 0 0; + display: inline-block; + min-width: -webkit-max-content; + min-width: -moz-max-content; + min-width: max-content; +} +.mx_InviteDialog_addressBar .mx_InviteDialog_editor > input[type="text"] { + margin: 6px 0 !important; + height: 24px; + line-height: 2.4rem; + font-size: 1.4rem; + padding-left: 12px; + border: 0 !important; + outline: 0 !important; + resize: none; + -webkit-box-sizing: border-box; + box-sizing: border-box; + min-width: 40%; + -webkit-box-flex: 1 !important; + -ms-flex: 1 !important; + flex: 1 !important; + color: #2e2f32 !important; +} +.mx_InviteDialog_addressBar .mx_InviteDialog_goButton { + min-width: 48px; + margin-left: 10px; + height: 25px; + line-height: 2.5rem; +} +.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner { + width: 20px; + height: 20px; + margin-left: 5px; + display: inline-block; + vertical-align: middle; +} +.mx_InviteDialog_section { + padding-bottom: 10px; +} +.mx_InviteDialog_section h3 { + font-size: 1.2rem; + color: #61708b; + font-weight: 700; + text-transform: uppercase; +} +.mx_InviteDialog_section .mx_InviteDialog_subname { + margin-bottom: 10px; + margin-top: -10px; + font-size: 1.2rem; + color: #61708b; +} +.mx_InviteDialog_roomTile { + cursor: pointer; + padding: 5px 10px; +} +.mx_InviteDialog_roomTile:hover { + background-color: #f3f8fd; + border-radius: 4px; +} +.mx_InviteDialog_roomTile * { + vertical-align: middle; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack { + display: inline-block; + position: relative; + width: 36px; + height: 36px; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack > * { + position: absolute; + top: 0; + left: 0; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected { + width: 36px; + height: 36px; + border-radius: 36px; + background-color: #368bd6; + display: inline-block; + position: relative; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before { + content: ""; + width: 24px; + height: 24px; + grid-column: 1; + grid-row: 1; + -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); + mask-image: url(../../img/feather-customised/check.5745b4e.svg); + -webkit-mask-size: 100%; + mask-size: 100%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + position: absolute; + top: 6px; + left: 6px; + background-color: #fff; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack { + display: inline-block; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name { + font-weight: 600; + font-size: 1.4rem; + color: #2e2f32; + margin-left: 7px; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId { + font-size: 1.2rem; + color: #61708b; + margin-left: 7px; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time { + text-align: right; + font-size: 1.2rem; + color: #61708b; + float: right; + line-height: 3.6rem; +} +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight { + font-weight: 900; +} +.mx_InviteDialog_userTile { + margin-right: 8px; +} +.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill { + background-color: #368bd6; + border-radius: 12px; + display: inline-block; + height: 24px; + line-height: 2.4rem; + padding-left: 8px; + padding-right: 8px; + color: #fff; +} +.mx_InviteDialog_userTile + .mx_InviteDialog_userTile_pill + .mx_InviteDialog_userTile_avatar { + border-radius: 20px; + position: relative; + left: -5px; + top: 2px; +} +.mx_InviteDialog_userTile + .mx_InviteDialog_userTile_pill + .mx_InviteDialog_userTile_name, +.mx_InviteDialog_userTile + .mx_InviteDialog_userTile_pill + img.mx_InviteDialog_userTile_avatar { + vertical-align: top; +} +.mx_InviteDialog_userTile + .mx_InviteDialog_userTile_pill + .mx_InviteDialog_userTile_threepidAvatar { + background-color: #fff; +} +.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove { + display: inline-block; + margin-left: 4px; +} +.mx_InviteDialog { + height: 590px; + padding-left: 20px; +} +.mx_InviteDialog_userSections { + margin-top: 10px; + overflow-y: auto; + padding-right: 45px; + height: 455px; +} +.mx_InviteDialog_addressBar, +.mx_InviteDialog_helpText { + margin-right: 45px; +} +.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link { + padding: 0; +} +.mx_KeyboardShortcutsDialog { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-bottom: -50px; + max-height: 1100px; +} +.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category { + width: 33.3333%; + margin: 0 0 40px; +} +.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category > div { + padding-left: 5px; +} +.mx_KeyboardShortcutsDialog h3 { + margin: 0 0 10px; +} +.mx_KeyboardShortcutsDialog h5 { + margin: 15px 0 5px; + font-weight: 400; +} +.mx_KeyboardShortcutsDialog kbd { + padding: 5px; + border-radius: 4px; + background-color: #f3f8fd; + margin-right: 5px; + min-width: 20px; + text-align: center; + display: inline-block; + border: 1px solid #e9edf1; + -webkit-box-shadow: 0 2px #e9edf1; + box-shadow: 0 2px #e9edf1; + margin-bottom: 4px; + text-transform: capitalize; +} +.mx_KeyboardShortcutsDialog kbd + kbd { + margin-left: 5px; +} +.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div { + display: inline; +} +.mx_MessageEditHistoryDialog .mx_Dialog_header > .mx_Dialog_title { + text-align: center; +} +.mx_MessageEditHistoryDialog { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-height: 60vh; +} +.mx_MessageEditHistoryDialog_scrollPanel { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_MessageEditHistoryDialog_error { + color: #ff4b55; + text-align: center; +} +.mx_MessageEditHistoryDialog_edits { + list-style-type: none; + font-size: 1.4rem; + padding: 0; + color: #2e2f32; +} +.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion, +.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion { + padding: 0 2px; +} +.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion { + color: #ff4c55; + background-color: rgba(255, 76, 85, 0.1); + text-decoration: line-through; +} +.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion { + color: #1aa97b; + background-color: rgba(26, 169, 123, 0.1); + text-decoration: underline; +} +.mx_MessageEditHistoryDialog_edits .mx_EventTile_content, +.mx_MessageEditHistoryDialog_edits .mx_EventTile_line { + margin-right: 0; +} +.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton { + font-size: 1rem; + padding: 0 8px; +} +.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning { + margin-bottom: 24px; +} +.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning > img { + vertical-align: middle; + margin-right: 8px; +} +.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons { + float: right; + margin-top: 24px; +} +.mx_ModalWidgetDialog + .mx_ModalWidgetDialog_buttons + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 8px; +} +.mx_ModalWidgetDialog iframe { + width: 100%; + height: 450px; + border: 0; + border-radius: 8px; +} +.mx_NewSessionReviewDialog_header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-top: 0; +} +.mx_NewSessionReviewDialog_headerIcon { + width: 24px; + height: 24px; + margin-right: 4px; + position: relative; +} +.mx_NewSessionReviewDialog_deviceName { + font-weight: 600; +} +.mx_NewSessionReviewDialog_deviceID { + font-size: 1.2rem; + color: #8d99a5; +} +.mx_RegistrationEmailPromptDialog { + width: 417px; +} +.mx_RegistrationEmailPromptDialog .mx_Dialog_content { + margin-bottom: 24px; + color: #8d99a5; +} +.mx_RegistrationEmailPromptDialog .mx_Dialog_primary { + width: 100%; +} +.mx_RoomSettingsDialog_settingsIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_RoomSettingsDialog_securityIcon:before { + -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); + mask-image: url(../../img/element-icons/security.66f2fa6.svg); +} +.mx_RoomSettingsDialog_rolesIcon:before { + -webkit-mask-image: url(../../img/element-icons/room/settings/roles.bad9a9e.svg); + mask-image: url(../../img/element-icons/room/settings/roles.bad9a9e.svg); +} +.mx_RoomSettingsDialog_notificationsIcon:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); +} +.mx_RoomSettingsDialog_bridgesIcon:before { + -webkit-mask-image: url(../../img/feather-customised/bridge.b2ca042.svg); + mask-image: url(../../img/feather-customised/bridge.b2ca042.svg); +} +.mx_RoomSettingsDialog_warningIcon:before { + -webkit-mask-image: url(../../img/element-icons/room/settings/advanced.e079c15.svg); + mask-image: url(../../img/element-icons/room/settings/advanced.e079c15.svg); +} +.mx_RoomSettingsDialog .mx_Dialog_title { + -ms-text-overflow: ellipsis; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + margin: 0 auto; + padding-right: 80px; +} +.mx_RoomSettingsDialog + .mx_AvatarSetting_avatar + .mx_AvatarSetting_avatarPlaceholder:before { + -webkit-mask: url(../../img/feather-customised/image.a8671b8.svg); + mask: url(../../img/feather-customised/image.a8671b8.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 36px; + mask-size: 36px; + -webkit-mask-position: center; + mask-position: center; +} +.mx_RoomSettingsDialog_BridgeList { + padding: 0; +} +.mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton { + display: inline; + margin: 0; + padding: 0; +} +.mx_RoomSettingsDialog_BridgeList li { + list-style-type: none; + padding: 5px; + margin-bottom: 8px; + border: 1px solid transparent; + border-radius: 5px; +} +.mx_RoomSettingsDialog_BridgeList li .column-icon { + float: left; + padding-right: 10px; +} +.mx_RoomSettingsDialog_BridgeList li .column-icon * { + border-radius: 5px; + border: 1px solid #e3e8f0; +} +.mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon { + width: 48px; + height: 48px; + background: #e3e8f0; + border-radius: 5px; +} +.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon { + float: left; + margin-right: 5px; +} +.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img { + border-radius: 5px; + border-width: 1px; + border-color: transparent; +} +.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span { + left: auto; +} +.mx_RoomSettingsDialog_BridgeList li .column-data { + display: inline-block; + width: 85%; +} +.mx_RoomSettingsDialog_BridgeList li .column-data > h3 { + margin-top: 0; + margin-bottom: 0; + font-size: 16pt; + color: #2e2f32; +} +.mx_RoomSettingsDialog_BridgeList li .column-data > * { + margin-top: 4px; + margin-bottom: 0; +} +.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details { + color: #2e2f32; + font-weight: 600; +} +.mx_RoomSettingsDialog_BridgeList + li + .column-data + .workspace-channel-details + .channel { + margin-left: 5px; +} +.mx_RoomSettingsDialog_BridgeList li .column-data .metadata { + color: #61708b; + margin-bottom: 0; + overflow-y: visible; + text-overflow: ellipsis; + white-space: normal; + padding: 0; +} +.mx_RoomSettingsDialog_BridgeList li .column-data .metadata > li { + padding: 0; + border: 0; +} +.mx_RoomUpgradeDialog { + padding-right: 70px; +} +.mx_RoomUpgradeWarningDialog { + max-width: 38vw; + width: 38vw; +} +.mx_RoomUpgradeWarningDialog .mx_SettingsFlag { + font-weight: 700; +} +.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch { + display: inline-block; + vertical-align: middle; + margin-left: 8px; + float: right; +} +.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label { + display: inline-block; + vertical-align: middle; +} +.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content { + padding-right: 85px; + color: #2e2f32; +} +.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr { + border-color: #2e2f32; + opacity: 0.1; + border-bottom: none; +} +.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul { + padding: 16px; +} +.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n + 2) { + margin-top: 16px; +} +.mx_ServerOfflineDialog + .mx_ServerOfflineDialog_content + .mx_ServerOfflineDialog_content_context + .mx_ServerOfflineDialog_content_context_timestamp { + display: inline-block; + width: 115px; + color: #61708b; + line-height: 24px; + vertical-align: top; +} +.mx_ServerOfflineDialog + .mx_ServerOfflineDialog_content + .mx_ServerOfflineDialog_content_context + .mx_ServerOfflineDialog_content_context_timeline { + display: inline-block; + width: calc(100% - 155px); +} +.mx_ServerOfflineDialog + .mx_ServerOfflineDialog_content + .mx_ServerOfflineDialog_content_context + .mx_ServerOfflineDialog_content_context_timeline + .mx_ServerOfflineDialog_content_context_timeline_header + span { + margin-left: 8px; + vertical-align: middle; +} +.mx_ServerOfflineDialog + .mx_ServerOfflineDialog_content + .mx_ServerOfflineDialog_content_context + .mx_ServerOfflineDialog_content_context_timeline + .mx_ServerOfflineDialog_content_context_txn { + position: relative; + margin-top: 8px; +} +.mx_ServerOfflineDialog + .mx_ServerOfflineDialog_content + .mx_ServerOfflineDialog_content_context + .mx_ServerOfflineDialog_content_context_timeline + .mx_ServerOfflineDialog_content_context_txn + .mx_ServerOfflineDialog_content_context_txn_desc { + width: calc(100% - 100px); +} +.mx_ServerOfflineDialog + .mx_ServerOfflineDialog_content + .mx_ServerOfflineDialog_content_context + .mx_ServerOfflineDialog_content_context_timeline + .mx_ServerOfflineDialog_content_context_txn + .mx_AccessibleButton { + float: right; + padding: 0; +} +.mx_ServerPickerDialog { + width: 468px; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_ServerPickerDialog .mx_Dialog_content { + margin-bottom: 0; +} +.mx_ServerPickerDialog .mx_Dialog_content > p { + color: #737d8c; + font-size: 1.4rem; + margin: 16px 0; +} +.mx_ServerPickerDialog .mx_Dialog_content > p:first-of-type { + margin-bottom: 40px; +} +.mx_ServerPickerDialog .mx_Dialog_content > p:last-of-type { + margin: 0 24px 24px; +} +.mx_ServerPickerDialog .mx_Dialog_content > h4 { + font-size: 1.5rem; + font-weight: 600; + color: #737d8c; + margin-left: 8px; +} +.mx_ServerPickerDialog .mx_Dialog_content > a { + color: #0dbd8b; + margin-left: 8px; +} +.mx_ServerPickerDialog + .mx_ServerPickerDialog_otherHomeserverRadio + input[type="radio"] + + div { + margin-top: auto; + margin-bottom: auto; +} +.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver { + border-top: none; + border-left: none; + border-right: none; + border-radius: unset; +} +.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > input { + padding-left: 0; +} +.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > label { + margin-left: 0; +} +.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary { + width: calc(100% - 64px); + margin: 0 8px; + padding: 15px 18px; +} +.mx_SetEmailDialog_email_input { + border-radius: 3px; + border: 1px solid #e7e7e7; + padding: 9px; + color: rgba(74, 74, 74, 0.9); + background-color: #fff; + font-size: 1.5rem; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetEmailDialog_email_input:focus { + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + border: 1px solid #0dbd8b; +} +.mx_RoomSettingsDialog, +.mx_UserSettingsDialog { + width: 90vw; + max-width: 1000px; + height: 80vh; +} +.mx_RoomSettingsDialog .mx_TabbedView, +.mx_UserSettingsDialog .mx_TabbedView { + top: 65px; +} +.mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab, +.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab { + -webkit-box-sizing: border-box; + box-sizing: border-box; + min-width: 580px; + padding-right: 100px; + padding-bottom: 100px; +} +.mx_RoomSettingsDialog .mx_Dialog_title, +.mx_UserSettingsDialog .mx_Dialog_title { + margin-bottom: 24px; +} +.mx_ShareDialog hr { + margin-top: 25px; + margin-bottom: 25px; + border-color: #747474; +} +.mx_ShareDialog_content { + margin: 10px 0; +} +.mx_ShareDialog_matrixto { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + border-radius: 5px; + border: 1px solid #747474; + margin-bottom: 10px; + margin-top: 30px; + padding: 10px; +} +.mx_ShareDialog_matrixto a { + text-decoration: none; +} +.mx_ShareDialog_matrixto_link { + -ms-flex-negative: 1; + flex-shrink: 1; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_ShareDialog_matrixto_copy { + -ms-flex-negative: 0; + flex-shrink: 0; + cursor: pointer; + margin-left: 20px; + display: inherit; +} +.mx_ShareDialog_matrixto_copy > div { + -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + background-color: #2e2f32; + margin-left: 5px; + width: 20px; + height: 20px; + background-repeat: no-repeat; +} +.mx_ShareDialog_split { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_ShareDialog_qrcode_container { + float: left; + height: 256px; + width: 256px; + margin-right: 64px; +} +.mx_ShareDialog_qrcode_container + .mx_ShareDialog_social_container { + width: 299px; +} +.mx_ShareDialog_social_container { + display: inline-block; +} +.mx_ShareDialog_social_icon { + display: inline-grid; + margin-right: 10px; + margin-bottom: 10px; +} +.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2 { + margin-bottom: 2px; +} +.mx_SlashCommandHelpDialog .mx_Dialog_content { + margin-top: 12px; + margin-bottom: 34px; +} +.mx_SpaceSettingsDialog { + width: 480px; + color: #2e2f32; +} +.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText { + font-weight: 600; + font-size: 1.2rem; + line-height: 1.5rem; + color: #ff4b55; + margin-bottom: 28px; +} +.mx_SpaceSettingsDialog .mx_ToggleSwitch { + display: inline-block; + vertical-align: middle; + margin-left: 16px; +} +.mx_SpaceSettingsDialog .mx_AccessibleButton_kind_danger { + margin-top: 28px; +} +.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 64px; +} +.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton { + display: inline-block; +} +.mx_SpaceSettingsDialog + .mx_SpaceSettingsDialog_buttons + .mx_AccessibleButton_kind_link { + margin-left: auto; +} +.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind { + padding: 8px 22px; +} +.mx_TabbedIntegrationManagerDialog .mx_Dialog { + width: 60%; + height: 70%; + overflow: hidden; + padding: 0; + max-width: none; + max-height: none; + position: relative; +} +.mx_TabbedIntegrationManagerDialog_container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_TabbedIntegrationManagerDialog_container + .mx_TabbedIntegrationManagerDialog_currentManager { + width: 100%; + height: 100%; + border-top: 1px solid #0dbd8b; +} +.mx_TabbedIntegrationManagerDialog_container + .mx_TabbedIntegrationManagerDialog_currentManager + iframe { + background-color: #fff; + border: 0; + width: 100%; + height: 100%; +} +.mx_TabbedIntegrationManagerDialog_tab { + display: inline-block; + border: 1px solid #0dbd8b; + border-bottom: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + padding: 10px 8px; + margin-right: 5px; +} +.mx_TabbedIntegrationManagerDialog_currentTab { + background-color: #0dbd8b; + color: #fff; +} +.mx_TermsDialog_forIntegrationManager .mx_Dialog { + width: 60%; + height: 70%; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_TermsDialog_termsTableHeader { + font-weight: 700; + text-align: left; +} +.mx_TermsDialog_termsTable { + font-size: 1.2rem; + width: 100%; +} +.mx_TermsDialog_service, +.mx_TermsDialog_summary { + padding-right: 10px; +} +.mx_TermsDialog_link { + display: inline-block; + -webkit-mask-image: url(../../img/external-link.a8d3e9b.svg); + mask-image: url(../../img/external-link.a8d3e9b.svg); + background-color: #0dbd8b; + width: 10px; + height: 10px; +} +.mx_UntrustedDeviceDialog .mx_Dialog_title { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon { + margin-left: 0; +} +.mx_UploadConfirmDialog_fileIcon { + margin-right: 5px; +} +.mx_UploadConfirmDialog_previewOuter { + text-align: center; +} +.mx_UploadConfirmDialog_previewInner { + display: inline-block; + text-align: left; +} +.mx_UploadConfirmDialog_imagePreview { + max-height: 300px; + max-width: 100%; + border-radius: 4px; + border: 1px solid #c1c1c1; +} +.mx_UserSettingsDialog_settingsIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_UserSettingsDialog_appearanceIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); + mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); +} +.mx_UserSettingsDialog_voiceIcon:before { + -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); + mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); +} +.mx_UserSettingsDialog_bellIcon:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); +} +.mx_UserSettingsDialog_preferencesIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings/preference.82bfabd.svg); + mask-image: url(../../img/element-icons/settings/preference.82bfabd.svg); +} +.mx_UserSettingsDialog_securityIcon:before { + -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); + mask-image: url(../../img/element-icons/security.66f2fa6.svg); +} +.mx_UserSettingsDialog_helpIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings/help.68b703f.svg); + mask-image: url(../../img/element-icons/settings/help.68b703f.svg); +} +.mx_UserSettingsDialog_labsIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg); + mask-image: url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg); +} +.mx_UserSettingsDialog_mjolnirIcon:before { + -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); + mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); +} +.mx_UserSettingsDialog_flairIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings/flair.4227a88.svg); + mask-image: url(../../img/element-icons/settings/flair.4227a88.svg); +} +.mx_WidgetCapabilitiesPromptDialog .text-muted { + font-size: 1.2rem; +} +.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content { + margin-bottom: 16px; +} +.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap { + margin-top: 20px; + font-size: 1.5rem; + line-height: 1.5rem; +} +.mx_WidgetCapabilitiesPromptDialog + .mx_WidgetCapabilitiesPromptDialog_cap + .mx_WidgetCapabilitiesPromptDialog_byline { + color: #61708b; + margin-left: 26px; + font-size: 1.2rem; + line-height: 1.2rem; +} +.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons { + margin-top: 40px; +} +.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag { + line-height: calc(1.4rem + 14px); + color: #61708b; + font-size: 1.2rem; +} +.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch { + display: inline-block; + vertical-align: middle; + margin-right: 8px; + width: 3.2rem; + height: 1.5rem; +} +.mx_WidgetCapabilitiesPromptDialog + .mx_SettingsFlag + .mx_ToggleSwitch.mx_ToggleSwitch_on + > .mx_ToggleSwitch_ball { + left: calc(100% - 1.5rem); +} +.mx_WidgetCapabilitiesPromptDialog + .mx_SettingsFlag + .mx_ToggleSwitch + .mx_ToggleSwitch_ball { + width: 1.5rem; + height: 1.5rem; + border-radius: 1.5rem; +} +.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label { + display: inline-block; + vertical-align: middle; +} +.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch { + display: inline-block; + vertical-align: middle; + margin-right: 8px; +} +.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label { + display: inline-block; + vertical-align: middle; +} +.mx_AccessSecretStorageDialog_reset { + position: relative; + padding-left: 24px; + margin-top: 7px; +} +.mx_AccessSecretStorageDialog_reset:before { + content: ""; + display: inline-block; + position: absolute; + height: 16px; + width: 16px; + left: 0; + top: 2px; + background-image: url(../../img/element-icons/warning-badge.de1033e.svg); +} +.mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link { + color: #ff4b55; +} +.mx_AccessSecretStorageDialog_titleWithIcon:before { + content: ""; + display: inline-block; + width: 24px; + height: 24px; + margin-right: 8px; + position: relative; + top: 5px; + background-color: #2e2f32; +} +.mx_AccessSecretStorageDialog_resetBadge:before { + background-image: url(../../img/element-icons/warning-badge.de1033e.svg); + background-size: 24px; + background-color: transparent; +} +.mx_AccessSecretStorageDialog_secureBackupTitle:before { + -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); + mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); +} +.mx_AccessSecretStorageDialog_securePhraseTitle:before { + -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); + mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); +} +.mx_AccessSecretStorageDialog_keyStatus { + height: 30px; +} +.mx_AccessSecretStorageDialog_passPhraseInput { + width: 300px; + border: 1px solid #0dbd8b; + border-radius: 5px; + padding: 10px; +} +.mx_AccessSecretStorageDialog_recoveryKeyEntry { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText { + margin: 16px; +} +.mx_AccessSecretStorageDialog_recoveryKeyFeedback:before { + content: ""; + display: inline-block; + vertical-align: bottom; + width: 20px; + height: 20px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 20px; + mask-size: 20px; + margin-right: 5px; +} +.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid { + color: #0dbd8b; +} +.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before { + -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); + mask-image: url(../../img/feather-customised/check.5745b4e.svg); + background-color: #0dbd8b; +} +.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid { + color: #ff4b55; +} +.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before { + -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); + mask-image: url(../../img/feather-customised/x.9662221.svg); + background-color: #ff4b55; +} +.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput { + display: none; +} +.mx_CreateCrossSigningDialog { + width: 560px; +} +.mx_CreateCrossSigningDialog details .mx_AccessibleButton { + margin: 1em 0; +} +.mx_CreateCrossSigningDialog .mx_Dialog_title, +.mx_CreateKeyBackupDialog .mx_Dialog_title { + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_primaryContainer { + padding: 20px; +} +.mx_CreateKeyBackupDialog_primaryContainer:after { + content: ""; + clear: both; + display: block; +} +.mx_CreateKeyBackupDialog_passPhraseContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_CreateKeyBackupDialog_passPhraseInput { + -webkit-box-flex: 0; + -ms-flex: none; + flex: none; + width: 250px; + border: 1px solid #0dbd8b; + border-radius: 5px; + padding: 10px; + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_passPhraseMatch { + margin-left: 20px; +} +.mx_CreateKeyBackupDialog_recoveryKeyHeader { + margin-bottom: 1em; +} +.mx_CreateKeyBackupDialog_recoveryKeyContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateKeyBackupDialog_recoveryKey { + width: 262px; + padding: 20px; + color: #888; + background-color: #f7f7f7; + margin-right: 12px; +} +.mx_CreateKeyBackupDialog_recoveryKeyButtons { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_CreateKeyBackupDialog_recoveryKeyButtons button { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + white-space: nowrap; +} +.mx_CreateKeyBackupDialog details .mx_AccessibleButton { + margin: 1em 0; +} +.mx_CreateSecretStorageDialog { + width: 560px; +} +.mx_CreateSecretStorageDialog .mx_SettingsFlag { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateSecretStorageDialog .mx_SettingsFlag_label { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + min-width: 0; + font-weight: 600; +} +.mx_CreateSecretStorageDialog .mx_ToggleSwitch { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-left: 30px; +} +.mx_CreateSecretStorageDialog details .mx_AccessibleButton { + margin: 1em 0; +} +.mx_CreateSecretStorageDialog .mx_Dialog_title { + margin-bottom: 1em; +} +.mx_CreateSecretStorageDialog_titleWithIcon:before { + content: ""; + display: inline-block; + width: 24px; + height: 24px; + margin-right: 8px; + position: relative; + top: 5px; + background-color: #2e2f32; +} +.mx_CreateSecretStorageDialog_secureBackupTitle:before { + -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); + mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); +} +.mx_CreateSecretStorageDialog_securePhraseTitle:before { + -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); + mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); +} +.mx_CreateSecretStorageDialog_centeredBody, +.mx_CreateSecretStorageDialog_centeredTitle { + text-align: center; +} +.mx_CreateSecretStorageDialog_primaryContainer { + padding-top: 20px; +} +.mx_CreateSecretStorageDialog_primaryContainer:after { + content: ""; + clear: both; + display: block; +} +.mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton { + margin-bottom: 16px; + padding: 11px; +} +.mx_CreateSecretStorageDialog_optionTitle { + color: #45474a; + font-weight: 600; + font-size: 1.8rem; + padding-bottom: 10px; +} +.mx_CreateSecretStorageDialog_optionIcon { + display: inline-block; + width: 24px; + height: 24px; + margin-right: 8px; + position: relative; + top: 5px; + background-color: #2e2f32; +} +.mx_CreateSecretStorageDialog_optionIcon_securePhrase { + -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); + mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); +} +.mx_CreateSecretStorageDialog_optionIcon_secureBackup { + -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); + mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); +} +.mx_CreateSecretStorageDialog_passPhraseContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_Field.mx_CreateSecretStorageDialog_passPhraseField { + margin-top: 0; +} +.mx_CreateSecretStorageDialog_passPhraseMatch { + width: 200px; + margin-left: 20px; +} +.mx_CreateSecretStorageDialog_recoveryKeyContainer { + width: 380px; + margin-left: auto; + margin-right: auto; +} +.mx_CreateSecretStorageDialog_recoveryKey { + font-weight: 700; + text-align: center; + padding: 20px; + color: #888; + background-color: #f7f7f7; + border-radius: 6px; + word-spacing: 1em; + margin-bottom: 20px; +} +.mx_CreateSecretStorageDialog_recoveryKeyButtons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton { + width: 160px; + padding-left: 0; + padding-right: 0; + white-space: nowrap; +} +.mx_CreateSecretStorageDialog_continueSpinner { + margin-top: 33px; + text-align: right; +} +.mx_CreateSecretStorageDialog_continueSpinner img { + width: 20px; + height: 20px; +} +.mx_KeyBackupFailedDialog .mx_Dialog_title { + margin-bottom: 32px; +} +.mx_KeyBackupFailedDialog_title { + position: relative; + padding-left: 45px; + padding-bottom: 10px; +} +.mx_KeyBackupFailedDialog_title:before { + -webkit-mask: url(../../img/e2e/lock-warning-filled.993fb6c.svg); + mask: url(../../img/e2e/lock-warning-filled.993fb6c.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #2e2f32; + content: ""; + position: absolute; + top: -6px; + right: 0; + bottom: 0; + left: 0; +} +.mx_KeyBackupFailedDialog .mx_Dialog_buttons { + margin-top: 36px; +} +.mx_RestoreKeyBackupDialog_keyStatus { + height: 30px; +} +.mx_RestoreKeyBackupDialog_primaryContainer { + padding: 20px; +} +.mx_RestoreKeyBackupDialog_passPhraseInput, +.mx_RestoreKeyBackupDialog_recoveryKeyInput { + width: 300px; + border: 1px solid #0dbd8b; + border-radius: 5px; + padding: 10px; +} +.mx_RestoreKeyBackupDialog_content > div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + min-height: 110px; +} +.mx_NetworkDropdown { + height: 32px; + position: relative; + padding-right: 32px; + margin-left: auto; + margin-right: 9px; + margin-top: 12px; +} +.mx_NetworkDropdown, +.mx_NetworkDropdown .mx_AccessibleButton { + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} +.mx_NetworkDropdown_menu { + min-width: 204px; + margin: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 4px; + border: 1px solid #c1c1c1; + background-color: #fff; + max-height: calc(100vh - 20px); + overflow-y: auto; +} +.mx_NetworkDropdown_menu_network { + font-weight: 700; +} +.mx_NetworkDropdown_server { + padding: 12px 0; + border-bottom: 1px solid #9fa9ba; +} +.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title { + padding: 0 10px; + font-size: 1.5rem; + font-weight: 600; + line-height: 2rem; + margin-bottom: 4px; + position: relative; +} +.mx_NetworkDropdown_server + .mx_NetworkDropdown_server_title + .mx_AccessibleButton { + position: absolute; + display: inline; + right: 10px; + height: 16px; + width: 16px; + margin-top: 2px; +} +.mx_NetworkDropdown_server + .mx_NetworkDropdown_server_title + .mx_AccessibleButton:after { + content: ""; + position: absolute; + width: 16px; + height: 16px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); + mask-image: url(../../img/feather-customised/x.9662221.svg); + background-color: #ff4b55; +} +.mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle { + padding: 0 10px; + font-size: 1rem; + line-height: 1.4rem; + margin-top: -4px; + margin-bottom: 4px; + color: #61708b; +} +.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network { + font-size: 1.2rem; + line-height: 1.6rem; + padding: 4px 10px; + cursor: pointer; + position: relative; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mx_NetworkDropdown_server + .mx_NetworkDropdown_server_network[aria-checked="true"]:after { + content: ""; + position: absolute; + width: 16px; + height: 16px; + right: 10px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); + mask-image: url(../../img/feather-customised/check.5745b4e.svg); + background-color: #0dbd8b; +} +.mx_NetworkDropdown_server_add:hover, +.mx_NetworkDropdown_server_network:hover { + background-color: #f3f8fd; +} +.mx_NetworkDropdown_server_add { + padding: 16px 10px 16px 32px; + position: relative; + border-radius: 0 0 4px 4px; +} +.mx_NetworkDropdown_server_add:before { + content: ""; + position: absolute; + width: 16px; + height: 16px; + left: 7px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/feather-customised/plus.38ae979.svg); + mask-image: url(../../img/feather-customised/plus.38ae979.svg); + background-color: #61708b; +} +.mx_NetworkDropdown_handle { + position: relative; +} +.mx_NetworkDropdown_handle:after { + content: ""; + position: absolute; + width: 26px; + height: 26px; + right: -27.5px; + top: -3px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); + mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); + background-color: #2e2f32; +} +.mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server { + color: #61708b; + font-size: 1.2rem; +} +.mx_NetworkDropdown_dialog .mx_Dialog { + width: 45vw; +} +.mx_AccessibleButton { + cursor: pointer; +} +.mx_AccessibleButton_disabled { + cursor: default; +} +.mx_AccessibleButton_hasKind { + padding: 7px 18px; + text-align: center; + border-radius: 8px; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + font-size: 1.4rem; +} +.mx_AccessibleButton_kind_primary { + color: #fff; + background-color: #0dbd8b; + font-weight: 600; +} +.mx_AccessibleButton_kind_primary_outline { + color: #0dbd8b; + background-color: #fff; + border: 1px solid #0dbd8b; + font-weight: 600; +} +.mx_AccessibleButton_kind_secondary { + color: #0dbd8b; + font-weight: 600; +} +.mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled, +.mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled { + opacity: 0.4; +} +.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm { + padding: 5px 12px; + color: #fff; + background-color: #0dbd8b; +} +.mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled { + opacity: 0.4; +} +.mx_AccessibleButton_kind_danger { + color: #fff; + background-color: #ff4b55; +} +.mx_AccessibleButton_kind_danger_outline { + color: #ff4b55; + background-color: #fff; + border: 1px solid #ff4b55; +} +.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled { + color: #fff; + background-color: #f5b6bb; +} +.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled { + color: #f5b6bb; + border-color: #f5b6bb; +} +.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm { + padding: 5px 12px; + color: #fff; + background-color: #ff4b55; +} +.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled { + color: #fff; + background-color: #f5b6bb; +} +.mx_AccessibleButton_kind_link { + color: #0dbd8b; + background-color: transparent; +} +.mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled { + opacity: 0.4; +} +.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm { + padding: 5px 12px; + color: #0dbd8b; + background-color: transparent; +} +.mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled { + opacity: 0.4; +} +.mx_AddressSelector { + position: absolute; + background-color: #fff; + width: 485px; + max-height: 116px; + overflow-y: auto; + border-radius: 3px; + border: 1px solid #0dbd8b; + cursor: pointer; + z-index: 1; +} +.mx_AddressSelector.mx_AddressSelector_empty { + display: none; +} +.mx_AddressSelector_addressListElement .mx_AddressTile { + background-color: #fff; + border: 1px solid #fff; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected { + background-color: #f2f5f8; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected + .mx_AddressTile { + background-color: #f2f5f8; + border: 1px solid #f2f5f8; +} +.mx_AddressTile { + display: inline-block; + border-radius: 3px; + background-color: rgba(74, 73, 74, 0.1); + border: 1px solid #e7e7e7; + line-height: 2.6rem; + color: #2e2f32; + font-size: 1.4rem; + font-weight: 400; + margin-right: 4px; +} +.mx_AddressTile.mx_AddressTile_error { + background-color: rgba(255, 0, 100, 0.1); + color: #ff4b55; + border-color: #ff4b55; +} +.mx_AddressTile_network { + padding-right: 4px; +} +.mx_AddressTile_avatar, +.mx_AddressTile_network { + display: inline-block; + position: relative; + padding-left: 2px; + vertical-align: middle; +} +.mx_AddressTile_avatar { + padding-right: 7px; +} +.mx_AddressTile_mx { + display: inline-block; + margin: 0; + border: 0; + padding: 0; +} +.mx_AddressTile_name { + display: inline-block; + padding-right: 4px; + font-weight: 600; + overflow: hidden; + height: 26px; + vertical-align: middle; +} +.mx_AddressTile_name.mx_AddressTile_justified { + width: 180px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_id { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_id.mx_AddressTile_justified { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknownMx { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_unknownMxl.mx_AddressTile_justified { + width: 380px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_email { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_email.mx_AddressTile_justified { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknown { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_unknown.mx_AddressTile_justified { + width: 380px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_dismiss { + display: inline-block; + padding-right: 11px; + padding-left: 1px; + cursor: pointer; +} +.mx_AddressTile_dismiss object { + pointer-events: none; +} +.mx_DesktopBuildsNotice { + text-align: center; + padding: 0 16px; +} +.mx_DesktopBuildsNotice > * { + vertical-align: middle; +} +.mx_DesktopBuildsNotice > img { + margin-right: 8px; +} +.mx_desktopCapturerSourcePicker { + overflow: hidden; +} +.mx_desktopCapturerSourcePicker_tabLabels { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 0 0 8px; +} +.mx_desktopCapturerSourcePicker_tabLabel, +.mx_desktopCapturerSourcePicker_tabLabel_selected { + width: 100%; + text-align: center; + border-radius: 8px; + padding: 8px 0; + font-size: 1.3rem; +} +.mx_desktopCapturerSourcePicker_tabLabel_selected { + background-color: #0dbd8b; + color: #fff; +} +.mx_desktopCapturerSourcePicker_panel { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + height: 500px; + overflow: overlay; +} +.mx_desktopCapturerSourcePicker_stream_button { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin: 8px; + border-radius: 4px; +} +.mx_desktopCapturerSourcePicker_stream_button:focus, +.mx_desktopCapturerSourcePicker_stream_button:hover { + background: #fff; +} +.mx_desktopCapturerSourcePicker_stream_thumbnail { + margin: 4px; + width: 312px; +} +.mx_desktopCapturerSourcePicker_stream_name { + margin: 0 4px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 312px; +} +.mx_DirectorySearchBox { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 9px; + padding-right: 9px; +} +.mx_DirectorySearchBox_joinButton { + display: table-cell; + padding: 3px 10px; + background-color: #f2f5f8; + border-radius: 3px; + background-image: url(../../img/icon-return.cb24475.svg); + background-position: 8px 70%; + background-repeat: no-repeat; + text-indent: 18px; + font-weight: 600; + font-size: 1.2rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.mx_DirectorySearchBox_clear { + background-color: #ff4b55; + -webkit-mask: url(../../img/cancel.4b9715b.svg); + mask: url(../../img/cancel.4b9715b.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 10px; + mask-size: 10px; + width: 15px; + height: 15px; + cursor: pointer; +} +.mx_Dropdown { + position: relative; + color: #2e2f32; +} +.mx_Dropdown_disabled { + opacity: 0.3; +} +.mx_Dropdown_input { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-size: 1.2rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_Dropdown_input.mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_Dropdown_input:focus { + border-color: #238cf5; +} +.mx_Dropdown_input.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_Dropdown_arrow { + width: 10px; + height: 6px; + padding-right: 9px; + -webkit-mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); + mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #2e2f32; +} +.mx_Dropdown_option { + height: 35px; + line-height: 3.5rem; + padding-left: 8px; + padding-right: 8px; +} +.mx_Dropdown_input > .mx_Dropdown_option { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_Dropdown_input > .mx_Dropdown_option, +.mx_Dropdown_option div { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown_option .mx_Dropdown_option_emoji, +.mx_Dropdown_option img { + margin: 5px; + width: 16px; + vertical-align: middle; +} +.mx_Dropdown_option_emoji { + font-size: 1.6rem; + line-height: 1.6rem; +} +input.mx_Dropdown_option, +input.mx_Dropdown_option:focus { + font-weight: 400; + border: 0; + padding-top: 0; + padding-bottom: 0; + width: 60%; +} +.mx_Dropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0; + border-radius: 3px; + border: 1px solid #238cf5; + background-color: #fff; + max-height: 200px; + overflow-y: auto; +} +.mx_Dropdown_menu .mx_Dropdown_option { + height: auto; + min-height: 35px; +} +.mx_Dropdown_menu .mx_Dropdown_option_highlight { + background-color: #ddd; +} +.mx_Dropdown_searchPrompt { + font-weight: 400; + margin-left: 5px; + margin-bottom: 5px; +} +.mx_EditableItemList { + margin-top: 12px; + margin-bottom: 10px; +} +.mx_EditableItem { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 5px; +} +.mx_EditableItem_delete { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + margin-right: 5px; + cursor: pointer; + vertical-align: middle; + width: 14px; + height: 14px; + -webkit-mask-image: url(../../img/feather-customised/cancel.23c2689.svg); + mask-image: url(../../img/feather-customised/cancel.23c2689.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #ff4b55; + -webkit-mask-size: 100%; + mask-size: 100%; +} +.mx_EditableItem_email { + vertical-align: middle; +} +.mx_EditableItem_promptText { + margin-right: 10px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_EditableItem_confirmBtn { + margin-right: 5px; +} +.mx_EditableItem_item { + -webkit-box-flex: 1; + -ms-flex: auto 1 0px; + flex: auto 1 0; + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + width: calc(100% - 14px); + overflow-x: hidden; + text-overflow: ellipsis; +} +.mx_EditableItemList_label { + margin-bottom: 5px; +} +.mx_ErrorBoundary { + width: 100%; + height: 100%; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_ErrorBoundary, +.mx_ErrorBoundary_body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ErrorBoundary_body { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 400px; +} +.mx_ErrorBoundary_body .mx_AccessibleButton { + margin-top: 5px; +} +.mx_EventListSummary { + position: relative; +} +.mx_TextualEvent.mx_EventListSummary_summary { + font-size: 1.4rem; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_EventListSummary_avatars { + display: inline-block; + margin-right: 8px; + padding-top: 8px; + line-height: 1.2rem; +} +.mx_EventListSummary_avatars .mx_BaseAvatar { + margin-right: -4px; + cursor: pointer; +} +.mx_EventListSummary_toggle { + color: #0dbd8b; + cursor: pointer; + float: right; + margin-right: 10px; + margin-top: 8px; +} +.mx_EventListSummary_line { + border-bottom: 1px solid transparent; + margin-left: 63px; + line-height: 3rem; +} +.mx_MatrixChat_useCompactLayout .mx_EventListSummary { + font-size: 1.3rem; +} +.mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line { + line-height: 2rem; +} +.mx_MatrixChat_useCompactLayout .mx_EventListSummary_line { + line-height: 2.2rem; +} +.mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle { + margin-top: 3px; +} +.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary { + font-size: 1.3rem; +} +.mx_FacePile .mx_FacePile_faces { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; + vertical-align: middle; +} +.mx_FacePile .mx_FacePile_faces > .mx_FacePile_face + .mx_FacePile_face { + margin-right: -8px; +} +.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image { + border: 1px solid #fff; +} +.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial { + margin: 1px; +} +.mx_FacePile .mx_FacePile_faces .mx_FacePile_more { + position: relative; + border-radius: 100%; + width: 30px; + height: 30px; + background-color: hsla(0, 0%, 91%, 0.77); +} +.mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before { + content: ""; + z-index: 1; + position: absolute; + top: 0; + left: 0; + height: inherit; + width: inherit; + background: #8d99a5; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); + mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); +} +.mx_FacePile .mx_FacePile_summary { + margin-left: 12px; + font-size: 1.4rem; + line-height: 2.4rem; + color: #8d99a5; +} +.mx_Field { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-width: 0; + position: relative; + margin: 1em 0; + border-radius: 4px; + -webkit-transition: border-color 0.25s; + transition: border-color 0.25s; + border: 1px solid #e7e7e7; +} +.mx_Field_prefix { + border-right: 1px solid #e7e7e7; +} +.mx_Field_postfix { + border-left: 1px solid #e7e7e7; +} +.mx_Field input, +.mx_Field select, +.mx_Field textarea { + font-weight: 400; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-size: 1.4rem; + border: none; + border-radius: 4px; + padding: 8px 9px; + color: #2e2f32; + background-color: #fff; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-width: 0; +} +.mx_Field select { + -moz-appearance: none; + -webkit-appearance: none; +} +.mx_Field_select:before { + content: ""; + position: absolute; + top: 15px; + right: 10px; + width: 10px; + height: 6px; + -webkit-mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); + mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #2e2f32; + z-index: 1; + pointer-events: none; +} +.mx_Field:focus-within { + border-color: #238cf5; +} +.mx_Field input:focus, +.mx_Field select:focus, +.mx_Field textarea:focus { + outline: 0; +} +.mx_Field input::-webkit-input-placeholder, +.mx_Field textarea::-webkit-input-placeholder { + -webkit-transition: color 0.25s ease-in 0s; + transition: color 0.25s ease-in 0s; + color: transparent; +} +.mx_Field input::-moz-placeholder, +.mx_Field textarea::-moz-placeholder { + -moz-transition: color 0.25s ease-in 0s; + transition: color 0.25s ease-in 0s; + color: transparent; +} +.mx_Field input:-ms-input-placeholder, +.mx_Field textarea:-ms-input-placeholder { + -ms-transition: color 0.25s ease-in 0s; + transition: color 0.25s ease-in 0s; + color: transparent; +} +.mx_Field input::-ms-input-placeholder, +.mx_Field textarea::-ms-input-placeholder { + -ms-transition: color 0.25s ease-in 0s; + transition: color 0.25s ease-in 0s; + color: transparent; +} +.mx_Field input::placeholder, +.mx_Field textarea::placeholder { + -webkit-transition: color 0.25s ease-in 0s; + transition: color 0.25s ease-in 0s; + color: transparent; +} +.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder, +.mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder { + -webkit-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field input:placeholder-shown:focus::-moz-placeholder, +.mx_Field textarea:placeholder-shown:focus::-moz-placeholder { + -moz-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field input:placeholder-shown:focus:-ms-input-placeholder, +.mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder { + -ms-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field input:placeholder-shown:focus::-ms-input-placeholder, +.mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder { + -ms-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field input:-moz-placeholder-shown:focus::placeholder, +.mx_Field textarea:-moz-placeholder-shown:focus::placeholder { + -moz-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field input:-ms-input-placeholder:focus::placeholder, +.mx_Field textarea:-ms-input-placeholder:focus::placeholder { + -ms-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field input:placeholder-shown:focus::placeholder, +.mx_Field textarea:placeholder-shown:focus::placeholder { + -webkit-transition: color 0.25s ease-in 0.1s; + transition: color 0.25s ease-in 0.1s; + color: #888; +} +.mx_Field label { + -webkit-transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, + top 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s; + transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, + top 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s; + color: #2e2f32; + background-color: transparent; + font-size: 1.4rem; + position: absolute; + left: 0; + top: 0; + margin: 7px 8px; + padding: 2px; + pointer-events: none; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: calc(100% - 20px); +} +.mx_Field input:not(:-moz-placeholder-shown) + label, +.mx_Field textarea:not(:-moz-placeholder-shown) + label { + -moz-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, + top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; + transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, + top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; + font-size: 1rem; + top: -13px; + padding: 0 2px; + background-color: #fff; + pointer-events: auto; +} +.mx_Field input:not(:-ms-input-placeholder) + label, +.mx_Field textarea:not(:-ms-input-placeholder) + label { + -ms-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, + top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; + transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, + top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; + font-size: 1rem; + top: -13px; + padding: 0 2px; + background-color: #fff; + pointer-events: auto; +} +.mx_Field_labelAlwaysTopLeft label, +.mx_Field input:focus + label, +.mx_Field input:not(:placeholder-shown) + label, +.mx_Field select + label, +.mx_Field textarea:focus + label, +.mx_Field textarea:not(:placeholder-shown) + label { + -webkit-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, + top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; + transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, + top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; + font-size: 1rem; + top: -13px; + padding: 0 2px; + background-color: #fff; + pointer-events: auto; +} +.mx_Field input:focus + label, +.mx_Field select:focus + label, +.mx_Field textarea:focus + label { + color: #238cf5; +} +.mx_Field input:disabled, +.mx_Field input:disabled + label, +.mx_Field select:disabled, +.mx_Field select:disabled + label, +.mx_Field textarea:disabled, +.mx_Field textarea:disabled + label { + background-color: #fff; + color: #888; +} +.mx_Field_valid.mx_Field, +.mx_Field_valid.mx_Field:focus-within { + border-color: #0dbd8b; +} +.mx_Field_valid.mx_Field:focus-within label, +.mx_Field_valid.mx_Field label { + color: #0dbd8b; +} +.mx_Field_invalid.mx_Field, +.mx_Field_invalid.mx_Field:focus-within { + border-color: #ff4b55; +} +.mx_Field_invalid.mx_Field:focus-within label, +.mx_Field_invalid.mx_Field label { + color: #ff4b55; +} +.mx_Field_tooltip { + margin-top: -12px; + margin-left: 4px; + width: 200px; +} +.mx_Field_tooltip.mx_Field_valid { + -webkit-animation: mx_fadeout 1s 2s forwards; + animation: mx_fadeout 1s 2s forwards; +} +.mx_Field .mx_Dropdown_input { + border: initial; + border-radius: 0; + border-radius: initial; +} +.mx_Field .mx_CountryDropdown { + width: 7.8rem; +} +.mx_FormButton { + line-height: 1.6rem; + padding: 5px 15px; + font-size: 1.2rem; + height: -webkit-min-content; + height: -moz-min-content; + height: min-content; +} +.mx_FormButton:not(:last-child) { + margin-right: 8px; +} +.mx_FormButton.mx_AccessibleButton_kind_primary { + color: #0dbd8b; + background-color: rgba(3, 179, 129, 0.16); +} +.mx_FormButton.mx_AccessibleButton_kind_danger { + color: #ff4b55; + background-color: rgba(255, 75, 85, 0.16); +} +.mx_FormButton.mx_AccessibleButton_kind_secondary { + color: #737d8c; + border: 1px solid #737d8c; + background-color: unset; +} +.mx_ImageView { + width: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_ImageView, +.mx_ImageView_image_wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; +} +.mx_ImageView_image_wrapper { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + overflow: hidden; +} +.mx_ImageView_image { + pointer-events: all; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.mx_ImageView_panel { + width: 100%; + height: 68px; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_ImageView_info_wrapper, +.mx_ImageView_panel { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ImageView_info_wrapper { + pointer-events: all; + padding-left: 32px; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + color: #fff; +} +.mx_ImageView_info { + padding-left: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_ImageView_info_sender { + font-weight: 700; +} +.mx_ImageView_toolbar { + padding-right: 16px; + pointer-events: all; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ImageView_button { + margin-left: 24px; + display: block; +} +.mx_ImageView_button:before { + content: ""; + height: 22px; + width: 22px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; + display: block; + background-color: #c1c6cd; +} +.mx_ImageView_button_rotateCW:before { + -webkit-mask-image: url(../../img/image-view/rotate-cw.60d903e.svg); + mask-image: url(../../img/image-view/rotate-cw.60d903e.svg); +} +.mx_ImageView_button_rotateCCW:before { + -webkit-mask-image: url(../../img/image-view/rotate-ccw.b28ae4a.svg); + mask-image: url(../../img/image-view/rotate-ccw.b28ae4a.svg); +} +.mx_ImageView_button_zoomOut:before { + -webkit-mask-image: url(../../img/image-view/zoom-out.8506f80.svg); + mask-image: url(../../img/image-view/zoom-out.8506f80.svg); +} +.mx_ImageView_button_zoomIn:before { + -webkit-mask-image: url(../../img/image-view/zoom-in.3b3f32e.svg); + mask-image: url(../../img/image-view/zoom-in.3b3f32e.svg); +} +.mx_ImageView_button_download:before { + -webkit-mask-image: url(../../img/image-view/download.2eac468.svg); + mask-image: url(../../img/image-view/download.2eac468.svg); +} +.mx_ImageView_button_more:before { + -webkit-mask-image: url(../../img/image-view/more.0427c6c.svg); + mask-image: url(../../img/image-view/more.0427c6c.svg); +} +.mx_ImageView_button_close { + border-radius: 100%; + background: #21262c; +} +.mx_ImageView_button_close:before { + width: 32px; + height: 32px; + -webkit-mask-image: url(../../img/image-view/close.97d1731.svg); + mask-image: url(../../img/image-view/close.97d1731.svg); + -webkit-mask-size: 40%; + mask-size: 40%; +} +.mx_InfoTooltip_icon, +.mx_InfoTooltip_icon:before { + width: 16px; + height: 16px; + display: inline-block; +} +.mx_InfoTooltip_icon:before { + background-color: #61708b; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 16px; + mask-size: 16px; + -webkit-mask-position: center; + mask-position: center; + content: ""; + vertical-align: middle; + -webkit-mask-image: url(../../img/element-icons/info.dc07e19.svg); + mask-image: url(../../img/element-icons/info.dc07e19.svg); +} +.mx_InlineSpinner { + display: inline; +} +.mx_InlineSpinner_spin img { + margin: 0 6px; + vertical-align: -3px; +} +.mx_InviteReason { + position: relative; + margin-bottom: 1em; +} +.mx_InviteReason .mx_InviteReason_reason { + visibility: visible; +} +.mx_InviteReason .mx_InviteReason_view { + display: none; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; + color: #737d8c; +} +.mx_InviteReason .mx_InviteReason_view:before { + content: ""; + margin-right: 8px; + background-color: #737d8c; + -webkit-mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); + mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); + display: inline-block; + width: 18px; + height: 14px; +} +.mx_InviteReason_hidden .mx_InviteReason_reason { + visibility: hidden; +} +.mx_InviteReason_hidden .mx_InviteReason_view { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ManageIntegsButton_error { + position: relative; + float: right; + cursor: not-allowed; +} +.mx_ManageIntegsButton_error img { + position: absolute; + right: -5px; + top: -5px; +} +.mx_ManageIntegsButton_errorPopup { + position: absolute; + top: 110%; + left: -275%; + width: 550%; + padding: 30%; + font-size: 10pt; + line-height: 1.5em; + border-radius: 5px; + background-color: #0dbd8b; + color: #fff; + text-align: center; + z-index: 1000; +} +.mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup { + display: none; +} +.mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup { + display: inline; +} +.mx_MiniAvatarUploader { + position: relative; + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; +} +.mx_MiniAvatarUploader .mx_Tooltip { + display: inline-block; + position: absolute; + z-index: unset; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + left: 72px; + top: 0; +} +.mx_MiniAvatarUploader:after, +.mx_MiniAvatarUploader:before { + content: ""; + position: absolute; + height: 26px; + width: 26px; + right: -6px; + bottom: -6px; +} +.mx_MiniAvatarUploader:before { + background-color: #fff; + border-radius: 50%; + z-index: 1; +} +.mx_MiniAvatarUploader:after { + background-color: #737d8c; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/element-icons/camera.a81a395.svg); + mask-image: url(../../img/element-icons/camera.a81a395.svg); + -webkit-mask-size: 16px; + mask-size: 16px; + z-index: 2; +} +.mx_MiniAvatarUploader.mx_MiniAvatarUploader_busy:after { + background: url(../../img/spinner.0b29ec9.gif) no-repeat 50%; + background-size: 80%; + -webkit-mask: unset; + mask: unset; +} +.mx_MiniAvatarUploader_input { + display: none; +} +.mx_PowerSelector { + width: 100%; +} +.mx_PowerSelector .mx_Field input, +.mx_PowerSelector .mx_Field select { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +progress.mx_ProgressBar { + height: 6px; + width: 60px; + overflow: hidden; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; + border-radius: 6px; +} +progress.mx_ProgressBar::-moz-progress-bar { + border-radius: 6px; +} +progress.mx_ProgressBar::-webkit-progress-bar, +progress.mx_ProgressBar::-webkit-progress-value { + border-radius: 6px; +} +progress.mx_ProgressBar { + color: #0dbd8b; +} +progress.mx_ProgressBar::-moz-progress-bar { + background-color: #0dbd8b; +} +progress.mx_ProgressBar::-webkit-progress-value { + background-color: #0dbd8b; +} +progress.mx_ProgressBar { + background-color: rgba(141, 151, 165, 0.2); +} +progress.mx_ProgressBar::-webkit-progress-bar { + background-color: rgba(141, 151, 165, 0.2); +} +progress.mx_ProgressBar ::-webkit-progress-value { + -webkit-transition: width 1s; + transition: width 1s; +} +progress.mx_ProgressBar ::-moz-progress-bar { + -moz-transition: padding-bottom 1s; + transition: padding-bottom 1s; + padding-bottom: var(--value); + transform-origin: 0 0; + transform: rotate(-90deg) translateX(-15px); + padding-left: 15px; + height: 0; +} +.mx_QRCode img { + border-radius: 8px; +} +.mx_ReplyThread { + margin-top: 0; +} +.mx_ReplyThread .mx_DateSeparator { + font-size: 1em !important; + margin-top: 0; + margin-bottom: 0; + padding-bottom: 1px; + bottom: -5px; +} +.mx_ReplyThread_show { + cursor: pointer; +} +blockquote.mx_ReplyThread { + margin-left: 0; + padding-left: 10px; + border-left: 4px solid #ddd; +} +.mx_ResizeHandle { + cursor: row-resize; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + z-index: 100; +} +.mx_ResizeHandle.mx_ResizeHandle_horizontal { + margin: 0 -5px; + padding: 0 5px; + cursor: col-resize; +} +.mx_ResizeHandle.mx_ResizeHandle_vertical { + margin: -5px 0; + padding: 5px 0; + cursor: row-resize; +} +.mx_MatrixChat > .mx_ResizeHandle.mx_ResizeHandle_horizontal { + margin: 0 -10px 0 0; + padding: 0 8px 0 0; +} +.mx_ResizeHandle > div { + background: transparent; +} +.mx_ResizeHandle.mx_ResizeHandle_horizontal > div { + width: 1px; + height: 100%; +} +.mx_ResizeHandle.mx_ResizeHandle_vertical > div { + height: 1px; +} +.mx_AtRoomPill, +.mx_GroupPill, +.mx_RoomPill, +.mx_UserPill { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + vertical-align: middle; + border-radius: 1.6rem; + line-height: 1.5rem; + padding-left: 0; +} +a.mx_Pill { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + max-width: calc(100% - 1ch); +} +.mx_Pill { + padding: 0.1rem 0.4em 0.1rem 0.1rem; + vertical-align: text-top; + line-height: 1.7rem; +} +.mx_EventTile_content .markdown-body a.mx_GroupPill, +.mx_GroupPill { + color: #fff; + background-color: #aaa; +} +.mx_EventTile_content .markdown-body a.mx_Pill { + text-decoration: none; +} +.mx_EventTile_content .markdown-body a.mx_UserPill, +.mx_UserPill { + color: #2e2f32; + background-color: rgba(0, 0, 0, 0.1); +} +.mx_UserPill_selected { + background-color: #0dbd8b !important; +} +.mx_EventTile_content .markdown-body a.mx_AtRoomPill, +.mx_EventTile_content .mx_AtRoomPill, +.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, +.mx_MessageComposer_input .mx_AtRoomPill { + color: #fff; + background-color: #ff4b55; +} +.mx_EventTile_content .markdown-body a.mx_GroupPill, +.mx_EventTile_content .markdown-body a.mx_RoomPill, +.mx_GroupPill, +.mx_RoomPill { + color: #fff; + background-color: #aaa; +} +.mx_EventTile_body .mx_GroupPill, +.mx_EventTile_body .mx_RoomPill, +.mx_EventTile_body .mx_UserPill { + cursor: pointer; +} +.mx_AtRoomPill .mx_BaseAvatar, +.mx_GroupPill .mx_BaseAvatar, +.mx_RoomPill .mx_BaseAvatar, +.mx_UserPill .mx_BaseAvatar { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border-radius: 10rem; + margin-right: 0.24rem; +} +.mx_Markdown_BOLD { + font-weight: 700; +} +.mx_Markdown_ITALIC { + font-style: italic; +} +.mx_Markdown_CODE { + padding: 0.2em 0; + margin: 0; + font-size: 85%; + background-color: rgba(0, 0, 0, 0.04); + border-radius: 3px; +} +.mx_Markdown_HR { + display: block; + background: #e9e9e9; +} +.mx_Markdown_STRIKETHROUGH { + text-decoration: line-through; +} +.mx_RoleButton { + margin-left: 4px; + margin-right: 4px; + cursor: pointer; + display: inline-block; +} +.mx_RoleButton object { + pointer-events: none; +} +.mx_RoleButton_tooltip { + display: inline-block; + position: relative; + top: -25px; + left: 6px; +} +.mx_RoomAliasField { + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + min-width: 0; + max-width: 100%; +} +.mx_RoomAliasField input { + width: 150px; + padding-left: 0; + padding-right: 0; +} +.mx_RoomAliasField input::-webkit-input-placeholder { + color: #888; + font-weight: 400; +} +.mx_RoomAliasField input::-moz-placeholder { + color: #888; + font-weight: 400; +} +.mx_RoomAliasField input:-ms-input-placeholder { + color: #888; + font-weight: 400; +} +.mx_RoomAliasField input::-ms-input-placeholder { + color: #888; + font-weight: 400; +} +.mx_RoomAliasField input::placeholder { + color: #888; + font-weight: 400; +} +.mx_RoomAliasField .mx_Field_postfix, +.mx_RoomAliasField .mx_Field_prefix { + color: #888; + border-left: none; + border-right: none; + font-weight: 600; + padding: 9px 10px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_RoomAliasField .mx_Field_postfix { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + max-width: calc(100% - 180px); +} +.mx_SSOButtons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_SSOButtons .mx_SSOButtons_row + .mx_SSOButtons_row { + margin-top: 16px; +} +.mx_SSOButtons .mx_SSOButton { + position: relative; + width: 100%; + padding: 7px 32px; + text-align: center; + border-radius: 8px; + display: inline-block; + font-size: 1.4rem; + font-weight: 600; + border: 1px solid #e7e7e7; + color: #2e2f32; +} +.mx_SSOButtons .mx_SSOButton > img { + -o-object-fit: contain; + object-fit: contain; + position: absolute; + left: 8px; + top: 4px; +} +.mx_SSOButtons .mx_SSOButton_default { + color: #0dbd8b; + background-color: #fff; + border-color: #0dbd8b; +} +.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary { + color: #fff; + background-color: #0dbd8b; +} +.mx_SSOButtons .mx_SSOButton_mini { + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 50px; + height: 50px; + min-width: 50px; + padding: 12px; +} +.mx_SSOButtons .mx_SSOButton_mini > img { + left: 12px; + top: 12px; +} +.mx_SSOButtons .mx_SSOButton_mini + .mx_SSOButton_mini { + margin-left: 16px; +} +.mx_ServerPicker { + margin-bottom: 14px; + border-bottom: 1px solid rgba(141, 151, 165, 0.2); + display: grid; + grid-template-columns: auto -webkit-min-content; + grid-template-columns: auto min-content; + grid-template-rows: auto auto auto; + font-size: 1.4rem; + line-height: 2rem; +} +.mx_ServerPicker > h3 { + font-weight: 600; + margin: 0 0 20px; + grid-column: 1; + grid-row: 1; +} +.mx_ServerPicker .mx_ServerPicker_help { + width: 20px; + height: 20px; + background-color: #c1c6cd; + border-radius: 10px; + grid-column: 2; + grid-row: 1; + margin-left: auto; + text-align: center; + color: #fff; + font-size: 16px; + position: relative; +} +.mx_ServerPicker .mx_ServerPicker_help:before { + content: ""; + width: 24px; + height: 24px; + position: absolute; + top: -2px; + left: -2px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/element-icons/i.80d84f3.svg); + mask-image: url(../../img/element-icons/i.80d84f3.svg); + background: #fff; +} +.mx_ServerPicker .mx_ServerPicker_server { + color: #232f32; + grid-column: 1; + grid-row: 2; + margin-bottom: 16px; +} +.mx_ServerPicker .mx_ServerPicker_change { + padding: 0; + font-size: inherit; + grid-column: 2; + grid-row: 2; +} +.mx_ServerPicker .mx_ServerPicker_desc { + margin-top: -12px; + color: #8d99a5; + grid-column: 1/2; + grid-row: 3; + margin-bottom: 16px; +} +.mx_ServerPicker_helpDialog .mx_Dialog_content { + width: 456px; +} +.mx_Slider { + position: relative; + margin: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_Slider_dotContainer { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_Slider_bar, +.mx_Slider_dotContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_Slider_bar { + -webkit-box-sizing: border-box; + box-sizing: border-box; + position: absolute; + height: 1em; + width: 100%; + padding: 0 0.5em; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_Slider_bar > hr { + width: 100%; + height: 0.4em; + background-color: #c1c9d6; + border: 0; +} +.mx_Slider_selection { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: calc(100% - 1em); + height: 1em; + position: absolute; + pointer-events: none; +} +.mx_Slider_selectionDot { + position: absolute; + width: 1.1em; + height: 1.1em; + background-color: #0dbd8b; + border-radius: 50%; + -webkit-box-shadow: 0 0 6px #d3d3d3; + box-shadow: 0 0 6px #d3d3d3; + z-index: 10; +} +.mx_Slider_selection > hr { + margin: 0; + border: 0.2em solid #0dbd8b; +} +.mx_Slider_dot { + height: 1em; + width: 1em; + border-radius: 50%; + background-color: #c1c9d6; + z-index: 0; +} +.mx_Slider_dotActive { + background-color: #0dbd8b; +} +.mx_Slider_dotValue { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #c1c9d6; +} +.mx_Slider_labelContainer { + width: 1em; +} +.mx_Slider_label { + position: relative; + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + left: -50%; +} +.mx_Spinner { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 100%; + height: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixChat_middlePanel .mx_Spinner { + height: auto; +} +.mx_Checkbox { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_Checkbox input[type="checkbox"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; + padding: 0; +} +.mx_Checkbox input[type="checkbox"] + label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + height: 1.6rem; + width: 1.6rem; + size: 0.5rem; + border: 0.15rem solid rgba(97, 112, 139, 0.5); + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 0.4rem; +} +.mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background img { + display: none; + height: 100%; + width: 100%; + -webkit-filter: invert(100%); + filter: invert(100%); +} +.mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background { + background: #0dbd8b; + border-color: #0dbd8b; +} +.mx_Checkbox + input[type="checkbox"]:checked + + label + > .mx_Checkbox_background + img { + display: block; +} +.mx_Checkbox input[type="checkbox"] + label > :not(.mx_Checkbox_background) { + margin-left: 10px; +} +.mx_Checkbox input[type="checkbox"]:disabled + label { + opacity: 0.5; + cursor: not-allowed; +} +.mx_Checkbox + input[type="checkbox"]:checked:disabled + + label + > .mx_Checkbox_background { + background-color: #0dbd8b; + border-color: #0dbd8b; +} +.mx_Checkbox + input[type="checkbox"].focus-visible + + label + .mx_Checkbox_background { + outline-width: 2px; + outline-style: solid; + outline-color: Highlight; +} +@media (-webkit-min-device-pixel-ratio: 0) { + .mx_Checkbox + input[type="checkbox"].focus-visible + + label + .mx_Checkbox_background { + outline-color: -webkit-focus-ring-color; + outline-style: auto; + } +} +.mx_RadioButton { + position: relative; + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; +} +.mx_RadioButton, +.mx_RadioButton > .mx_RadioButton_content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_RadioButton > .mx_RadioButton_content { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 8px; + margin-right: 8px; +} +.mx_RadioButton .mx_RadioButton_spacer { + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + height: 1.6rem; + width: 1.6rem; +} +.mx_RadioButton > input[type="radio"] { + margin: 0; + padding: 0; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.mx_RadioButton > input[type="radio"] + div { + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 1.6rem; + width: 1.6rem; + margin-left: 2px; + border: 0.15rem solid #61708b; + border-radius: 1.6rem; +} +.mx_RadioButton > input[type="radio"] + div > div { + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 0.8rem; + width: 0.8rem; + border-radius: 0.8rem; +} +.mx_RadioButton > input[type="radio"].focus-visible + div { + outline-width: 2px; + outline-style: solid; + outline-color: Highlight; +} +@media (-webkit-min-device-pixel-ratio: 0) { + .mx_RadioButton > input[type="radio"].focus-visible + div { + outline-color: -webkit-focus-ring-color; + outline-style: auto; + } +} +.mx_RadioButton > input[type="radio"]:checked + div { + border-color: #0dbd8b; +} +.mx_RadioButton > input[type="radio"]:checked + div > div { + background: #0dbd8b; +} +.mx_RadioButton > input[type="radio"]:disabled + div, +.mx_RadioButton > input[type="radio"]:disabled + div + span { + opacity: 0.5; + cursor: not-allowed; +} +.mx_RadioButton > input[type="radio"]:disabled + div { + border-color: #61708b; +} +.mx_RadioButton > input[type="radio"]:checked:disabled + div > div { + background-color: #61708b; +} +.mx_RadioButton_outlined { + border: 1px solid #e3e8f0; + border-radius: 8px; +} +.mx_RadioButton_checked { + border-color: #0dbd8b; +} +.mx_SyntaxHighlight { + background: none !important; + color: #747474 !important; +} +.mx_TextWithTooltip_tooltip { + display: none; +} +.mx_ToggleSwitch { + -webkit-transition: background-color 0.2s ease-out 0.1s; + transition: background-color 0.2s ease-out 0.1s; + width: 4.4rem; + height: 2rem; + border-radius: 1.5rem; + padding: 2px; + background-color: #c1c9d6; + opacity: 0.5; +} +.mx_ToggleSwitch_enabled { + cursor: pointer; + opacity: 1; +} +.mx_ToggleSwitch.mx_ToggleSwitch_on { + background-color: #0dbd8b; +} +.mx_ToggleSwitch.mx_ToggleSwitch_on > .mx_ToggleSwitch_ball { + left: calc(100% - 2rem); +} +.mx_ToggleSwitch_ball { + position: relative; + width: 2rem; + height: 2rem; + border-radius: 2rem; + background-color: #fff; + -webkit-transition: left 0.15s ease-out 0.1s; + transition: left 0.15s ease-out 0.1s; + left: 0; +} +@-webkit-keyframes mx_fadein { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes mx_fadein { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +@-webkit-keyframes mx_fadeout { + 0% { + opacity: 1; + } + to { + opacity: 0; + } +} +@keyframes mx_fadeout { + 0% { + opacity: 1; + } + to { + opacity: 0; + } +} +.mx_Tooltip_chevron { + position: absolute; + left: -7px; + top: 10px; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #e7e7e7; + border-bottom: 7px solid transparent; +} +.mx_Tooltip_chevron:after { + content: ""; + width: 0; + height: 0; + border-top: 6px solid transparent; + border-right: 6px solid #fff; + border-bottom: 6px solid transparent; + position: absolute; + top: -6px; + left: 1px; +} +.mx_Tooltip { + position: fixed; + border-radius: 8px; + -webkit-box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); + box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); + z-index: 6000; + padding: 10px; + pointer-events: none; + line-height: 1.4rem; + font-size: 1.2rem; + font-weight: 500; + max-width: 200px; + word-break: break-word; + margin-right: 50px; + background-color: #27303a; + color: #fff; + border: 0; + text-align: center; +} +.mx_Tooltip, +.mx_Tooltip .mx_Tooltip_chevron { + display: none; +} +.mx_Tooltip.mx_Tooltip_visible { + -webkit-animation: mx_fadein 0.2s forwards; + animation: mx_fadein 0.2s forwards; +} +.mx_Tooltip.mx_Tooltip_invisible { + -webkit-animation: mx_fadeout 0.1s forwards; + animation: mx_fadeout 0.1s forwards; +} +.mx_Field_tooltip { + background-color: #fff; + color: #2e2f32; + border: 1px solid #e7e7e7; + text-align: unset; +} +.mx_Field_tooltip .mx_Tooltip_chevron { + display: unset; +} +.mx_Tooltip_title { + font-weight: 600; +} +.mx_Tooltip_sub { + opacity: 0.7; + margin-top: 4px; +} +.mx_TooltipButton { + display: inline-block; + width: 11px; + height: 11px; + margin-left: 5px; + border: 2px solid #dbdbdb; + border-radius: 20px; + color: #dbdbdb; + -webkit-transition: opacity 0.2s ease-in; + transition: opacity 0.2s ease-in; + opacity: 0.6; + line-height: 1.1rem; + text-align: center; + cursor: pointer; +} +.mx_TooltipButton:hover { + opacity: 1; +} +.mx_TooltipButton_container { + position: relative; + top: -18px; + left: 4px; +} +.mx_TooltipButton_helpText { + width: 400px; + text-align: start; + line-height: 17px !important; +} +.mx_Validation { + position: relative; +} +.mx_Validation_details { + padding-left: 20px; + margin: 0; +} +.mx_Validation_description + .mx_Validation_details { + margin: 1em 0 0; +} +.mx_Validation_detail { + position: relative; + font-weight: 400; + list-style: none; + margin-bottom: 0.5em; +} +.mx_Validation_detail:last-child { + margin-bottom: 0; +} +.mx_Validation_detail:before { + content: ""; + position: absolute; + width: 14px; + height: 14px; + top: 0; + left: -18px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_Validation_detail.mx_Validation_valid { + color: #0dbd8b; +} +.mx_Validation_detail.mx_Validation_valid:before { + -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); + mask-image: url(../../img/feather-customised/check.5745b4e.svg); + background-color: #0dbd8b; +} +.mx_Validation_detail.mx_Validation_invalid { + color: #ff4b55; +} +.mx_Validation_detail.mx_Validation_invalid:before { + -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); + mask-image: url(../../img/feather-customised/x.9662221.svg); + background-color: #ff4b55; +} +.mx_EmojiPicker { + width: 340px; + height: 450px; + border-radius: 4px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_EmojiPicker_body { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow-y: scroll; + scrollbar-width: thin; + scrollbar-color: rgba(0, 0, 0, 0.2) transparent; +} +.mx_EmojiPicker_header { + padding: 4px 8px 0; + border-bottom: 1px solid #e9edf1; +} +.mx_EmojiPicker_anchor { + padding: 8px 8px 6px; + border: none; + border-bottom: 2px solid transparent; + background-color: transparent; + border-radius: 4px 4px 0 0; + width: 36px; + height: 38px; +} +.mx_EmojiPicker_anchor:not(:disabled) { + cursor: pointer; +} +.mx_EmojiPicker_anchor:not(:disabled):hover { + background-color: #ddd; + border-bottom: 2px solid #0dbd8b; +} +.mx_EmojiPicker_anchor:before { + background-color: #2e2f32; + content: ""; + display: inline-block; + -webkit-mask-size: 100%; + mask-size: 100%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + width: 100%; + height: 100%; +} +.mx_EmojiPicker_anchor:disabled:before { + background-color: #ddd; +} +.mx_EmojiPicker_anchor_activity:before { + -webkit-mask-image: url(../../img/emojipicker/activity.921ec9f.svg); + mask-image: url(../../img/emojipicker/activity.921ec9f.svg); +} +.mx_EmojiPicker_anchor_custom:before { + -webkit-mask-image: url(../../img/emojipicker/custom.e1cd0fd.svg); + mask-image: url(../../img/emojipicker/custom.e1cd0fd.svg); +} +.mx_EmojiPicker_anchor_flags:before { + -webkit-mask-image: url(../../img/emojipicker/flags.1a8855e.svg); + mask-image: url(../../img/emojipicker/flags.1a8855e.svg); +} +.mx_EmojiPicker_anchor_foods:before { + -webkit-mask-image: url(../../img/emojipicker/foods.c6b220a.svg); + mask-image: url(../../img/emojipicker/foods.c6b220a.svg); +} +.mx_EmojiPicker_anchor_nature:before { + -webkit-mask-image: url(../../img/emojipicker/nature.6540b99.svg); + mask-image: url(../../img/emojipicker/nature.6540b99.svg); +} +.mx_EmojiPicker_anchor_objects:before { + -webkit-mask-image: url(../../img/emojipicker/objects.4d34f58.svg); + mask-image: url(../../img/emojipicker/objects.4d34f58.svg); +} +.mx_EmojiPicker_anchor_people:before { + -webkit-mask-image: url(../../img/emojipicker/people.e918580.svg); + mask-image: url(../../img/emojipicker/people.e918580.svg); +} +.mx_EmojiPicker_anchor_places:before { + -webkit-mask-image: url(../../img/emojipicker/places.7310322.svg); + mask-image: url(../../img/emojipicker/places.7310322.svg); +} +.mx_EmojiPicker_anchor_recent:before { + -webkit-mask-image: url(../../img/emojipicker/recent.13b42e2.svg); + mask-image: url(../../img/emojipicker/recent.13b42e2.svg); +} +.mx_EmojiPicker_anchor_symbols:before { + -webkit-mask-image: url(../../img/emojipicker/symbols.15a557d.svg); + mask-image: url(../../img/emojipicker/symbols.15a557d.svg); +} +.mx_EmojiPicker_anchor_visible { + border-bottom: 2px solid #0dbd8b; +} +.mx_EmojiPicker_search { + margin: 8px; + border-radius: 4px; + border: 1px solid #e7e7e7; + background-color: #fff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_EmojiPicker_search input { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + border: none; + padding: 8px 12px; + border-radius: 4px 0; +} +.mx_EmojiPicker_search button { + border: none; + background-color: inherit; + margin: 0; + padding: 8px; + -ms-flex-item-align: center; + align-self: center; + width: 32px; + height: 32px; +} +.mx_EmojiPicker_search_clear { + cursor: pointer; +} +.mx_EmojiPicker_search_icon { + width: 16px; + margin: 8px; +} +.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear) { + pointer-events: none; +} +.mx_EmojiPicker_search_icon:after { + -webkit-mask: url(../../img/emojipicker/search.973c315.svg) no-repeat; + mask: url(../../img/emojipicker/search.973c315.svg) no-repeat; + -webkit-mask-size: 100%; + mask-size: 100%; + background-color: #2e2f32; + content: ""; + display: inline-block; + width: 100%; + height: 100%; +} +.mx_EmojiPicker_search_clear:after { + -webkit-mask-image: url(../../img/emojipicker/delete.f7344c5.svg); + mask-image: url(../../img/emojipicker/delete.f7344c5.svg); +} +.mx_EmojiPicker_category { + padding: 0 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_EmojiPicker_category_label { + width: 304px; +} +.mx_EmojiPicker_list { + width: 304px; + padding: 0; + margin: 0; +} +.mx_EmojiPicker_item_wrapper { + display: inline-block; + list-style: none; + width: 38px; + cursor: pointer; +} +.mx_EmojiPicker_item { + display: inline-block; + font-size: 2rem; + padding: 5px; + width: 100%; + height: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: center; + border-radius: 4px; +} +.mx_EmojiPicker_item:hover { + background-color: #ddd; +} +.mx_EmojiPicker_item_selected { + color: rgba(0, 0, 0, 0.5); + border: 1px solid #0dbd8b; + padding: 4px; +} +.mx_EmojiPicker_category_label, +.mx_EmojiPicker_preview_name { + font-size: 1.6rem; + font-weight: 600; + margin: 0; +} +.mx_EmojiPicker_footer { + border-top: 1px solid #e9edf1; + min-height: 72px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_EmojiPicker_preview_emoji { + font-size: 3.2rem; + padding: 8px 16px; +} +.mx_EmojiPicker_preview_text { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_EmojiPicker_name { + text-transform: capitalize; +} +.mx_EmojiPicker_shortcode { + color: #747474; + font-size: 1.4rem; +} +.mx_EmojiPicker_shortcode:after, +.mx_EmojiPicker_shortcode:before { + content: ":"; +} +.mx_EmojiPicker_quick { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-pack: distribute; + justify-content: space-around; +} +.mx_EmojiPicker_quick_header .mx_EmojiPicker_name { + margin-right: 4px; +} +.mx_GroupPublicity_toggle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 8px; +} +.mx_GroupPublicity_toggle .mx_GroupTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; + -webkit-box-sizing: border-box; + box-sizing: border-box; + width: 100%; +} +.mx_GroupPublicity_toggle .mx_ToggleSwitch { + float: right; +} +.mx_GroupRoomTile { + position: relative; + color: #2e2f32; + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_GroupRoomList_wrapper { + padding: 10px; +} +.mx_GroupUserSettings_groupPublicity_scrollbox { + height: 200px; + border: 1px solid transparent; + border-radius: 3px; + overflow: hidden; +} +.mx_CreateEvent:before { + background-color: #91a1c0; + -webkit-mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); + mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); +} +.mx_DateSeparator { + clear: both; + margin: 4px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 1.4rem; + color: #9e9e9e; +} +.mx_DateSeparator > hr { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + height: 0; + border: none; + border-bottom: 1px solid transparent; +} +.mx_DateSeparator > div { + margin: 0 25px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_EventTileBubble { + background-color: #f2f5f8; + padding: 10px; + border-radius: 8px; + margin: 10px auto; + max-width: 75%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + display: grid; + grid-template-columns: 24px minmax(0, 1fr) -webkit-min-content; + grid-template-columns: 24px minmax(0, 1fr) min-content; +} +.mx_EventTileBubble:after, +.mx_EventTileBubble:before { + position: relative; + grid-column: 1; + grid-row: 1/3; + width: 16px; + height: 16px; + content: ""; + top: 0; + bottom: 0; + left: 0; + right: 0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + margin-top: 4px; +} +.mx_EventTileBubble .mx_EventTileBubble_subtitle, +.mx_EventTileBubble .mx_EventTileBubble_title { + overflow-wrap: break-word; +} +.mx_EventTileBubble .mx_EventTileBubble_title { + font-weight: 600; + font-size: 1.5rem; + grid-column: 2; + grid-row: 1; +} +.mx_EventTileBubble .mx_EventTileBubble_subtitle { + font-size: 1.2rem; + grid-column: 2; + grid-row: 2; +} +.mx_MEmoteBody { + white-space: pre-wrap; +} +.mx_MEmoteBody_sender { + cursor: pointer; +} +.mx_MFileBody_download { + color: #0dbd8b; +} +.mx_MFileBody_download .mx_MFileBody_download_icon { + width: 12px; + height: 12px; + -webkit-mask-size: 12px; + mask-size: 12px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/download.4f331f0.svg); + mask-image: url(../../img/download.4f331f0.svg); + background-color: #0dbd8b; + display: inline-block; +} +.mx_MFileBody_download a { + color: #0dbd8b; + text-decoration: none; + cursor: pointer; +} +.mx_MFileBody_download object { + margin-left: -16px; + padding-right: 4px; + margin-top: -4px; + vertical-align: middle; + pointer-events: none; +} +.mx_MFileBody_download iframe { + margin: 0; + padding: 0; + border: none; + width: 100%; + height: 1.5em; +} +.mx_MFileBody_info { + background-color: #e3e8f0; + border-radius: 12px; + width: 243px; + padding: 6px 12px; + color: #737d8c; +} +.mx_MFileBody_info .mx_MFileBody_info_icon { + background-color: #fff; + border-radius: 20px; + display: inline-block; + width: 32px; + height: 32px; + position: relative; + vertical-align: middle; + margin-right: 12px; +} +.mx_MFileBody_info .mx_MFileBody_info_icon:before { + content: ""; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + -webkit-mask-image: url(../icons/attach.svg); + mask-image: url(../icons/attach.svg); + background-color: #737d8c; + width: 13px; + height: 15px; + position: absolute; + top: 8px; + left: 9px; +} +.mx_MFileBody_info .mx_MFileBody_info_filename { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + display: inline-block; + width: calc(100% - 44px); + vertical-align: middle; +} +.mx_MImageBody { + display: block; + margin-right: 34px; +} +.mx_MImageBody_thumbnail { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + border-radius: 4px; +} +.mx_MImageBody_thumbnail_container { + overflow: hidden; + position: relative; +} +.mx_MImageBody_thumbnail_spinner { + position: absolute; + left: 50%; + top: 50%; +} +.mx_MImageBody_thumbnail_spinner > * { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +.mx_MImageBody_gifLabel { + position: absolute; + display: block; + top: 0; + left: 14px; + padding: 5px; + border-radius: 5px; + background: rgba(0, 0, 0, 0.7); + border: 2px solid rgba(0, 0, 0, 0.2); + color: #fff; + pointer-events: none; +} +.mx_HiddenImagePlaceholder { + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + cursor: pointer; + background-color: #f3f8fd; +} +.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button { + color: #0dbd8b; +} +.mx_HiddenImagePlaceholder + .mx_HiddenImagePlaceholder_button + span.mx_HiddenImagePlaceholder_eye { + margin-right: 8px; + background-color: #0dbd8b; + -webkit-mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); + mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); + display: inline-block; + width: 18px; + height: 14px; +} +.mx_HiddenImagePlaceholder + .mx_HiddenImagePlaceholder_button + span:not(.mx_HiddenImagePlaceholder_eye) { + vertical-align: text-bottom; +} +.mx_EventTile:hover .mx_HiddenImagePlaceholder { + background-color: #fff; +} +.mx_MJitsiWidgetEvent:before { + background-color: #91a1c0; + -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); + mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); +} +.mx_MNoticeBody { + white-space: pre-wrap; + opacity: 0.6; +} +.mx_MStickerBody_wrapper { + padding: 20px 0; +} +.mx_MStickerBody_tooltip { + position: absolute; + top: 50%; +} +.mx_MStickerBody_hidden { + max-width: 220px; + text-decoration: none; + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_MTextBody { + white-space: pre-wrap; +} +span.mx_MVideoBody video.mx_MVideoBody { + max-width: 100%; + height: auto; + border-radius: 4px; +} +.mx_MVoiceMessageBody { + display: inline-block; +} +.mx_MessageActionBar { + position: absolute; + visibility: hidden; + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 24px; + line-height: 2.4rem; + border-radius: 4px; + background: #fff; + top: -26px; + right: 8px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + z-index: 1; +} +.mx_MessageActionBar:before { + content: ""; + position: absolute; + width: calc(66px + 100%); + height: calc(20px + 100%); + top: -12px; + left: -58px; + z-index: -1; + cursor: auto; +} +.mx_MessageActionBar > * { + white-space: nowrap; + display: inline-block; + position: relative; + border: 1px solid #e9edf1; + margin-left: -1px; +} +.mx_MessageActionBar > :hover { + border-color: #ddd; + z-index: 1; +} +.mx_MessageActionBar > :first-child { + border-radius: 3px 0 0 3px; +} +.mx_MessageActionBar > :last-child { + border-radius: 0 3px 3px 0; +} +.mx_MessageActionBar > :only-child { + border-radius: 3px; +} +.mx_MessageActionBar_maskButton { + width: 27px; +} +.mx_MessageActionBar_maskButton:after { + content: ""; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + -webkit-mask-size: 18px; + mask-size: 18px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #2e2f32; +} +.mx_MessageActionBar_reactButton:after { + -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); + mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); +} +.mx_MessageActionBar_replyButton:after { + -webkit-mask-image: url(../../img/element-icons/room/message-bar/reply.5812741.svg); + mask-image: url(../../img/element-icons/room/message-bar/reply.5812741.svg); +} +.mx_MessageActionBar_editButton:after { + -webkit-mask-image: url(../../img/element-icons/room/message-bar/edit.688678e.svg); + mask-image: url(../../img/element-icons/room/message-bar/edit.688678e.svg); +} +.mx_MessageActionBar_optionsButton:after { + -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); + mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); +} +.mx_MessageActionBar_resendButton:after { + -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); + mask-image: url(../../img/element-icons/retry.6cd23ad.svg); +} +.mx_MessageActionBar_cancelButton:after { + -webkit-mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); + mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); +} +.mx_MessageTimestamp { + color: #acacac; + font-size: 1rem; + -webkit-font-feature-settings: "tnum"; + font-feature-settings: "tnum"; + font-variant-numeric: tabular-nums; +} +.mx_MjolnirBody { + opacity: 0.4; +} +.mx_ReactionsRow { + margin: 6px 0; + color: #2e2f32; +} +.mx_ReactionsRow .mx_ReactionsRow_addReactionButton { + position: relative; + display: inline-block; + visibility: hidden; + width: 24px; + height: 24px; + vertical-align: middle; + margin-left: 4px; +} +.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before { + content: ""; + position: absolute; + height: 100%; + width: 100%; + -webkit-mask-size: 16px; + mask-size: 16px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #8d99a5; + -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); + mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); +} +.mx_ReactionsRow + .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active { + visibility: visible; +} +.mx_ReactionsRow + .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before, +.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before { + background-color: #2e2f32; +} +.mx_EventTile:hover .mx_ReactionsRow_addReactionButton { + visibility: visible; +} +.mx_ReactionsRow_showAll { + text-decoration: none; + font-size: 1.2rem; + line-height: 2rem; + margin-left: 4px; + vertical-align: middle; +} +.mx_ReactionsRow_showAll:link, +.mx_ReactionsRow_showAll:visited { + color: #8d99a5; +} +.mx_ReactionsRow_showAll:hover { + color: #2e2f32; +} +.mx_ReactionsRowButton { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + line-height: 2rem; + margin-right: 6px; + padding: 1px 6px; + border: 1px solid #e9edf1; + border-radius: 10px; + background-color: #f3f8fd; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + vertical-align: middle; +} +.mx_ReactionsRowButton:hover { + border-color: #ddd; +} +.mx_ReactionsRowButton.mx_ReactionsRowButton_selected { + background-color: #e9fff9; + border-color: #0dbd8b; +} +.mx_ReactionsRowButton.mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_ReactionsRowButton .mx_ReactionsRowButton_content { + max-width: 100px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + padding-right: 4px; +} +.mx_RedactedBody { + white-space: pre-wrap; + color: #61708b; + vertical-align: middle; + padding-left: 20px; + position: relative; +} +.mx_RedactedBody:before { + height: 14px; + width: 14px; + background-color: #61708b; + -webkit-mask-image: url(../icons/trash.svg); + mask-image: url(../icons/trash.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + content: ""; + position: absolute; + top: 1px; + left: 0; +} +.mx_RoomAvatarEvent { + opacity: 0.5; + overflow-y: hidden; +} +.mx_RoomAvatarEvent_avatar { + display: inline; + position: relative; + top: 5px; +} +.mx_SenderProfile_name { + font-weight: 600; +} +.mx_TextualEvent { + opacity: 0.5; + overflow-y: hidden; +} +.mx_UnknownBody { + white-space: pre-wrap; +} +.mx_EventTile_content.mx_ViewSourceEvent { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + opacity: 0.6; + font-size: 1.2rem; +} +.mx_EventTile_content.mx_ViewSourceEvent code, +.mx_EventTile_content.mx_ViewSourceEvent pre { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_EventTile_content.mx_ViewSourceEvent pre { + line-height: 1.2; + margin: 3.5px 0; +} +.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle { + width: 12px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: 0 center; + mask-position: 0 center; + -webkit-mask-size: auto 12px; + mask-size: auto 12px; + visibility: hidden; + background-color: #0dbd8b; + -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); + mask-image: url(../../img/feather-customised/maximise.dc32127.svg); +} +.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded + .mx_ViewSourceEvent_toggle { + -webkit-mask-position: 0 bottom; + mask-position: 0 bottom; + margin-bottom: 7px; + -webkit-mask-image: url(../../img/feather-customised/minimise.aec9142.svg); + mask-image: url(../../img/feather-customised/minimise.aec9142.svg); +} +.mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle { + visibility: visible; +} +.mx_cryptoEvent.mx_cryptoEvent_icon:before { + background-color: #fff; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 90%; + mask-size: 90%; +} +.mx_cryptoEvent.mx_cryptoEvent_icon:after, +.mx_cryptoEvent.mx_cryptoEvent_icon:before { + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); +} +.mx_cryptoEvent.mx_cryptoEvent_icon:after { + background-color: #91a1c0; +} +.mx_cryptoEvent.mx_cryptoEvent_icon_verified:after { + -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); + mask-image: url(../../img/e2e/verified.5be6c9f.svg); + background-color: #0dbd8b; +} +.mx_cryptoEvent.mx_cryptoEvent_icon_warning:after { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); + background-color: #ff4b55; +} +.mx_cryptoEvent .mx_cryptoEvent_buttons, +.mx_cryptoEvent .mx_cryptoEvent_state { + grid-column: 3; + grid-row: 1/3; +} +.mx_cryptoEvent .mx_cryptoEvent_buttons { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_cryptoEvent .mx_cryptoEvent_state { + width: 130px; + padding: 10px 20px; + margin: auto 0; + text-align: center; + color: #8d99a5; + overflow-wrap: break-word; + font-size: 1.2rem; +} +.mx_BaseCard { + padding: 0 8px; + overflow: hidden; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_BaseCard .mx_BaseCard_header { + margin: 8px 0; +} +.mx_BaseCard .mx_BaseCard_header > h2 { + margin: 0 44px; + font-size: 1.8rem; + font-weight: 600; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back, +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close { + position: absolute; + background-color: rgba(141, 151, 165, 0.2); + height: 20px; + width: 20px; + margin: 12px; + top: 0; + border-radius: 10px; +} +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before, +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before { + content: ""; + position: absolute; + height: 20px; + width: 20px; + top: 0; + left: 0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #91a1c0; +} +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back { + left: 0; +} +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-mask-size: 22px; + mask-size: 22px; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close { + right: 0; +} +.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before { + -webkit-mask-image: url(../../img/icons-close.11ff07c.svg); + mask-image: url(../../img/icons-close.11ff07c.svg); + -webkit-mask-size: 8px; + mask-size: 8px; +} +.mx_BaseCard .mx_AutoHideScrollbar { + margin-right: -8px; + padding-right: 8px; + min-height: 0; + width: 100%; + height: 100%; +} +.mx_BaseCard .mx_BaseCard_Group { + margin: 20px 0 16px; +} +.mx_BaseCard .mx_BaseCard_Group > * { + margin-left: 12px; + margin-right: 12px; +} +.mx_BaseCard .mx_BaseCard_Group > h1 { + color: #8d99a5; + font-size: 1.2rem; + font-weight: 500; +} +.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button { + padding: 10px 38px 10px 12px; + margin: 0; + position: relative; + font-size: 1.3rem; + height: 20px; + line-height: 20px; + border-radius: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover { + background-color: rgba(141, 151, 165, 0.1); +} +.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after { + content: ""; + position: absolute; + top: 10px; + right: 6px; + height: 20px; + width: 20px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #c1c6cd; + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_BaseCard + .mx_BaseCard_Group + .mx_BaseCard_Button.mx_AccessibleButton_disabled { + padding-right: 12px; +} +.mx_BaseCard + .mx_BaseCard_Group + .mx_BaseCard_Button.mx_AccessibleButton_disabled:after { + content: unset; +} +.mx_BaseCard .mx_BaseCard_footer { + padding-top: 4px; + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: distribute; + justify-content: space-around; +} +.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary { + color: #737d8c; + background-color: rgba(141, 151, 165, 0.2); + font-weight: 600; + font-size: 1.4rem; +} +.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_FilePanel.mx_BaseCard, +.mx_MemberList.mx_BaseCard, +.mx_NotificationPanel.mx_BaseCard, +.mx_UserInfo.mx_BaseCard { + padding: 32px 0 0; +} +.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar, +.mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar, +.mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar, +.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar { + margin-right: unset; + padding-right: unset; +} +.mx_EncryptionInfo_spinner .mx_Spinner { + margin-top: 25px; + margin-bottom: 15px; +} +.mx_EncryptionInfo_spinner { + text-align: center; +} +.mx_RoomSummaryCard .mx_BaseCard_header { + text-align: center; + margin-top: 20px; +} +.mx_RoomSummaryCard .mx_BaseCard_header h2 { + font-weight: 600; + font-size: 1.8rem; + margin: 12px 0 4px; +} +.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias { + font-size: 1.3rem; + color: #737d8c; +} +.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias, +.mx_RoomSummaryCard .mx_BaseCard_header h2 { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee { + display: inline-block; + position: relative; + width: 54px; + height: 54px; + border-radius: 50%; + background-color: #737d8c; + margin-top: -3px; + margin-left: -10px; + border: 3px solid #f2f5f8; +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee:before { + content: ""; + position: absolute; + top: 13px; + left: 13px; + height: 28px; + width: 28px; + -webkit-mask-size: cover; + mask-size: cover; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-image: url(../../img/e2e/disabled.6c5c6be.svg); + mask-image: url(../../img/e2e/disabled.6c5c6be.svg); + background-color: #fff; +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee_normal { + background-color: #424446; +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee_normal:before { + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee_verified { + background-color: #0dbd8b; +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee_verified:before { + -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); + mask-image: url(../../img/e2e/verified.5be6c9f.svg); +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee_warning { + background-color: #ff4b55; +} +.mx_RoomSummaryCard + .mx_BaseCard_header + .mx_RoomSummaryCard_avatar + .mx_RoomSummaryCard_e2ee_warning:before { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); +} +.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button { + padding-left: 44px; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_aboutGroup + .mx_RoomSummaryCard_Button:before { + content: ""; + position: absolute; + top: 8px; + left: 10px; + height: 24px; + width: 24px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #c1c6cd; +} +.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button { + padding: 0; + height: auto; + color: #8d99a5; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_icon_app { + padding: 10px 48px 10px 12px; + text-overflow: ellipsis; + overflow: hidden; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_icon_app + .mx_BaseAvatar_image { + vertical-align: top; + margin-right: 12px; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_icon_app + span { + color: #2e2f32; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_options, +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_pinToggle { + position: absolute; + top: 0; + height: 100%; + width: 24px; + padding: 12px 4px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + min-width: 24px; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_options:hover:after, +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_pinToggle:hover:after { + content: ""; + position: absolute; + height: 24px; + width: 24px; + top: 8px; + left: 0; + border-radius: 12px; + background-color: rgba(141, 151, 165, 0.1); +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_options:before, +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_pinToggle:before { + content: ""; + position: absolute; + height: 16px; + width: 16px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 16px; + mask-size: 16px; + background-color: #c1c6cd; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_pinToggle { + right: 24px; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_pinToggle:before { + -webkit-mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); + mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_options { + right: 48px; + display: none; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button + .mx_RoomSummaryCard_app_options:before { + -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); + mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after { + opacity: 0.2; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned + .mx_RoomSummaryCard_app_pinToggle:before { + background-color: #0dbd8b; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button:hover + .mx_RoomSummaryCard_icon_app { + padding-right: 72px; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button:hover + .mx_RoomSummaryCard_app_options { + display: unset; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button:before { + content: unset; +} +.mx_RoomSummaryCard + .mx_RoomSummaryCard_appsGroup + .mx_RoomSummaryCard_Button:after { + top: 8px; + pointer-events: none; +} +.mx_RoomSummaryCard .mx_AccessibleButton_kind_link { + padding: 0; + margin-top: 12px; + margin-bottom: 12px; + font-size: 1.3rem; + font-weight: 600; +} +.mx_RoomSummaryCard_icon_people:before { + -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); + mask-image: url(../../img/element-icons/room/members.88c3e93.svg); +} +.mx_RoomSummaryCard_icon_files:before { + -webkit-mask-image: url(../../img/element-icons/room/files.5709c0c.svg); + mask-image: url(../../img/element-icons/room/files.5709c0c.svg); +} +.mx_RoomSummaryCard_icon_share:before { + -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); + mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); +} +.mx_RoomSummaryCard_icon_settings:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_UserInfo.mx_BaseCard { + padding-top: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow-y: auto; + font-size: 1.2rem; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel { + cursor: pointer; + position: absolute; + top: 0; + border-radius: 4px; + background-color: #f2f5f8; + margin: 9px; + z-index: 1; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div { + height: 16px; + width: 16px; + padding: 4px; + -webkit-mask-image: url(../../img/minimise.871d2de.svg); + mask-image: url(../../img/minimise.871d2de.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: 7px center; + mask-position: 7px center; + background-color: #91a1c0; +} +.mx_UserInfo.mx_BaseCard h2 { + font-size: 1.8rem; + font-weight: 600; + margin: 18px 0 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_container { + padding: 8px 16px; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator { + border-bottom: 1px solid rgba(46, 47, 50, 0.1); +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer { + padding-top: 0; + padding-bottom: 0; + margin-bottom: 8px; +} +.mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer { + width: 154px; +} +.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge { + display: none; +} +.mx_UserInfo.mx_BaseCard .mx_RoomTile_name { + width: 160px; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar { + margin: 24px 32px 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div { + max-width: 30vh; + margin: 0 auto; + -webkit-transition: 0.5s; + transition: 0.5s; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div > div { + padding-top: 100%; + position: relative; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div > div * { + border-radius: 100%; + position: absolute; + top: 0; + left: 0; + width: 100% !important; + height: 100% !important; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial { + z-index: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + font-size: 6rem !important; + width: 100% !important; + -webkit-transition: font-size 0.5s; + transition: font-size 0.5s; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_avatar + .mx_BaseAvatar.mx_BaseAvatar_image { + cursor: -webkit-zoom-in; + cursor: zoom-in; +} +.mx_UserInfo.mx_BaseCard h3 { + text-transform: uppercase; + color: #8d99a5; + font-weight: 600; + font-size: 1.2rem; + margin: 4px 0; +} +.mx_UserInfo.mx_BaseCard p { + margin: 5px 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile { + text-align: center; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 1.8rem; + line-height: 2.5rem; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span { + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon { + margin-top: 3px; + margin-right: 4px; + min-width: 18px; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus { + margin-top: 12px; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField { + margin: 6px 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField, +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_memberDetails + .mx_UserInfo_profileField + .mx_UserInfo_roleDescription { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_memberDetails + .mx_UserInfo_profileField + .mx_UserInfo_roleDescription { + margin: 11px 0 12px; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_memberDetails + .mx_UserInfo_profileField + .mx_Field { + margin: 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_field { + cursor: pointer; + color: #0dbd8b; + line-height: 1.6rem; + margin: 8px 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive { + color: #ff4b55; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage { + font-size: 1.1rem; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} +.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) { + padding-top: 16px; + padding-bottom: 0; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_container:not(.mx_UserInfo_separator) + > :not(h3) { + margin-left: 8px; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 8px 0; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_devices + .mx_UserInfo_device.mx_UserInfo_device_verified + .mx_UserInfo_device_trusted { + color: #0dbd8b; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_devices + .mx_UserInfo_device.mx_UserInfo_device_unverified + .mx_UserInfo_device_trusted { + color: #ff4b55; +} +.mx_UserInfo.mx_BaseCard + .mx_UserInfo_devices + .mx_UserInfo_device + .mx_UserInfo_device_name { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin-right: 5px; + word-break: break-word; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin: 2px 5px 0 0; + width: 12px; + height: 12px; +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 11px; +} +.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind { + padding: 8px 18px; +} +.mx_UserInfo.mx_BaseCard + .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary { + color: #0dbd8b; + background-color: rgba(3, 179, 129, 0.16); +} +.mx_UserInfo.mx_BaseCard + .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger { + color: #ff4b55; + background-color: rgba(255, 75, 85, 0.16); +} +.mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton, +.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton { + display: block; + margin: 16px 0 8px; +} +.mx_UserInfo.mx_BaseCard + .mx_VerificationShowSas + .mx_AccessibleButton + + .mx_AccessibleButton { + margin: 8px 0; +} +.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar > div { + max-width: 72px; + margin: 0 auto; +} +.mx_UserInfo.mx_UserInfo_smallAvatar + .mx_UserInfo_avatar + .mx_BaseAvatar_initial { + font-size: 40px !important; +} +.mx_VerificationPanel_reciprocate_section .mx_E2EIcon, +.mx_VerificationPanel_verified_section .mx_E2EIcon { + margin: 20px auto !important; +} +.mx_UserInfo .mx_EncryptionPanel_cancel { + -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); + mask: url(../../img/feather-customised/cancel.23c2689.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + width: 14px; + height: 14px; + background-color: #61708b; + cursor: pointer; + position: absolute; + z-index: 100; + top: 14px; + right: 14px; +} +.mx_UserInfo .mx_VerificationPanel_qrCode { + padding: 4px 4px 0; + background: #fff; + border-radius: 4px; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + margin: 0 auto !important; +} +.mx_UserInfo .mx_VerificationPanel_qrCode canvas { + height: auto !important; + width: 100% !important; + max-width: 240px; +} +.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_FormButton { + width: 100%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding: 10px; + display: block; + margin: 10px 0; +} +.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions, +.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 10px; + margin-bottom: 10px; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_QRPhase_startOptions + > .mx_VerificationPanel_QRPhase_betweenText, +.mx_Dialog + .mx_VerificationPanel_QRPhase_startOptions + > .mx_VerificationPanel_QRPhase_betweenText { + width: 50px; + vertical-align: middle; + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption, +.mx_Dialog + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption { + background-color: #f3f8fd; + border-radius: 10px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 20px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + max-width: 310px; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + .mx_VerificationPanel_QRPhase_noQR, +.mx_CompleteSecurity_body + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + canvas, +.mx_Dialog + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + .mx_VerificationPanel_QRPhase_noQR, +.mx_Dialog + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + canvas { + width: 220px !important; + height: 220px !important; + background-color: #fff; + border-radius: 4px; + vertical-align: middle; + text-align: center; + padding: 10px; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + > p, +.mx_Dialog + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + > p { + margin-top: 0; + font-weight: 700; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + .mx_VerificationPanel_QRPhase_helpText, +.mx_Dialog + .mx_VerificationPanel_QRPhase_startOptions + .mx_VerificationPanel_QRPhase_startOption + .mx_VerificationPanel_QRPhase_helpText { + font-size: 1.4rem; + margin: 30px 0; + text-align: center; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_verified_section + .mx_AccessibleButton, +.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton { + float: right; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_reciprocate_section + .mx_AccessibleButton, +.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton { + margin-left: 10px; + padding: 7px 40px; +} +.mx_CompleteSecurity_body + .mx_VerificationPanel_reciprocate_section + .mx_VerificationPanel_reciprocateButtons, +.mx_Dialog + .mx_VerificationPanel_reciprocate_section + .mx_VerificationPanel_reciprocateButtons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_WidgetCard { + height: 100%; + display: contents; +} +.mx_WidgetCard .mx_AppTileFullWidth { + max-width: unset; + height: 100%; + border: 0; +} +.mx_WidgetCard .mx_BaseCard_header { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_WidgetCard .mx_BaseCard_header > h2 { + margin-right: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton { + position: relative; + margin-right: 44px; + height: 20px; + width: 20px; + min-width: 20px; + padding: 0; +} +.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before { + content: ""; + position: absolute; + width: 20px; + height: 20px; + top: 0; + left: 4px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); + mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); + background-color: #737d8c; +} +.mx_WidgetCard_maxPinnedTooltip { + background-color: #ff4b55; + color: #fff; +} +.mx_AliasSettings_editable { + border: 0; + border-bottom: 1px solid #c7c7c7; + padding: 0; + min-width: 240px; +} +.mx_AliasSettings_editable:focus { + border-bottom: 1px solid #0dbd8b; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.mx_AliasSettings summary { + cursor: pointer; + color: #0dbd8b; + font-weight: 600; + list-style: none; +} +.mx_AliasSettings summary::-webkit-details-marker { + display: none; +} +.mx_AliasSettings .mx_AliasSettings_localAliasHeader { + margin-top: 35px; +} +.mx_AppsDrawer { + margin: 5px 5px 5px 18px; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow: hidden; +} +.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer { + width: 100%; + height: 10px; + margin-top: -3px; + display: block; + position: relative; +} +.mx_AppsDrawer .mx_AppsContainer_resizerHandle { + cursor: ns-resize; + width: 100% !important; + height: 100% !important; + position: absolute; + bottom: 0 !important; +} +.mx_AppsDrawer .mx_AppsContainer_resizerHandle:after { + content: ""; + position: absolute; + border-radius: 3px; + top: 6px; + bottom: 0; + left: calc(50% - 32px); + right: calc(50% - 32px); +} +.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after { + opacity: 0.8; + background: #2e2f32; +} +.mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before { + position: absolute; + left: 3px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + height: 64px; + width: 4px; + border-radius: 4px; + content: ""; + background-color: #2e2f32; + opacity: 0.8; +} +.mx_AppsContainer_resizer { + margin-bottom: 8px; +} +.mx_AppsContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + height: 100%; + width: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-height: 0; +} +.mx_AppsContainer .mx_AppTile:first-of-type { + border-left-width: 8px; + border-radius: 10px 0 0 10px; +} +.mx_AppsContainer .mx_AppTile:last-of-type { + border-right-width: 8px; + border-radius: 0 10px 10px 0; +} +.mx_AppsContainer .mx_ResizeHandle_horizontal { + position: relative; +} +.mx_AppsContainer .mx_ResizeHandle_horizontal > div { + width: 0; +} +.mx_AppsDrawer_2apps .mx_AppTile { + width: 50%; +} +.mx_AppsDrawer_2apps .mx_AppTile:nth-child(3) { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 0 !important; + min-width: 240px !important; +} +.mx_AppsDrawer_3apps .mx_AppTile { + width: 33%; +} +.mx_AppsDrawer_3apps .mx_AppTile:nth-child(3) { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: 0 !important; + min-width: 240px !important; +} +.mx_AppTile { + width: 50%; + min-width: 240px; + border-color: #f2f5f8; + border-style: solid; + border-width: 8px 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background-color: #f2f5f8; +} +.mx_AppTileFullWidth { + width: 100% !important; + border: 5px solid #f2f5f8; + border-radius: 8px; + background-color: #f2f5f8; +} +.mx_AppTile_mini, +.mx_AppTileFullWidth { + margin: 0; + padding: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_AppTile_mini { + width: 100%; + height: 200px; +} +.mx_AppTile .mx_AppTile_persistedWrapper, +.mx_AppTile_mini .mx_AppTile_persistedWrapper, +.mx_AppTileFullWidth .mx_AppTile_persistedWrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_AppTile_persistedWrapper div { + width: 100%; + height: 100%; +} +.mx_AppTileMenuBar { + margin: 0; + font-size: 1.2rem; + background-color: #f2f5f8; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + width: 100%; + padding-top: 2px; + padding-bottom: 8px; +} +.mx_AppTileMenuBarTitle { + line-height: 20px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_AppTileMenuBarTitle .mx_WidgetAvatar { + margin-right: 12px; +} +.mx_AppTileMenuBarTitle > :last-child { + margin-left: 9px; +} +.mx_AppTileMenuBarWidgets { + float: right; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppTileMenuBar_iconButton { + width: 12px; + height: 12px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: 0 center; + mask-position: 0 center; + -webkit-mask-size: auto 12px; + mask-size: auto 12px; + background-color: #212121; + margin: 0 3px; +} +.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout { + -webkit-mask-image: url(../../img/feather-customised/widget/external-link.7ab6751.svg); + mask-image: url(../../img/feather-customised/widget/external-link.7ab6751.svg); +} +.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu { + -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); + mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); +} +.mx_AppTileBody { + height: 100%; + background-color: #fff; +} +.mx_AppTileBody, +.mx_AppTileBody_mini { + width: 100%; + overflow: hidden; + border-radius: 8px; +} +.mx_AppTileBody_mini { + height: 200px; +} +.mx_AppTile .mx_AppTileBody, +.mx_AppTile_mini .mx_AppTileBody_mini, +.mx_AppTileFullWidth .mx_AppTileBody { + height: inherit; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_AppTileBody_mini iframe, +.mx_AppTileBody iframe { + border: none; + width: 100%; + height: 100%; +} +.mx_AppTileBody iframe { + overflow: hidden; + padding: 0; + margin: 0; + display: block; +} +.mx_AppPermissionWarning { + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 1.6rem; +} +.mx_AppPermissionWarning_row { + margin-bottom: 12px; +} +.mx_AppPermissionWarning_smallText { + font-size: 1.2rem; +} +.mx_AppPermissionWarning_bolder { + font-weight: 600; +} +.mx_AppPermissionWarning h4 { + margin: 0; + padding: 0; +} +.mx_AppPermissionWarning_helpIcon { + margin-top: 1px; + margin-right: 2px; + width: 10px; + height: 10px; + display: inline-block; +} +.mx_AppPermissionWarning_helpIcon:before { + display: inline-block; + background-color: #0dbd8b; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 12px; + mask-size: 12px; + width: 12px; + height: 12px; + -webkit-mask-position: center; + mask-position: center; + content: ""; + vertical-align: middle; + -webkit-mask-image: url(../../img/feather-customised/help-circle.03fb6cf.svg); + mask-image: url(../../img/feather-customised/help-circle.03fb6cf.svg); +} +.mx_AppPermissionWarning_tooltip { + -webkit-box-shadow: none; + box-shadow: none; + background-color: #27303a; + color: #fff; + border: none; + border-radius: 3px; + padding: 6px 8px; +} +.mx_AppPermissionWarning_tooltip ul { + list-style-position: inside; + padding-left: 2px; + margin-left: 0; +} +.mx_AppLoading { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-weight: 700; + position: relative; + height: 100%; + background-color: #fff !important; + border-radius: 8px; +} +.mx_AppLoading .mx_Spinner { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_AppLoading_spinner_fadeIn { + -webkit-animation-fill-mode: backwards; + animation-fill-mode: backwards; + -webkit-animation-duration: 0.2s; + animation-duration: 0.2s; + -webkit-animation-delay: 0.5s; + animation-delay: 0.5s; + -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; + animation-name: mx_AppLoading_spinner_fadeIn_animation; +} +@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes mx_AppLoading_spinner_fadeIn_animation { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +.mx_AppLoading iframe { + display: none; +} +.mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper { + z-index: 1; +} +.mx_Autocomplete { + position: absolute; + bottom: 0; + z-index: 1001; + width: 100%; + background: #fff; + border: 1px solid transparent; + border-bottom: none; + border-radius: 8px 8px 0 0; + max-height: 50vh; + overflow: auto; + -webkit-box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); + box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); +} +.mx_Autocomplete_ProviderSection { + border-bottom: 1px solid transparent; +} +.mx_Autocomplete_Completion_block { + height: 34px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 0 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #2e2f32; +} +.mx_Autocomplete_Completion_block * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_pill { + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 2rem; + height: 3.4rem; + padding: 0.4rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #2e2f32; +} +.mx_Autocomplete_Completion_pill > * { + margin-right: 0.3rem; +} +.mx_Autocomplete_Completion_subtitle { + font-style: italic; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_Autocomplete_Completion_description { + color: grey; +} +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-flow: wrap; + flex-flow: wrap; +} +.mx_Autocomplete_Completion_container_truncate + .mx_Autocomplete_Completion_description, +.mx_Autocomplete_Completion_container_truncate + .mx_Autocomplete_Completion_subtitle, +.mx_Autocomplete_Completion_container_truncate + .mx_Autocomplete_Completion_title { + max-width: 150px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_Autocomplete_Completion.selected, +.mx_Autocomplete_Completion:hover { + background: #f2f5f8; + outline: none; +} +.mx_Autocomplete_provider_name { + margin: 12px; + color: #2e2f32; + font-weight: 400; + opacity: 0.4; +} +.m_RoomView_auxPanel_stateViews { + padding: 5px 5px 5px 19px; + border-bottom: 1px solid transparent; +} +.m_RoomView_auxPanel_stateViews_span a { + text-decoration: none; + color: inherit; +} +.m_RoomView_auxPanel_stateViews_span[data-severity="warning"] { + font-weight: 700; + color: orange; +} +.m_RoomView_auxPanel_stateViews_span[data-severity="alert"] { + font-weight: 700; + color: red; +} +.m_RoomView_auxPanel_stateViews_span[data-severity="normal"] { + font-weight: 400; +} +.m_RoomView_auxPanel_stateViews_span[data-severity="notice"] { + font-weight: 400; + color: #a2a2a2; +} +.m_RoomView_auxPanel_stateViews_delim { + padding: 0 5px; + color: #a2a2a2; +} +.mx_BasicMessageComposer { + position: relative; +} +.mx_BasicMessageComposer + .mx_BasicMessageComposer_inputEmpty + > :first-child:before { + content: var(--placeholder); + opacity: 0.333; + width: 0; + height: 0; + overflow: visible; + display: inline-block; + pointer-events: none; + white-space: nowrap; +} +@-webkit-keyframes visualbell { + 0% { + background-color: #faa; + } + to { + background-color: #fff; + } +} +.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error { + -webkit-animation: visualbell 0.2s; + animation: visualbell 0.2s; +} +.mx_BasicMessageComposer .mx_BasicMessageComposer_input { + white-space: pre-wrap; + word-wrap: break-word; + outline: none; + overflow-x: hidden; +} +.mx_BasicMessageComposer + .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar + span.mx_RoomPill, +.mx_BasicMessageComposer + .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar + span.mx_UserPill { + position: relative; +} +.mx_BasicMessageComposer + .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar + span.mx_RoomPill:before, +.mx_BasicMessageComposer + .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar + span.mx_UserPill:before { + content: var(--avatar-letter); + width: 1.6rem; + height: 1.6rem; + margin-right: 0.24rem; + background: var(--avatar-background), #fff; + color: #fff; + background-repeat: no-repeat; + background-size: 1.6rem; + border-radius: 1.6rem; + text-align: center; + font-weight: 400; + line-height: 1.6rem; + font-size: 1.04rem; +} +.mx_BasicMessageComposer + .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled { + pointer-events: none; +} +.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper { + position: relative; + height: 0; +} +.mx_E2EIcon { + width: 16px; + height: 16px; + margin: 0 9px; + position: relative; + display: block; +} +.mx_E2EIcon_normal:after, +.mx_E2EIcon_normal:before, +.mx_E2EIcon_verified:after, +.mx_E2EIcon_verified:before, +.mx_E2EIcon_warning:after, +.mx_E2EIcon_warning:before { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_E2EIcon:before { + background-color: #fff; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 90%; + mask-size: 90%; +} +.mx_E2EIcon:before, +.mx_E2EIcon_bordered { + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); +} +.mx_E2EIcon_bordered { + background-color: #f3f8fd; +} +.mx_E2EIcon_bordered:after { + -webkit-mask-size: 75%; + mask-size: 75%; +} +.mx_E2EIcon_bordered:before { + -webkit-mask-size: 65%; + mask-size: 65%; +} +.mx_E2EIcon_warning:after { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); + background-color: #ff4b55; +} +.mx_E2EIcon_normal:after { + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); + background-color: #91a1c0; +} +.mx_E2EIcon_verified:after { + -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); + mask-image: url(../../img/e2e/verified.5be6c9f.svg); + background-color: #0dbd8b; +} +.mx_EditMessageComposer { + padding: 3px; + margin: -7px -10px -5px; + overflow: visible !important; +} +.mx_EditMessageComposer .mx_BasicMessageComposer_input { + border-radius: 4px; + border: 1px solid transparent; + background-color: #fff; + max-height: 200px; + padding: 3px 6px; +} +.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus { + border-color: rgba(13, 189, 139, 0.5); +} +.mx_EditMessageComposer .mx_EditMessageComposer_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + position: absolute; + left: 0; + background: #f3f8fd; + z-index: 100; + right: 0; + margin: 0 -110px 0 0; + padding: 5px 147px 5px 5px; +} +.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton { + margin-left: 5px; + padding: 5px 40px; +} +.mx_EventTile_last .mx_EditMessageComposer_buttons { + position: static; + margin-right: -147px; +} +.mx_EntityTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #2e2f32; + cursor: pointer; +} +.mx_EntityTile .mx_E2EIcon { + margin: 0; + position: absolute; + bottom: 2px; + right: 7px; +} +.mx_EntityTile:hover { + padding-right: 30px; + position: relative; +} +.mx_EntityTile:hover:before { + content: ""; + position: absolute; + top: calc(50% - 8px); + right: -8px; + -webkit-mask: url(../../img/member_chevron.4163a20.png); + mask: url(../../img/member_chevron.4163a20.png); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + width: 16px; + height: 16px; + background-color: #91a1c0; +} +.mx_EntityTile .mx_PresenceLabel { + display: none; +} +.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel { + display: block; +} +.mx_EntityTile_invite { + display: table-cell; + vertical-align: middle; + margin-left: 10px; + width: 26px; +} +.mx_EntityTile_avatar, +.mx_GroupRoomTile_avatar { + padding: 4px 12px 4px 3px; + position: relative; +} +.mx_EntityTile_name, +.mx_GroupRoomTile_name { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + overflow: hidden; + font-size: 1.4rem; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_EntityTile_details { + overflow: hidden; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_EntityTile_ellipsis .mx_EntityTile_name, +.mx_EntityTile_invitePlaceholder .mx_EntityTile_name { + font-style: italic; + color: #2e2f32; +} +.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, +.mx_EntityTile_offline_beenactive .mx_EntityTile_name, +.mx_EntityTile_unavailable .mx_EntityTile_avatar, +.mx_EntityTile_unavailable .mx_EntityTile_name { + opacity: 0.5; +} +.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, +.mx_EntityTile_offline_neveractive .mx_EntityTile_name, +.mx_EntityTile_unknown .mx_EntityTile_avatar, +.mx_EntityTile_unknown .mx_EntityTile_name { + opacity: 0.25; +} +.mx_EntityTile_subtext { + font-size: 1.1rem; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} +.mx_EntityTile_power { + -webkit-padding-start: 6px; + padding-inline-start: 6px; + font-size: 1rem; + color: #8d99a5; + max-width: 6em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_EntityTile:hover .mx_EntityTile_power { + display: none; +} +.mx_EventTile { + max-width: 100%; + clear: both; + padding-top: 18px; + font-size: 1.4rem; + position: relative; +} +.mx_EventTile.mx_EventTile_info { + padding-top: 1px; +} +.mx_EventTile_avatar { + top: 14px; + left: 8px; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 0.6rem; + left: 64px; +} +.mx_EventTile_continuation { + padding-top: 0 !important; +} +.mx_EventTile_continuation.mx_EventTile_isEditing { + padding-top: 5px !important; + margin-top: -5px; +} +.mx_EventTile_isEditing { + background-color: #f3f8fd; +} +.mx_EventTile .mx_SenderProfile { + color: #2e2f32; + font-size: 1.4rem; + display: inline-block; + overflow: hidden; + cursor: pointer; + padding-bottom: 0; + padding-top: 0; + margin: 0; + white-space: nowrap; + text-overflow: ellipsis; + max-width: calc(100% - 64px); +} +.mx_EventTile .mx_SenderProfile .mx_Flair { + opacity: 0.7; + margin-left: 5px; + display: inline-block; + vertical-align: top; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_EventTile .mx_SenderProfile .mx_Flair img { + vertical-align: -2px; + margin-right: 2px; + border-radius: 8px; +} +.mx_EventTile_isEditing .mx_MessageTimestamp { + visibility: hidden !important; +} +.mx_EventTile .mx_MessageTimestamp { + display: block; + visibility: hidden; + white-space: nowrap; + left: 0; + text-align: center; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_EventTile_continuation .mx_EventTile_line { + clear: both; +} +.mx_EventTile_line, +.mx_EventTile_reply { + position: relative; + padding-left: 64px; + border-radius: 4px; +} +.mx_EventListSummary .mx_EventTile_line, +.mx_RoomView_timeline_rr_enabled .mx_EventTile_line { + margin-right: 110px; +} +.mx_EventTile_bubbleContainer { + display: grid; + grid-template-columns: 1fr 100px; +} +.mx_EventTile_bubbleContainer .mx_EventTile_line { + margin-right: 0; + grid-column: 1/3; + padding: 0 !important; +} +.mx_EventTile_bubbleContainer .mx_EventTile_msgOption { + grid-column: 2; +} +.mx_EventTile_reply { + margin-right: 10px; +} +.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { + font-size: 48px !important; + line-height: 57px !important; +} +.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { + visibility: visible; +} +.mx_EventTile_selected > div > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +.mx_EventTile.focus-visible:focus-within > div > a > .mx_MessageTimestamp, +.mx_EventTile.mx_EventTile_actionBarFocused > div > a > .mx_MessageTimestamp, +.mx_EventTile:hover > div > a > .mx_MessageTimestamp, +.mx_EventTile_last > div > a > .mx_MessageTimestamp, +.mx_IRCLayout + .mx_EventTile.focus-visible:focus-within + > a + > .mx_MessageTimestamp, +.mx_IRCLayout + .mx_EventTile.mx_EventTile_actionBarFocused + > a + > .mx_MessageTimestamp, +.mx_IRCLayout .mx_EventTile:hover > a > .mx_MessageTimestamp, +.mx_IRCLayout .mx_EventTile_last > a > .mx_MessageTimestamp, +.mx_IRCLayout .mx_ReplyThread .mx_EventTile > a > .mx_MessageTimestamp { + visibility: visible; +} +.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar, +.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar, +.mx_EventTile:hover .mx_MessageActionBar, +[data-whatinput="keyboard"] .mx_EventTile:focus-within .mx_MessageActionBar { + visibility: visible; +} +.mx_EventTile_selected > .mx_EventTile_line { + border-left: 4px solid #0dbd8b; + padding-left: 60px; + background-color: #f6f7f8; +} +.mx_EventTile_highlight, +.mx_EventTile_highlight .markdown-body { + color: #ff4b55; +} +.mx_EventTile_highlight .markdown-body .mx_EventTile_line, +.mx_EventTile_highlight .mx_EventTile_line { + background-color: #fff8e3; +} +.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line { + padding-left: 78px; +} +.mx_EventTile.focus-visible:focus-within .mx_EventTile_line, +.mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line, +.mx_EventTile:hover .mx_EventTile_line { + background-color: #f6f7f8; +} +.mx_EventTile_searchHighlight { + border-radius: 5px; + padding-left: 2px; + padding-right: 2px; + cursor: pointer; +} +.mx_EventTile_searchHighlight, +.mx_EventTile_searchHighlight a { + background-color: #0dbd8b; + color: #fff; +} +.mx_EventTile_receiptSending:before, +.mx_EventTile_receiptSent:before { + background-color: #8d99a5; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 14px; + mask-size: 14px; + width: 14px; + height: 14px; + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; +} +.mx_EventTile_receiptSent:before { + -webkit-mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); + mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); +} +.mx_EventTile_receiptSending:before { + -webkit-mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); + mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); +} +.mx_EventTile_contextual { + opacity: 0.4; +} +.mx_EventTile_msgOption { + float: right; + text-align: right; + position: relative; + width: 90px; + height: 1px; + margin-right: 10px; +} +.mx_EventTile_msgOption a { + text-decoration: none; +} +.mx_EventTile_readAvatars { + position: relative; + display: inline-block; + width: 14px; + height: 14px; + top: -2.2rem; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + z-index: 1; +} +.mx_EventTile_readAvatars .mx_BaseAvatar { + position: absolute; + display: inline-block; + height: 1.4rem; + width: 1.4rem; + -webkit-transition: left 0.1s ease-out, top 0.3s ease-out; + transition: left 0.1s ease-out, top 0.3s ease-out; + -webkit-transition: left var(--transition-short) ease-out, + top var(--transition-standard) ease-out; + transition: left var(--transition-short) ease-out, + top var(--transition-standard) ease-out; +} +.mx_EventTile_readAvatarRemainder { + color: #acacac; + font-size: 1.1rem; + position: absolute; +} +.mx_EventTile_content { + display: block; + overflow-y: hidden; + overflow-x: hidden; + margin-right: 34px; +} +.mx_EventTile_body { + overflow-y: hidden; +} +.mx_EventTile_spoiler { + cursor: pointer; +} +.mx_EventTile_spoiler_reason { + color: #acacac; + font-size: 1.1rem; +} +.mx_EventTile_spoiler_content { + -webkit-filter: blur(5px) saturate(0.1) sepia(1); + filter: blur(5px) saturate(0.1) sepia(1); + -webkit-transition-duration: 0.5s; + transition-duration: 0.5s; +} +.mx_EventTile_spoiler.visible > .mx_EventTile_spoiler_content { + -webkit-filter: none; + filter: none; +} +.mx_EventTile_e2eIcon { + position: absolute; + top: 6px; + left: 44px; + width: 14px; + height: 14px; + display: block; + bottom: 0; + right: 0; + opacity: 0.2; + background-repeat: no-repeat; + background-size: contain; +} +.mx_EventTile_e2eIcon:after, +.mx_EventTile_e2eIcon:before { + content: ""; + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_EventTile_e2eIcon:after, +.mx_EventTile_e2eIcon:before { + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; +} +.mx_EventTile_e2eIcon:before { + background-color: #fff; + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); + -webkit-mask-size: 90%; + mask-size: 90%; +} +.mx_EventTile_e2eIcon_undecryptable:after, +.mx_EventTile_e2eIcon_unverified:after { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); + background-color: #ff4b55; +} +.mx_EventTile_e2eIcon_undecryptable, +.mx_EventTile_e2eIcon_unverified { + opacity: 1; +} +.mx_EventTile_e2eIcon_unknown:after { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); + background-color: #ff4b55; +} +.mx_EventTile_e2eIcon_unknown { + opacity: 1; +} +.mx_EventTile_e2eIcon_unencrypted:after { + -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); + mask-image: url(../../img/e2e/warning.78bb264.svg); + background-color: #ff4b55; +} +.mx_EventTile_e2eIcon_unencrypted { + opacity: 1; +} +.mx_EventTile_e2eIcon_unauthenticated:after { + -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); + mask-image: url(../../img/e2e/normal.76f0c09.svg); + background-color: #91a1c0; +} +.mx_EventTile_e2eIcon_unauthenticated { + opacity: 1; +} +.mx_EventTile_keyRequestInfo { + font-size: 1.2rem; +} +.mx_EventTile_keyRequestInfo_text { + opacity: 0.5; +} +.mx_EventTile_keyRequestInfo_text a { + color: #2e2f32; + text-decoration: underline; + cursor: pointer; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p { + text-align: auto; + margin-left: 3px; + margin-right: 3px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { + margin-top: 0; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { + margin-bottom: 0; +} +.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, +.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line, +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { + padding-left: 60px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { + border-left: 4px solid #76cfa5; +} +.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, +.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + border-left: 4px solid #e8bf37; +} +.mx_EventTile:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line, +.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info + .mx_EventTile_line, +.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line { + padding-left: 78px; +} +.mx_EventTile:hover .mx_EventTile_e2eIcon { + opacity: 1; +} +.mx_EventTile:hover.mx_EventTile_unknown + .mx_EventTile_line + > a + > .mx_MessageTimestamp, +.mx_EventTile:hover.mx_EventTile_unverified + .mx_EventTile_line + > a + > .mx_MessageTimestamp, +.mx_EventTile:hover.mx_EventTile_verified + .mx_EventTile_line + > a + > .mx_MessageTimestamp { + width: 38px; +} +.mx_EventTile:hover.mx_EventTile_unknown + .mx_EventTile_line + > .mx_EventTile_e2eIcon, +.mx_EventTile:hover.mx_EventTile_unverified + .mx_EventTile_line + > .mx_EventTile_e2eIcon, +.mx_EventTile:hover.mx_EventTile_verified + .mx_EventTile_line + > .mx_EventTile_e2eIcon { + display: block; + left: 41px; +} +.mx_EventTile_content .mx_EventTile_edited { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: 1.2rem; + color: #9e9e9e; + display: inline-block; + margin-left: 9px; + cursor: pointer; +} +.mx_EventTile_body pre { + border: 1px solid transparent; +} +.mx_EventTile_content .markdown-body { + font-family: inherit !important; + white-space: normal !important; + line-height: inherit !important; + color: inherit; + font-size: 1.4rem; +} +.mx_EventTile_content .markdown-body code, +.mx_EventTile_content .markdown-body pre { + font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; + color: #333; +} +.mx_EventTile_content .markdown-body pre { + overflow-x: overlay; + overflow-y: visible; +} +.mx_EventTile_content .markdown-body code { + background-color: #f8f8f8; +} +.mx_EventTile_lineNumbers { + float: left; + margin: 0 0.5em 0 -1.5em; + color: grey; +} +.mx_EventTile_lineNumber { + text-align: right; + display: block; + padding-left: 1em; +} +.mx_EventTile_collapsedCodeBlock { + max-height: 30vh; +} +.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre, +.mx_EventTile:hover .mx_EventTile_body pre { + border: 1px solid #e5e5e5; +} +.mx_EventTile_pre_container { + position: relative; +} +.mx_EventTile_button { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 8px; + right: 8px; + width: 19px; + height: 19px; + background-color: #2e2f32; +} +.mx_EventTile_buttonBottom { + top: 33px; +} +.mx_EventTile_copyButton { + -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); +} +.mx_EventTile_collapseButton { + -webkit-mask-image: url(../../img/feather-customised/minimise.aec9142.svg); + mask-image: url(../../img/feather-customised/minimise.aec9142.svg); +} +.mx_EventTile_collapseButton, +.mx_EventTile_expandButton { + -webkit-mask-size: 75%; + mask-size: 75%; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} +.mx_EventTile_expandButton { + -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); + mask-image: url(../../img/feather-customised/maximise.dc32127.svg); +} +.mx_EventTile_body + .mx_EventTile_pre_container:focus-within + .mx_EventTile_collapseButton, +.mx_EventTile_body + .mx_EventTile_pre_container:focus-within + .mx_EventTile_copyButton, +.mx_EventTile_body + .mx_EventTile_pre_container:focus-within + .mx_EventTile_expandButton, +.mx_EventTile_body + .mx_EventTile_pre_container:hover + .mx_EventTile_collapseButton, +.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton, +.mx_EventTile_body + .mx_EventTile_pre_container:hover + .mx_EventTile_expandButton { + visibility: visible; +} +.mx_EventTile_content .markdown-body h1, +.mx_EventTile_content .markdown-body h2, +.mx_EventTile_content .markdown-body h3, +.mx_EventTile_content .markdown-body h4, +.mx_EventTile_content .markdown-body h5, +.mx_EventTile_content .markdown-body h6 { + font-family: inherit !important; + color: inherit; +} +.mx_EventTile_content .markdown-body h1, +.mx_EventTile_content .markdown-body h2 { + font-size: 1.5em; + border-bottom: none !important; +} +.mx_EventTile_content .markdown-body a { + color: #238cf5; +} +.mx_EventTile_content .markdown-body .hljs { + display: inline !important; +} +.mx_EventTile_tileError { + color: red; + text-align: center; + margin-right: 0; +} +.mx_EventTile_tileError .mx_EventTile_line { + padding-left: 0; + margin-right: 0; +} +.mx_EventTile_tileError .mx_EventTile_line span { + padding: 4px 8px; +} +.mx_EventTile_tileError a { + margin-left: 1em; +} +@media only screen and (max-width: 480px) { + .mx_EventTile_line, + .mx_EventTile_reply { + padding-left: 0; + margin-right: 0; + } + .mx_EventTile_content { + margin-top: 10px; + margin-right: 0; + } +} +.mx_GroupLayout .mx_EventTile > .mx_SenderProfile { + line-height: 2rem; + margin-left: 64px; +} +.mx_GroupLayout .mx_EventTile > .mx_EventTile_line { + padding-left: 64px; +} +.mx_GroupLayout .mx_EventTile > .mx_EventTile_avatar { + position: absolute; +} +.mx_GroupLayout .mx_EventTile .mx_MessageTimestamp { + position: absolute; + width: 46px; +} +.mx_GroupLayout .mx_EventTile .mx_EventTile_line, +.mx_GroupLayout .mx_EventTile .mx_EventTile_reply { + padding-top: 1px; + padding-bottom: 3px; + line-height: 2.2rem; +} +.mx_GroupLayout .mx_EventTile_info .mx_EventTile_line { + padding-left: 82px; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile { + padding-top: 4px; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line, +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply { + padding-top: 0; + padding-bottom: 0; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info { + padding-top: 0; + font-size: 1.3rem; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_info + .mx_EventTile_line, +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_info + .mx_EventTile_reply { + line-height: 2rem; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_info + .mx_EventTile_avatar { + top: 4px; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile { + font-size: 1.3rem; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote { + padding-top: 8px; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_emote + .mx_EventTile_avatar { + top: 2px; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_emote + .mx_EventTile_line, +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_emote + .mx_EventTile_reply { + padding-top: 0; + padding-bottom: 1px; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { + padding-top: 0; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation + .mx_EventTile_line, +.mx_MatrixChat_useCompactLayout + .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation + .mx_EventTile_reply { + padding-top: 0; + padding-bottom: 0; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar { + top: 2px; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon { + top: 3px; +} +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars { + top: -2rem; +} +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + blockquote, +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + dl, +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + ol, +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + p, +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + pre, +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + table, +.mx_MatrixChat_useCompactLayout + .mx_EventTile + .mx_EventTile_content + .markdown-body + ul { + margin-bottom: 4px; +} +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 { + margin-top: 6px; +} +.mx_IRCLayout { + --name-width: 70px; + line-height: 1.8rem !important; +} +.mx_IRCLayout .mx_EventTile > a { + text-decoration: none; +} +.mx_IRCLayout .mx_EventTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + padding-top: 0; +} +.mx_IRCLayout .mx_EventTile > * { + margin-right: 5px; +} +.mx_IRCLayout .mx_EventTile > .mx_EventTile_msgOption { + -webkit-box-ordinal-group: 6; + -ms-flex-order: 5; + order: 5; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.mx_IRCLayout + .mx_EventTile + > .mx_EventTile_msgOption + .mx_EventTile_readAvatars { + top: 0.2rem; +} +.mx_IRCLayout .mx_EventTile > .mx_SenderProfile { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -ms-flex-negative: 0; + flex-shrink: 0; + width: var(--name-width); + text-overflow: ellipsis; + text-align: left; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + overflow: visible; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_IRCLayout .mx_EventTile .mx_EventTile_line, +.mx_IRCLayout .mx_EventTile .mx_EventTile_reply { + padding: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-negative: 1; + flex-shrink: 1; + min-width: 0; +} +.mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + position: relative; + top: 0; + left: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + height: 1.8rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar > .mx_BaseAvatar, +.mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar > .mx_BaseAvatar > * { + height: 1.4rem !important; + width: 1.4rem !important; + font-size: 1rem !important; + line-height: 1.5rem !important; +} +.mx_IRCLayout .mx_EventTile .mx_MessageTimestamp { + font-size: 1rem; + width: 45px; + text-align: right; +} +.mx_IRCLayout .mx_EventTile > .mx_EventTile_e2eIcon { + position: absolute; + right: unset; + left: unset; + top: 0; + padding: 0; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + height: 1.8rem; + background-position: 50%; +} +.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon, +.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody, +.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_ReplyThread_wrapper_empty, +.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent { + display: inline-block; +} +.mx_IRCLayout .mx_EventTile .mx_EventTile_reply { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons { + position: relative; +} +.mx_IRCLayout .mx_EventTile_emote > .mx_EventTile_avatar { + margin-left: calc(var(--name-width) + 19px); +} +.mx_IRCLayout blockquote { + margin: 0; +} +.mx_IRCLayout .mx_EventListSummary > .mx_EventTile_line { + padding-left: calc(var(--name-width) + 74px); +} +.mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars { + padding: 0; + margin: 0 9px 0 0; +} +.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + left: calc(var(--name-width) + 24px); + top: 0; +} +.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line { + left: calc(var(--name-width) + 24px); +} +.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent { + line-height: 1.8rem; +} +.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, +.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line, +.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { + padding-left: 0; + border-left: 0; +} +.mx_IRCLayout .mx_SenderProfile_hover { + background-color: #fff; + overflow: hidden; +} +.mx_IRCLayout .mx_SenderProfile_hover > span { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_IRCLayout .mx_SenderProfile_hover > span > .mx_SenderProfile_name { + overflow: hidden; + text-overflow: ellipsis; + min-width: var(--name-width); + text-align: end; +} +.mx_IRCLayout .mx_SenderProfile:hover { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_IRCLayout .mx_SenderProfile_hover:hover { + overflow: visible; + width: max(auto, 100%); + z-index: 10; +} +.mx_IRCLayout .mx_ReplyThread { + margin: 0; +} +.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile { + width: unset; + max-width: var(--name-width); +} +.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover { + background: transparent; +} +.mx_IRCLayout + .mx_ReplyThread + .mx_SenderProfile_hover + > span + > .mx_SenderProfile_name { + min-width: inherit; +} +.mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote > .mx_EventTile_avatar { + margin-left: 0; +} +.mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp { + width: auto; +} +.mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon { + position: relative; + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; +} +.mx_IRCLayout .mx_ProfileResizer { + position: absolute; + height: 100%; + width: 15px; + left: calc(80px + var(--name-width)); + cursor: col-resize; + z-index: 100; +} +.mx_IRCLayout .mx_Flair > img { + height: 1.4rem !important; + width: 1.4rem !important; +} +.mx_JumpToBottomButton { + z-index: 1000; + position: absolute; + bottom: 12px; + right: 24px; + width: 38px; + height: 50px; + text-align: center; +} +.mx_JumpToBottomButton_badge { + position: relative; + top: -12px; + border-radius: 16px; + font-weight: 700; + font-size: 1.2rem; + line-height: 1.4rem; + text-align: center; + display: inline-block; + padding: 0 4px; + color: #fff; + background-color: #61708b; +} +.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge { + color: #f2f5f8; + background-color: #ff4b55; +} +.mx_JumpToBottomButton_scrollDown { + position: relative; + height: 38px; + border-radius: 19px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #fff; + border: 1.3px solid #61708b; + cursor: pointer; +} +.mx_JumpToBottomButton_scrollDown:before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + -webkit-mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); + mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + background: #61708b; +} +.mx_LinkPreviewWidget { + margin-top: 15px; + margin-right: 15px; + margin-bottom: 15px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-left: 4px solid #ddd; + color: #888; +} +.mx_LinkPreviewWidget_image { + -webkit-box-flex: 0; + -ms-flex: 0 0 100px; + flex: 0 0 100px; + margin-left: 15px; + text-align: center; + cursor: pointer; +} +.mx_LinkPreviewWidget_caption { + margin-left: 15px; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_LinkPreviewWidget_title { + display: inline; + font-weight: 700; + white-space: normal; +} +.mx_LinkPreviewWidget_siteName { + display: inline; +} +.mx_LinkPreviewWidget_description { + margin-top: 8px; + white-space: normal; + word-wrap: break-word; +} +.mx_LinkPreviewWidget_cancel { + cursor: pointer; + width: 18px; + height: 18px; +} +.mx_LinkPreviewWidget_cancel img { + -webkit-box-flex: 0; + -ms-flex: 0 0 40px; + flex: 0 0 40px; + visibility: hidden; +} +.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel img, +.mx_LinkPreviewWidget_cancel.focus-visible:focus img { + visibility: visible; +} +.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget { + margin-top: 6px; + margin-bottom: 6px; +} +.mx_MemberInfo { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow-y: auto; + margin-top: 8px; +} +.mx_MemberInfo, +.mx_MemberInfo_name { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_MemberInfo_name { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MemberInfo_name > .mx_E2EIcon { + margin-right: 0; +} +.mx_MemberInfo_cancel { + height: 16px; + width: 16px; + padding: 10px 0 10px 10px; + cursor: pointer; + -webkit-mask-image: url(../../img/minimise.871d2de.svg); + mask-image: url(../../img/minimise.871d2de.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: 16px center; + mask-position: 16px center; + background-color: #91a1c0; +} +.mx_MemberInfo_name h2 { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow-x: auto; + max-height: 50px; +} +.mx_MemberInfo h2 { + font-size: 1.8rem; + font-weight: 600; + margin: 16px 0 16px 15px; +} +.mx_MemberInfo_container { + margin: 0 16px 16px; +} +.mx_MemberInfo .mx_RoomTile_nameContainer { + width: 154px; +} +.mx_MemberInfo .mx_RoomTile_badge { + display: none; +} +.mx_MemberInfo .mx_RoomTile_name { + width: 160px; +} +.mx_MemberInfo_avatar { + background: hsla(0, 0%, 91%, 0.77); + margin-bottom: 16px; +} +.mx_MemberInfo_avatar > img { + height: auto; + width: 100%; + max-height: 30vh; + -o-object-fit: contain; + object-fit: contain; + display: block; +} +.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { + cursor: -webkit-zoom-in; + cursor: zoom-in; +} +.mx_MemberInfo_profile { + margin-bottom: 16px; +} +.mx_MemberInfo h3 { + text-transform: uppercase; + color: #9fa9ba; + font-weight: 700; + font-size: 1.2rem; + margin: 4px 0; +} +.mx_MemberInfo_profileField { + font-size: 1.5rem; + position: relative; +} +.mx_MemberInfo_buttons { + margin-bottom: 16px; +} +.mx_MemberInfo_field { + cursor: pointer; + font-size: 1.5rem; + color: #2e2f32; + margin-left: 8px; + line-height: 2.3rem; +} +.mx_MemberInfo_createRoom { + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 0 8px; +} +.mx_MemberInfo_createRoom_label { + width: auto !important; + cursor: pointer; +} +.mx_MemberInfo label { + font-size: 1.3rem; +} +.mx_MemberInfo label .mx_MemberInfo_label_text { + display: inline-block; + max-width: 180px; + vertical-align: text-top; +} +.mx_MemberInfo input[type="radio"] { + vertical-align: -2px; + margin-right: 5px; + margin-left: 8px; +} +.mx_MemberInfo_statusMessage { + font-size: 1.1rem; + opacity: 0.5; + overflow: hidden; + white-space: nowrap; + text-overflow: clip; +} +.mx_MemberInfo .mx_MemberInfo_scrollContainer { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_GroupMemberList, +.mx_GroupRoomList, +.mx_MemberList { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 0; +} +.mx_GroupMemberList .mx_Spinner, +.mx_GroupRoomList .mx_Spinner, +.mx_MemberList .mx_Spinner { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; +} +.mx_GroupMemberList .mx_SearchBox, +.mx_GroupRoomList .mx_SearchBox, +.mx_MemberList .mx_SearchBox { + margin-bottom: 5px; +} +.mx_GroupMemberList h2, +.mx_GroupRoomList h2, +.mx_MemberList h2 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 1.3rem; + padding-left: 3px; + padding-right: 12px; + margin-top: 8px; + margin-bottom: 4px; +} +.mx_GroupMemberList .mx_AutoHideScrollbar, +.mx_GroupRoomList .mx_AutoHideScrollbar, +.mx_MemberList .mx_AutoHideScrollbar { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_GroupMemberList .mx_RightPanel_scopeHeader, +.mx_GroupRoomList .mx_RightPanel_scopeHeader, +.mx_MemberList .mx_RightPanel_scopeHeader { + margin-top: -8px; +} +.mx_GroupMemberList_query, +.mx_GroupRoomList_query { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_MemberList_chevron { + position: absolute; + right: 35px; + margin-top: -15px; +} +.mx_MemberList_border { + overflow-y: auto; + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; +} +.mx_MemberList_query { + height: 16px; +} +.mx_MemberList_query[type="text"] { + font-size: 1.2rem; +} +.mx_MemberList_wrapper { + padding: 10px; +} +.mx_MemberList_invite { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + position: relative; + background-color: #0dbd8b; + border-radius: 4px; + margin: 5px 9px 9px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + color: #fff; + font-weight: 600; +} +.mx_MemberList_invite.mx_AccessibleButton_disabled { + background-color: #888; + cursor: not-allowed; +} +.mx_MemberList_invite span { + padding: 8px 0; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_MemberList_invite span:before { + content: ""; + display: inline-block; + background-color: #fff; + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 20px; + mask-size: 20px; + width: 20px; + height: 20px; + margin-right: 5px; +} +.mx_MemberList_inviteCommunity span:before { + -webkit-mask-image: url(../../img/icon-invite-people.d82f491.svg); + mask-image: url(../../img/icon-invite-people.d82f491.svg); +} +.mx_MemberList_addRoomToCommunity span:before { + -webkit-mask-image: url(../../img/icons-room-add.bd36e26.svg); + mask-image: url(../../img/icons-room-add.bd36e26.svg); +} +.mx_MessageComposer_wrapper { + vertical-align: middle; + margin: auto; + border-top: 1px solid transparent; + position: relative; + padding-left: 82px; + padding-right: 6px; +} +.mx_MessageComposer_replaced_wrapper { + margin-left: auto; + margin-right: auto; +} +.mx_MessageComposer_replaced_valign { + height: 60px; + display: table-cell; + vertical-align: middle; +} +.mx_MessageComposer_roomReplaced_icon { + float: left; + margin-right: 20px; + margin-top: 5px; + width: 31px; + height: 31px; +} +.mx_MessageComposer_roomReplaced_header { + font-weight: 700; +} +.mx_MessageComposer_autocomplete_wrapper { + position: relative; + height: 0; +} +.mx_MessageComposer_row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} +.mx_MessageComposer .mx_MessageComposer_avatar { + position: absolute; + left: 26px; +} +.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { + display: block; +} +.mx_MessageComposer_composecontrols { + width: 100%; +} +.mx_MessageComposer_e2eIcon.mx_E2EIcon { + position: absolute; + left: 60px; + margin-right: 0; + margin-left: 3px; + width: 12px; + height: 12px; +} +.mx_MessageComposer_noperm_error { + width: 100%; + height: 60px; + font-style: italic; + color: #888; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_MessageComposer_input_wrapper { + cursor: text; +} +.mx_MessageComposer_input, +.mx_MessageComposer_input_wrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MessageComposer_input { + vertical-align: middle; + min-height: 60px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + font-size: 1.4rem; + margin-right: 6px; +} +.mx_MessageComposer_editor { + width: 100%; + max-height: 120px; + min-height: 19px; + overflow-y: auto; + overflow-x: hidden; + word-break: break-word; +} +.mx_MessageComposer_editor > :first-child { + margin-top: 0 !important; +} +.mx_MessageComposer_editor > :last-child { + margin-bottom: 0 !important; +} +@keyframes visualbell { + 0% { + background-color: #faa; + } + to { + background-color: #fff; + } +} +.mx_MessageComposer_input_error { + -webkit-animation: visualbell 0.2s; + animation: visualbell 0.2s; +} +.mx_MessageComposer_input blockquote { + color: #777; + margin: 0 0 16px; + padding: 0 15px; + border-left: 4px solid #ddd; +} +.mx_MessageComposer_input pre { + background-color: rgba(0, 0, 0, 0.04); + border-radius: 3px; + padding: 10px; +} +.mx_MessageComposer_input textarea { + display: block; + width: 100%; + padding: 0; + margin-top: 6px; + margin-bottom: 6px; + border: 0; + resize: none; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #2e2f32; + background-color: #fff; + font-size: 1.4rem; + max-height: 120px; + overflow: auto; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; +} +.mx_MessageComposer_input textarea::-moz-placeholder { + line-height: 100%; + color: #0dbd8b; + opacity: 1; +} +.mx_MessageComposer_input textarea::-webkit-input-placeholder { + color: #0dbd8b; +} +.mx_MessageComposer_button_highlight { + background: rgba(13, 189, 139, 0.25); +} +.mx_MessageComposer_button_highlight:before { + background-color: #0dbd8b !important; +} +.mx_MessageComposer_button { + position: relative; + margin-right: 6px; + cursor: pointer; + height: 26px; + width: 26px; + border-radius: 100%; +} +.mx_MessageComposer_button:before { + content: ""; + position: absolute; + top: 3px; + left: 3px; + height: 20px; + width: 20px; + background-color: #c1c6cd; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; +} +.mx_MessageComposer_button:hover { + background: rgba(13, 189, 139, 0.1); +} +.mx_MessageComposer_button:hover:before { + background-color: #0dbd8b; +} +.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before { + background-color: #ff4b55; +} +.mx_MessageComposer_upload:before { + -webkit-mask-image: url(../icons/attach.svg); + mask-image: url(../icons/attach.svg); +} +.mx_MessageComposer_voiceMessage:before { + -webkit-mask-image: url(../../img/voip/mic-on-mask.97ec7a0.svg); + mask-image: url(../../img/voip/mic-on-mask.97ec7a0.svg); +} +.mx_MessageComposer_emoji:before { + -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); + mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); +} +.mx_MessageComposer_stickers:before { + -webkit-mask-image: url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg); + mask-image: url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg); +} +.mx_MessageComposer_sendMessage { + cursor: pointer; + position: relative; + margin-right: 6px; + width: 32px; + height: 32px; + border-radius: 100%; + background-color: #0dbd8b; +} +.mx_MessageComposer_sendMessage:before { + position: absolute; + height: 16px; + width: 16px; + top: 8px; + left: 9px; + -webkit-mask-image: url(../../img/element-icons/send-message.a4e9cf8.svg); + mask-image: url(../../img/element-icons/send-message.a4e9cf8.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; + background-color: #fff; + content: ""; +} +.mx_MessageComposer_formatting { + cursor: pointer; + margin: 0 11px; + width: 24px; + height: 18px; +} +.mx_MessageComposer_formatbar_wrapper { + width: 100%; + background-color: #fff; + -webkit-box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); + box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); +} +.mx_MessageComposer_formatbar { + margin: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 30px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-left: 62px; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 1rem; + color: #888; +} +.mx_MessageComposer_formatbar * { + margin-right: 4px; +} +.mx_MessageComposer_format_button, +.mx_MessageComposer_formatbar_cancel, +.mx_MessageComposer_formatbar_markdown { + cursor: pointer; +} +.mx_MessageComposer_formatbar_cancel { + margin-right: 22px; +} +.mx_MessageComposer_formatbar_markdown { + height: 17px; + width: 30px; + margin-right: 64px; +} +.mx_MessageComposer_input_markdownIndicator { + height: 10px; + width: 12px; + padding: 4px 4px 4px 0; +} +.mx_MessageComposer_formatbar_markdown, +.mx_MessageComposer_input_markdownIndicator { + cursor: pointer; + -webkit-mask-image: url(../../img/markdown.6905ba8.svg); + mask-image: url(../../img/markdown.6905ba8.svg); + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #c1c6cd; +} +.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled, +.mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled { + opacity: 0.2; +} +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input { + min-height: 50px; +} +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error { + height: 50px; +} +.mx_MessageComposerFormatBar { + display: none; + width: 130px; + height: 24px; + position: absolute; + cursor: pointer; + border-radius: 4px; + background-color: #fff; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + z-index: 1000; +} +.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown { + display: block; +} +.mx_MessageComposerFormatBar > * { + white-space: nowrap; + display: inline-block; + position: relative; + border: 1px solid #e9edf1; + margin-left: -1px; +} +.mx_MessageComposerFormatBar > :hover { + border-color: #ddd; + z-index: 1; +} +.mx_MessageComposerFormatBar > :first-child { + border-radius: 3px 0 0 3px; +} +.mx_MessageComposerFormatBar > :last-child { + border-radius: 0 3px 3px 0; +} +.mx_MessageComposerFormatBar > :only-child { + border-radius: 3px; +} +.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button { + width: 27px; + height: 24px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: none; + vertical-align: middle; +} +.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after { + content: ""; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #2e2f32; +} +.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg); + mask-image: url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg); +} +.mx_MessageComposerFormatBar + .mx_MessageComposerFormatBar_buttonIconItalic:after { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/italic.bf18054.svg); + mask-image: url(../../img/element-icons/room/format-bar/italic.bf18054.svg); +} +.mx_MessageComposerFormatBar + .mx_MessageComposerFormatBar_buttonIconStrikethrough:after { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg); + mask-image: url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg); +} +.mx_MessageComposerFormatBar + .mx_MessageComposerFormatBar_buttonIconQuote:after { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); + mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); +} +.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); + mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); +} +.mx_MessageComposerFormatBar_buttonTooltip { + white-space: nowrap; + font-size: 1.3rem; + font-weight: 600; + min-width: 54px; + text-align: center; +} +.mx_MessageComposerFormatBar_buttonTooltip + .mx_MessageComposerFormatBar_tooltipShortcut { + font-size: 0.9rem; + opacity: 0.7; +} +.mx_NewRoomIntro { + margin: 40px 0 48px 64px; +} +.mx_NewRoomIntro + .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):after, +.mx_NewRoomIntro + .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):before { + content: unset; +} +.mx_NewRoomIntro .mx_AccessibleButton_kind_link { + padding: 0; + font-size: inherit; +} +.mx_NewRoomIntro .mx_NewRoomIntro_buttons { + margin-top: 28px; +} +.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton { + line-height: 2.4rem; + display: inline-block; +} +.mx_NewRoomIntro + .mx_NewRoomIntro_buttons + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 12px; +} +.mx_NewRoomIntro + .mx_NewRoomIntro_buttons + .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before { + content: ""; + display: inline-block; + background-color: #fff; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 20px; + mask-size: 20px; + width: 20px; + height: 20px; + margin-right: 5px; + vertical-align: text-bottom; +} +.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before { + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_NewRoomIntro > h2 { + margin-top: 24px; + font-size: 2.4rem; + font-weight: 600; +} +.mx_NewRoomIntro > p { + margin: 0; + font-size: 1.5rem; + color: #737d8c; +} +.mx_NotificationBadge:not(.mx_NotificationBadge_visible) { + display: none; +} +.mx_NotificationBadge.mx_NotificationBadge_visible { + background-color: #61708b; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted { + background-color: #ff4b55; +} +.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot { + background-color: #2e2f32; + width: 6px; + height: 6px; + border-radius: 6px; +} +.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char { + width: 1.6rem; + height: 1.6rem; + border-radius: 1.6rem; +} +.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char { + width: 2.6rem; + height: 1.6rem; + border-radius: 1.6rem; +} +.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count { + font-size: 1rem; + line-height: 1.4rem; + color: #fff; +} +.mx_PinnedEventTile { + min-height: 40px; + margin-bottom: 5px; + width: 100%; + border-radius: 5px; +} +.mx_PinnedEventTile:hover { + background-color: #f6f7f8; +} +.mx_PinnedEventTile .mx_PinnedEventTile_sender, +.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + color: #868686; + font-size: 0.8em; + vertical-align: top; + display: inline-block; + padding-bottom: 3px; +} +.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + padding-left: 15px; + display: none; +} +.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar { + float: left; + margin-right: 10px; +} +.mx_PinnedEventTile_actions { + float: right; + margin-right: 10px; + display: none; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp { + display: inline-block; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions { + display: block; +} +.mx_PinnedEventTile_unpinButton { + display: inline-block; + cursor: pointer; + margin-left: 10px; +} +.mx_PinnedEventTile_gotoButton { + display: inline-block; + font-size: 0.7em; +} +.mx_PinnedEventTile_message { + margin-left: 50px; + position: relative; + top: 0; + left: 0; +} +.mx_PinnedEventsPanel { + border-top: 1px solid transparent; +} +.mx_PinnedEventsPanel_body { + max-height: 300px; + overflow-y: auto; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_header { + margin: 0; + padding-top: 8px; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_cancel { + margin: 12px; + float: right; + display: inline-block; +} +.mx_PresenceLabel { + font-size: 1.1rem; + opacity: 0.5; +} +.mx_ReplyPreview { + background: #fff; + border: 1px solid transparent; + border-bottom: none; + border-radius: 8px 8px 0 0; + max-height: 50vh; + overflow: auto; + -webkit-box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); + box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); +} +.mx_ReplyPreview_section { + border-bottom: 1px solid transparent; +} +.mx_ReplyPreview_header { + margin: 12px; + color: #2e2f32; + font-weight: 400; + opacity: 0.4; +} +.mx_ReplyPreview_title { + float: left; +} +.mx_ReplyPreview_cancel { + float: right; + cursor: pointer; +} +.mx_ReplyPreview_clear { + clear: both; +} +.mx_RoomBreadcrumbs { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb { + margin-right: 8px; + width: 32px; +} +.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter { + margin-left: -40px; +} +.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active { + margin-left: 0; + -webkit-transition: margin-left 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); + transition: margin-left 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); +} +.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder { + font-weight: 600; + font-size: 1.4rem; + line-height: 32px; + height: 32px; +} +.mx_RoomBreadcrumbs_Tooltip { + margin-left: -42px; + margin-top: -42px; +} +.mx_RoomHeader { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + border-bottom: 1px solid transparent; + background-color: #fff; +} +.mx_RoomHeader .mx_RoomHeader_e2eIcon { + height: 12px; + width: 12px; +} +.mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon { + margin: 0; + position: absolute; + height: 12px; + width: 12px; +} +.mx_RoomHeader_wrapper { + margin: auto; + height: 50px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-width: 0; + padding: 0 10px 0 18px; +} +.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large { + margin: 0; +} +.mx_RoomHeader_spinner { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + height: 36px; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_textButton { + vertical-align: middle; + border: 0; + border-radius: 8px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-size: 1.4rem; + color: #fff; + background-color: #0dbd8b; + width: auto; + padding: 7px 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin-right: 8px; + margin-top: -5px; +} +.mx_RoomHeader_textButton_danger { + background-color: #ff4b55; +} +.mx_RoomHeader_cancelButton { + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_buttons { + background-color: #fff; +} +.mx_RoomHeader_buttons, +.mx_RoomHeader_info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomHeader_info { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomHeader_simpleHeader { + line-height: 5.2rem; + color: #45474a; + font-size: 1.8rem; + font-weight: 600; + overflow: hidden; + margin-left: 63px; + text-overflow: ellipsis; + width: 100%; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { + float: right; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { + margin-left: 14px; + margin-right: 24px; + vertical-align: -4px; +} +.mx_RoomHeader_name { + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + overflow: hidden; + color: #45474a; + font-weight: 600; + font-size: 1.8rem; + margin: 0 7px; + border-bottom: 1px solid transparent; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomHeader_nametext { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.mx_RoomHeader_settingsHint { + color: #a2a2a2 !important; +} +.mx_RoomHeader_searchStatus { + font-weight: 400; + opacity: 0.6; +} +.mx_RoomHeader_avatar, +.mx_RoomHeader_avatarPicker, +.mx_RoomHeader_avatarPicker_edit, +.mx_RoomHeader_avatarPicker_remove, +.mx_RoomHeader_name { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_remove { + position: absolute; + top: -11px; + right: -9px; +} +.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { + color: #0dbd8b; +} +.mx_RoomHeader_placeholder { + color: #a2a2a2 !important; +} +.mx_RoomHeader_editable { + border-bottom: 1px solid #c7c7c7 !important; + min-width: 150px; + cursor: text; +} +.mx_RoomHeader_editable:focus { + border-bottom: 1px solid #0dbd8b !important; + outline: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.mx_RoomHeader_topic { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + color: #9e9e9e; + font-weight: 400; + font-size: 1.3rem; + margin: 4px 7px 0; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; + line-height: 1.2em; + max-height: 2.4em; +} +.mx_RoomHeader_avatar { + -webkit-box-flex: 0; + -ms-flex: 0; + flex: 0; + margin: 0 6px 0 7px; + position: relative; +} +.mx_RoomHeader_avatar .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_RoomHeader_avatarPicker { + position: relative; +} +.mx_RoomHeader_avatarPicker_edit { + position: absolute; + left: 16px; + top: 18px; +} +.mx_RoomHeader_avatarPicker_edit > label { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_edit > input { + display: none; +} +.mx_RoomHeader_button { + position: relative; + margin-left: 1px; + margin-right: 1px; + cursor: pointer; + height: 32px; + width: 32px; + border-radius: 100%; +} +.mx_RoomHeader_button:before { + content: ""; + position: absolute; + top: 4px; + left: 4px; + height: 24px; + width: 24px; + background-color: #c1c6cd; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_RoomHeader_button:hover { + background: rgba(13, 189, 139, 0.1); +} +.mx_RoomHeader_button:hover:before { + background-color: #0dbd8b; +} +.mx_RoomHeader_forgetButton:before { + -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); + mask-image: url(../../img/element-icons/leave.bb917e7.svg); + width: 26px; +} +.mx_RoomHeader_appsButton:before { + -webkit-mask-image: url(../../img/element-icons/room/apps.5ee9f78.svg); + mask-image: url(../../img/element-icons/room/apps.5ee9f78.svg); +} +.mx_RoomHeader_appsButton_highlight:before { + background-color: #0dbd8b; +} +.mx_RoomHeader_searchButton:before { + -webkit-mask-image: url(../../img/element-icons/room/search-inset.db6314d.svg); + mask-image: url(../../img/element-icons/room/search-inset.db6314d.svg); +} +.mx_RoomHeader_voiceCallButton:before { + -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); + mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-position: center; + mask-position: center; +} +.mx_RoomHeader_videoCallButton:before { + -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); + mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); +} +.mx_RoomHeader_showPanel { + height: 16px; +} +.mx_RoomHeader_voipButton { + display: table-cell; +} +.mx_RoomHeader_voipButtons { + margin-top: 18px; +} +.mx_RoomHeader_pinnedButton:before { + -webkit-mask-image: url(../../img/element-icons/room/pin.6ab67ed.svg); + mask-image: url(../../img/element-icons/room/pin.6ab67ed.svg); +} +.mx_RoomHeader_pinsIndicator { + position: absolute; + right: 0; + bottom: 4px; + width: 8px; + height: 8px; + border-radius: 8px; + background-color: #8d99a5; +} +.mx_RoomHeader_pinsIndicatorUnread { + background-color: #ff4b55; +} +@media only screen and (max-width: 480px) { + .mx_RoomHeader_wrapper { + padding: 0; + } + .mx_RoomHeader { + overflow: hidden; + } +} +.mx_RoomList { + padding-right: 7px; +} +.mx_RoomList_iconPlus:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); + mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); +} +.mx_RoomList_iconHash:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); + mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); +} +.mx_RoomList_iconExplore:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); + mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); +} +.mx_RoomList_iconBrowse:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); + mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); +} +.mx_RoomList_iconDialpad:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/dialpad.37f876f.svg); + mask-image: url(../../img/element-icons/roomlist/dialpad.37f876f.svg); +} +.mx_RoomList_explorePrompt { + margin: 4px 12px; + padding-top: 12px; + border-top: 1px solid #e7e7e7; + font-size: 1.4rem; +} +.mx_RoomList_explorePrompt div:first-child { + font-weight: 600; + line-height: 1.8rem; + color: #2e2f32; +} +.mx_RoomList_explorePrompt .mx_AccessibleButton { + color: #2e2f32; + position: relative; + padding: 8px 8px 8px 32px; + font-size: inherit; + margin-top: 12px; + display: block; + text-align: start; + background-color: rgba(141, 151, 165, 0.2); + border-radius: 4px; +} +.mx_RoomList_explorePrompt .mx_AccessibleButton:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + top: 8px; + left: 8px; + background: #737d8c; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} +.mx_RoomList_explorePrompt + .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before { + -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); + mask-image: url(../../img/element-icons/feedback.a91241e.svg); +} +.mx_RoomList_explorePrompt + .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); + mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); +} +.mx_RoomList_explorePrompt + .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before { + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_RoomList_explorePrompt + .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); + mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); +} +.mx_RoomPreviewBar { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; +} +.mx_RoomPreviewBar h3 { + font-size: 1.8rem; + font-weight: 600; +} +.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomPreviewBar .mx_RoomPreviewBar_message p, +.mx_RoomPreviewBar h3 { + word-break: break-all; + word-break: break-word; +} +.mx_RoomPreviewBar .mx_Spinner { + width: auto; + height: auto; + margin: 10px 10px 10px 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_RoomPreviewBar .mx_RoomPreviewBar_footer { + font-size: 1.2rem; + line-height: 2rem; +} +.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner { + vertical-align: middle; + display: inline-block; +} +.mx_RoomPreviewBar_actions, +.mx_RoomPreviewBar_message { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomPreviewBar_message { + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; +} +.mx_RoomPreviewBar_message p { + overflow-wrap: break-word; +} +.mx_RoomPreviewBar_panel { + padding: 8px 8px 8px 20px; + border-top: 1px solid transparent; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} +.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + padding: 3px 8px; +} +.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions > * { + margin-left: 12px; +} +.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + min-width: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message > * { + margin: 4px; +} +.mx_RoomPreviewBar_dialog { + margin: auto; + -webkit-box-sizing: content; + box-sizing: content; + width: 400px; + border-radius: 4px; + padding: 20px; + text-align: center; +} +.mx_RoomPreviewBar_dialog, +.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message > * { + margin: 5px 0 20px; +} +.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions { + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; +} +.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton { + padding: 7px 50px; +} +.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions > * { + margin-top: 12px; +} +.mx_RoomPreviewBar_dialog + .mx_RoomPreviewBar_actions + .mx_AccessibleButton.mx_AccessibleButton_kind_primary { + margin-bottom: 7px; +} +.mx_RoomPreviewBar_inviter { + font-weight: 600; +} +a.mx_RoomPreviewBar_inviter { + text-decoration: underline; + cursor: pointer; +} +.mx_RoomSublist { + margin-left: 8px; + margin-bottom: 4px; +} +.mx_RoomSublist.mx_RoomSublist_hidden { + display: none; +} +.mx_RoomSublist .mx_RoomSublist_headerContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-bottom: 8px; + max-height: 24px; + color: #8d99a5; +} +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + max-width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky { + position: fixed; + height: 32px; + width: calc(100% - 22px); +} +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_badgeContainer + .mx_NotificationBadge { + margin-left: 8px; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) + .mx_NotificationBadge { + margin-right: 4px; +} +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton, +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton { + margin-left: 8px; + position: relative; + width: 24px; + height: 24px; + border-radius: 8px; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_auxButton:before, +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_menuButton:before { + content: ""; + width: 16px; + height: 16px; + position: absolute; + top: 4px; + left: 4px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #61708b; +} +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover, +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_menuButton:hover { + background: rgba(141, 151, 165, 0.2); +} +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton { + visibility: hidden; + width: 0; + margin: 0; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_auxButton:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/plus.daac9ba.svg); + mask-image: url(../../img/element-icons/roomlist/plus.daac9ba.svg); +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_menuButton:before { + -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); + mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); +} +.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + max-width: calc(100% - 16px); + line-height: 1.6rem; + font-size: 1.3rem; + font-weight: 600; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_headerText + .mx_RoomSublist_collapseBtn { + display: inline-block; + position: relative; + width: 14px; + height: 14px; + margin-right: 6px; +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_headerText + .mx_RoomSublist_collapseBtn:before { + content: ""; + width: 18px; + height: 18px; + position: absolute; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #8d99a5; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_RoomSublist + .mx_RoomSublist_headerContainer + .mx_RoomSublist_headerText + .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed:before { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); +} +.mx_RoomSublist:first-child .mx_RoomSublist_headerContainer { + height: 0; + padding-bottom: 4px; +} +.mx_RoomSublist .mx_RoomSublist_resizeBox { + position: relative; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RoomSublist .mx_RoomSublist_resizeBox, +.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + overflow: hidden; +} +.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + -ms-flex-direction: column; + flex-direction: column; + -webkit-mask-image: linear-gradient(0deg, transparent, #000 4px); + mask-image: linear-gradient(0deg, transparent, #000 4px); +} +.mx_RoomSublist + .mx_RoomSublist_resizeBox + .mx_RoomSublist_resizerHandles_showNButton { + -webkit-box-flex: 0; + -ms-flex: 0 0 32px; + flex: 0 0 32px; +} +.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles { + -webkit-box-flex: 0; + -ms-flex: 0 0 4px; + flex: 0 0 4px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 100%; +} +.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle { + cursor: ns-resize; + border-radius: 3px; + max-width: 64px; + height: 4px !important; + position: relative !important; + bottom: 0 !important; +} +.mx_RoomSublist + .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen + .mx_RoomSublist_resizerHandle, +.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle { + opacity: 0.8; + background-color: #2e2f32; +} +.mx_RoomSublist .mx_RoomSublist_showNButton { + cursor: pointer; + font-size: 1.3rem; + line-height: 1.8rem; + color: #737d8c; + height: 24px; + padding-bottom: 4px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron { + position: relative; + width: 18px; + height: 18px; + margin-left: 12px; + margin-right: 16px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #8d99a5; + left: -1px; +} +.mx_RoomSublist + .mx_RoomSublist_showNButton + .mx_RoomSublist_showLessButtonChevron, +.mx_RoomSublist + .mx_RoomSublist_showNButton + .mx_RoomSublist_showMoreButtonChevron { + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_RoomSublist + .mx_RoomSublist_showNButton + .mx_RoomSublist_showLessButtonChevron { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} +.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton, +.mx_RoomSublist:not(.mx_RoomSublist_minimized) + > .mx_RoomSublist_headerContainer:focus-within + .mx_RoomSublist_menuButton, +.mx_RoomSublist:not(.mx_RoomSublist_minimized) + > .mx_RoomSublist_headerContainer:hover + .mx_RoomSublist_menuButton { + visibility: visible; + width: 24px; + margin-left: 8px; +} +.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer { + height: auto; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: relative; +} +.mx_RoomSublist.mx_RoomSublist_minimized + .mx_RoomSublist_headerContainer + .mx_RoomSublist_badgeContainer { + -webkit-box-ordinal-group: 1; + -ms-flex-order: 0; + order: 0; + -ms-flex-item-align: end; + align-self: flex-end; + margin-right: 0; +} +.mx_RoomSublist.mx_RoomSublist_minimized + .mx_RoomSublist_headerContainer + .mx_RoomSublist_stickable { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + max-width: 100%; +} +.mx_RoomSublist.mx_RoomSublist_minimized + .mx_RoomSublist_headerContainer + .mx_RoomSublist_auxButton { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + visibility: visible; + width: 32px !important; + height: 32px !important; + margin-left: 0 !important; + background-color: rgba(141, 151, 165, 0.2); + margin-top: 8px; +} +.mx_RoomSublist.mx_RoomSublist_minimized + .mx_RoomSublist_headerContainer + .mx_RoomSublist_auxButton:before { + top: 8px; + left: 8px; +} +.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RoomSublist.mx_RoomSublist_minimized + .mx_RoomSublist_showNButton + .mx_RoomSublist_showNButtonChevron { + margin-right: 12px; +} +.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton { + height: 16px; +} +.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen + .mx_RoomSublist_menuButton, +.mx_RoomSublist.mx_RoomSublist_minimized + > .mx_RoomSublist_headerContainer:hover + .mx_RoomSublist_menuButton { + visibility: visible; + position: absolute; + bottom: 48px; + right: 0; + width: 16px; + height: 16px; + border-radius: 0; + z-index: 1; + background-color: hsla(0, 0%, 96.1%, 0.9); +} +.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen + .mx_RoomSublist_menuButton:before, +.mx_RoomSublist.mx_RoomSublist_minimized + > .mx_RoomSublist_headerContainer:hover + .mx_RoomSublist_menuButton:before { + top: 0; + left: 0; +} +.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) + .mx_RoomSublist_menuButton, +.mx_RoomSublist.mx_RoomSublist_minimized + > .mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) + .mx_RoomSublist_menuButton { + bottom: 8px; +} +.mx_RoomSublist_contextMenu { + padding: 20px 16px; + width: 250px; +} +.mx_RoomSublist_contextMenu hr { + margin-top: 16px; + margin-bottom: 16px; + margin-right: 16px; + border: 1px solid #2e2f32; + opacity: 0.1; +} +.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title { + font-size: 1.5rem; + line-height: 2rem; + font-weight: 600; + margin-bottom: 4px; +} +.mx_RoomSublist_contextMenu .mx_Checkbox, +.mx_RoomSublist_contextMenu .mx_RadioButton { + margin-top: 8px; +} +.mx_RoomSublist_addRoomTooltip { + margin-top: -3px; +} +.mx_RoomSublist_skeletonUI { + position: relative; + margin-left: 4px; + height: 288px; +} +.mx_RoomSublist_skeletonUI:before { + background: -webkit-gradient( + linear, + left top, + left bottom, + from(#fff), + to(hsla(0, 0%, 100%, 0)) + ); + background: linear-gradient(180deg, #fff, hsla(0, 0%, 100%, 0)); + width: 100%; + height: 100%; + content: ""; + position: absolute; + -webkit-mask-repeat: repeat-y; + mask-repeat: repeat-y; + -webkit-mask-size: auto 48px; + mask-size: auto 48px; + -webkit-mask-image: url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg); + mask-image: url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg); +} +.mx_RoomTile { + margin-bottom: 4px; + padding: 4px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomTile.mx_RoomTile_hasMenuOpen, +.mx_RoomTile.mx_RoomTile_selected, +.mx_RoomTile:focus-within, +.mx_RoomTile:hover { + background-color: #fff; + border-radius: 8px; +} +.mx_RoomTile .mx_DecoratedRoomAvatar, +.mx_RoomTile .mx_RoomTile_avatarContainer { + margin-right: 8px; +} +.mx_RoomTile .mx_RoomTile_nameContainer { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + min-width: 0; + margin-right: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview, +.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name { + margin: 0 2px; + width: 100%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name { + font-size: 1.4rem; + line-height: 1.8rem; +} +.mx_RoomTile + .mx_RoomTile_nameContainer + .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents { + font-weight: 600; +} +.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview { + font-size: 1.3rem; + line-height: 1.8rem; + color: #737d8c; +} +.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview { + margin-top: -4px; +} +.mx_RoomTile .mx_RoomTile_notificationsButton { + margin-left: 4px; +} +.mx_RoomTile .mx_RoomTile_badgeContainer { + height: 16px; + margin: auto 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge { + margin-right: 2px; +} +.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot { + margin-left: 5px; + margin-right: 7px; +} +.mx_RoomTile .mx_RoomTile_menuButton, +.mx_RoomTile .mx_RoomTile_notificationsButton { + width: 20px; + min-width: 20px; + height: 20px; + margin-top: auto; + margin-bottom: auto; + position: relative; + display: none; +} +.mx_RoomTile .mx_RoomTile_menuButton:before, +.mx_RoomTile .mx_RoomTile_notificationsButton:before { + top: 2px; + left: 2px; + content: ""; + width: 16px; + height: 16px; + position: absolute; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #2e2f32; +} +.mx_RoomTile + .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show { + display: block; +} +.mx_RoomTile .mx_RoomTile_menuButton:before { + -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); + mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); +} +.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen + .mx_RoomTile_badgeContainer, +.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within + .mx_RoomTile_badgeContainer, +.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer { + width: 0; + height: 0; + display: none; +} +.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen + .mx_RoomTile_menuButton, +.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen + .mx_RoomTile_notificationsButton, +.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton, +.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within + .mx_RoomTile_notificationsButton, +.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton, +.mx_RoomTile:not(.mx_RoomTile_minimized):hover + .mx_RoomTile_notificationsButton { + display: block; +} +.mx_RoomTile.mx_RoomTile_minimized { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; +} +.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar, +.mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer { + margin-right: 0; +} +.mx_RoomTile_iconBell:before { + -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); + mask-image: url(../../img/element-icons/notifications.d298b39.svg); +} +.mx_RoomTile_iconBellDot:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg); + mask-image: url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg); +} +.mx_RoomTile_iconBellCrossed:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); + mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); +} +.mx_RoomTile_iconBellMentions:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg); + mask-image: url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg); +} +.mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.ff7609d.svg); + mask-image: url(../../img/element-icons/roomlist/favorite.ff7609d.svg); +} +.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before { + -webkit-mask-image: url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg); + mask-image: url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg); +} +.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} +.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before { + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before { + -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); + mask-image: url(../../img/element-icons/leave.bb917e7.svg); +} +.mx_RoomUpgradeWarningBar { + max-height: 235px; + background-color: #f7f7f7; + padding-left: 20px; + padding-right: 20px; + overflow: scroll; +} +.mx_RoomUpgradeWarningBar_wrapped { + width: 100%; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + text-align: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-align-items: center; +} +.mx_RoomUpgradeWarningBar_header { + color: #ff4b55; + font-weight: 700; +} +.mx_RoomUpgradeWarningBar_body { + color: #ff4b55; +} +.mx_RoomUpgradeWarningBar_upgradelink { + color: #ff4b55; + text-decoration: underline; +} +.mx_RoomUpgradeWarningBar_small { + color: #888; + font-size: 70%; +} +.mx_SearchBar { + height: 56px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border-bottom: 1px solid transparent; +} +.mx_SearchBar .mx_SearchBar_input { + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + margin-left: 22px; +} +.mx_SearchBar .mx_SearchBar_searchButton { + cursor: pointer; + width: 37px; + height: 37px; + background-color: #0dbd8b; + -webkit-mask: url(../../img/feather-customised/search-input.044bfa7.svg); + mask: url(../../img/feather-customised/search-input.044bfa7.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; +} +.mx_SearchBar .mx_SearchBar_buttons { + display: inherit; +} +.mx_SearchBar .mx_SearchBar_button { + border: 0; + margin: 0 0 0 22px; + padding: 5px; + font-size: 1.5rem; + cursor: pointer; + color: #2e2f32; + border-bottom: 2px solid #0dbd8b; + font-weight: 600; +} +.mx_SearchBar .mx_SearchBar_unselected { + color: #9fa9ba; + border-color: transparent; +} +.mx_SearchBar .mx_SearchBar_cancel { + background-color: #ff4b55; + -webkit-mask: url(../../img/cancel.4b9715b.svg); + mask: url(../../img/cancel.4b9715b.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 14px; + mask-size: 14px; + padding: 9px; + margin: 0 12px 0 3px; + cursor: pointer; +} +.mx_SendMessageComposer { + -ms-flex: 1; + flex: 1; + -ms-flex-direction: column; + flex-direction: column; + font-size: 1.4rem; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin-right: 6px; + min-width: 0; +} +.mx_SendMessageComposer, +.mx_SendMessageComposer .mx_BasicMessageComposer { + -webkit-box-flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; +} +.mx_SendMessageComposer .mx_BasicMessageComposer { + -ms-flex: 1; + flex: 1; + -ms-flex-direction: column; + flex-direction: column; + min-height: 50px; +} +.mx_SendMessageComposer + .mx_BasicMessageComposer + .mx_BasicMessageComposer_input { + padding: 3px 0; + margin: auto 0; + max-height: 140px; + overflow-y: auto; +} +.mx_Stickers_content { + overflow: hidden; +} +.mx_Stickers_content_container { + overflow: hidden; + height: 300px; +} +#mx_persistedElement_stickerPicker .mx_AppTileFullWidth { + height: unset; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-left: none; + border-right: none; + border-bottom: none; +} +#mx_persistedElement_stickerPicker .mx_AppTileMenuBar { + padding: 0; +} +#mx_persistedElement_stickerPicker iframe { + height: 283px; +} +.mx_Stickers_contentPlaceholder { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} +.mx_Stickers_contentPlaceholder p { + max-width: 200px; +} +.mx_Stickers_addLink { + display: inline; + cursor: pointer; + color: #0dbd8b; +} +.mx_Stickers_hideStickers { + z-index: 2001; +} +.mx_TopUnreadMessagesBar { + z-index: 1000; + position: absolute; + top: 24px; + right: 24px; + width: 38px; +} +.mx_TopUnreadMessagesBar:after { + content: ""; + position: absolute; + top: -8px; + left: 10.5px; + width: 4px; + height: 4px; + border-radius: 16px; + background-color: #f2f5f8; + border: 6px solid #0dbd8b; + pointer-events: none; +} +.mx_TopUnreadMessagesBar_scrollUp { + height: 38px; + border-radius: 19px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: #fff; + border: 1.3px solid #61708b; + cursor: pointer; +} +.mx_TopUnreadMessagesBar_scrollUp:before { + content: ""; + position: absolute; + width: 36px; + height: 36px; + -webkit-mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); + mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + background: #61708b; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} +.mx_TopUnreadMessagesBar_markAsRead { + display: block; + width: 18px; + height: 18px; + background: #fff; + border: 1.3px solid #61708b; + border-radius: 10px; + margin: 5px auto; +} +.mx_TopUnreadMessagesBar_markAsRead:before { + content: ""; + position: absolute; + width: 18px; + height: 18px; + -webkit-mask-image: url(../../img/cancel.4b9715b.svg); + mask-image: url(../../img/cancel.4b9715b.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 10px; + mask-size: 10px; + -webkit-mask-position: 4px 4px; + mask-position: 4px 4px; + background: #61708b; +} +.mx_VoiceRecordComposerTile_stop { + width: 28px; + height: 28px; + border: 2px solid #e3e8f0; + border-radius: 32px; + margin-right: 16px; + position: relative; +} +.mx_VoiceRecordComposerTile_stop:after { + content: ""; + width: 14px; + height: 14px; + position: absolute; + top: 7px; + left: 7px; + border-radius: 2px; + background-color: #ff4b55; +} +.mx_VoiceRecordComposerTile_delete { + width: 14px; + height: 18px; + vertical-align: middle; + margin-right: 11px; + background-color: #8d99a5; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); + mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); +} +.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer { + margin: 6px 12px 6px 6px; + position: relative; +} +.mx_MessageComposer_row + .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording { + padding-left: 22px; +} +.mx_MessageComposer_row + .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before { + -webkit-animation: recording-pulse 2s infinite; + animation: recording-pulse 2s infinite; + content: ""; + background-color: #ff4b55; + width: 10px; + height: 10px; + position: absolute; + left: 12px; + top: 18px; + border-radius: 10px; +} +@-webkit-keyframes recording-pulse { + 0% { + opacity: 1; + } + 35% { + opacity: 0; + } + 65% { + opacity: 1; + } +} +@keyframes recording-pulse { + 0% { + opacity: 1; + } + 35% { + opacity: 0; + } + 65% { + opacity: 1; + } +} +.mx_WhoIsTypingTile { + margin-left: -18px; + padding-top: 18px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_WhoIsTypingTile_avatars { + -webkit-box-flex: 0; + -ms-flex: 0 0 83px; + flex: 0 0 83px; + text-align: center; +} +.mx_WhoIsTypingTile_avatars > :not(:first-child) { + margin-left: -12px; +} +.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial { + padding-top: 1px; +} +.mx_WhoIsTypingTile_avatars .mx_BaseAvatar { + border: 1px solid #fff; + border-radius: 40px; +} +.mx_WhoIsTypingTile_remainingAvatarPlaceholder { + position: relative; + display: inline-block; + color: #acacac; + background-color: #ddd; + border: 1px solid #fff; + border-radius: 40px; + width: 24px; + height: 24px; + line-height: 2.4rem; + font-size: 0.8em; + vertical-align: top; + text-align: center; +} +.mx_WhoIsTypingTile_label { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + font-size: 1.4rem; + font-weight: 600; + color: #9e9e9e; +} +.mx_WhoIsTypingTile_label > span { + background-image: url(../../img/typing-indicator-2x.0eb9f0e.gif); + background-size: 25px; + background-position: 0 100%; + background-repeat: no-repeat; + padding-bottom: 15px; + display: block; +} +.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile { + padding-top: 4px; +} +.mx_AvatarSetting_avatar { + width: 90px; + min-width: 90px; + height: 90px; + margin-top: 8px; + position: relative; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_hover { + -webkit-transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); + transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + pointer-events: none; + line-height: 90px; + text-align: center; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_hover > span { + color: #fff; + position: relative; + font-weight: 500; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + opacity: 0.5; + background-color: #2e2f32; + border-radius: 90px; +} +.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering + .mx_AvatarSetting_hover { + opacity: 1; +} +.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) + .mx_AvatarSetting_hover { + opacity: 0; +} +.mx_AvatarSetting_avatar > * { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary { + margin-top: 8px; +} +.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm { + width: 100%; +} +.mx_AvatarSetting_avatar > img { + cursor: pointer; + -o-object-fit: cover; + object-fit: cover; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder, +.mx_AvatarSetting_avatar > img { + display: block; + height: 90px; + width: inherit; + border-radius: 90px; + cursor: pointer; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before { + background-color: #2e2f32; + -webkit-mask: url(../../img/feather-customised/user.7a4d23d.svg); + mask: url(../../img/feather-customised/user.7a4d23d.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 36px; + mask-size: 36px; + -webkit-mask-position: center; + mask-position: center; + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton { + width: 32px; + height: 32px; + border-radius: 32px; + background-color: #e7e7e7; + position: absolute; + bottom: 0; + right: 0; +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before { + content: ""; + display: block; + width: 100%; + height: 100%; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 55%; + mask-size: 55%; + background-color: #2e2f32; + -webkit-mask-image: url(../../img/feather-customised/edit.fd55ec2.svg); + mask-image: url(../../img/feather-customised/edit.fd55ec2.svg); +} +.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder { + background-color: #f4f6fa; +} +.mx_CrossSigningPanel_statusList { + border-spacing: 0; +} +.mx_CrossSigningPanel_statusList td { + padding: 0; +} +.mx_CrossSigningPanel_statusList td:first-of-type { + -webkit-padding-end: 1em; + padding-inline-end: 1em; +} +.mx_CrossSigningPanel_buttonRow { + margin: 1em 0; +} +.mx_CrossSigningPanel_buttonRow :nth-child(n + 1) { + -webkit-margin-end: 10px; + margin-inline-end: 10px; +} +.mx_DevicesPanel { + display: table; + table-layout: fixed; + width: 880px; + border-spacing: 10px; +} +.mx_DevicesPanel_header { + display: table-header-group; + font-weight: 700; +} +.mx_DevicesPanel_header > .mx_DevicesPanel_deviceButtons { + height: 48px; +} +.mx_DevicesPanel_header > div { + display: table-cell; + vertical-align: middle; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceName { + width: 50%; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { + width: 30%; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { + width: 20%; +} +.mx_DevicesPanel_device { + display: table-row; +} +.mx_DevicesPanel_device > div { + display: table-cell; +} +.mx_DevicesPanel_myDevice { + font-weight: 700; +} +.mx_E2eAdvancedPanel_settingLongDescription { + margin-right: 150px; +} +.mx_ExistingEmailAddress { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 5px; +} +.mx_ExistingEmailAddress_delete { + margin-right: 5px; + cursor: pointer; + vertical-align: middle; +} +.mx_ExistingEmailAddress_email, +.mx_ExistingEmailAddress_promptText { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin-right: 10px; +} +.mx_ExistingEmailAddress_confirmBtn { + margin-left: 5px; +} +.mx_IntegrationManager .mx_Dialog { + width: 60%; + height: 70%; + overflow: hidden; + padding: 0; + max-width: none; + max-height: none; +} +.mx_IntegrationManager iframe { + background-color: #fff; + border: 0; + width: 100%; + height: 100%; +} +.mx_IntegrationManager_loading h3 { + text-align: center; +} +.mx_IntegrationManager_error { + text-align: center; + padding-top: 20px; +} +.mx_IntegrationManager_error h3 { + color: #ff4b55; +} +.mx_UserNotifSettings_tableRow { + display: table-row; +} +.mx_UserNotifSettings_inputCell { + display: table-cell; + padding-bottom: 8px; + padding-right: 8px; + width: 16px; +} +.mx_UserNotifSettings_labelCell { + padding-bottom: 8px; + width: 400px; + display: table-cell; +} +.mx_UserNotifSettings_pushRulesTableWrapper { + padding-bottom: 8px; +} +.mx_UserNotifSettings_pushRulesTable { + width: 100%; + table-layout: fixed; +} +.mx_UserNotifSettings_pushRulesTable thead { + font-weight: 700; +} +.mx_UserNotifSettings_pushRulesTable tbody th { + font-weight: 400; +} +.mx_UserNotifSettings_pushRulesTable tbody th:first-child { + text-align: left; +} +.mx_UserNotifSettings_keywords { + cursor: pointer; + color: #0dbd8b; +} +.mx_UserNotifSettings_devicesTable td { + padding-left: 20px; + padding-right: 20px; +} +.mx_UserNotifSettings_notifTable { + display: table; + position: relative; +} +.mx_UserNotifSettings_notifTable .mx_Spinner { + position: absolute; +} +.mx_NotificationSound_soundUpload { + display: none; +} +.mx_NotificationSound_browse { + color: #0dbd8b; + border: 1px solid #0dbd8b; + background-color: transparent; +} +.mx_NotificationSound_save { + margin-left: 5px; + color: #fff; + background-color: #0dbd8b; +} +.mx_NotificationSound_resetSound { + margin-top: 5px; + color: #fff; + border: #ff4b55; + background-color: #ff4b55; +} +.mx_ExistingPhoneNumber { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 5px; +} +.mx_ExistingPhoneNumber_delete { + margin-right: 5px; + cursor: pointer; + vertical-align: middle; +} +.mx_ExistingPhoneNumber_address, +.mx_ExistingPhoneNumber_promptText { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin-right: 10px; +} +.mx_ExistingPhoneNumber_confirmBtn { + margin-left: 5px; +} +.mx_ExistingPhoneNumber_verification { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ExistingPhoneNumber_verification .mx_Field { + margin: 0 0 0 1em; +} +.mx_PhoneNumbers_input { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_PhoneNumbers_input > .mx_Field { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_PhoneNumbers_country { + width: 80px; +} +.mx_ProfileSettings_controls_topic > textarea { + resize: vertical; +} +.mx_ProfileSettings_profile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ProfileSettings_controls { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + margin-right: 54px; +} +.mx_ProfileSettings_controls .mx_SettingsTab_subheading { + margin-top: 0; +} +.mx_ProfileSettings_controls .mx_Field #profileTopic { + height: 4em; +} +.mx_ProfileSettings_controls .mx_Field:first-child { + margin-top: 0; +} +.mx_ProfileSettings_hostingSignup { + margin-left: 20px; +} +.mx_ProfileSettings_hostingSignup img { + margin-left: 5px; +} +.mx_ProfileSettings_avatarUpload { + display: none; +} +.mx_ProfileSettings_profileForm { + margin-right: 100px; + border-bottom: 1px solid #e7e7e7; +} +.mx_ProfileSettings_buttons { + margin-top: 10px; + margin-bottom: 28px; +} +.mx_ProfileSettings_buttons > .mx_AccessibleButton_kind_link { + padding-left: 0; +} +.mx_SecureBackupPanel_deviceNotVerified, +.mx_SecureBackupPanel_deviceVerified, +.mx_SecureBackupPanel_sigInvalid, +.mx_SecureBackupPanel_sigValid { + font-weight: 700; +} +.mx_SecureBackupPanel_deviceVerified, +.mx_SecureBackupPanel_sigValid { + color: #76cfa5; +} +.mx_SecureBackupPanel_deviceNotVerified, +.mx_SecureBackupPanel_sigInvalid { + color: #ba6363; +} +.mx_SecureBackupPanel_deviceName { + font-style: italic; +} +.mx_SecureBackupPanel_buttonRow { + margin: 1em 0; +} +.mx_SecureBackupPanel_buttonRow :nth-child(n + 1) { + -webkit-margin-end: 10px; + margin-inline-end: 10px; +} +.mx_SecureBackupPanel_statusList { + border-spacing: 0; +} +.mx_SecureBackupPanel_statusList td { + padding: 0; +} +.mx_SecureBackupPanel_statusList td:first-of-type { + -webkit-padding-end: 1em; + padding-inline-end: 1em; +} +.mx_SetIdServer .mx_Field_input { + margin-right: 100px; +} +.mx_SetIdServer_tooltip { + max-width: 120px; +} +.mx_SetIntegrationManager { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_SetIntegrationManager > .mx_SettingsTab_heading { + margin-bottom: 10px; +} +.mx_SetIntegrationManager + > .mx_SettingsTab_heading + > .mx_SettingsTab_subheading { + display: inline-block; + padding-left: 5px; +} +.mx_SetIntegrationManager .mx_ToggleSwitch { + display: inline-block; + float: right; + top: 9px; + margin-right: 100px; +} +.mx_ExistingSpellCheckLanguage { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-bottom: 5px; +} +.mx_ExistingSpellCheckLanguage_language { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin-right: 10px; +} +.mx_GeneralUserSettingsTab_spellCheckLanguageInput { + margin-top: 1em; + margin-bottom: 1em; +} +.mx_SpellCheckLanguages { + margin-right: 100px; +} +.mx_UpdateCheckButton_summary { + margin-left: 16px; +} +.mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link { + padding: 0; +} +.mx_SettingsTab { + color: #61708b; +} +.mx_SettingsTab_warningText { + color: #ff4b55; +} +.mx_SettingsTab_heading { + font-size: 2rem; + font-weight: 600; + color: #2e2f32; + margin-bottom: 10px; +} +.mx_SettingsTab_heading:nth-child(n + 2) { + margin-top: 30px; +} +.mx_SettingsTab_subheading { + font-size: 1.6rem; + display: block; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-weight: 600; + color: #2e2f32; + margin-bottom: 10px; + margin-top: 12px; +} +.mx_SettingsTab_subsectionText { + color: #61708b; + font-size: 1.4rem; + display: block; + margin: 10px 100px 10px 0; +} +.mx_SettingsTab_section { + margin-bottom: 24px; +} +.mx_SettingsTab_section .mx_SettingsFlag { + margin-right: 100px; + margin-bottom: 10px; +} +.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag { + margin-right: 0 !important; +} +.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label { + vertical-align: middle; + display: inline-block; + font-size: 1.4rem; + color: #2e2f32; + max-width: calc(100% - 4.8rem); + -webkit-box-sizing: border-box; + box-sizing: border-box; + padding-right: 10px; +} +.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch { + float: right; +} +.mx_SettingsTab_linkBtn { + cursor: pointer; + color: #0dbd8b; + word-break: break-all; +} +.mx_SettingsTab a { + color: #238cf5; +} +.mx_GeneralRoomSettingsTab_profileSection { + margin-top: 10px; +} +.mx_RolesRoomSettingsTab ul { + margin-bottom: 0; +} +.mx_RolesRoomSettingsTab_unbanBtn { + margin-right: 10px; + margin-bottom: 5px; +} +.mx_SecurityRoomSettingsTab_warning { + display: block; +} +.mx_SecurityRoomSettingsTab_warning img { + vertical-align: middle; + margin-right: 5px; + margin-left: 3px; + margin-bottom: 5px; +} +.mx_SecurityRoomSettingsTab_encryptionSection { + margin-bottom: 25px; +} +.mx_AppearanceUserSettingsTab_fontSlider, +.mx_AppearanceUserSettingsTab_fontSlider_preview, +.mx_AppearanceUserSettingsTab_Layout { + margin-right: 100px; +} +.mx_AppearanceUserSettingsTab .mx_Field { + width: 256px; +} +.mx_AppearanceUserSettingsTab_fontScaling { + color: #2e2f32; +} +.mx_AppearanceUserSettingsTab_fontSlider { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 15px; + background: rgba(227, 232, 240, 0.2); + border-radius: 10px; + font-size: 10px; + margin-top: 24px; + margin-bottom: 24px; +} +.mx_AppearanceUserSettingsTab_fontSlider_preview { + border: 1px solid #e3e8f0; + border-radius: 10px; + padding: 0 16px 9px; + pointer-events: none; +} +.mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption { + display: none; +} +.mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout { + padding-top: 9px; +} +.mx_AppearanceUserSettingsTab_fontSlider_smallText { + font-size: 15px; + padding-right: 20px; + padding-left: 5px; + font-weight: 500; +} +.mx_AppearanceUserSettingsTab_fontSlider_largeText { + font-size: 18px; + padding-left: 20px; + padding-right: 5px; + font-weight: 500; +} +.mx_AppearanceUserSettingsTab > .mx_SettingsTab_SubHeading { + margin-bottom: 32px; +} +.mx_AppearanceUserSettingsTab_themeSection { + color: #2e2f32; +} +.mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-top: 4px; + margin-bottom: 30px; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton { + padding: 1.6rem; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 10px; + width: 180px; + background: #e3e8f0; + opacity: 0.4; + -ms-flex-negative: 1; + flex-shrink: 1; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + margin-right: 15px; + margin-top: 10px; + font-weight: 600; + color: #61708b; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton + > span { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled { + opacity: 1; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_light { + background-color: #f3f8fd; + color: #2e2f32; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_dark { + background-color: #25282e; + color: #f3f8fd; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_dark + > input + > div, +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_dark + > input + > div + > div { + border-color: #e3e8f0; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_black { + background-color: #000; + color: #f3f8fd; +} +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_black + > input + > div, +.mx_AppearanceUserSettingsTab_themeSection + > .mx_ThemeSelectors + > .mx_RadioButton_enabled.mx_ThemeSelector_black + > input + > div + > div { + border-color: #e3e8f0; +} +.mx_SettingsTab_customFontSizeField { + margin-left: calc(1.6rem + 10px); +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + color: #2e2f32; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + .mx_AppearanceUserSettingsTab_spacer { + width: 24px; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + -ms-flex-negative: 1; + flex-shrink: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 300px; + border: 1px solid #e3e8f0; + border-radius: 10px; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton + .mx_EventTile_msgOption, +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton + .mx_MessageActionBar { + display: none; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton + .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 10px; + pointer-events: none; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton + .mx_RadioButton { + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 10px; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton + .mx_EventTile_content { + margin-right: 0; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + > .mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected { + border-color: #0dbd8b; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton { + border-top: 1px solid #e3e8f0; +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + .mx_RadioButton + > input + + div { + border-color: rgba(97, 112, 139, 0.2); +} +.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked { + background-color: rgba(13, 189, 139, 0.08); +} +.mx_AppearanceUserSettingsTab_Advanced { + color: #2e2f32; +} +.mx_AppearanceUserSettingsTab_Advanced > * { + margin-bottom: 16px; +} +.mx_AppearanceUserSettingsTab_Advanced + .mx_AppearanceUserSettingsTab_AdvancedToggle { + color: #0dbd8b; + cursor: pointer; +} +.mx_AppearanceUserSettingsTab_Advanced + .mx_AppearanceUserSettingsTab_systemFont { + margin-left: calc(1.6rem + 10px); +} +.mx_GeneralUserSettingsTab_changePassword .mx_Field { + margin-right: 100px; +} +.mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child { + margin-top: 0; +} +.mx_GeneralUserSettingsTab_accountSection + .mx_SettingsTab_subheading:nth-child(n + 1), +.mx_GeneralUserSettingsTab_discovery + .mx_SettingsTab_subheading:nth-child(n + 2), +.mx_SetIdServer .mx_SettingsTab_subheading { + margin-top: 24px; +} +.mx_GeneralUserSettingsTab_accountSection .mx_Spinner, +.mx_GeneralUserSettingsTab_discovery .mx_Spinner { + -webkit-box-pack: left; + -ms-flex-pack: left; + justify-content: left; +} +.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses, +.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers, +.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress, +.mx_GeneralUserSettingsTab_discovery .mx_ExistingPhoneNumber, +.mx_GeneralUserSettingsTab_languageInput { + margin-right: 100px; +} +.mx_GeneralUserSettingsTab_warningIcon { + vertical-align: middle; +} +.mx_HelpUserSettingsTab_debugButton { + margin-bottom: 5px; + margin-top: 5px; +} +.mx_HelpUserSettingsTab span.mx_AccessibleButton { + word-break: break-word; +} +.mx_HelpUserSettingsTab code { + word-break: break-all; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; +} +.mx_HelpUserSettingsTab_accessToken { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + border-radius: 5px; + border: 1px solid #747474; + margin-bottom: 10px; + margin-top: 10px; + padding: 10px; +} +.mx_HelpUserSettingsTab_accessToken_copy { + -ms-flex-negative: 0; + flex-shrink: 0; + cursor: pointer; + margin-left: 20px; + display: inherit; +} +.mx_HelpUserSettingsTab_accessToken_copy > div { + -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + background-color: #2e2f32; + margin-left: 5px; + width: 20px; + height: 20px; + background-repeat: no-repeat; +} +.mx_LabsUserSettingsTab .mx_SettingsTab_section { + margin-top: 32px; +} +.mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag { + margin-right: 0; +} +.mx_MjolnirUserSettingsTab .mx_Field { + margin-right: 100px; +} +.mx_MjolnirUserSettingsTab_listItem { + margin-bottom: 2px; +} +.mx_NotificationUserSettingsTab .mx_SettingsTab_heading { + margin-bottom: 10px; +} +.mx_PreferencesUserSettingsTab .mx_Field { + margin-right: 100px; +} +.mx_PreferencesUserSettingsTab .mx_SettingsTab_section { + margin-bottom: 30px; +} +.mx_SecurityUserSettingsTab .mx_DevicesPanel { + width: auto; + max-width: 880px; +} +.mx_SecurityUserSettingsTab_deviceInfo { + display: table; + padding-left: 0; +} +.mx_SecurityUserSettingsTab_deviceInfo > li { + display: table-row; +} +.mx_SecurityUserSettingsTab_deviceInfo > li > label, +.mx_SecurityUserSettingsTab_deviceInfo > li > span { + display: table-cell; + padding-right: 1em; +} +.mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton, +.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton { + margin-right: 10px; +} +.mx_SecurityUserSettingsTab_importExportButtons { + margin-bottom: 15px; +} +.mx_SecurityUserSettingsTab_ignoredUser { + margin-bottom: 5px; +} +.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton { + margin-right: 10px; +} +.mx_SecurityUserSettingsTab + .mx_SettingsTab_section + .mx_AccessibleButton_kind_link { + padding: 0; + font-size: inherit; +} +.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning { + color: #ff4b55; + position: relative; + padding-left: 40px; + margin-top: 30px; +} +.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before { + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: 0 center; + mask-position: 0 center; + -webkit-mask-size: 2.4rem; + mask-size: 2.4rem; + position: absolute; + width: 2.4rem; + height: 2.4rem; + content: ""; + top: 0; + left: 0; + background-color: #ff4b55; + -webkit-mask-image: url(../../img/feather-customised/alert-triangle.38aca3a.svg); + mask-image: url(../../img/feather-customised/alert-triangle.38aca3a.svg); +} +.mx_VoiceUserSettingsTab .mx_Field { + margin-right: 100px; +} +.mx_VoiceUserSettingsTab_missingMediaPermissions { + margin-bottom: 15px; +} +.mx_SpaceBasicSettings .mx_Field { + margin: 32px 0; +} +.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 24px; +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + .mx_SpaceBasicSettings_avatar { + position: relative; + height: 80px; + width: 80px; + background-color: #8d99a5; + border-radius: 16px; +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + img.mx_SpaceBasicSettings_avatar { + width: 80px; + height: 80px; + -o-object-fit: cover; + object-fit: cover; + border-radius: 16px; +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + div.mx_SpaceBasicSettings_avatar { + cursor: pointer; +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + div.mx_SpaceBasicSettings_avatar:before { + content: ""; + position: absolute; + height: 80px; + width: 80px; + top: 0; + left: 0; + background-color: #fff; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-image: url(../../img/element-icons/camera.a81a395.svg); + mask-image: url(../../img/element-icons/camera.a81a395.svg); +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + > input[type="file"] { + display: none; +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + > .mx_AccessibleButton_kind_link { + display: inline-block; + padding: 0; + margin: auto 16px; + color: #368bd6; +} +.mx_SpaceBasicSettings + .mx_SpaceBasicSettings_avatarContainer + > .mx_SpaceBasicSettings_avatar_remove { + color: #ff4b55; +} +.mx_SpaceBasicSettings .mx_FormButton { + padding: 8px 22px; + margin-left: auto; + display: block; + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; +} +.mx_SpaceBasicSettings .mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background { + background-color: rgba(46, 48, 51, 0.38); + opacity: 0.6; + left: 71px; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu { + padding: 24px; + width: 480px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background-color: #fff; + position: relative; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > h2 { + font-weight: 600; + font-size: 1.8rem; + margin-top: 4px; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > p { + font-size: 1.5rem; + color: #737d8c; + margin: 0; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill { + position: absolute; + top: 24px; + right: 24px; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType { + position: relative; + padding: 16px 32px 16px 72px; + width: 432px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 8px; + border: 1px solid #e7e7e7; + font-size: 1.5rem; + margin: 20px 0; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > h3 { + font-weight: 600; + margin: 0 0 4px; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > span { + color: #737d8c; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before { + position: absolute; + content: ""; + width: 32px; + height: 32px; + top: 24px; + left: 20px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 24px; + mask-size: 24px; + background-color: #8d99a5; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover { + border-color: #0dbd8b; +} +.mx_SpaceCreateMenu_wrapper + .mx_ContextualMenu + .mx_SpaceCreateMenuType:hover:before { + background-color: #0dbd8b; +} +.mx_SpaceCreateMenu_wrapper + .mx_ContextualMenu + .mx_SpaceCreateMenuType:hover + > span { + color: #2e2f32; +} +.mx_SpaceCreateMenu_wrapper + .mx_ContextualMenu + .mx_SpaceCreateMenuType_public:before { + -webkit-mask-image: url(../../img/globe.8201f08.svg); + mask-image: url(../../img/globe.8201f08.svg); +} +.mx_SpaceCreateMenu_wrapper + .mx_ContextualMenu + .mx_SpaceCreateMenuType_private:before { + -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); + mask-image: url(../../img/element-icons/lock.1f264bd.svg); +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back { + width: 28px; + height: 28px; + position: relative; + background-color: rgba(141, 151, 165, 0.2); + border-radius: 14px; + margin-bottom: 12px; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before { + content: ""; + position: absolute; + height: 28px; + width: 28px; + top: 0; + left: 0; + background-color: #8d99a5; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: 2px 3px; + mask-position: 2px 3px; + -webkit-mask-size: 24px; + mask-size: 24px; + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} +.mx_SpaceCreateMenu_wrapper + .mx_ContextualMenu + .mx_AccessibleButton_kind_primary { + padding: 8px 22px; + margin-left: auto; + display: block; + width: -webkit-min-content; + width: -moz-min-content; + width: min-content; +} +.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled { + cursor: not-allowed; +} +.mx_SpacePublicShare .mx_AccessibleButton { + position: relative; + padding: 16px 32px 16px 72px; + width: 432px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 8px; + border: 1px solid #e7e7e7; + font-size: 1.5rem; + margin: 20px 0; +} +.mx_SpacePublicShare .mx_AccessibleButton > h3 { + font-weight: 600; + margin: 0 0 4px; +} +.mx_SpacePublicShare .mx_AccessibleButton > span { + color: #737d8c; +} +.mx_SpacePublicShare .mx_AccessibleButton:before { + position: absolute; + content: ""; + width: 32px; + height: 32px; + top: 24px; + left: 20px; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 24px; + mask-size: 24px; + background-color: #8d99a5; +} +.mx_SpacePublicShare .mx_AccessibleButton:hover { + border-color: #0dbd8b; +} +.mx_SpacePublicShare .mx_AccessibleButton:hover:before { + background-color: #0dbd8b; +} +.mx_SpacePublicShare .mx_AccessibleButton:hover > span { + color: #2e2f32; +} +.mx_SpacePublicShare + .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before { + -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); + mask-image: url(../../img/element-icons/link.8f4b1fc.svg); +} +.mx_SpacePublicShare + .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before { + -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); + mask-image: url(../../img/element-icons/room/invite.946a71b.svg); +} +.mx_InlineTermsAgreement_cbContainer { + margin-bottom: 10px; + font-size: 1.4rem; +} +.mx_InlineTermsAgreement_cbContainer a { + color: #0dbd8b; + text-decoration: none; +} +.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox { + margin-top: 10px; +} +.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input { + vertical-align: text-bottom; +} +.mx_InlineTermsAgreement_link { + display: inline-block; + -webkit-mask-image: url(../../img/external-link.a8d3e9b.svg); + mask-image: url(../../img/external-link.a8d3e9b.svg); + background-color: #0dbd8b; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + width: 12px; + height: 12px; + margin-left: 3px; + vertical-align: middle; +} +.mx_AnalyticsToast .mx_AccessibleButton_kind_danger { + background: none; + color: #0dbd8b; +} +.mx_AnalyticsToast .mx_AccessibleButton_kind_primary { + background: #0dbd8b; + color: #fff; +} +.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon { + display: inline-block; + width: 1.8rem; + height: 1.8rem; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-color: #fff; + -webkit-mask-image: url(../../img/element-icons/cloud-off.33cd28e.svg); + mask-image: url(../../img/element-icons/cloud-off.33cd28e.svg); + margin-right: 8px; +} +.mx_NonUrgentEchoFailureToast span { + vertical-align: middle; +} +.mx_NonUrgentEchoFailureToast .mx_AccessibleButton { + padding: 0; +} +.mx_VerificationShowSas_decimalSas { + text-align: center; + font-weight: 700; + padding-left: 3px; + padding-right: 3px; +} +.mx_VerificationShowSas_decimalSas span { + margin-left: 5px; + margin-right: 5px; +} +.mx_VerificationShowSas_emojiSas { + text-align: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin: 25px 0; +} +.mx_VerificationShowSas_emojiSas_block { + display: inline-block; + margin-bottom: 16px; + position: relative; + width: 52px; +} +.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block, +.mx_Dialog .mx_VerificationShowSas_emojiSas_block { + width: 60px; +} +.mx_VerificationShowSas_emojiSas_emoji { + font-size: 3.2rem; +} +.mx_VerificationShowSas_emojiSas_label { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + font-size: 1.2rem; +} +.mx_VerificationShowSas_emojiSas_break { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; +} +.mx_VerificationShowSas + .mx_Dialog_buttons + button.mx_VerificationShowSas_matchButton { + color: #0dbd8b; + background-color: rgba(3, 179, 129, 0.16); + border: none; +} +.mx_VerificationShowSas + .mx_Dialog_buttons + button.mx_VerificationShowSas_noMatchButton { + color: #ff4b55; + background-color: rgba(255, 75, 85, 0.16); + border: none; +} +.mx_PlayPauseButton { + position: relative; + width: 32px; + height: 32px; + border-radius: 32px; + background-color: #fff; +} +.mx_PlayPauseButton:before { + content: ""; + position: absolute; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} +.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before { + opacity: 0.5; +} +.mx_PlayPauseButton.mx_PlayPauseButton_play:before { + width: 13px; + height: 16px; + top: 8px; + left: 12px; + -webkit-mask-image: url(../../img/element-icons/play.a72552b.svg); + mask-image: url(../../img/element-icons/play.a72552b.svg); +} +.mx_PlayPauseButton.mx_PlayPauseButton_pause:before { + width: 10px; + height: 12px; + top: 10px; + left: 11px; + -webkit-mask-image: url(../../img/element-icons/pause.c4c0886.svg); + mask-image: url(../../img/element-icons/pause.c4c0886.svg); +} +.mx_VoiceMessagePrimaryContainer { + padding: 7px 12px 7px 11px; + background-color: #e3e8f0; + border-radius: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #737d8c; + font-size: 1.4rem; + line-height: 2.4rem; +} +.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar { + background-color: #c1c6cd; +} +.mx_VoiceMessagePrimaryContainer + .mx_Waveform + .mx_Waveform_bar.mx_Waveform_bar_100pct { + -webkit-transition: background-color 0.25s ease; + transition: background-color 0.25s ease; + background-color: #737d8c; +} +.mx_VoiceMessagePrimaryContainer .mx_Clock { + width: 4.2rem; + padding-right: 6px; + padding-left: 8px; +} +.mx_Waveform { + position: relative; + height: 30px; + top: 1px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + overflow: hidden; +} +.mx_Waveform .mx_Waveform_bar { + width: 0; + border: 1px solid transparent; + border-radius: 2px; + min-height: 0; + max-height: 100%; + margin-left: 1px; + margin-right: 1px; +} +.mx_CallContainer { + position: absolute; + right: 20px; + bottom: 72px; + z-index: 100; + pointer-events: none; +} +.mx_CallContainer .mx_CallPreview { + pointer-events: auto; + cursor: pointer; +} +.mx_CallContainer .mx_CallPreview .mx_CallView_video { + width: 350px; +} +.mx_CallContainer .mx_CallPreview .mx_VideoFeed_local { + border-radius: 8px; + overflow: hidden; +} +.mx_CallContainer .mx_AppTile_persistedWrapper div { + min-width: 350px; +} +.mx_CallContainer .mx_IncomingCallBox { + min-width: 250px; + background-color: #f4f6fa; + padding: 8px; + -webkit-box-shadow: 0 14px 24px rgba(0, 0, 0, 0.08); + box-shadow: 0 14px 24px rgba(0, 0, 0, 0.08); + border-radius: 8px; + pointer-events: auto; + cursor: pointer; +} +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + direction: row; +} +.mx_CallContainer + .mx_IncomingCallBox + .mx_IncomingCallBox_CallerInfo + .mx_BaseAvatar_initial, +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img { + margin: 8px; +} +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo > div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1, +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p { + margin: 0; + padding: 0; + font-size: 1.4rem; + line-height: 1.6rem; +} +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1 { + font-weight: 700; +} +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons { + padding: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} +.mx_CallContainer + .mx_IncomingCallBox + .mx_IncomingCallBox_buttons + > .mx_IncomingCallBox_spacer { + width: 8px; +} +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons > * { + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + margin-right: 0; + font-size: 1.5rem; + line-height: 2.4rem; +} +.mx_CallView { + border-radius: 8px; + background-color: #f2f5f8; + padding-left: 8px; + padding-right: 8px; + pointer-events: auto; +} +.mx_CallView_large { + padding-bottom: 10px; + margin: 5px 5px 5px 18px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_CallView_large, +.mx_CallView_large .mx_CallView_voice { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_CallView_pip { + width: 320px; + padding-bottom: 8px; + margin-top: 10px; + background-color: #f4f6fa; + -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); + border-radius: 8px; +} +.mx_CallView_pip .mx_CallView_voice { + height: 180px; +} +.mx_CallView_pip .mx_CallView_callControls { + bottom: 0; +} +.mx_CallView_pip .mx_CallView_callControls_button:before { + width: 36px; + height: 36px; +} +.mx_CallView_pip .mx_CallView_holdTransferContent { + padding-top: 10px; + padding-bottom: 25px; +} +.mx_CallView_content { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-radius: 8px; +} +.mx_CallView_voice { + -webkit-box-orient: vertical; + -ms-flex-direction: column; + flex-direction: column; + background-color: #27303a; +} +.mx_CallView_voice, +.mx_CallView_voice_avatarsContainer { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-direction: normal; +} +.mx_CallView_voice_avatarsContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -ms-flex-direction: row; + flex-direction: row; +} +.mx_CallView_voice_avatarsContainer div { + margin-left: 12px; + margin-right: 12px; +} +.mx_CallView_voice + .mx_CallView_holdTransferContent + .mx_CallView_voice_avatarContainer { + border-radius: 2000px; + overflow: hidden; + position: relative; +} +.mx_CallView_holdTransferContent { + height: 20px; + padding-top: 20px; + padding-bottom: 15px; + color: #fff; +} +.mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind { + padding: 0; + font-weight: 700; +} +.mx_CallView_video { + width: 100%; + height: 100%; + z-index: 30; + overflow: hidden; +} +.mx_CallView_video_hold { + overflow: hidden; +} +.mx_CallView_video_hold .mx_VideoFeed { + visibility: hidden; +} +.mx_CallView_video_holdBackground { + position: absolute; + width: 100%; + height: 100%; + left: 0; + right: 0; + background-repeat: no-repeat; + background-size: cover; + background-position: 50%; + -webkit-filter: blur(20px); + filter: blur(20px); +} +.mx_CallView_video_holdBackground:after { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 100%; + left: 0; + right: 0; + background-color: rgba(0, 0, 0, 0.6); +} +.mx_CallView_video .mx_CallView_holdTransferContent { + position: absolute; + top: 50%; + left: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + font-weight: 700; + color: #fff; + text-align: center; +} +.mx_CallView_video .mx_CallView_holdTransferContent:before { + display: block; + margin-left: auto; + margin-right: auto; + content: ""; + width: 40px; + height: 40px; + background-image: url(../../img/voip/paused.77799b3.svg); + background-position: 50%; + background-size: cover; +} +.mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before { + width: 30px; + height: 30px; +} +.mx_CallView_video + .mx_CallView_holdTransferContent + .mx_AccessibleButton_hasKind { + padding: 0; +} +.mx_CallView_header { + height: 44px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: left; + -ms-flex-pack: left; + justify-content: left; + -ms-flex-negative: 0; + flex-shrink: 0; +} +.mx_CallView_header_callType { + font-size: 1.2rem; + font-weight: 700; + vertical-align: middle; +} +.mx_CallView_header_secondaryCallInfo:before { + content: "·"; + margin-left: 6px; + margin-right: 6px; +} +.mx_CallView_header_controls { + margin-left: auto; +} +.mx_CallView_header_button { + display: inline-block; + vertical-align: middle; + cursor: pointer; +} +.mx_CallView_header_button:before { + content: ""; + display: inline-block; + height: 20px; + width: 20px; + vertical-align: middle; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; +} +.mx_CallView_header_button_fullscreen:before { + -webkit-mask-image: url(../../img/element-icons/call/fullscreen.43be138.svg); + mask-image: url(../../img/element-icons/call/fullscreen.43be138.svg); +} +.mx_CallView_header_button_expand:before { + -webkit-mask-image: url(../../img/element-icons/call/expand.7ef9f56.svg); + mask-image: url(../../img/element-icons/call/expand.7ef9f56.svg); +} +.mx_CallView_header_callInfo { + margin-left: 12px; + margin-right: 16px; +} +.mx_CallView_header_roomName { + font-weight: 700; + font-size: 12px; + line-height: normal; + height: 15px; +} +.mx_CallView_secondaryCall_roomName { + margin-left: 4px; +} +.mx_CallView_header_callTypeSmall { + font-size: 12px; + color: #737d8c; + line-height: normal; + height: 15px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + max-width: 240px; +} +.mx_CallView_header_phoneIcon { + display: inline-block; + margin-right: 6px; + height: 16px; + width: 16px; + vertical-align: middle; +} +.mx_CallView_header_phoneIcon:before { + content: ""; + display: inline-block; + vertical-align: top; + height: 16px; + width: 16px; + background-color: #ff4b55; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); + mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); +} +.mx_CallView_callControls { + position: absolute; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + bottom: 5px; + width: 100%; + opacity: 1; + -webkit-transition: opacity 0.5s; + transition: opacity 0.5s; +} +.mx_CallView_callControls_hidden { + opacity: 0.001; + pointer-events: none; +} +.mx_CallView_callControls_button { + cursor: pointer; + margin-left: 8px; + margin-right: 8px; +} +.mx_CallView_callControls_button:before { + content: ""; + display: inline-block; + height: 48px; + width: 48px; + background-repeat: no-repeat; + background-size: contain; + background-position: 50%; +} +.mx_CallView_callControls_dialpad { + margin-right: auto; +} +.mx_CallView_callControls_dialpad:before { + background-image: url(../../img/voip/dialpad.fdda9a0.svg); +} +.mx_CallView_callControls_button_dialpad_hidden { + margin-right: auto; + cursor: auto; +} +.mx_CallView_callControls_button_micOn:before { + background-image: url(../../img/voip/mic-on.2592c14.svg); +} +.mx_CallView_callControls_button_micOff:before { + background-image: url(../../img/voip/mic-off.774e42b.svg); +} +.mx_CallView_callControls_button_vidOn:before { + background-image: url(../../img/voip/vid-on.b9b8bbf.svg); +} +.mx_CallView_callControls_button_vidOff:before { + background-image: url(../../img/voip/vid-off.5552596.svg); +} +.mx_CallView_callControls_button_hangup:before { + background-image: url(../../img/voip/hangup.9c3adeb.svg); +} +.mx_CallView_callControls_button_more { + margin-left: auto; +} +.mx_CallView_callControls_button_more:before { + background-image: url(../../img/voip/more.5e8055e.svg); +} +.mx_CallView_callControls_button_more_hidden { + margin-left: auto; + cursor: auto; +} +.mx_CallView_callControls_button_invisible { + visibility: hidden; + pointer-events: none; + position: absolute; +} +.mx_CallViewForRoom { + overflow: hidden; +} +.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 8px; +} +.mx_CallViewForRoom + .mx_CallViewForRoom_ResizeWrapper:hover + .mx_CallViewForRoom_ResizeHandle { + width: 100% !important; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_CallViewForRoom + .mx_CallViewForRoom_ResizeWrapper:hover + .mx_CallViewForRoom_ResizeHandle:after { + content: ""; + margin-top: 3px; + border-radius: 4px; + height: 4px; + width: 100%; + max-width: 64px; + background-color: #2e2f32; +} +.mx_DialPad { + display: grid; + grid-template-columns: repeat(3, 1fr); + grid-gap: 16px; + gap: 16px; +} +.mx_DialPad_button { + width: 40px; + height: 40px; + background-color: #e3e8f0; + border-radius: 40px; + font-size: 18px; + font-weight: 600; + text-align: center; + vertical-align: middle; + line-height: 40px; +} +.mx_DialPad_deleteButton:before, +.mx_DialPad_dialButton:before { + content: ""; + display: inline-block; + height: 40px; + width: 40px; + vertical-align: middle; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-position: center; + mask-position: center; + background-color: #fff; +} +.mx_DialPad_deleteButton { + background-color: #ff4b55; +} +.mx_DialPad_deleteButton:before { + -webkit-mask-image: url(../../img/element-icons/call/delete.833d785.svg); + mask-image: url(../../img/element-icons/call/delete.833d785.svg); + -webkit-mask-position: 9px; + mask-position: 9px; +} +.mx_DialPad_dialButton { + background-color: #0dbd8b; +} +.mx_DialPad_dialButton:before { + -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); + mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); +} +.mx_DialPadContextMenu_header { + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; +} +.mx_DialPadContextMenu_title { + color: #61708b; + font-size: 12px; + font-weight: 600; +} +.mx_DialPadContextMenu_dialled { + height: 1em; + font-size: 18px; + font-weight: 600; +} +.mx_DialPadContextMenu_dialPad { + margin: 16px; +} +.mx_DialPadContextMenu_horizSep { + position: relative; +} +.mx_DialPadContextMenu_horizSep:before { + content: ""; + position: absolute; + width: 100%; + border-bottom: 1px solid #e3e8f0; +} +.mx_Dialog_dialPadWrapper .mx_Dialog { + padding: 0; +} +.mx_DialPadModal { + width: 192px; + height: 368px; +} +.mx_DialPadModal_header { + margin-top: 12px; + margin-left: 12px; + margin-right: 12px; +} +.mx_DialPadModal_title { + color: #61708b; + font-size: 12px; + font-weight: 600; +} +.mx_DialPadModal_cancel { + float: right; + -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); + mask: url(../../img/feather-customised/cancel.23c2689.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + width: 14px; + height: 14px; + background-color: #c1c1c1; + cursor: pointer; +} +.mx_DialPadModal_field { + border: none; + margin: 0; +} +.mx_DialPadModal_field input { + font-size: 18px; + font-weight: 600; +} +.mx_DialPadModal_dialPad { + margin-left: 16px; + margin-right: 16px; + margin-top: 16px; +} +.mx_DialPadModal_horizSep { + position: relative; +} +.mx_DialPadModal_horizSep:before { + content: ""; + position: absolute; + width: 100%; + border-bottom: 1px solid #e3e8f0; +} +.mx_VideoFeed_voice { + padding-bottom: 52px; + background-color: #27303a; +} +.mx_VideoFeed_remote { + width: 100%; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_VideoFeed_remote.mx_VideoFeed_video { + background-color: #000; +} +.mx_VideoFeed_local { + max-width: 25%; + max-height: 25%; + position: absolute; + right: 10px; + top: 10px; + z-index: 100; + border-radius: 4px; +} +.mx_VideoFeed_local.mx_VideoFeed_video { + background-color: transparent; +} +.mx_VideoFeed_mirror { + -webkit-transform: scaleX(-1); + transform: scaleX(-1); +} ` const snackbarCSS = ` #snackbar { @@ -17,7 +19480,7 @@ const snackbarCSS = ` bottom: 30px; font-size: 17px; padding: 6px 16px; - font-family: Inter, "Roboto", "Helvetica", "Arial", sans-serif; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; font-weight: 400; line-height: 1.43; border-radius: 4px; From 4c22d1f2a13b7a003d5eebe81e0fa23193d3cbf5 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 3 Jun 2021 13:21:56 +0530 Subject: [PATCH 041/176] Refactor --- src/utils/exportUtils/Exporter.ts | 31 +++++++++++++++++++- src/utils/exportUtils/HtmlExport.tsx | 42 +++++++++++++++------------- src/utils/exportUtils/exportUtils.ts | 34 ++-------------------- 3 files changed, 55 insertions(+), 52 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index c782cc5a63..5e2de1faf1 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,7 +1,36 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixClientPeg } from "../../MatrixClientPeg"; +import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; +import { arrayFastClone } from "../arrays"; export abstract class Exporter { - constructor(protected res: MatrixEvent[], protected room: Room) {} + constructor(protected room: Room) {} + + protected getTimelineConversation = () : MatrixEvent => { + if (!this.room) return; + + const cli = MatrixClientPeg.get(); + + const timelineSet = this.room.getUnfilteredTimelineSet(); + + const timelineWindow = new TimelineWindow( + cli, timelineSet, + {windowLimit: Number.MAX_VALUE}); + + timelineWindow.load(null, 30); + + const events = timelineWindow.getEvents(); + + // Clone and reverse the events so that we preserve the order + arrayFastClone(events) + .reverse() + .forEach(event => { + cli.decryptEventIfNeeded(event); + }); + + return events; + }; + abstract export(): Promise<Blob>; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 1432b61e85..c3174285e5 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -11,25 +11,25 @@ import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; import { formatFullDateNoDay, formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; +import { _t } from "../../languageHandler"; +import { MatrixClientPeg } from "../../MatrixClientPeg"; +import { EventType } from "matrix-js-sdk/src/@types/event"; import * as ponyfill from "web-streams-polyfill/ponyfill" import * as Avatar from "../../Avatar"; import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventTile"; import DateSeparator from "../../components/views/messages/DateSeparator"; +import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; -import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportIcons from "./exportIcons"; -import { _t } from "../../languageHandler"; -import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { EventType } from "matrix-js-sdk/src/@types/event"; export default class HTMLExporter extends Exporter { protected zip: JSZip; protected avatars: Map<string, boolean>; protected permalinkCreator: RoomPermalinkCreator; - constructor(res: MatrixEvent[], room: Room) { - super(res, room); + constructor(room: Room) { + super(room); this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); this.permalinkCreator = new RoomPermalinkCreator(this.room); @@ -57,16 +57,16 @@ export default class HTMLExporter extends Exporter { return renderToStaticMarkup(avatar); } - protected async wrapHTML(content: string, room: Room) { + protected async wrapHTML(content: string) { const roomAvatar32 = await this.getRoomAvatar(32); const exportDate = formatFullDateNoDayNoTime(new Date()); const cli = MatrixClientPeg.get(); - const creator = room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); - const creatorName = room?.getMember(creator)?.rawDisplayName || creator; + const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); + const creatorName = this.room?.getMember(creator)?.rawDisplayName || creator; const exporter = cli.getUserId(); - const exporterName = room?.getMember(exporter)?.rawDisplayName; - const topic = room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic - || room.topic || ""; + const exporterName = this.room?.getMember(exporter)?.rawDisplayName; + const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic + || this.room.topic || ""; const createdText = _t("%(creatorName)s created this room.", { creatorName, }); @@ -74,7 +74,7 @@ export default class HTMLExporter extends Exporter { const exportedText = _t(`This is the start of export of <b>%(roomName)s</b>. Exported by %(exporterDetails)s at %(exportDate)s. `, { exportDate, - roomName: room.name, + roomName: this.room.name, exporterDetails: `<a href="https://matrix.to/#/${exporter}" target="_blank" rel="noopener noreferrer"> ${exporterName ? `<b>${ exporterName }</b>(${ exporter })` : `<b>${ exporter }</b>`} </a>`, @@ -115,9 +115,9 @@ export default class HTMLExporter extends Exporter { <div dir="auto" class="mx_RoomHeader_nametext" - title="${room.name}" + title="${this.room.name}" > - ${room.name} + ${this.room.name} </div> </div> <div class="mx_RoomHeader_topic" dir="auto"> ${topic} </div> @@ -144,7 +144,7 @@ export default class HTMLExporter extends Exporter { > <div class="mx_NewRoomIntro"> ${roomAvatar52} - <h2> ${room.name} </h2> + <h2> ${this.room.name} </h2> <p> ${createdText} <br/><br/> ${exportedText} </p> <p> ${topicText} </p> </div> @@ -294,7 +294,7 @@ export default class HTMLExporter extends Exporter { return renderToStaticMarkup(eventTile); } - protected async createHTML(events: MatrixEvent[], room: Room) { + protected async createHTML(events: MatrixEvent[]) { let content = ""; let prevEvent = null; for (const event of events) { @@ -308,17 +308,21 @@ export default class HTMLExporter extends Exporter { content += body; prevEvent = event; } - return await this.wrapHTML(content, room); + return await this.wrapHTML(content); } public async export() { - const html = await this.createHTML(this.res, this.room); + const res = this.getTimelineConversation(); + const html = await this.createHTML(res); + this.zip.file("index.html", html); this.zip.file("css/style.css", exportCSS); this.zip.file("js/script.js", exportJS); + for (const iconName in exportIcons) { this.zip.file(`icons/${iconName}`, exportIcons[iconName]); } + const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; //Generate the zip file asynchronously diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 5e1c4fffbb..34edee0ac6 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,7 +1,4 @@ -import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { arrayFastClone } from "../arrays"; -import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; -import Room from 'matrix-js-sdk/src/models/room'; +import { Room } from 'matrix-js-sdk/src/models/room'; import HTMLExporter from "./HtmlExport"; export enum exportFormats { @@ -14,37 +11,10 @@ export enum exportOptions { TIMELINE = "TIMELINE", } -const getTimelineConversation = (room: Room) => { - if (!room) return; - - const cli = MatrixClientPeg.get(); - - const timelineSet = room.getUnfilteredTimelineSet(); - - const timelineWindow = new TimelineWindow( - cli, timelineSet, - {windowLimit: Number.MAX_VALUE}); - - timelineWindow.load(null, 30); - - const events = timelineWindow.getEvents(); - - // Clone and reverse the events so that we preserve the order - arrayFastClone(events) - .reverse() - .forEach(event => { - cli.decryptEventIfNeeded(event); - }); - - return events; -}; - - const exportConversationalHistory = async (room: Room, format: string, options) => { - const res = getTimelineConversation(room); switch (format) { case exportFormats.HTML: - await new HTMLExporter(res, room).export(); + await new HTMLExporter(room).export(); break; case exportFormats.JSON: break; From e7f0df7fcc57de7905abc6cf22971277f0572449 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 3 Jun 2021 13:39:14 +0530 Subject: [PATCH 042/176] Small fix --- src/utils/exportUtils/Exporter.ts | 4 ++-- src/utils/exportUtils/HtmlExport.tsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 5e2de1faf1..6bdf5319f0 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -4,10 +4,10 @@ import { MatrixClientPeg } from "../../MatrixClientPeg"; import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; import { arrayFastClone } from "../arrays"; -export abstract class Exporter { +export default abstract class Exporter { constructor(protected room: Room) {} - protected getTimelineConversation = () : MatrixEvent => { + protected getTimelineConversation = () : MatrixEvent[] => { if (!this.room) return; const cli = MatrixClientPeg.get(); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index c3174285e5..371ce9fffc 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -1,11 +1,11 @@ import React from "react" import streamSaver from "streamsaver"; import JSZip from "jszip"; +import Exporter from "./Exporter"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import { Exporter } from "./Exporter"; import { renderToStaticMarkup } from 'react-dom/server' import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; From f32726d5ede52decae84812556bf94cfe6c5ebc0 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 4 Jun 2021 15:08:17 +0530 Subject: [PATCH 043/176] Begin extended implementation --- src/components/views/rooms/RoomHeader.js | 5 +- src/utils/exportUtils/Exporter.ts | 122 ++++++++++++++++++++++- src/utils/exportUtils/HtmlExport.tsx | 23 +++-- src/utils/exportUtils/exportUtils.ts | 15 ++- 4 files changed, 145 insertions(+), 20 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 717a5cecb7..b05156e1ef 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -32,8 +32,7 @@ import RoomTopic from "../elements/RoomTopic"; import RoomName from "../elements/RoomName"; import {PlaceCallType} from "../../../CallHandler"; import {replaceableComponent} from "../../../utils/replaceableComponent"; -import exportConversationalHistory from '../../../utils/exportUtils/exportUtils'; -import { exportFormats, exportOptions } from '../../../utils/exportUtils/exportUtils'; +import exportConversationalHistory, { exportTypes, exportFormats } from '../../../utils/exportUtils/exportUtils'; @replaceableComponent("views.rooms.RoomHeader") @@ -121,7 +120,7 @@ export default class RoomHeader extends React.Component { } _exportConvertionalHistory = async () => { - await exportConversationalHistory(this.props.room, exportFormats.HTML, exportOptions.TIMELINE); + await exportConversationalHistory(this.props.room, exportFormats.HTML, exportTypes.LAST_N_MESSAGES, 30); } render() { diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 6bdf5319f0..21b231163b 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -3,9 +3,11 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; import { arrayFastClone } from "../arrays"; +import { exportTypes } from "./exportUtils"; +import { RoomMember } from 'matrix-js-sdk/src/models/room-member'; export default abstract class Exporter { - constructor(protected room: Room) {} + constructor(protected room: Room, protected exportType: exportTypes, protected numberOfEvents?: number) {} protected getTimelineConversation = () : MatrixEvent[] => { if (!this.room) return; @@ -20,7 +22,7 @@ export default abstract class Exporter { timelineWindow.load(null, 30); - const events = timelineWindow.getEvents(); + const events: MatrixEvent[] = timelineWindow.getEvents(); // Clone and reverse the events so that we preserve the order arrayFastClone(events) @@ -32,5 +34,121 @@ export default abstract class Exporter { return events; }; + protected eventToJson(ev) { + const jsonEvent = ev.toJSON(); + const e = ev.isEncrypted() ? jsonEvent.decrypted : jsonEvent; + if (ev.isEncrypted()) { + e.curve25519Key = ev.getSenderKey(); + e.ed25519Key = ev.getClaimedEd25519Key(); + e.algorithm = ev.getWireContent().algorithm; + e.forwardingCurve25519KeyChain = ev.getForwardingCurve25519KeyChain(); + } else { + delete e.curve25519Key; + delete e.ed25519Key; + delete e.algorithm; + delete e.forwardingCurve25519KeyChain; + } + return e; + } + + + protected getRequiredEvents = async () : Promise<MatrixEvent[]> => { + const client = MatrixClientPeg.get(); + const eventMapper = client.getEventMapper({ preventReEmit: true }); + + let prevToken: string|null = null; + let limit = this.numberOfEvents || Number.MAX_VALUE; + let events: MatrixEvent[] = []; + const stateRes: any[] = []; + while (limit) { + const eventsPerCrawl = Math.min(limit, 100); + const res = await client._createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); + + if (res.state) stateRes.push(...res.state); + if (res.chunk.length === 0) break; + + limit -= eventsPerCrawl; + + const matrixEvents: MatrixEvent[] = res.chunk.map(eventMapper); + + matrixEvents.forEach(mxEv => events.push(mxEv)); + + prevToken = res.end; + } + events = events.reverse() + let stateEvents = []; + if (stateRes !== undefined) { + stateEvents = stateRes.map(eventMapper); + } + + const profiles = {}; + + stateEvents.forEach(ev => { + if (ev.event.content && + ev.event.content.membership === "join") { + profiles[ev.event.sender] = { + displayname: ev.event.content.displayname, + avatar_url: ev.event.content.avatar_url, + }; + } + }); + + const decryptionPromises = events + .filter(event => event.isEncrypted()) + .map(event => { + return client.decryptEventIfNeeded(event, { + isRetry: true, + emit: false, + }); + }); + + // Let us wait for all the events to get decrypted. + await Promise.all(decryptionPromises); + + const eventsWithProfile = events.map((ev) => { + const e = this.eventToJson(ev); + + let profile: any = {}; + if (e.sender in profiles) profile = profiles[e.sender]; + const object = { + event: e, + profile: profile, + }; + return object; + }); + + const matrixEvents = eventsWithProfile.map(e => { + const matrixEvent = eventMapper(e.event); + + const member = new RoomMember(this.room.roomId, matrixEvent.getSender()); + + member.name = e.profile.displayname; + + const memberEvent = eventMapper( + { + content: { + membership: "join", + avatar_url: e.profile.avatar_url, + displayname: e.profile.displayname, + }, + type: "m.room.member", + event_id: matrixEvent.getId() + ":eventIndex", + room_id: matrixEvent.getRoomId(), + sender: matrixEvent.getSender(), + origin_server_ts: matrixEvent.getTs(), + state_key: matrixEvent.getSender(), + }, + ); + + member.events.member = memberEvent; + matrixEvent.sender = member; + + return matrixEvent; + }); + + + return matrixEvents; + } + abstract export(): Promise<Blob>; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 371ce9fffc..069e47d15b 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -22,23 +22,24 @@ import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import exportIcons from "./exportIcons"; +import { exportTypes } from "./exportUtils"; export default class HTMLExporter extends Exporter { protected zip: JSZip; protected avatars: Map<string, boolean>; protected permalinkCreator: RoomPermalinkCreator; - constructor(room: Room) { - super(room); + constructor(room: Room, exportType: exportTypes, numberOfEvents?: number) { + super(room, exportType, numberOfEvents); this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); this.permalinkCreator = new RoomPermalinkCreator(this.room); } - protected async getRoomAvatar(avatarSide: number) { + protected async getRoomAvatar() { let blob: Blob; - const avatarUrl = Avatar.avatarUrlForRoom(this.room, avatarSide, avatarSide, "crop"); - const avatarPath = `room/avatar${avatarSide}.png`; + const avatarUrl = Avatar.avatarUrlForRoom(this.room, 32, 32, "crop"); + const avatarPath = "room.png"; if (avatarUrl) { const image = await fetch(avatarUrl); blob = await image.blob(); @@ -46,8 +47,8 @@ export default class HTMLExporter extends Exporter { } const avatar = ( <BaseAvatar - width={avatarSide} - height={avatarSide} + width={32} + height={32} name={this.room.name} title={this.room.name} url={blob ? avatarPath : null} @@ -58,7 +59,7 @@ export default class HTMLExporter extends Exporter { } protected async wrapHTML(content: string) { - const roomAvatar32 = await this.getRoomAvatar(32); + const roomAvatar = await this.getRoomAvatar(); const exportDate = formatFullDateNoDayNoTime(new Date()); const cli = MatrixClientPeg.get(); const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); @@ -81,7 +82,6 @@ export default class HTMLExporter extends Exporter { }); const topicText = topic ? _t("Topic: %(topic)s", { topic }) : ""; - const roomAvatar52 = await this.getRoomAvatar(52); return ` @@ -108,7 +108,7 @@ export default class HTMLExporter extends Exporter { <div class="mx_RoomHeader_wrapper" aria-owns="mx_RightPanel"> <div class="mx_RoomHeader_avatar"> <div class="mx_DecoratedRoomAvatar"> - ${roomAvatar32} + ${roomAvatar} </div> </div> <div class="mx_RoomHeader_name"> @@ -143,9 +143,10 @@ export default class HTMLExporter extends Exporter { role="list" > <div class="mx_NewRoomIntro"> - ${roomAvatar52} + ${roomAvatar} <h2> ${this.room.name} </h2> <p> ${createdText} <br/><br/> ${exportedText} </p> + <br/> <p> ${topicText} </p> </div> ${content} diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 34edee0ac6..f2d85af636 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,4 +1,4 @@ -import { Room } from 'matrix-js-sdk/src/models/room'; +import { Room } from "matrix-js-sdk/src/models/room"; import HTMLExporter from "./HtmlExport"; export enum exportFormats { @@ -7,14 +7,21 @@ export enum exportFormats { LOGS = "LOGS", } -export enum exportOptions { +export enum exportTypes { TIMELINE = "TIMELINE", + BEGINNING = "BEGINNING", + LAST_N_MESSAGES = "LAST_N_MESSAGES", } -const exportConversationalHistory = async (room: Room, format: string, options) => { +const exportConversationalHistory = async ( + room: Room, + format: string, + exportType: exportTypes, + numberOfEvents?: number, +) => { switch (format) { case exportFormats.HTML: - await new HTMLExporter(room).export(); + await new HTMLExporter(room, exportType, numberOfEvents).export(); break; case exportFormats.JSON: break; From 56488d2c428ed10f228dc3bdce94f4c5f2e6b6b4 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 7 Jun 2021 11:34:03 +0530 Subject: [PATCH 044/176] Modify the process for setting event metadata and refactor --- src/components/views/rooms/RoomHeader.js | 6 +- src/utils/exportUtils/Exporter.ts | 104 +++++------------------ src/utils/exportUtils/HtmlExport.tsx | 16 ++-- 3 files changed, 32 insertions(+), 94 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index ba3b72e779..ac621f7010 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -84,8 +84,8 @@ export default class RoomHeader extends React.Component { }, 500); - _exportConvertionalHistory = async () => { - await exportConversationalHistory(this.props.room, exportFormats.HTML, exportTypes.LAST_N_MESSAGES, 30); + _exportConversationalHistory = async () => { + await exportConversationalHistory(this.props.room, exportFormats.HTML, exportTypes.LAST_N_MESSAGES, 250); } render() { @@ -198,7 +198,7 @@ export default class RoomHeader extends React.Component { const exportButton = <AccessibleTooltipButton className="mx_RoomHeader_button mx_ImageView_button_download" - onClick={this._exportConvertionalHistory} + onClick={this._exportConversationalHistory} title={_t("Export conversation")} />; const rightRow = diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 8e3a454e2e..b0f1104bd2 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -4,10 +4,9 @@ import { MatrixClientPeg } from "../../MatrixClientPeg"; import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; import { arrayFastClone } from "../arrays"; import { exportTypes } from "./exportUtils"; -import { RoomMember } from 'matrix-js-sdk/src/models/room-member'; export default abstract class Exporter { - constructor(protected room: Room, protected exportType: exportTypes, protected numberOfEvents?: number) {} + protected constructor(protected room: Room, protected exportType: exportTypes, protected numberOfEvents?: number) {} protected getTimelineConversation = () : MatrixEvent[] => { if (!this.room) return; @@ -34,37 +33,32 @@ export default abstract class Exporter { return events; }; - protected eventToJson(ev) { - const jsonEvent = ev.toJSON(); - const e = ev.isEncrypted() ? jsonEvent.decrypted : jsonEvent; - if (ev.isEncrypted()) { - e.curve25519Key = ev.getSenderKey(); - e.ed25519Key = ev.getClaimedEd25519Key(); - e.algorithm = ev.getWireContent().algorithm; - e.forwardingCurve25519KeyChain = ev.getForwardingCurve25519KeyChain(); - } else { - delete e.curve25519Key; - delete e.ed25519Key; - delete e.algorithm; - delete e.forwardingCurve25519KeyChain; + protected setEventMetadata = (event: MatrixEvent) => { + const client = MatrixClientPeg.get(); + const roomState = client.getRoom(this.room.roomId).currentState; + event.sender = roomState.getSentinelMember( + event.getSender(), + ); + if (event.getType() === "m.room.member") { + event.target = roomState.getSentinelMember( + event.getStateKey(), + ); } - return e; + return event; } - protected getRequiredEvents = async () : Promise<MatrixEvent[]> => { const client = MatrixClientPeg.get(); - const eventMapper = client.getEventMapper({ preventReEmit: true }); + const eventMapper = client.getEventMapper(); let prevToken: string|null = null; let limit = this.numberOfEvents || Number.MAX_VALUE; let events: MatrixEvent[] = []; - const stateRes: any[] = []; + while (limit) { const eventsPerCrawl = Math.min(limit, 100); const res: any = await client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); - if (res.state) stateRes.push(...res.state); if (res.chunk.length === 0) break; limit -= eventsPerCrawl; @@ -75,79 +69,25 @@ export default abstract class Exporter { prevToken = res.end; } - events = events.reverse() - let stateEvents = []; - if (stateRes !== undefined) { - stateEvents = stateRes.map(eventMapper); - } - - const profiles = {}; - - stateEvents.forEach(ev => { - if (ev.event.content && - ev.event.content.membership === "join") { - profiles[ev.event.sender] = { - displayname: ev.event.content.displayname, - avatar_url: ev.event.content.avatar_url, - }; - } - }); + events = events.reverse(); const decryptionPromises = events .filter(event => event.isEncrypted()) .map(event => { return client.decryptEventIfNeeded(event, { - isRetry: true, - emit: false, + isRetry: true, + emit: false, }); }); - // Let us wait for all the events to get decrypted. + //Wait for all the events to get decrypted. await Promise.all(decryptionPromises); - const eventsWithProfile = events.map((ev) => { - const e = this.eventToJson(ev); + events.map((event) => { + return this.setEventMetadata(event); + }) - let profile: any = {}; - if (e.sender in profiles) profile = profiles[e.sender]; - const object = { - event: e, - profile: profile, - }; - return object; - }); - - const matrixEvents = eventsWithProfile.map(e => { - const matrixEvent = eventMapper(e.event); - - const member = new RoomMember(this.room.roomId, matrixEvent.getSender()); - - member.name = e.profile.displayname; - - const memberEvent = eventMapper( - { - content: { - membership: "join", - avatar_url: e.profile.avatar_url, - displayname: e.profile.displayname, - }, - type: "m.room.member", - event_id: matrixEvent.getId() + ":eventIndex", - room_id: matrixEvent.getRoomId(), - sender: matrixEvent.getSender(), - origin_server_ts: matrixEvent.getTs(), - state_key: matrixEvent.getSender(), - }, - ); - - member.events.member = memberEvent; - matrixEvent.sender = member; - - return matrixEvent; - }); - - - return matrixEvents; + return events; } abstract export(): Promise<Blob>; diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 069e47d15b..7a2b615dbd 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -77,7 +77,7 @@ export default class HTMLExporter extends Exporter { exportDate, roomName: this.room.name, exporterDetails: `<a href="https://matrix.to/#/${exporter}" target="_blank" rel="noopener noreferrer"> - ${exporterName ? `<b>${ exporterName }</b>(${ exporter })` : `<b>${ exporter }</b>`} + ${exporterName ? `<b>${ exporterName }</b>(${ exporter })` : `<b>${ exporter }</b>`} </a>`, }); @@ -108,7 +108,7 @@ export default class HTMLExporter extends Exporter { <div class="mx_RoomHeader_wrapper" aria-owns="mx_RightPanel"> <div class="mx_RoomHeader_avatar"> <div class="mx_DecoratedRoomAvatar"> - ${roomAvatar} + ${roomAvatar} </div> </div> <div class="mx_RoomHeader_name"> @@ -172,8 +172,7 @@ export default class HTMLExporter extends Exporter { protected hasAvatar(event: MatrixEvent): boolean { const member = event.sender; - if (member.getMxcAvatarUrl()) return true; - return false; + return !!member.getMxcAvatarUrl(); } protected async saveAvatarIfNeeded(event: MatrixEvent) { @@ -244,8 +243,7 @@ export default class HTMLExporter extends Exporter { } const fileDate = formatFullDateNoDay(new Date(event.getTs())); const [fileName, fileExt] = this.splitFileName(event.getContent().body); - const filePath = fileDirectory + "/" + fileName + '-' + fileDate + fileExt; - return filePath; + return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; } @@ -313,7 +311,7 @@ export default class HTMLExporter extends Exporter { } public async export() { - const res = this.getTimelineConversation(); + const res = await this.getRequiredEvents(); const html = await this.createHTML(res); this.zip.file("index.html", html); @@ -342,7 +340,7 @@ export default class HTMLExporter extends Exporter { const blobPiece = blob.slice(fPointer, fPointer + sliceSize); const reader = new FileReader(); - const waiter = new Promise<void>((resolve, reject) => { + const waiter = new Promise<void>((resolve) => { reader.onloadend = evt => { const arrayBufferNew: any = evt.target.result; const uint8ArrayNew = new Uint8Array(arrayBufferNew); @@ -353,7 +351,7 @@ export default class HTMLExporter extends Exporter { }); await waiter; } - writer.close(); + await writer.close(); return blob; } From 2b432a7718fe1b43a557b7e87a047d81e4213ecc Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 7 Jun 2021 11:50:19 +0530 Subject: [PATCH 045/176] Add markdown CSS --- src/utils/exportUtils/exportCSS.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 6f2284cc32..7813c1651a 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -19503,7 +19503,7 @@ a.mx_reply_anchor:hover{ } @-webkit-keyframes mx_snackbar_fadein { - from {bottom: 0; opacity: 0;} + from {bottom: 0; opacity: 0;} to {bottom: 30px; opacity: 1;} } @@ -19513,7 +19513,7 @@ a.mx_reply_anchor:hover{ } @-webkit-keyframes mx_snackbar_fadeout { - from {bottom: 30px; opacity: 1;} + from {bottom: 30px; opacity: 1;} to {bottom: 0; opacity: 0;} } @@ -19544,11 +19544,11 @@ li.mx_Export_EventWrapper:target { @keyframes mx_event_highlight_animation { - 0%,100% { + 0%,100% { background: white; } - 50% { - background: #e3e2df; + 50% { + background: #e3e2df; } } @@ -19563,4 +19563,7 @@ li.mx_Export_EventWrapper:target { } ` -export default lightCSS + snackbarCSS; + +const markdownCSS = `.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}` + +export default lightCSS + markdownCSS + snackbarCSS; From b68ea484447a2a4ed2ea52f313fa0dc5de869184 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 7 Jun 2021 12:22:02 +0530 Subject: [PATCH 046/176] Explicitly declare cli and use alt attribute for images --- src/components/views/messages/MFileBody.js | 2 +- src/components/views/messages/RedactedBody.tsx | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 8afd4abaf6..195040518b 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -177,7 +177,7 @@ export default class MFileBody extends React.Component { <div className="mx_MFileBody_info"> <span className="mx_MFileBody_info_icon" > {this.props.isExporting ? - <img className="mx_export_attach_icon" src="icons/attach.svg" /> + <img alt="Attachment" className="mx_export_attach_icon" src="icons/attach.svg" /> : null} </span> <span className="mx_MFileBody_info_filename">{this.presentableTextForFile(content, false)}</span> diff --git a/src/components/views/messages/RedactedBody.tsx b/src/components/views/messages/RedactedBody.tsx index fb4f0b0efa..9490aeddf2 100644 --- a/src/components/views/messages/RedactedBody.tsx +++ b/src/components/views/messages/RedactedBody.tsx @@ -14,13 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, {useContext} from "react"; -import {MatrixClient} from "matrix-js-sdk/src/client"; -import {MatrixEvent} from "matrix-js-sdk/src/models/event"; +import React, { useContext } from "react"; +import { MatrixClient } from "matrix-js-sdk/src/client"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { _t } from "../../../languageHandler"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; -import {formatFullDate} from "../../../DateUtils"; +import { formatFullDate } from "../../../DateUtils"; import SettingsStore from "../../../settings/SettingsStore"; +import { MatrixClientPeg } from "../../../MatrixClientPeg"; interface IProps { mxEvent: MatrixEvent; @@ -28,8 +29,9 @@ interface IProps { } const RedactedBody = React.forwardRef<any, IProps>(({mxEvent, isExporting}, ref) => { - const cli: MatrixClient = useContext(MatrixClientContext); - + let cli: MatrixClient = useContext(MatrixClientContext); + // As context doesn't propagate during export, we'll have to explicitly declare + if (isExporting) cli = MatrixClientPeg.get(); let text = _t("Message deleted"); const unsigned = mxEvent.getUnsigned(); const redactedBecauseUserId = unsigned && unsigned.redacted_because && unsigned.redacted_because.sender; @@ -45,7 +47,7 @@ const RedactedBody = React.forwardRef<any, IProps>(({mxEvent, isExporting}, ref) return ( <span className="mx_RedactedBody" ref={ref} title={titleText}> - { isExporting ? <img className="mx_export_trash_icon" src="icons/trash.svg" title="Redacted" /> : null } + { isExporting ? <img alt="Redacted" className="mx_export_trash_icon" src="icons/trash.svg" /> : null } { text } </span> ); From 0f06f1b9c4bc51dd68f2ad78bcfb57c12d4bea0f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 7 Jun 2021 14:47:27 +0530 Subject: [PATCH 047/176] Replace map with for loop --- src/utils/exportUtils/Exporter.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index b0f1104bd2..a95833a461 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -69,6 +69,7 @@ export default abstract class Exporter { prevToken = res.end; } + //Reverse the events so that we preserve the order events = events.reverse(); const decryptionPromises = events @@ -83,9 +84,7 @@ export default abstract class Exporter { //Wait for all the events to get decrypted. await Promise.all(decryptionPromises); - events.map((event) => { - return this.setEventMetadata(event); - }) + for (let i = 0; i < events.length; i++) this.setEventMetadata(events[i]); return events; } From 9e298e9f4503024583d4be6df99c1d226824745c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 8 Jun 2021 12:36:28 +0530 Subject: [PATCH 048/176] Add logs and unload listener --- src/components/views/rooms/RoomHeader.js | 2 +- src/utils/exportUtils/Exporter.ts | 4 ++-- src/utils/exportUtils/HtmlExport.tsx | 23 ++++++++++++++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index ac621f7010..31bd9ba167 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -85,7 +85,7 @@ export default class RoomHeader extends React.Component { _exportConversationalHistory = async () => { - await exportConversationalHistory(this.props.room, exportFormats.HTML, exportTypes.LAST_N_MESSAGES, 250); + await exportConversationalHistory(this.props.room, exportFormats.HTML, exportTypes.LAST_N_MESSAGES, 100); } render() { diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index a95833a461..583e16b1fd 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -26,8 +26,8 @@ export default abstract class Exporter { // Clone and reverse the events so that we preserve the order arrayFastClone(events) .reverse() - .forEach(event => { - cli.decryptEventIfNeeded(event); + .forEach(async (event) => { + await cli.decryptEventIfNeeded(event); }); return events; diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 7a2b615dbd..e553d3c900 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -34,6 +34,12 @@ export default class HTMLExporter extends Exporter { this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); this.permalinkCreator = new RoomPermalinkCreator(this.room); + window.addEventListener("beforeunload", this.onBeforeUnload) + } + + protected onBeforeUnload = (e: BeforeUnloadEvent) => { + e.preventDefault(); + return e.returnValue = "Are you sure you want to exit during this export?"; } protected async getRoomAvatar() { @@ -311,22 +317,35 @@ export default class HTMLExporter extends Exporter { } public async export() { + console.info("Starting export process..."); + console.info("Fetching events..."); + const fetchStart = performance.now(); const res = await this.getRequiredEvents(); + const fetchEnd = performance.now(); + + console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000} s`); + console.info("Creating HTML..."); + const html = await this.createHTML(res); this.zip.file("index.html", html); this.zip.file("css/style.css", exportCSS); this.zip.file("js/script.js", exportJS); + for (const iconName in exportIcons) { this.zip.file(`icons/${iconName}`, exportIcons[iconName]); } const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; + console.info("HTML creation successful!"); + console.info("Generating a ZIP..."); //Generate the zip file asynchronously const blob = await this.zip.generateAsync({ type: "blob" }); + console.log("ZIP generated successfully"); + console.info("Writing to file system...") //Support for firefox browser streamSaver.WritableStream = ponyfill.WritableStream //Create a writable stream to the directory @@ -352,7 +371,9 @@ export default class HTMLExporter extends Exporter { await waiter; } await writer.close(); - + const exportEnd = performance.now(); + console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("beforeunload", this.onBeforeUnload); return blob; } } From 6f8c1638aa43930413ecd2b234c1326d11d699fb Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 8 Jun 2021 18:35:45 +0530 Subject: [PATCH 049/176] isExporting -> forExport and wrap EventTile with Context Provider --- src/components/views/elements/ReplyThread.js | 10 ++-- .../views/messages/DateSeparator.js | 4 +- src/components/views/messages/MFileBody.js | 4 +- src/components/views/messages/MessageEvent.js | 4 +- .../views/messages/RedactedBody.tsx | 11 ++-- src/components/views/rooms/EventTile.tsx | 14 ++--- src/utils/exportUtils/HtmlExport.tsx | 56 ++++++++++--------- src/utils/exportUtils/exportUtils.ts | 5 +- 8 files changed, 55 insertions(+), 53 deletions(-) diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index 6e265903d8..c6eeb2c879 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -46,7 +46,7 @@ export default class ReplyThread extends React.Component { permalinkCreator: PropTypes.instanceOf(RoomPermalinkCreator).isRequired, // Specifies which layout to use. layout: LayoutPropType, - isExporting: PropTypes.bool, + forExport: PropTypes.bool, }; static contextType = MatrixClientContext; @@ -69,7 +69,7 @@ export default class ReplyThread extends React.Component { this.unmounted = false; - if (this.props.isExporting) return; + if (this.props.forExport) return; this.context.on("Event.replaced", this.onEventReplaced); this.room = this.context.getRoom(this.props.parentEv.getRoomId()); @@ -216,13 +216,13 @@ export default class ReplyThread extends React.Component { }; } - static makeThread(parentEv, onHeightChanged, permalinkCreator, ref, layout, isExporting) { + static makeThread(parentEv, onHeightChanged, permalinkCreator, ref, layout, forExport) { if (!ReplyThread.getParentEventId(parentEv)) { return null; } return <ReplyThread parentEv={parentEv} - isExporting={isExporting} + forExport={forExport} onHeightChanged={onHeightChanged} ref={ref} permalinkCreator={permalinkCreator} @@ -367,7 +367,7 @@ export default class ReplyThread extends React.Component { }) } </blockquote>; - } else if (this.props.isExporting) { + } else if (this.props.forExport) { const eventId = ReplyThread.getParentEventId(this.props.parentEv); header = <p style={{ marginTop: -5, marginBottom: 5 }}> In reply to <a className="mx_reply_anchor" href={`#${eventId}`} scroll-to={eventId}>this message</a> diff --git a/src/components/views/messages/DateSeparator.js b/src/components/views/messages/DateSeparator.js index 2aba0eaef8..5e15b584c5 100644 --- a/src/components/views/messages/DateSeparator.js +++ b/src/components/views/messages/DateSeparator.js @@ -37,14 +37,14 @@ function getdaysArray() { export default class DateSeparator extends React.Component { static propTypes = { ts: PropTypes.number.isRequired, - isExporting: PropTypes.bool, + forExport: PropTypes.bool, }; getLabel() { const date = new Date(this.props.ts); // During the time the archive is being viewed, a specific day might not make sense, so we return the full date - if (this.props.isExporting) return formatFullDateNoTime(date); + if (this.props.forExport) return formatFullDateNoTime(date); const today = new Date(); const yesterday = new Date(); diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 195040518b..1ef2c2eb64 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -104,7 +104,7 @@ export default class MFileBody extends React.Component { showGenericPlaceholder: PropTypes.bool, /* to set source to local file path during export */ mediaSrc: PropTypes.string, - isExporting: PropTypes.bool, + forExport: PropTypes.bool, }; static defaultProps = { @@ -176,7 +176,7 @@ export default class MFileBody extends React.Component { placeholder = ( <div className="mx_MFileBody_info"> <span className="mx_MFileBody_info_icon" > - {this.props.isExporting ? + {this.props.forExport ? <img alt="Attachment" className="mx_export_attach_icon" src="icons/attach.svg" /> : null} </span> diff --git a/src/components/views/messages/MessageEvent.js b/src/components/views/messages/MessageEvent.js index e243c3c8bd..49dcc7b5e2 100644 --- a/src/components/views/messages/MessageEvent.js +++ b/src/components/views/messages/MessageEvent.js @@ -48,7 +48,7 @@ export default class MessageEvent extends React.Component { mediaSrc: PropTypes.string, /* to set source to local file path during export */ - isExporting: PropTypes.bool, + forExport: PropTypes.bool, /* the maximum image height to use, if the event is an image */ maxImageHeight: PropTypes.number, @@ -127,7 +127,7 @@ export default class MessageEvent extends React.Component { showUrlPreview={this.props.showUrlPreview} tileShape={this.props.tileShape} mediaSrc={this.props.mediaSrc} - isExporting={this.props.isExporting} + forExport={this.props.forExport} maxImageHeight={this.props.maxImageHeight} replacingEventId={this.props.replacingEventId} editState={this.props.editState} diff --git a/src/components/views/messages/RedactedBody.tsx b/src/components/views/messages/RedactedBody.tsx index 9490aeddf2..7fa6a3b093 100644 --- a/src/components/views/messages/RedactedBody.tsx +++ b/src/components/views/messages/RedactedBody.tsx @@ -21,17 +21,14 @@ import { _t } from "../../../languageHandler"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; import { formatFullDate } from "../../../DateUtils"; import SettingsStore from "../../../settings/SettingsStore"; -import { MatrixClientPeg } from "../../../MatrixClientPeg"; interface IProps { mxEvent: MatrixEvent; - isExporting: boolean; + forExport: boolean; } -const RedactedBody = React.forwardRef<any, IProps>(({mxEvent, isExporting}, ref) => { - let cli: MatrixClient = useContext(MatrixClientContext); - // As context doesn't propagate during export, we'll have to explicitly declare - if (isExporting) cli = MatrixClientPeg.get(); +const RedactedBody = React.forwardRef<any, IProps>(({mxEvent, forExport}, ref) => { + const cli: MatrixClient = useContext(MatrixClientContext); let text = _t("Message deleted"); const unsigned = mxEvent.getUnsigned(); const redactedBecauseUserId = unsigned && unsigned.redacted_because && unsigned.redacted_because.sender; @@ -47,7 +44,7 @@ const RedactedBody = React.forwardRef<any, IProps>(({mxEvent, isExporting}, ref) return ( <span className="mx_RedactedBody" ref={ref} title={titleText}> - { isExporting ? <img alt="Redacted" className="mx_export_trash_icon" src="icons/trash.svg" /> : null } + { forExport ? <img alt="Redacted" className="mx_export_trash_icon" src="icons/trash.svg" /> : null } { text } </span> ); diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 614c53735e..7d8bad0bed 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -249,7 +249,7 @@ interface IProps { // for now. tileShape?: 'notif' | 'file_grid' | 'reply' | 'reply_preview'; - isExporting?: boolean; + forExport?: boolean; // Used while exporting to refer to the local source rather than the online one mediaSrc?: string; @@ -320,7 +320,7 @@ export default class EventTile extends React.Component<IProps, IState> { static defaultProps = { // no-op function because onHeightChanged is optional yet some sub-components assume its existence onHeightChanged: function() {}, - isExporting: false, + forExport: false, }; static contextType = MatrixClientContext; @@ -427,8 +427,6 @@ export default class EventTile extends React.Component<IProps, IState> { // TODO: [REACT-WARNING] Move into constructor // eslint-disable-next-line camelcase UNSAFE_componentWillMount() { - // Context isn't propagated through renderToStaticMarkup so we'll have to explicitly set it during export - if (this.props.isExporting) this.context = MatrixClientPeg.get(); this.verifyEvent(this.props.mxEvent); } @@ -631,7 +629,7 @@ export default class EventTile extends React.Component<IProps, IState> { } shouldHighlight() { - if (this.props.isExporting) return false; + if (this.props.forExport) return false; const actions = this.context.getPushActionsForEvent(this.props.mxEvent.replacingEvent() || this.props.mxEvent); if (!actions || !actions.tweaks) { return false; } @@ -981,7 +979,7 @@ export default class EventTile extends React.Component<IProps, IState> { } const MessageActionBar = sdk.getComponent('messages.MessageActionBar'); - const showMessageActionBar = !isEditing && !this.props.isExporting; + const showMessageActionBar = !isEditing && !this.props.forExport; const actionBar = showMessageActionBar ? <MessageActionBar mxEvent={this.props.mxEvent} reactions={this.state.reactions} @@ -1155,7 +1153,7 @@ export default class EventTile extends React.Component<IProps, IState> { this.props.permalinkCreator, this.replyThread, this.props.layout, - this.props.isExporting, + this.props.forExport, ); // tab-index=-1 to allow it to be focusable but do not add tab stop for it, primarily for screen readers @@ -1179,7 +1177,7 @@ export default class EventTile extends React.Component<IProps, IState> { { thread } <EventTileType ref={this.tile} mxEvent={this.props.mxEvent} - isExporting={this.props.isExporting} + forExport={this.props.forExport} replacingEventId={this.props.replacingEventId} editState={this.props.editState} mediaSrc={this.props.mediaSrc} diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index e553d3c900..b9d4763153 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -23,16 +23,20 @@ import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import exportIcons from "./exportIcons"; import { exportTypes } from "./exportUtils"; +import MatrixClientContext from "../../contexts/MatrixClientContext"; +import { MatrixClient } from "matrix-js-sdk"; export default class HTMLExporter extends Exporter { protected zip: JSZip; protected avatars: Map<string, boolean>; protected permalinkCreator: RoomPermalinkCreator; + protected matrixClient: MatrixClient; constructor(room: Room, exportType: exportTypes, numberOfEvents?: number) { super(room, exportType, numberOfEvents); this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); + this.matrixClient = MatrixClientPeg.get(); this.permalinkCreator = new RoomPermalinkCreator(this.room); window.addEventListener("beforeunload", this.onBeforeUnload) } @@ -214,7 +218,7 @@ export default class HTMLExporter extends Exporter { protected getDateSeparator(event: MatrixEvent) { const ts = event.getTs(); - const dateSeparator = <li key={ts}><DateSeparator isExporting={true} key={ts} ts={ts} /></li>; + const dateSeparator = <li key={ts}><DateSeparator forExport={true} key={ts} ts={ts} /></li>; return renderToStaticMarkup(dateSeparator); } @@ -258,30 +262,32 @@ export default class HTMLExporter extends Exporter { if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); return <li className="mx_Export_EventWrapper" id={mxEv.getId()}> - <EventTile - mxEvent={mxEv} - continuation={continuation} - isRedacted={mxEv.isRedacted()} - replacingEventId={mxEv.replacingEventId()} - isExporting={true} - readReceipts={null} - readReceiptMap={null} - showUrlPreview={false} - checkUnmounting={() => false} - isTwelveHour={false} - last={false} - mediaSrc={mediaSrc} - avatarSrc={hasAvatar ? `users/${mxEv.sender.userId}` : null} - lastInSection={false} - permalinkCreator={this.permalinkCreator} - lastSuccessful={false} - isSelectedEvent={false} - getRelationsForEvent={null} - showReactions={false} - layout={Layout.Group} - enableFlair={false} - showReadReceipts={false} - /> + <MatrixClientContext.Provider value = {this.matrixClient}> + <EventTile + mxEvent={mxEv} + continuation={continuation} + isRedacted={mxEv.isRedacted()} + replacingEventId={mxEv.replacingEventId()} + forExport={true} + readReceipts={null} + readReceiptMap={null} + showUrlPreview={false} + checkUnmounting={() => false} + isTwelveHour={false} + last={false} + mediaSrc={mediaSrc} + avatarSrc={hasAvatar ? `users/${mxEv.sender.userId}` : null} + lastInSection={false} + permalinkCreator={this.permalinkCreator} + lastSuccessful={false} + isSelectedEvent={false} + getRelationsForEvent={null} + showReactions={false} + layout={Layout.Group} + enableFlair={false} + showReadReceipts={false} + /> + </MatrixClientContext.Provider> </li> } diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index f2d85af636..531b5d98e4 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -10,6 +10,7 @@ export enum exportFormats { export enum exportTypes { TIMELINE = "TIMELINE", BEGINNING = "BEGINNING", + START_DATE = "START_DATE", LAST_N_MESSAGES = "LAST_N_MESSAGES", } @@ -17,11 +18,11 @@ const exportConversationalHistory = async ( room: Room, format: string, exportType: exportTypes, - numberOfEvents?: number, + exportTypeMetadata?: number, ) => { switch (format) { case exportFormats.HTML: - await new HTMLExporter(room, exportType, numberOfEvents).export(); + await new HTMLExporter(room, exportType, exportTypeMetadata).export(); break; case exportFormats.JSON: break; From 0f6d09a74b213f452e93bce831d745a7d420fb5f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 8 Jun 2021 18:37:14 +0530 Subject: [PATCH 050/176] Update src/utils/exportUtils/Exporter.ts Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/utils/exportUtils/Exporter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 583e16b1fd..0783f686a9 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -81,7 +81,7 @@ export default abstract class Exporter { }); }); - //Wait for all the events to get decrypted. + // Wait for all the events to get decrypted. await Promise.all(decryptionPromises); for (let i = 0; i < events.length; i++) this.setEventMetadata(events[i]); From 03d8e1f9313545e84d8dac559045e2b3cf597b33 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 8 Jun 2021 18:37:36 +0530 Subject: [PATCH 051/176] Update src/utils/exportUtils/Exporter.ts Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/utils/exportUtils/Exporter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 0783f686a9..66bb287354 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -69,7 +69,7 @@ export default abstract class Exporter { prevToken = res.end; } - //Reverse the events so that we preserve the order + // Reverse the events so that we preserve the order events = events.reverse(); const decryptionPromises = events From d80e008d288903be15a4fd435fec8a10551cc84f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 8 Jun 2021 18:37:44 +0530 Subject: [PATCH 052/176] Update src/utils/exportUtils/Exporter.ts Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/utils/exportUtils/Exporter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 66bb287354..270669374b 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -8,7 +8,7 @@ import { exportTypes } from "./exportUtils"; export default abstract class Exporter { protected constructor(protected room: Room, protected exportType: exportTypes, protected numberOfEvents?: number) {} - protected getTimelineConversation = () : MatrixEvent[] => { + protected getTimelineConversation = (): MatrixEvent[] => { if (!this.room) return; const cli = MatrixClientPeg.get(); From 573ababb8c249a0a6e2576bac4ae3b85feef255f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 9 Jun 2021 15:23:47 +0530 Subject: [PATCH 053/176] Get rid of mediaSrc and avatarSrc props --- src/components/views/avatars/MemberAvatar.tsx | 8 ++++---- src/components/views/messages/MAudioBody.js | 6 +++--- src/components/views/messages/MFileBody.js | 8 ++++---- src/components/views/messages/MImageBody.js | 12 ++++++------ src/components/views/messages/MVideoBody.tsx | 10 +++++----- .../views/messages/MVoiceOrAudioBody.tsx | 4 ++-- src/components/views/messages/MessageEvent.js | 4 ---- src/components/views/rooms/EventTile.tsx | 9 +-------- src/utils/exportUtils/HtmlExport.tsx | 17 ++++++++++------- 9 files changed, 35 insertions(+), 43 deletions(-) diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 67d6ef38f0..48bf0d3423 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -34,10 +34,10 @@ interface IProps extends Omit<React.ComponentProps<typeof BaseAvatar>, "name" | resizeMethod?: ResizeMethod; // The onClick to give the avatar onClick?: React.MouseEventHandler; - // Whether the onClick of the avatar should be overriden to dispatch `Action.ViewUser` + // Whether the onClick of the avatar should be overridden to dispatch `Action.ViewUser` viewUserOnClick?: boolean; title?: string; - avatarSrc?: string; + forExport?: boolean; } interface IState { @@ -68,7 +68,7 @@ export default class MemberAvatar extends React.Component<IProps, IState> { private static getState(props: IProps): IState { if (props.member?.name) { let imageUrl = null; - if (props.avatarSrc) imageUrl = props.avatarSrc; + if (props.forExport && props.member.getMxcAvatarUrl()) imageUrl = "AvatarForExport"; else if (props.member.getMxcAvatarUrl()) { imageUrl = mediaFromMxc(props.member.getMxcAvatarUrl()).getThumbnailOfSourceHttp( props.width, @@ -95,7 +95,7 @@ export default class MemberAvatar extends React.Component<IProps, IState> { let {member, fallbackUserId, onClick, viewUserOnClick, ...otherProps} = this.props; const userId = member ? member.userId : fallbackUserId; - otherProps = omit(otherProps, "avatarSrc"); + otherProps = omit(otherProps, "forExport"); if (viewUserOnClick) { onClick = () => { diff --git a/src/components/views/messages/MAudioBody.js b/src/components/views/messages/MAudioBody.js index 2c3eba8cb3..6c6a0527ea 100644 --- a/src/components/views/messages/MAudioBody.js +++ b/src/components/views/messages/MAudioBody.js @@ -42,7 +42,7 @@ export default class MAudioBody extends React.Component { } _getContentUrl() { - if (this.props.mediaSrc) return this.props.mediaSrc; + if (this.props.forExport) return "forExport"; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; @@ -52,7 +52,7 @@ export default class MAudioBody extends React.Component { } getFileBody() { - if (this.props.mediaSrc) return null; + if (this.props.forExport) return null; return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; } @@ -95,7 +95,7 @@ export default class MAudioBody extends React.Component { ); } - if (!this.props.mediaSrc && content.file !== undefined && this.state.decryptedUrl === null) { + if (!this.props.forExport && content.file !== undefined && this.state.decryptedUrl === null) { // Need to decrypt the attachment // The attachment is decrypted in componentDidMount. // For now add an img tag with a 16x16 spinner. diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 1ef2c2eb64..813b340bb9 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -102,8 +102,7 @@ export default class MFileBody extends React.Component { tileShape: PropTypes.string, /* whether or not to show the default placeholder for the file. Defaults to true. */ showGenericPlaceholder: PropTypes.bool, - /* to set source to local file path during export */ - mediaSrc: PropTypes.string, + forExport: PropTypes.bool, }; @@ -152,6 +151,7 @@ export default class MFileBody extends React.Component { } _getContentUrl() { + if (this.props.forExport) return null; const media = mediaFromContent(this.props.mxEvent.getContent()); return media.srcHttp; } @@ -185,9 +185,9 @@ export default class MFileBody extends React.Component { ); } - if (this.props.mediaSrc) { + if (this.props.forExport) { return <span className="mx_MFileBody"> - <a href={this.props.mediaSrc}> + <a href="forExport"> { placeholder } </a> </span>; diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 56cc6a5eec..b8220d8a5c 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -172,7 +172,7 @@ export default class MImageBody extends React.Component { } _getContentUrl() { - if (this.props.mediaSrc) return this.props.mediaSrc; + if (this.props.forExport) return "forExport"; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; @@ -370,9 +370,9 @@ export default class MImageBody extends React.Component { let gifLabel = null; // e2e image hasn't been decrypted yet - if (!this.props.mediaSrc && content.file !== undefined && this.state.decryptedUrl === null) { + if (!this.props.forExport && content.file !== undefined && this.state.decryptedUrl === null) { placeholder = <InlineSpinner w={32} h={32} />; - } else if (!this.props.mediaSrc && !this.state.imgLoaded) { + } else if (!this.props.forExport && !this.state.imgLoaded) { // Deliberately, getSpinner is left unimplemented here, MStickerBody overides placeholder = this.getPlaceholder(); } @@ -418,7 +418,7 @@ export default class MImageBody extends React.Component { </div> } - <div style={{display: this.props.mediaSrc ? "block" : !showPlaceholder ? undefined : 'none'}}> + <div style={{display: showPlaceholder ? 'none' : undefined}}> { img } { gifLabel } </div> @@ -450,7 +450,7 @@ export default class MImageBody extends React.Component { // Overidden by MStickerBody getFileBody() { - if (this.props.mediaSrc) return null; + if (this.props.forExport) return null; return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; } @@ -468,7 +468,7 @@ export default class MImageBody extends React.Component { const contentUrl = this._getContentUrl(); let thumbUrl; - if ((this._isGif() && SettingsStore.getValue("autoplayGifsAndVideos")) || this.props.mediaSrc) { + if (this.props.forExport || (this._isGif() && SettingsStore.getValue("autoplayGifsAndVideos"))) { thumbUrl = contentUrl; } else { thumbUrl = this._getThumbUrl(); diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 2b4327068e..a6d849e836 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -30,7 +30,7 @@ interface IProps { /* called when the video has loaded */ onHeightChanged: () => void; /* used to refer to the local file while exporting */ - mediaSrc?: string; + forExport?: boolean; } interface IState { @@ -78,7 +78,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } private getContentUrl(): string|null { - if (this.props.mediaSrc) return this.props.mediaSrc; + if (this.props.forExport) return "forExport"; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; @@ -94,7 +94,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { private getThumbUrl(): string|null { // there's no need of thumbnail when the content is local - if (this.props.mediaSrc) return null; + if (this.props.forExport) return null; const content = this.props.mxEvent.getContent(); const media = mediaFromContent(content); @@ -191,7 +191,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } private getFileBody = () => { - if (this.props.mediaSrc) return null; + if (this.props.forExport) return null; return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; } @@ -209,7 +209,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } // Important: If we aren't autoplaying and we haven't decrypted it yet, show a video with a poster. - if (!this.props.mediaSrc && content.file !== undefined && this.state.decryptedUrl === null && autoplay) { + if (!this.props.forExport && content.file !== undefined && this.state.decryptedUrl === null && autoplay) { // Need to decrypt the attachment // The attachment is decrypted in componentDidMount. // For now add an img tag with a spinner. diff --git a/src/components/views/messages/MVoiceOrAudioBody.tsx b/src/components/views/messages/MVoiceOrAudioBody.tsx index d548d8d2fa..e5482c4b64 100644 --- a/src/components/views/messages/MVoiceOrAudioBody.tsx +++ b/src/components/views/messages/MVoiceOrAudioBody.tsx @@ -23,7 +23,7 @@ import MVoiceMessageBody from "./MVoiceMessageBody"; interface IProps { mxEvent: MatrixEvent; - mediaSrc?: string; + forExport?: boolean; } @replaceableComponent("views.messages.MVoiceOrAudioBody") @@ -31,7 +31,7 @@ export default class MVoiceOrAudioBody extends React.PureComponent<IProps> { public render() { const isVoiceMessage = !!this.props.mxEvent.getContent()['org.matrix.msc2516.voice']; const voiceMessagesEnabled = SettingsStore.getValue("feature_voice_messages"); - if (isVoiceMessage && voiceMessagesEnabled && !this.props.mediaSrc) { + if (!this.props.forExport && isVoiceMessage && voiceMessagesEnabled) { return <MVoiceMessageBody {...this.props} />; } else { return <MAudioBody {...this.props} />; diff --git a/src/components/views/messages/MessageEvent.js b/src/components/views/messages/MessageEvent.js index 49dcc7b5e2..e53a796f70 100644 --- a/src/components/views/messages/MessageEvent.js +++ b/src/components/views/messages/MessageEvent.js @@ -44,9 +44,6 @@ export default class MessageEvent extends React.Component { /* the shape of the tile, used */ tileShape: PropTypes.string, - /* to set source to local file path during export */ - mediaSrc: PropTypes.string, - /* to set source to local file path during export */ forExport: PropTypes.bool, @@ -126,7 +123,6 @@ export default class MessageEvent extends React.Component { highlightLink={this.props.highlightLink} showUrlPreview={this.props.showUrlPreview} tileShape={this.props.tileShape} - mediaSrc={this.props.mediaSrc} forExport={this.props.forExport} maxImageHeight={this.props.maxImageHeight} replacingEventId={this.props.replacingEventId} diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index e1aa7ca81a..f8e3cc4887 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -251,12 +251,6 @@ interface IProps { forExport?: boolean; - // Used while exporting to refer to the local source rather than the online one - mediaSrc?: string; - - // Used while exporting to refer to the local avatar rather than the online one - avatarSrc?: string; - // show twelve hour timestamps isTwelveHour?: boolean; @@ -963,7 +957,7 @@ export default class EventTile extends React.Component<IProps, IState> { avatar = ( <div className="mx_EventTile_avatar"> <MemberAvatar - avatarSrc={this.props.avatarSrc} + forExport={this.props.forExport} member={member} width={avatarSize} height={avatarSize} @@ -1190,7 +1184,6 @@ export default class EventTile extends React.Component<IProps, IState> { forExport={this.props.forExport} replacingEventId={this.props.replacingEventId} editState={this.props.editState} - mediaSrc={this.props.mediaSrc} highlights={this.props.highlights} highlightLink={this.props.highlightLink} showUrlPreview={this.props.showUrlPreview} diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index b9d4763153..8fb30b08a3 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -257,11 +257,10 @@ export default class HTMLExporter extends Exporter { } - protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, mediaSrc?: string) { + protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { const hasAvatar = this.hasAvatar(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); - - return <li className="mx_Export_EventWrapper" id={mxEv.getId()}> + const eventTile = <li className="mx_Export_EventWrapper" id={mxEv.getId()}> <MatrixClientContext.Provider value = {this.matrixClient}> <EventTile mxEvent={mxEv} @@ -275,8 +274,6 @@ export default class HTMLExporter extends Exporter { checkUnmounting={() => false} isTwelveHour={false} last={false} - mediaSrc={mediaSrc} - avatarSrc={hasAvatar ? `users/${mxEv.sender.userId}` : null} lastInSection={false} permalinkCreator={this.permalinkCreator} lastSuccessful={false} @@ -289,10 +286,16 @@ export default class HTMLExporter extends Exporter { /> </MatrixClientContext.Provider> </li> + let eventTileMarkup = renderToStaticMarkup(eventTile); + if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/, `$1"${filePath}"`); + if (hasAvatar) { + eventTileMarkup = eventTileMarkup.replace(/src="AvatarForExport"/, `src="users/${mxEv.sender.userId}"`); + } + return eventTileMarkup; } protected async createMessageBody(mxEv: MatrixEvent, joined = false) { - let eventTile: JSX.Element; + let eventTile: string; const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"] if (mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype)) { @@ -302,7 +305,7 @@ export default class HTMLExporter extends Exporter { this.zip.file(filePath, blob); } else eventTile = await this.getEventTile(mxEv, joined); - return renderToStaticMarkup(eventTile); + return eventTile; } protected async createHTML(events: MatrixEvent[]) { From 716e2effbc0a8948c0b6a3303a286f1a5d2f93b4 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 9 Jun 2021 16:12:57 +0530 Subject: [PATCH 054/176] Enable proper i18n for date utils --- src/DateUtils.ts | 21 ++++++--------- src/i18n/strings/en_EN.json | 4 +-- src/utils/exportUtils/HtmlExport.tsx | 38 ++++++++++++++++++++++------ 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index 481afb312b..1eaa331f52 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -138,19 +138,14 @@ export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): bo } export function formatFullDateNoDay(date: Date) { - return ( - date.getFullYear() + - "-" + - pad(date.getMonth() + 1) + - "-" + - pad(date.getDate()) + - _t(" at ") + - pad(date.getHours()) + - "." + - pad(date.getMinutes()) + - "." + - pad(date.getSeconds()) - ); + return _t("%(year)s-%(month)s-%(day)s at %(hours)s.%(minutes)s.%(seconds)s", { + year: date.getFullYear(), + month: pad(date.getMonth() + 1), + day: pad(date.getDate()), + hours: pad(date.getHours()), + minutes: pad(date.getMinutes()), + seconds: pad(date.getSeconds()), + }); } export function formatFullDateNoDayNoTime(date: Date) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 1c5fdcb848..c52ee00ae7 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -105,7 +105,7 @@ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", - " at ": " at ", + "%(year)s-%(month)s-%(day)s at %(hours)s.%(minutes)s.%(seconds)s": "%(year)s-%(month)s-%(day)s at %(hours)s.%(minutes)s.%(seconds)s", "Who would you like to add to this community?": "Who would you like to add to this community?", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID", "Invite new community members": "Invite new community members", @@ -728,7 +728,7 @@ "Share your public space": "Share your public space", "Unknown App": "Unknown App", "%(creatorName)s created this room.": "%(creatorName)s created this room.", - "This is the start of export of <b>%(roomName)s</b>.\n Exported by %(exporterDetails)s at %(exportDate)s. ": "This is the start of export of <b>%(roomName)s</b>.\n Exported by %(exporterDetails)s at %(exportDate)s. ", + "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.": "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.", "Topic: %(topic)s": "Topic: %(topic)s", "Help us improve %(brand)s": "Help us improve %(brand)s", "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.": "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.", diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 8fb30b08a3..3472d99507 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -82,14 +82,36 @@ export default class HTMLExporter extends Exporter { creatorName, }); - const exportedText = _t(`This is the start of export of <b>%(roomName)s</b>. - Exported by %(exporterDetails)s at %(exportDate)s. `, { - exportDate, - roomName: this.room.name, - exporterDetails: `<a href="https://matrix.to/#/${exporter}" target="_blank" rel="noopener noreferrer"> - ${exporterName ? `<b>${ exporterName }</b>(${ exporter })` : `<b>${ exporter }</b>`} - </a>`, - }); + const exportedText = renderToStaticMarkup( + <p> + {_t( + "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.", + { + exportDate, + }, + { + roomName: () => <b>{this.room.name}</b>, + exporterDetails: () => ( + <a + href={`https://matrix.to/#/${exporter}`} + target="_blank" + rel="noopener noreferrer" + > + {exporterName ? ( + <> + <b>{exporterName}</b> + {exporter} + </> + ) : ( + <b>{exporter}</b> + )} + </a> + ), + }, + )} + </p>, + ); + const topicText = topic ? _t("Topic: %(topic)s", { topic }) : ""; From 9204ed30ce783d82f54c60384f38fec1ecc2625a Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 9 Jun 2021 16:40:52 +0530 Subject: [PATCH 055/176] Switch to localeDateString for i18n --- src/DateUtils.ts | 10 +++------- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/DateUtils.ts b/src/DateUtils.ts index 1eaa331f52..758971e58d 100644 --- a/src/DateUtils.ts +++ b/src/DateUtils.ts @@ -138,13 +138,9 @@ export function wantsDateSeparator(prevEventDate: Date, nextEventDate: Date): bo } export function formatFullDateNoDay(date: Date) { - return _t("%(year)s-%(month)s-%(day)s at %(hours)s.%(minutes)s.%(seconds)s", { - year: date.getFullYear(), - month: pad(date.getMonth() + 1), - day: pad(date.getDate()), - hours: pad(date.getHours()), - minutes: pad(date.getMinutes()), - seconds: pad(date.getSeconds()), + return _t("%(date)s at %(time)s", { + date: date.toLocaleDateString().replace(/\//g, '-'), + time: date.toLocaleTimeString().replace(/:/g, '-'), }); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index c52ee00ae7..fc0b3c6c06 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -105,7 +105,7 @@ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", - "%(year)s-%(month)s-%(day)s at %(hours)s.%(minutes)s.%(seconds)s": "%(year)s-%(month)s-%(day)s at %(hours)s.%(minutes)s.%(seconds)s", + "%(date)s at %(time)s": "%(date)s at %(time)s", "Who would you like to add to this community?": "Who would you like to add to this community?", "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID", "Invite new community members": "Invite new community members", From 80e5d4cd77686af850e69a3fce2a5e19bdb59d63 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 10 Jun 2021 11:53:41 +0530 Subject: [PATCH 056/176] Increase eventsPerCrawl for larger chunks and rely on chunk's length for crawled events size --- src/utils/exportUtils/Exporter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 270669374b..36494e13ef 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -56,12 +56,12 @@ export default abstract class Exporter { let events: MatrixEvent[] = []; while (limit) { - const eventsPerCrawl = Math.min(limit, 100); + const eventsPerCrawl = Math.min(limit, 1000); const res: any = await client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); if (res.chunk.length === 0) break; - limit -= eventsPerCrawl; + limit -= res.chunk.length; const matrixEvents: MatrixEvent[] = res.chunk.map(eventMapper); From a1b614f2b38ad864fe26f828cc930901c9fd6b9c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 11 Jun 2021 12:04:05 +0530 Subject: [PATCH 057/176] Implement exporting from a specific start date and fix few bugs --- src/components/views/messages/MImageBody.js | 2 +- src/components/views/rooms/RoomHeader.js | 7 ++- src/utils/exportUtils/Exporter.ts | 60 ++++++++++----------- src/utils/exportUtils/HtmlExport.tsx | 13 ++--- src/utils/exportUtils/exportCSS.ts | 2 +- src/utils/exportUtils/exportUtils.ts | 9 +++- 6 files changed, 52 insertions(+), 41 deletions(-) diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index b8220d8a5c..d854baec46 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -432,7 +432,7 @@ export default class MImageBody extends React.Component { // Overidden by MStickerBody wrapImage(contentUrl, children) { - return <a href={contentUrl} onClick={this.onClick}> + return <a href={contentUrl} target={this.props.forExport ? "__blank" : undefined} onClick={this.onClick}> {children} </a>; } diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index a0055e1b5c..3b507763fa 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -82,7 +82,12 @@ export default class RoomHeader extends React.Component { _exportConversationalHistory = async () => { - await exportConversationalHistory(this.props.room, exportFormats.HTML, exportTypes.LAST_N_MESSAGES, 100); + await exportConversationalHistory( + this.props.room, + exportFormats.HTML, + exportTypes.START_DATE, + { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)) }, + ); } render() { diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 36494e13ef..5b0d2df188 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,37 +1,15 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { TimelineWindow } from "matrix-js-sdk/src/timeline-window"; -import { arrayFastClone } from "../arrays"; import { exportTypes } from "./exportUtils"; +import { exportOptions } from "./exportUtils"; export default abstract class Exporter { - protected constructor(protected room: Room, protected exportType: exportTypes, protected numberOfEvents?: number) {} - - protected getTimelineConversation = (): MatrixEvent[] => { - if (!this.room) return; - - const cli = MatrixClientPeg.get(); - - const timelineSet = this.room.getUnfilteredTimelineSet(); - - const timelineWindow = new TimelineWindow( - cli, timelineSet, - {windowLimit: Number.MAX_VALUE}); - - timelineWindow.load(null, 30); - - const events: MatrixEvent[] = timelineWindow.getEvents(); - - // Clone and reverse the events so that we preserve the order - arrayFastClone(events) - .reverse() - .forEach(async (event) => { - await cli.decryptEventIfNeeded(event); - }); - - return events; - }; + protected constructor( + protected room: Room, + protected exportType: exportTypes, + protected exportOptions?: exportOptions, + ) {} protected setEventMetadata = (event: MatrixEvent) => { const client = MatrixClientPeg.get(); @@ -47,12 +25,27 @@ export default abstract class Exporter { return event; } + protected getLimit = () => { + let limit: number; + switch (this.exportType) { + case exportTypes.LAST_N_MESSAGES: + limit = this.exportOptions.numberOfMessages; + break; + case exportTypes.TIMELINE: + limit = 40; + break; + default: + limit = Number.MAX_VALUE; + } + return limit; + } + protected getRequiredEvents = async () : Promise<MatrixEvent[]> => { const client = MatrixClientPeg.get(); const eventMapper = client.getEventMapper(); let prevToken: string|null = null; - let limit = this.numberOfEvents || Number.MAX_VALUE; + let limit = this.getLimit(); let events: MatrixEvent[] = []; while (limit) { @@ -65,7 +58,14 @@ export default abstract class Exporter { const matrixEvents: MatrixEvent[] = res.chunk.map(eventMapper); - matrixEvents.forEach(mxEv => events.push(mxEv)); + for (const mxEv of matrixEvents) { + if (this.exportOptions.startDate && mxEv.getTs() < this.exportOptions.startDate) { + // Once the last message received is older than the start date, we break out of both the loops + limit = 0; + break; + } + events.push(mxEv); + } prevToken = res.end; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 3472d99507..ded4e82b84 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -23,6 +23,7 @@ import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import exportIcons from "./exportIcons"; import { exportTypes } from "./exportUtils"; +import { exportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; import { MatrixClient } from "matrix-js-sdk"; @@ -32,8 +33,8 @@ export default class HTMLExporter extends Exporter { protected permalinkCreator: RoomPermalinkCreator; protected matrixClient: MatrixClient; - constructor(room: Room, exportType: exportTypes, numberOfEvents?: number) { - super(room, exportType, numberOfEvents); + constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { + super(room, exportType, exportOptions); this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); this.matrixClient = MatrixClientPeg.get(); @@ -282,7 +283,7 @@ export default class HTMLExporter extends Exporter { protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { const hasAvatar = this.hasAvatar(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); - const eventTile = <li className="mx_Export_EventWrapper" id={mxEv.getId()}> + const eventTile = <div className="mx_Export_EventWrapper" id={mxEv.getId()}> <MatrixClientContext.Provider value = {this.matrixClient}> <EventTile mxEvent={mxEv} @@ -307,11 +308,11 @@ export default class HTMLExporter extends Exporter { showReadReceipts={false} /> </MatrixClientContext.Provider> - </li> + </div> let eventTileMarkup = renderToStaticMarkup(eventTile); - if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/, `$1"${filePath}"`); + if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/g, `$1"${filePath}"`); if (hasAvatar) { - eventTileMarkup = eventTileMarkup.replace(/src="AvatarForExport"/, `src="users/${mxEv.sender.userId}"`); + eventTileMarkup = eventTileMarkup.replace(/src="AvatarForExport"/g, `src="users/${mxEv.sender.userId}"`); } return eventTileMarkup; } diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 7813c1651a..cbba088361 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -19537,7 +19537,7 @@ a.mx_reply_anchor:hover{ } -li.mx_Export_EventWrapper:target { +.mx_Export_EventWrapper:target { background: white; animation: mx_event_highlight_animation 2s linear; } diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 531b5d98e4..ed285b47bc 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -14,15 +14,20 @@ export enum exportTypes { LAST_N_MESSAGES = "LAST_N_MESSAGES", } +export interface exportOptions { + startDate?: number; + numberOfMessages?: number; +} + const exportConversationalHistory = async ( room: Room, format: string, exportType: exportTypes, - exportTypeMetadata?: number, + exportOptions?: exportOptions, ) => { switch (format) { case exportFormats.HTML: - await new HTMLExporter(room, exportType, exportTypeMetadata).export(); + await new HTMLExporter(room, exportType, exportOptions).export(); break; case exportFormats.JSON: break; From ab653d99520692ee8d8fca3e0d6635fa336ae46f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 14 Jun 2021 11:08:17 +0530 Subject: [PATCH 058/176] Handle requests with no attachments --- src/components/views/rooms/RoomHeader.js | 2 +- src/utils/exportUtils/HtmlExport.tsx | 40 +++++++++++++++++------- src/utils/exportUtils/exportUtils.ts | 1 + 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 3b507763fa..3372785390 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -86,7 +86,7 @@ export default class RoomHeader extends React.Component { this.props.room, exportFormats.HTML, exportTypes.START_DATE, - { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)) }, + { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), attachmentsIncluded: false }, ); } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index ded4e82b84..11b1fa80dc 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -72,10 +72,9 @@ export default class HTMLExporter extends Exporter { protected async wrapHTML(content: string) { const roomAvatar = await this.getRoomAvatar(); const exportDate = formatFullDateNoDayNoTime(new Date()); - const cli = MatrixClientPeg.get(); const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); const creatorName = this.room?.getMember(creator)?.rawDisplayName || creator; - const exporter = cli.getUserId(); + const exporter = this.matrixClient.getUserId(); const exporterName = this.room?.getMember(exporter)?.rawDisplayName; const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic || this.room.topic || ""; @@ -113,10 +112,8 @@ export default class HTMLExporter extends Exporter { </p>, ); - const topicText = topic ? _t("Topic: %(topic)s", { topic }) : ""; - return ` <!DOCTYPE html> <html lang="en"> @@ -279,10 +276,10 @@ export default class HTMLExporter extends Exporter { return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; } - protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { const hasAvatar = this.hasAvatar(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); + const eventTile = <div className="mx_Export_EventWrapper" id={mxEv.getId()}> <MatrixClientContext.Provider value = {this.matrixClient}> <EventTile @@ -317,15 +314,36 @@ export default class HTMLExporter extends Exporter { return eventTileMarkup; } + protected isAttachment(mxEv: MatrixEvent) { + const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"]; + return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); + } + protected async createMessageBody(mxEv: MatrixEvent, joined = false) { let eventTile: string; - const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"] - if (mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype)) { - const blob = await this.getMediaBlob(mxEv); - const filePath = this.getFilePath(mxEv); - eventTile = await this.getEventTile(mxEv, joined, filePath); - this.zip.file(filePath, blob); + if (this.isAttachment(mxEv)) { + if (this.exportOptions.attachmentsIncluded) { + const blob = await this.getMediaBlob(mxEv); + const filePath = this.getFilePath(mxEv); + eventTile = await this.getEventTile(mxEv, joined, filePath); + this.zip.file(filePath, blob); + } else { + const modifiedContent = { + msgtype: "m.text", + body: "**Media omitted**", + format: "org.matrix.custom.html", + formatted_body: "<strong>Media omitted</strong>", + } + if (mxEv.isEncrypted()) { + mxEv._clearEvent.content = modifiedContent; + mxEv._clearEvent.type = "m.room.message"; + } else { + mxEv.event.content = modifiedContent; + mxEv.event.type = "m.room.message"; + } + eventTile = await this.getEventTile(mxEv, joined); + } } else eventTile = await this.getEventTile(mxEv, joined); return eventTile; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index ed285b47bc..407cef3077 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -17,6 +17,7 @@ export enum exportTypes { export interface exportOptions { startDate?: number; numberOfMessages?: number; + attachmentsIncluded: boolean; } const exportConversationalHistory = async ( From 30c7017fadb3909648d22500412e623de850d71c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 14 Jun 2021 18:06:40 +0530 Subject: [PATCH 059/176] Move generic functions into base class --- src/utils/exportUtils/Exporter.ts | 57 ++++++++++++++++++++++++++++ src/utils/exportUtils/HtmlExport.tsx | 57 +--------------------------- 2 files changed, 58 insertions(+), 56 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 5b0d2df188..8aeda1f3c5 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -3,6 +3,9 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; +import { decryptFile } from "../DecryptFile"; +import { mediaFromContent } from "../../customisations/Media"; +import { formatFullDateNoDay } from "../../DateUtils"; export default abstract class Exporter { protected constructor( @@ -89,5 +92,59 @@ export default abstract class Exporter { return events; } + protected async getMediaBlob(event: MatrixEvent) { + let blob: Blob; + try { + const isEncrypted = event.isEncrypted(); + const content = event.getContent(); + const shouldDecrypt = isEncrypted && !content.hasOwnProperty("org.matrix.msc1767.file") + && event.getType() !== "m.sticker"; + if (shouldDecrypt) { + blob = await decryptFile(content.file); + } else { + const media = mediaFromContent(event.getContent()); + const image = await fetch(media.srcHttp); + blob = await image.blob(); + } + } catch (err) { + console.log("Error decrypting media"); + } + return blob; + } + + protected splitFileName(file: string) { + const lastDot = file.lastIndexOf('.'); + if (lastDot === -1) return [file, ""]; + const fileName = file.slice(0, lastDot); + const ext = file.slice(lastDot + 1); + return [fileName, '.' + ext]; + } + + protected getFilePath(event: MatrixEvent) { + const mediaType = event.getContent().msgtype; + let fileDirectory: string; + switch (mediaType) { + case "m.image": + fileDirectory = "images"; + break; + case "m.video": + fileDirectory = "videos"; + break; + case "m.audio": + fileDirectory = "audio"; + break; + default: + fileDirectory = event.getType() === "m.sticker" ? "stickers" : "files"; + } + const fileDate = formatFullDateNoDay(new Date(event.getTs())); + const [fileName, fileExt] = this.splitFileName(event.getContent().body); + return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; + } + + protected isAttachment(mxEv: MatrixEvent) { + const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"]; + return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); + } + abstract export(): Promise<Blob>; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 11b1fa80dc..eed1a818e4 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -2,8 +2,7 @@ import React from "react" import streamSaver from "streamsaver"; import JSZip from "jszip"; import Exporter from "./Exporter"; -import { decryptFile } from "../DecryptFile"; -import { mediaFromContent, mediaFromMxc } from "../../customisations/Media"; +import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { renderToStaticMarkup } from 'react-dom/server' @@ -216,26 +215,6 @@ export default class HTMLExporter extends Exporter { } } - protected async getMediaBlob(event: MatrixEvent) { - let blob: Blob; - try { - const isEncrypted = event.isEncrypted(); - const content = event.getContent(); - const shouldDecrypt = isEncrypted && !content.hasOwnProperty("org.matrix.msc1767.file") - && event.getType() !== "m.sticker"; - if (shouldDecrypt) { - blob = await decryptFile(content.file); - } else { - const media = mediaFromContent(event.getContent()); - const image = await fetch(media.srcHttp); - blob = await image.blob(); - } - } catch (err) { - console.log("Error decrypting media"); - } - return blob; - } - protected getDateSeparator(event: MatrixEvent) { const ts = event.getTs(); const dateSeparator = <li key={ts}><DateSeparator forExport={true} key={ts} ts={ts} /></li>; @@ -247,35 +226,6 @@ export default class HTMLExporter extends Exporter { return wantsDateSeparator(prevEvent.getDate(), event.getDate()); } - protected splitFileName(file: string) { - const lastDot = file.lastIndexOf('.'); - if (lastDot === -1) return [file, ""]; - const fileName = file.slice(0, lastDot); - const ext = file.slice(lastDot + 1); - return [fileName, '.' + ext]; - } - - protected getFilePath(event: MatrixEvent) { - const mediaType = event.getContent().msgtype; - let fileDirectory: string; - switch (mediaType) { - case "m.image": - fileDirectory = "images"; - break; - case "m.video": - fileDirectory = "videos"; - break; - case "m.audio": - fileDirectory = "audio"; - break; - default: - fileDirectory = event.getType() === "m.sticker" ? "stickers" : "files"; - } - const fileDate = formatFullDateNoDay(new Date(event.getTs())); - const [fileName, fileExt] = this.splitFileName(event.getContent().body); - return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; - } - protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { const hasAvatar = this.hasAvatar(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); @@ -314,11 +264,6 @@ export default class HTMLExporter extends Exporter { return eventTileMarkup; } - protected isAttachment(mxEv: MatrixEvent) { - const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"]; - return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); - } - protected async createMessageBody(mxEv: MatrixEvent, joined = false) { let eventTile: string; From bd75849e73076aff42b8af38f866df5f2907cefa Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 15 Jun 2021 16:41:31 +0530 Subject: [PATCH 060/176] Enable option to set maximum file size --- src/components/views/rooms/RoomHeader.js | 6 +++++- src/i18n/strings/en_EN.json | 2 ++ src/utils/exportUtils/HtmlExport.tsx | 14 ++++++++++++-- src/utils/exportUtils/exportUtils.ts | 1 + 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 3372785390..f0f9b4d646 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -86,7 +86,11 @@ export default class RoomHeader extends React.Component { this.props.room, exportFormats.HTML, exportTypes.START_DATE, - { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), attachmentsIncluded: false }, + { + startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), + attachmentsIncluded: true, + maxSize: 3 * 1024 * 1024, // 3 MB + }, ); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 8640735557..8748c5ba80 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -727,6 +727,8 @@ "Invite to %(spaceName)s": "Invite to %(spaceName)s", "Share your public space": "Share your public space", "Unknown App": "Unknown App", + "Media omitted": "Media omitted", + "Media omitted - file size limit exceeded": "Media omitted - file size limit exceeded", "%(creatorName)s created this room.": "%(creatorName)s created this room.", "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.": "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.", "Topic: %(topic)s": "Topic: %(topic)s", diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index eed1a818e4..c1b2f4ea70 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -31,6 +31,8 @@ export default class HTMLExporter extends Exporter { protected avatars: Map<string, boolean>; protected permalinkCreator: RoomPermalinkCreator; protected matrixClient: MatrixClient; + protected totalSize: number; + protected mediaOmitText: string; constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); @@ -38,6 +40,10 @@ export default class HTMLExporter extends Exporter { this.avatars = new Map<string, boolean>(); this.matrixClient = MatrixClientPeg.get(); this.permalinkCreator = new RoomPermalinkCreator(this.room); + this.totalSize = 0; + this.mediaOmitText = !this.exportOptions.attachmentsIncluded + ? _t("Media omitted") + : _t("Media omitted - file size limit exceeded"); window.addEventListener("beforeunload", this.onBeforeUnload) } @@ -270,15 +276,19 @@ export default class HTMLExporter extends Exporter { if (this.isAttachment(mxEv)) { if (this.exportOptions.attachmentsIncluded) { const blob = await this.getMediaBlob(mxEv); + this.totalSize += blob.size; const filePath = this.getFilePath(mxEv); eventTile = await this.getEventTile(mxEv, joined, filePath); + if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { + this.exportOptions.attachmentsIncluded = false; + } this.zip.file(filePath, blob); } else { const modifiedContent = { msgtype: "m.text", - body: "**Media omitted**", + body: `**${this.mediaOmitText}**`, format: "org.matrix.custom.html", - formatted_body: "<strong>Media omitted</strong>", + formatted_body: `<strong>${this.mediaOmitText}</strong>`, } if (mxEv.isEncrypted()) { mxEv._clearEvent.content = modifiedContent; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 407cef3077..77fb23509e 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -18,6 +18,7 @@ export interface exportOptions { startDate?: number; numberOfMessages?: number; attachmentsIncluded: boolean; + maxSize: number; } const exportConversationalHistory = async ( From 9e6b8ff9f5b0d2d7f6be4fd2ab1103ab0c934718 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 17 Jun 2021 10:46:08 +0530 Subject: [PATCH 061/176] Start implementation of plain text export --- src/TextForEvent.ts | 4 +- src/components/views/rooms/RoomHeader.js | 2 +- src/utils/exportUtils/Exporter.ts | 2 +- src/utils/exportUtils/PlainTextExport.ts | 68 ++++++++++++++++++++++++ src/utils/exportUtils/exportUtils.ts | 2 + 5 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 src/utils/exportUtils/PlainTextExport.ts diff --git a/src/TextForEvent.ts b/src/TextForEvent.ts index 649c53664e..df2047a645 100644 --- a/src/TextForEvent.ts +++ b/src/TextForEvent.ts @@ -238,12 +238,12 @@ function textForServerACLEvent(ev): () => string | null { function textForMessageEvent(ev): () => string | null { return () => { const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); - let message = senderDisplayName + ': ' + ev.getContent().body; + let message = ev.getContent().body; if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { message = _t('%(senderDisplayName)s sent an image.', {senderDisplayName}); - } + } else message = senderDisplayName + ': ' + message; return message; }; } diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index f0f9b4d646..1a21e503f3 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -84,7 +84,7 @@ export default class RoomHeader extends React.Component { _exportConversationalHistory = async () => { await exportConversationalHistory( this.props.room, - exportFormats.HTML, + exportFormats.LOGS, exportTypes.START_DATE, { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 8aeda1f3c5..44bb7b6a88 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -146,5 +146,5 @@ export default abstract class Exporter { return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); } - abstract export(): Promise<Blob>; + abstract export(): Promise<any>; } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts new file mode 100644 index 0000000000..6d29a4bb6d --- /dev/null +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -0,0 +1,68 @@ +import streamSaver from "streamsaver"; +import Exporter from "./Exporter"; +import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { formatFullDateNoDay } from "../../DateUtils"; +import { _t } from "../../languageHandler"; +import * as ponyfill from "web-streams-polyfill/ponyfill" +import { haveTileForEvent } from "../../components/views/rooms/EventTile"; +import { exportTypes } from "./exportUtils"; +import { exportOptions } from "./exportUtils"; +import { textForEvent } from "../../TextForEvent"; + +export default class PlainTextExporter extends Exporter { + protected totalSize: number; + protected mediaOmitText: string; + + constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { + super(room, exportType, exportOptions); + this.totalSize = 0; + this.mediaOmitText = !this.exportOptions.attachmentsIncluded + ? _t("Media omitted") + : _t("Media omitted - file size limit exceeded"); + window.addEventListener("beforeunload", this.onBeforeUnload) + } + + protected onBeforeUnload = (e: BeforeUnloadEvent) => { + e.preventDefault(); + return e.returnValue = "Are you sure you want to exit during this export?"; + } + + protected async createOutput(events: MatrixEvent[]) { + let content = ""; + for (const event of events) { + if (!haveTileForEvent(event)) continue; + content += `${new Date(event.getTs()).toLocaleString()} - ${textForEvent(event)}\n`; + } + return content; + } + + public async export() { + console.info("Starting export process..."); + console.info("Fetching events..."); + const fetchStart = performance.now(); + const res = await this.getRequiredEvents(); + const fetchEnd = performance.now(); + + console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000} s`); + console.info("Creating Output..."); + + const text = await this.createOutput(res); + + const filename = `matrix-export-${formatFullDateNoDay(new Date())}.txt`; + + console.info("Writing to a file..."); + //Support for firefox browser + streamSaver.WritableStream = ponyfill.WritableStream + //Create a writable stream to the directory + const fileStream = streamSaver.createWriteStream(filename); + const writer = fileStream.getWriter(); + const data = new TextEncoder().encode(text); + await writer.write(data); + await writer.close(); + const exportEnd = performance.now(); + console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("beforeunload", this.onBeforeUnload); + } +} + diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 77fb23509e..22457f926b 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,5 +1,6 @@ import { Room } from "matrix-js-sdk/src/models/room"; import HTMLExporter from "./HtmlExport"; +import PlainTextExporter from "./PlainTextExport"; export enum exportFormats { HTML = "HTML", @@ -34,6 +35,7 @@ const exportConversationalHistory = async ( case exportFormats.JSON: break; case exportFormats.LOGS: + await new PlainTextExporter(room, exportType, exportOptions).export(); break; } }; From 44f458d5770c03c507299a400775296cc2f5eebb Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 21 Jun 2021 11:43:47 +0530 Subject: [PATCH 062/176] Modify local avatar's url to not contain colons --- src/components/views/avatars/MemberAvatar.tsx | 2 +- src/utils/exportUtils/HtmlExport.tsx | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 48bf0d3423..7488616fb6 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -68,7 +68,7 @@ export default class MemberAvatar extends React.Component<IProps, IState> { private static getState(props: IProps): IState { if (props.member?.name) { let imageUrl = null; - if (props.forExport && props.member.getMxcAvatarUrl()) imageUrl = "AvatarForExport"; + if (props.forExport && props.member.getMxcAvatarUrl()) imageUrl = "avatarForExport"; else if (props.member.getMxcAvatarUrl()) { imageUrl = mediaFromMxc(props.member.getMxcAvatarUrl()).getThumbnailOfSourceHttp( props.width, diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index c1b2f4ea70..b5df531721 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -217,7 +217,7 @@ export default class HTMLExporter extends Exporter { this.avatars.set(member.userId, true); const image = await fetch(avatarUrl); const blob = await image.blob(); - this.zip.file(`users/${member.userId}`, blob); + this.zip.file(`users/${member.userId.replace(/:/g, '-')}`, blob); } } @@ -265,7 +265,10 @@ export default class HTMLExporter extends Exporter { let eventTileMarkup = renderToStaticMarkup(eventTile); if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/g, `$1"${filePath}"`); if (hasAvatar) { - eventTileMarkup = eventTileMarkup.replace(/src="AvatarForExport"/g, `src="users/${mxEv.sender.userId}"`); + eventTileMarkup = eventTileMarkup.replace( + /src="avatarForExport"/g, + `src="users/${mxEv.sender.userId.replace(/:/g, "-")}"`, + ); } return eventTileMarkup; } @@ -291,8 +294,8 @@ export default class HTMLExporter extends Exporter { formatted_body: `<strong>${this.mediaOmitText}</strong>`, } if (mxEv.isEncrypted()) { - mxEv._clearEvent.content = modifiedContent; - mxEv._clearEvent.type = "m.room.message"; + mxEv.clearEvent.content = modifiedContent; + mxEv.clearEvent.type = "m.room.message"; } else { mxEv.event.content = modifiedContent; mxEv.event.type = "m.room.message"; From a0e0453635926cff3c9e63a5c3b5f5fdff52f6d5 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 09:27:49 +0530 Subject: [PATCH 063/176] Fix type lint --- src/utils/exportUtils/HtmlExport.tsx | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index c1b2f4ea70..4456fd3737 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -217,7 +217,7 @@ export default class HTMLExporter extends Exporter { this.avatars.set(member.userId, true); const image = await fetch(avatarUrl); const blob = await image.blob(); - this.zip.file(`users/${member.userId}`, blob); + this.zip.file(`users/${member.userId.replace(/:/g, '-')}`, blob); } } @@ -265,7 +265,10 @@ export default class HTMLExporter extends Exporter { let eventTileMarkup = renderToStaticMarkup(eventTile); if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/g, `$1"${filePath}"`); if (hasAvatar) { - eventTileMarkup = eventTileMarkup.replace(/src="AvatarForExport"/g, `src="users/${mxEv.sender.userId}"`); + eventTileMarkup = eventTileMarkup.replace( + /src="avatarForExport"/g, + `src="users/${mxEv.sender.userId.replace(/:/g, "-")}"`, + ); } return eventTileMarkup; } @@ -286,18 +289,16 @@ export default class HTMLExporter extends Exporter { } else { const modifiedContent = { msgtype: "m.text", - body: `**${this.mediaOmitText}**`, + body: `*${this.mediaOmitText}*`, format: "org.matrix.custom.html", - formatted_body: `<strong>${this.mediaOmitText}</strong>`, + formatted_body: `<em>${this.mediaOmitText}</em>`, } - if (mxEv.isEncrypted()) { - mxEv._clearEvent.content = modifiedContent; - mxEv._clearEvent.type = "m.room.message"; - } else { - mxEv.event.content = modifiedContent; - mxEv.event.type = "m.room.message"; - } - eventTile = await this.getEventTile(mxEv, joined); + const modifiedEvent = new MatrixEvent(); + modifiedEvent.event = mxEv.event; + modifiedEvent.sender = mxEv.sender; + modifiedEvent.event.type = "m.room.message"; + modifiedEvent.event.content = modifiedContent; + eventTile = await this.getEventTile(modifiedEvent, joined); } } else eventTile = await this.getEventTile(mxEv, joined); From bf189204f24110b68d058797d5303c32e08b47d3 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 10:49:14 +0530 Subject: [PATCH 064/176] Implement IRC bridge style reply formatting --- src/utils/exportUtils/Exporter.ts | 20 +++++++----- src/utils/exportUtils/PlainTextExport.ts | 40 +++++++++++++++++++++++- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 44bb7b6a88..177735f8d9 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,11 +1,10 @@ -import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import { Room } from "matrix-js-sdk/src/models/room"; -import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { exportTypes } from "./exportUtils"; -import { exportOptions } from "./exportUtils"; -import { decryptFile } from "../DecryptFile"; -import { mediaFromContent } from "../../customisations/Media"; -import { formatFullDateNoDay } from "../../DateUtils"; +import {MatrixEvent} from "matrix-js-sdk/src/models/event"; +import {Room} from "matrix-js-sdk/src/models/room"; +import {MatrixClientPeg} from "../../MatrixClientPeg"; +import {exportOptions, exportTypes} from "./exportUtils"; +import {decryptFile} from "../DecryptFile"; +import {mediaFromContent} from "../../customisations/Media"; +import {formatFullDateNoDay} from "../../DateUtils"; export default abstract class Exporter { protected constructor( @@ -141,6 +140,11 @@ export default abstract class Exporter { return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; } + protected isReply(mxEvent) { + const relatesTo = mxEvent.getContent()["m.relates_to"]; + return !!(relatesTo && relatesTo["m.in_reply_to"]); + } + protected isAttachment(mxEv: MatrixEvent) { const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"]; return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 6d29a4bb6d..72ab0f122f 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -28,11 +28,49 @@ export default class PlainTextExporter extends Exporter { return e.returnValue = "Are you sure you want to exit during this export?"; } + protected textForReplyEvent = (ev : MatrixEvent) => { + const REPLY_REGEX = /> <(.*?)>(.*?)\n\n(.*)/; + const REPLY_SOURCE_MAX_LENGTH = 32; + const content = ev.getContent(); + + const match = REPLY_REGEX.exec(content.body); + + let rplSource: string; + const rplName = match[1]; + const rplText = match[3]; + const sourceMatch = REPLY_REGEX.exec(content.body); + rplSource = sourceMatch && sourceMatch.length === 4 ? sourceMatch[3] : content.body; + rplSource = rplSource.substring(0, REPLY_SOURCE_MAX_LENGTH); + // Get the first non-blank line from the source. + const lines = rplSource.split('\n').filter((line) => !/^\s*$/.test(line)) + if (lines.length > 0) { + // Cut to a maximum length. + rplSource = lines[0].substring(0, REPLY_SOURCE_MAX_LENGTH); + // Ellipsis if needed. + if (lines[0].length > REPLY_SOURCE_MAX_LENGTH) { + rplSource = rplSource + "..."; + } + // Wrap in formatting + rplSource = ` "${rplSource}"`; + } else { + // Don't show a source because we couldn't format one. + rplSource = ""; + } + + return `<${rplName}${rplSource}> ${rplText}`; + } + + protected _textForEvent = (mxEv: MatrixEvent) => { + const senderDisplayName = mxEv.sender && mxEv.sender.name ? mxEv.sender.name : mxEv.getSender(); + if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv); + else return textForEvent(mxEv); + } + protected async createOutput(events: MatrixEvent[]) { let content = ""; for (const event of events) { if (!haveTileForEvent(event)) continue; - content += `${new Date(event.getTs()).toLocaleString()} - ${textForEvent(event)}\n`; + content += `${new Date(event.getTs()).toLocaleString()} - ${this._textForEvent(event)}\n`; } return content; } From c58abd9582b2a4d4bdd88dc32fcac1cc655ee253 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 10:51:16 +0530 Subject: [PATCH 065/176] Revert auto format --- src/utils/exportUtils/Exporter.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 177735f8d9..ba35c5904f 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,10 +1,10 @@ -import {MatrixEvent} from "matrix-js-sdk/src/models/event"; -import {Room} from "matrix-js-sdk/src/models/room"; -import {MatrixClientPeg} from "../../MatrixClientPeg"; -import {exportOptions, exportTypes} from "./exportUtils"; -import {decryptFile} from "../DecryptFile"; -import {mediaFromContent} from "../../customisations/Media"; -import {formatFullDateNoDay} from "../../DateUtils"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixClientPeg } from "../../MatrixClientPeg"; +import { exportOptions, exportTypes } from "./exportUtils"; +import { decryptFile } from "../DecryptFile"; +import { mediaFromContent } from "../../customisations/Media"; +import { formatFullDateNoDay } from "../../DateUtils"; export default abstract class Exporter { protected constructor( From 8a1cd77ef4df4f343bb307145ffc18e945fb7b9d Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 12:12:37 +0530 Subject: [PATCH 066/176] Handle no match cases and modify textForEvent to handle redacted messages --- src/TextForEvent.ts | 15 +++++++++------ src/utils/exportUtils/PlainTextExport.ts | 7 ++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/TextForEvent.ts b/src/TextForEvent.ts index df2047a645..70952eeca5 100644 --- a/src/TextForEvent.ts +++ b/src/TextForEvent.ts @@ -13,13 +13,14 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -import {MatrixClientPeg} from './MatrixClientPeg'; +import { MatrixClientPeg } from './MatrixClientPeg'; import { _t } from './languageHandler'; import * as Roles from './Roles'; -import {isValid3pidInvite} from "./RoomInvite"; +import { isValid3pidInvite } from "./RoomInvite"; import SettingsStore from "./settings/SettingsStore"; -import {ALL_RULE_TYPES, ROOM_RULE_TYPES, SERVER_RULE_TYPES, USER_RULE_TYPES} from "./mjolnir/BanList"; -import {WIDGET_LAYOUT_EVENT_TYPE} from "./stores/widgets/WidgetLayoutStore"; +import { ALL_RULE_TYPES, ROOM_RULE_TYPES, SERVER_RULE_TYPES, USER_RULE_TYPES } from "./mjolnir/BanList"; +import { WIDGET_LAYOUT_EVENT_TYPE } from "./stores/widgets/WidgetLayoutStore"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; // These functions are frequently used just to check whether an event has // any text to display at all. For this reason they return deferred values @@ -235,11 +236,13 @@ function textForServerACLEvent(ev): () => string | null { return getText; } -function textForMessageEvent(ev): () => string | null { +function textForMessageEvent(ev: MatrixEvent): () => string | null { return () => { const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); + const isRedacted = ev.isRedacted(); let message = ev.getContent().body; - if (ev.getContent().msgtype === "m.emote") { + if (isRedacted) message = "Message Deleted"; + else if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { message = _t('%(senderDisplayName)s sent an image.', {senderDisplayName}); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 72ab0f122f..69c80122d6 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -35,12 +35,13 @@ export default class PlainTextExporter extends Exporter { const match = REPLY_REGEX.exec(content.body); + if (!match) return content.body; + let rplSource: string; const rplName = match[1]; const rplText = match[3]; - const sourceMatch = REPLY_REGEX.exec(content.body); - rplSource = sourceMatch && sourceMatch.length === 4 ? sourceMatch[3] : content.body; - rplSource = rplSource.substring(0, REPLY_SOURCE_MAX_LENGTH); + + rplSource = match[2].substring(1, REPLY_SOURCE_MAX_LENGTH); // Get the first non-blank line from the source. const lines = rplSource.split('\n').filter((line) => !/^\s*$/.test(line)) if (lines.length > 0) { From 12ecaf30df245a17093c2dfcef0ab6df07b8beee Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 12:14:31 +0530 Subject: [PATCH 067/176] i18n --- src/TextForEvent.ts | 2 +- src/i18n/strings/en_EN.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TextForEvent.ts b/src/TextForEvent.ts index 70952eeca5..6975550154 100644 --- a/src/TextForEvent.ts +++ b/src/TextForEvent.ts @@ -241,7 +241,7 @@ function textForMessageEvent(ev: MatrixEvent): () => string | null { const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); const isRedacted = ev.isRedacted(); let message = ev.getContent().body; - if (isRedacted) message = "Message Deleted"; + if (isRedacted) message = _t("Message Deleted"); else if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 71fbfd53e7..5c9c81dcfe 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -525,6 +525,7 @@ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s set the server ACLs for this room.", "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s changed the server ACLs for this room.", "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 All servers are banned from participating! This room can no longer be used.", + "Message Deleted": "Message Deleted", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s set the main address for this room to %(address)s.", "%(senderName)s removed the main address for this room.": "%(senderName)s removed the main address for this room.", From db875508d8379befb0f4d0fa1464e757570a1d72 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 12:50:15 +0530 Subject: [PATCH 068/176] Add text for room avatar events and skip empty text events --- src/TextForEvent.ts | 13 +++++++++++-- src/i18n/strings/en_EN.json | 2 ++ src/utils/exportUtils/Exporter.ts | 7 +++++-- src/utils/exportUtils/PlainTextExport.ts | 3 ++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/TextForEvent.ts b/src/TextForEvent.ts index 6975550154..de65733be8 100644 --- a/src/TextForEvent.ts +++ b/src/TextForEvent.ts @@ -116,6 +116,11 @@ function textForTopicEvent(ev): () => string | null { }); } +function textForRoomAvatarEvent(ev: MatrixEvent): () => string | null { + const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); + return () => _t('%(senderDisplayName)s changed the room avatar.', {senderDisplayName}); +} + function textForRoomNameEvent(ev): () => string | null { const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); @@ -242,10 +247,12 @@ function textForMessageEvent(ev: MatrixEvent): () => string | null { const isRedacted = ev.isRedacted(); let message = ev.getContent().body; if (isRedacted) message = _t("Message Deleted"); - else if (ev.getContent().msgtype === "m.emote") { + if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { message = _t('%(senderDisplayName)s sent an image.', {senderDisplayName}); + } else if (ev.getType() == "m.sticker") { + message = _t('%(senderDisplayName)s sent a sticker.', {senderDisplayName}); } else message = senderDisplayName + ': ' + message; return message; }; @@ -603,6 +610,7 @@ interface IHandlers { const handlers: IHandlers = { 'm.room.message': textForMessageEvent, 'm.call.invite': textForCallInviteEvent, + 'm.sticker': textForMessageEvent, 'm.call.answer': textForCallAnswerEvent, 'm.call.hangup': textForCallHangupEvent, 'm.call.reject': textForCallRejectEvent, @@ -613,6 +621,7 @@ const stateHandlers: IHandlers = { 'm.room.name': textForRoomNameEvent, 'm.room.topic': textForTopicEvent, 'm.room.member': textForMemberEvent, + "m.room.avatar": textForRoomAvatarEvent, 'm.room.third_party_invite': textForThreePidInviteEvent, 'm.room.history_visibility': textForHistoryVisibilityEvent, 'm.room.power_levels': textForPowerEvent, @@ -638,7 +647,7 @@ export function hasText(ev): boolean { return Boolean(handler?.(ev)); } -export function textForEvent(ev): string { +export function textForEvent(ev: MatrixEvent): string { const handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()]; return handler?.(ev)?.() || ''; } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 5c9c81dcfe..2bad735745 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -509,6 +509,7 @@ "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", + "%(senderDisplayName)s changed the room avatar.": "%(senderDisplayName)s changed the room avatar.", "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.": "%(senderDisplayName)s changed the room name from %(oldRoomName)s to %(newRoomName)s.", "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", @@ -527,6 +528,7 @@ "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 All servers are banned from participating! This room can no longer be used.", "Message Deleted": "Message Deleted", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "%(senderDisplayName)s sent a sticker.": "%(senderDisplayName)s sent a sticker.", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s set the main address for this room to %(address)s.", "%(senderName)s removed the main address for this room.": "%(senderName)s removed the main address for this room.", "%(senderName)s added the alternative addresses %(addresses)s for this room.|other": "%(senderName)s added the alternative addresses %(addresses)s for this room.", diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index ba35c5904f..d5e1186b0f 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -140,8 +140,11 @@ export default abstract class Exporter { return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; } - protected isReply(mxEvent) { - const relatesTo = mxEvent.getContent()["m.relates_to"]; + protected isReply(event: MatrixEvent) { + const isEncrypted = event.isEncrypted(); + // If encrypted, in_reply_to lies in event.event.content + const content = isEncrypted ? event.event.content : event.getContent(); + const relatesTo = content["m.relates_to"]; return !!(relatesTo && relatesTo["m.in_reply_to"]); } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 69c80122d6..d6e76b5968 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -71,7 +71,8 @@ export default class PlainTextExporter extends Exporter { let content = ""; for (const event of events) { if (!haveTileForEvent(event)) continue; - content += `${new Date(event.getTs()).toLocaleString()} - ${this._textForEvent(event)}\n`; + const textForEvent = this._textForEvent(event); + content += textForEvent && `${new Date(event.getTs()).toLocaleString()} - ${textForEvent}\n`; } return content; } From 36a69313cdd3e1f9317f47b3a0cb0f6ef96c5dd4 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 22 Jun 2021 14:53:48 +0530 Subject: [PATCH 069/176] Display redactedBecauseUserId for redacted events --- src/TextForEvent.ts | 12 ++++++++++-- src/i18n/strings/en_EN.json | 5 ++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/TextForEvent.ts b/src/TextForEvent.ts index de65733be8..ad3417fd8c 100644 --- a/src/TextForEvent.ts +++ b/src/TextForEvent.ts @@ -244,9 +244,17 @@ function textForServerACLEvent(ev): () => string | null { function textForMessageEvent(ev: MatrixEvent): () => string | null { return () => { const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); - const isRedacted = ev.isRedacted(); let message = ev.getContent().body; - if (isRedacted) message = _t("Message Deleted"); + if (ev.isRedacted()) { + message = _t("Message deleted"); + const unsigned = ev.getUnsigned(); + const redactedBecauseUserId = unsigned && unsigned.redacted_because && unsigned.redacted_because.sender; + if (redactedBecauseUserId && redactedBecauseUserId !== ev.getSender()) { + const room = MatrixClientPeg.get().getRoom(ev.getRoomId()); + const sender = room && room.getMember(redactedBecauseUserId); + message = _t("Message deleted by %(name)s", { name: sender ? sender.name : redactedBecauseUserId }); + } + } if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 2bad735745..7a25ebfb7a 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -526,7 +526,8 @@ "%(senderDisplayName)s set the server ACLs for this room.": "%(senderDisplayName)s set the server ACLs for this room.", "%(senderDisplayName)s changed the server ACLs for this room.": "%(senderDisplayName)s changed the server ACLs for this room.", "🎉 All servers are banned from participating! This room can no longer be used.": "🎉 All servers are banned from participating! This room can no longer be used.", - "Message Deleted": "Message Deleted", + "Message deleted": "Message deleted", + "Message deleted by %(name)s": "Message deleted by %(name)s", "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", "%(senderDisplayName)s sent a sticker.": "%(senderDisplayName)s sent a sticker.", "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s set the main address for this room to %(address)s.", @@ -1881,8 +1882,6 @@ "Reactions": "Reactions", "<reactors/><reactedWith> reacted with %(content)s</reactedWith>": "<reactors/><reactedWith> reacted with %(content)s</reactedWith>", "<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>": "<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>", - "Message deleted": "Message deleted", - "Message deleted by %(name)s": "Message deleted by %(name)s", "Message deleted on %(date)s": "Message deleted on %(date)s", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", From 438b9d473079e01862b49fd5aff7c08c1302d853 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 23 Jun 2021 11:58:50 +0530 Subject: [PATCH 070/176] Get rid of jszip and replace it with a custom library --- package.json | 1 - .../views/elements/EventListSummary.tsx | 3 +- src/components/views/rooms/EventTile.tsx | 2 +- src/components/views/rooms/RoomHeader.js | 4 +- src/utils/exportUtils/Exporter.ts | 27 +- src/utils/exportUtils/HtmlExport.tsx | 58 ++-- src/utils/exportUtils/PlainTextExport.ts | 57 +++- src/utils/exportUtils/StreamToZip.ts | 293 +++++++++++++++++- yarn.lock | 34 +- 9 files changed, 377 insertions(+), 102 deletions(-) diff --git a/package.json b/package.json index 6e0a55de9c..485e4d7872 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,6 @@ "highlight.js": "^10.5.0", "html-entities": "^1.4.0", "is-ip": "^3.1.0", - "jszip": "^3.6.0", "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.20", diff --git a/src/components/views/elements/EventListSummary.tsx b/src/components/views/elements/EventListSummary.tsx index 86d3e082ad..ef40251dec 100644 --- a/src/components/views/elements/EventListSummary.tsx +++ b/src/components/views/elements/EventListSummary.tsx @@ -76,7 +76,8 @@ const EventListSummary: React.FC<IProps> = ({ { children } </React.Fragment>; } else { - const avatars = summaryMembers.map((m) => <MemberAvatar key={m.userId} member={m} width={14} height={14} />); + const avatars = summaryMembers.map((m, idx) => + <MemberAvatar key={m.userId + idx} member={m} width={14} height={14} />); body = ( <div className="mx_EventTile_line"> <div className="mx_EventTile_info"> diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index a1687d146f..20f02ff96c 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -105,7 +105,7 @@ for (const evType of ALL_RULE_TYPES) { stateEventTileTypes[evType] = 'messages.TextualEvent'; } -export function getHandlerTile(ev: MatrixEvent) { +export function getHandlerTile(ev) { const type = ev.getType(); // don't show verification requests we're not involved in, diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 1a21e503f3..891b690f7b 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -84,12 +84,12 @@ export default class RoomHeader extends React.Component { _exportConversationalHistory = async () => { await exportConversationalHistory( this.props.room, - exportFormats.LOGS, + exportFormats.HTML, exportTypes.START_DATE, { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), attachmentsIncluded: true, - maxSize: 3 * 1024 * 1024, // 3 MB + maxSize: 7 * 1024 * 1024, // 3 MB }, ); } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index d5e1186b0f..f6dce9c8e8 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -6,12 +6,37 @@ import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; +type FileStream = { + name: string, + stream(): ReadableStream, +}; + export default abstract class Exporter { + protected files: FileStream[]; protected constructor( protected room: Room, protected exportType: exportTypes, protected exportOptions?: exportOptions, - ) {} + ) { + this.files = []; + } + + protected addFile = (filePath: string, blob: Blob) => { + const file = { + name: filePath, + stream: () => blob.stream(), + } + this.files.push(file); + } + + protected pumpToFileStream = async (reader: ReadableStreamDefaultReader, writer: WritableStreamDefaultWriter) => { + const res = await reader.read(); + if (res.done) await writer.close(); + else { + await writer.write(res.value); + await this.pumpToFileStream(reader, writer) + } + } protected setEventMetadata = (event: MatrixEvent) => { const client = MatrixClientPeg.get(); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 4456fd3737..1dec02981c 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -1,6 +1,5 @@ import React from "react" import streamSaver from "streamsaver"; -import JSZip from "jszip"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; @@ -25,9 +24,9 @@ import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; import { MatrixClient } from "matrix-js-sdk"; +import zip from "./StreamToZip"; export default class HTMLExporter extends Exporter { - protected zip: JSZip; protected avatars: Map<string, boolean>; protected permalinkCreator: RoomPermalinkCreator; protected matrixClient: MatrixClient; @@ -36,7 +35,6 @@ export default class HTMLExporter extends Exporter { constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); - this.zip = new JSZip(); this.avatars = new Map<string, boolean>(); this.matrixClient = MatrixClientPeg.get(); this.permalinkCreator = new RoomPermalinkCreator(this.room); @@ -59,7 +57,7 @@ export default class HTMLExporter extends Exporter { if (avatarUrl) { const image = await fetch(avatarUrl); blob = await image.blob(); - this.zip.file(avatarPath, blob); + this.addFile(avatarPath, blob); } const avatar = ( <BaseAvatar @@ -217,7 +215,7 @@ export default class HTMLExporter extends Exporter { this.avatars.set(member.userId, true); const image = await fetch(avatarUrl); const blob = await image.blob(); - this.zip.file(`users/${member.userId.replace(/:/g, '-')}`, blob); + this.addFile(`users/${member.userId.replace(/:/g, '-')}`, blob); } } @@ -285,7 +283,7 @@ export default class HTMLExporter extends Exporter { if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { this.exportOptions.attachmentsIncluded = false; } - this.zip.file(filePath, blob); + this.addFile(filePath, blob); } else { const modifiedContent = { msgtype: "m.text", @@ -334,53 +332,43 @@ export default class HTMLExporter extends Exporter { const html = await this.createHTML(res); - this.zip.file("index.html", html); - this.zip.file("css/style.css", exportCSS); - this.zip.file("js/script.js", exportJS); + this.addFile("index.html", new Blob([html])); + this.addFile("css/style.css", new Blob([exportCSS])); + this.addFile("js/script.js", new Blob([exportJS])); for (const iconName in exportIcons) { - this.zip.file(`icons/${iconName}`, exportIcons[iconName]); + this.addFile(`icons/${iconName}`, new Blob([exportIcons[iconName]])); } const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; console.info("HTML creation successful!"); - console.info("Generating a ZIP..."); - //Generate the zip file asynchronously - const blob = await this.zip.generateAsync({ type: "blob" }); - console.log("ZIP generated successfully"); - console.info("Writing to file system...") //Support for firefox browser streamSaver.WritableStream = ponyfill.WritableStream //Create a writable stream to the directory - const fileStream = streamSaver.createWriteStream(filename, { size: blob.size }); + const fileStream = streamSaver.createWriteStream(filename); + const writer = fileStream.getWriter(); + const files = this.files; - // Here we chunk the blob into pieces of 10 MB, the size might be dynamically generated. - // This can be used to keep track of the progress - const sliceSize = 10 * 1e6; - for (let fPointer = 0; fPointer < blob.size; fPointer += sliceSize) { - const blobPiece = blob.slice(fPointer, fPointer + sliceSize); - const reader = new FileReader(); + console.info("Generating a ZIP..."); + const readableZipStream = zip({ + start(ctrl) { + for (const file of files) ctrl.enqueue(file); + ctrl.close(); + }, + }); + + console.info("Writing to file system...") + + const reader = readableZipStream.getReader() + await this.pumpToFileStream(reader, writer); - const waiter = new Promise<void>((resolve) => { - reader.onloadend = evt => { - const arrayBufferNew: any = evt.target.result; - const uint8ArrayNew = new Uint8Array(arrayBufferNew); - writer.write(uint8ArrayNew); - resolve(); - }; - reader.readAsArrayBuffer(blobPiece); - }); - await waiter; - } - await writer.close(); const exportEnd = performance.now(); console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); window.removeEventListener("beforeunload", this.onBeforeUnload); - return blob; } } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index d6e76b5968..862fac3aa1 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -5,18 +5,23 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; import * as ponyfill from "web-streams-polyfill/ponyfill" +import "web-streams-polyfill/ponyfill" // to support blob.stream() import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; +import zip from "./StreamToZip"; + export default class PlainTextExporter extends Exporter { protected totalSize: number; protected mediaOmitText: string; + private readonly fileDir: string; constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); this.totalSize = 0; + this.fileDir = `matrix-export-${formatFullDateNoDay(new Date())}`; this.mediaOmitText = !this.exportOptions.attachmentsIncluded ? _t("Media omitted") : _t("Media omitted - file size limit exceeded"); @@ -61,8 +66,17 @@ export default class PlainTextExporter extends Exporter { return `<${rplName}${rplSource}> ${rplText}`; } - protected _textForEvent = (mxEv: MatrixEvent) => { + protected _textForEvent = async (mxEv: MatrixEvent) => { const senderDisplayName = mxEv.sender && mxEv.sender.name ? mxEv.sender.name : mxEv.getSender(); + if (this.exportOptions.attachmentsIncluded && this.isAttachment(mxEv)) { + const blob = await this.getMediaBlob(mxEv); + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + this.addFile(filePath, blob); + if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { + this.exportOptions.attachmentsIncluded = false; + } + } if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv); else return textForEvent(mxEv); } @@ -71,12 +85,18 @@ export default class PlainTextExporter extends Exporter { let content = ""; for (const event of events) { if (!haveTileForEvent(event)) continue; - const textForEvent = this._textForEvent(event); + const textForEvent = await this._textForEvent(event); content += textForEvent && `${new Date(event.getTs()).toLocaleString()} - ${textForEvent}\n`; } return content; } + protected getFileName = () => { + if (this.exportOptions.attachmentsIncluded) { + return `${this.room.name}.txt`; + } else return `${this.fileDir}.txt` + } + public async export() { console.info("Starting export process..."); console.info("Fetching events..."); @@ -89,17 +109,30 @@ export default class PlainTextExporter extends Exporter { const text = await this.createOutput(res); - const filename = `matrix-export-${formatFullDateNoDay(new Date())}.txt`; - - console.info("Writing to a file..."); - //Support for firefox browser + console.info("Writing to the file system..."); streamSaver.WritableStream = ponyfill.WritableStream - //Create a writable stream to the directory - const fileStream = streamSaver.createWriteStream(filename); - const writer = fileStream.getWriter(); - const data = new TextEncoder().encode(text); - await writer.write(data); - await writer.close(); + + const files = this.files; + if (files.length) { + this.addFile(this.getFileName(), new Blob([text])); + const fileStream = streamSaver.createWriteStream(`${this.fileDir}.zip`); + const readableZipStream = zip({ + start(ctrl) { + for (const file of files) ctrl.enqueue(file); + ctrl.close(); + }, + }); + const writer = fileStream.getWriter() + const reader = readableZipStream.getReader() + await this.pumpToFileStream(reader, writer); + } else { + const fileStream = streamSaver.createWriteStream(`${this.fileDir}.txt`); + const writer = fileStream.getWriter() + const data = new TextEncoder().encode(text); + await writer.write(data); + await writer.close(); + } + const exportEnd = performance.now(); console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); window.removeEventListener("beforeunload", this.onBeforeUnload); diff --git a/src/utils/exportUtils/StreamToZip.ts b/src/utils/exportUtils/StreamToZip.ts index 01a2880386..b98e3e142f 100644 --- a/src/utils/exportUtils/StreamToZip.ts +++ b/src/utils/exportUtils/StreamToZip.ts @@ -1,17 +1,278 @@ -/*Not to be reviewed now*/ -// class fileCheckSum { -// protected CRC32: number; -// public table: any[]; -// constructor() { -// this.CRC32 = -1 -// } +/* global ReadableStream */ -// protected append(data: any[]) { -// let crc = this.CRC32 | 0; -// const table = this.table; -// for (let offset = 0, len = data.length | 0; offset < len; offset++) { -// crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF] -// } -// this.CRC32 = crc -// } -// } +type TypedArray = + | Int8Array + | Uint8Array + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Uint8ClampedArray + | Float32Array + | Float64Array; + + +/** + * 32-bit cyclic redundancy check, or CRC-32 - checksum + */ +class Crc32 { + crc: number; + table: any; + constructor() { + this.crc = -1; + this.table = (() => { + let i + let j + let t; + const table = []; + + for (i = 0; i < 256; i++) { + t = i; + for (j = 0; j < 8; j++) { + t = (t & 1) + ? (t >>> 1) ^ 0xEDB88320 + : t >>> 1; + } + table[i] = t; + } + return table + })() + } + + append(data: TypedArray) { + let crc = this.crc | 0; + const table = this.table; + for (let offset = 0, len = data.length | 0; offset < len; offset++) { + crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF]; + } + this.crc = crc; + } + + get() { + return ~this.crc; + } +} + + +type DataHelper = { + array: Uint8Array, + view: DataView, +} + +const getDataHelper = (byteLength: number): DataHelper => { + const uint8 = new Uint8Array(byteLength) + return { + array: uint8, + view: new DataView(uint8.buffer), + }; +} + +type FileLike = File & { + directory: string, + comment: string, + stream(): ReadableStream, +} + +type ZipObj = { + crc?: Crc32, + uncompressedLength: number, + compressedLength: number, + ctrl: ReadableStreamDefaultController, + writeFooter: Function, + writeHeader: Function, + reader?: ReadableStreamDefaultReader, + offset: number + header?: DataHelper, + fileLike: FileLike, + level: number, + directory: boolean, +} + +const pump = (zipObj: ZipObj) => zipObj.reader ? zipObj.reader.read().then(chunk => { + if (zipObj.crc) { + if (chunk.done) return zipObj.writeFooter(); + const outputData = chunk.value; + zipObj.crc.append(outputData); + zipObj.uncompressedLength += outputData.length; + zipObj.compressedLength += outputData.length; + zipObj.ctrl.enqueue(outputData); + } else { + throw new Error('Missing zipObj.crc'); + } +}) : undefined; + +export default function ZIP(underlyingSource: UnderlyingSource) { + const files = Object.create(null); + const filenames: string[] = []; + const encoder = new TextEncoder(); + let offset = 0; + let activeZipIndex = 0; + let ctrl: ReadableStreamDefaultController; + let activeZipObject: ZipObj; + let closed: boolean; + + function next() { + activeZipIndex++; + activeZipObject = files[filenames[activeZipIndex]]; + if (activeZipObject) processNextChunk(); + else if (closed) closeZip(); + } + + const zipWriter: ReadableStreamDefaultController = { + desiredSize: null, + + error(err) { + console.error(err) + }, + + enqueue(fileLike: FileLike) { + if (closed) { + throw new TypeError( + "Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed", + ); + } + + let name = fileLike.name.trim(); + const date = new Date(typeof fileLike.lastModified === 'undefined' ? Date.now() : fileLike.lastModified); + + if (fileLike.directory && !name.endsWith('/')) name += '/'; + if (files[name]) throw new Error('File already exists.'); + + const nameBuf = encoder.encode(name); + filenames.push(name); + + const zipObject: ZipObj = files[name] = { + level: 0, + ctrl, + directory: !!fileLike.directory, + nameBuf, + comment: encoder.encode(fileLike.comment || ''), + compressedLength: 0, + uncompressedLength: 0, + offset, + + writeHeader() { + const header = getDataHelper(26) + const data = getDataHelper(30 + nameBuf.length) + + zipObject.offset = offset; + zipObject.header = header; + + if (zipObject.level !== 0 && !zipObject.directory) { + header.view.setUint16(4, 0x0800); + } + + header.view.setUint32(0, 0x14000808); + header.view.setUint16( + 6, + (((date.getHours() << 6) | date.getMinutes()) << 5) | (date.getSeconds() / 2), + true, + ); + header.view.setUint16( + 8, + ((((date.getFullYear() - 1980) << 4) | (date.getMonth() + 1)) << 5) | + date.getDate(), + true, + ); + header.view.setUint16(22, nameBuf.length, true); + data.view.setUint32(0, 0x504b0304); + data.array.set(header.array, 4); + data.array.set(nameBuf, 30); + offset += data.array.length; + ctrl.enqueue(data.array); + }, + + writeFooter() { + const footer = getDataHelper(16); + footer.view.setUint32(0, 0x504b0708); + + if (zipObject.crc && zipObject.header) { + zipObject.header.view.setUint32(10, zipObject.crc.get(), true); + zipObject.header.view.setUint32(14, zipObject.compressedLength, true); + zipObject.header.view.setUint32(18, zipObject.uncompressedLength, true); + footer.view.setUint32(4, zipObject.crc.get(), true); + footer.view.setUint32(8, zipObject.compressedLength, true); + footer.view.setUint32(12, zipObject.uncompressedLength, true); + } + + ctrl.enqueue(footer.array); + offset += zipObject.compressedLength + 16; + next() + }, + fileLike, + } + + if (!activeZipObject) { + activeZipObject = zipObject; + processNextChunk(); + } + }, + + close() { + if (closed) { + throw new TypeError( + "Cannot close a readable stream that has already been requested to be closed", + ); + } + if (!activeZipObject) closeZip(); + closed = true; + }, + } + + function closeZip() { + let length = 0; + let index = 0 + let indexFilename; + let file; + + for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { + file = files[filenames[indexFilename]]; + length += 46 + file.nameBuf.length + file.comment.length; + } + const data = getDataHelper(length + 22) + for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { + file = files[filenames[indexFilename]]; + data.view.setUint32(index, 0x504b0102); + data.view.setUint16(index + 4, 0x1400); + data.array.set(file.header.array, index + 6); + data.view.setUint16(index + 32, file.comment.length, true); + if (file.directory) { + data.view.setUint8(index + 38, 0x10); + } + data.view.setUint32(index + 42, file.offset, true); + data.array.set(file.nameBuf, index + 46); + data.array.set(file.comment, index + 46 + file.nameBuf.length); + index += 46 + file.nameBuf.length + file.comment.length; + } + data.view.setUint32(index, 0x504b0506); + data.view.setUint16(index + 8, filenames.length, true); + data.view.setUint16(index + 10, filenames.length, true); + data.view.setUint32(index + 12, length, true); + data.view.setUint32(index + 16, offset, true); + ctrl.enqueue(data.array); + ctrl.close(); + } + + function processNextChunk() { + if (!activeZipObject) return; + if (activeZipObject.reader) return pump(activeZipObject); + if (activeZipObject.fileLike.stream) { + activeZipObject.crc = new Crc32(); + activeZipObject.reader = activeZipObject.fileLike.stream().getReader(); + activeZipObject.writeHeader(); + } else next(); + } + + return new ReadableStream({ + start: c => { + ctrl = c; + underlyingSource.start && Promise.resolve(underlyingSource.start(zipWriter)); + }, + pull() { + return processNextChunk() || ( + underlyingSource.pull && + Promise.resolve(underlyingSource.pull(zipWriter)) + ) + }, + }); +} diff --git a/yarn.lock b/yarn.lock index f02daedcd2..79d79db88f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4363,11 +4363,6 @@ ignore@^5.1.4, ignore@^5.1.8: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= - immutable@^3.7.4: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" @@ -5494,16 +5489,6 @@ jsprim@^1.2.2: array-includes "^3.1.2" object.assign "^4.1.2" -jszip@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.6.0.tgz#839b72812e3f97819cc13ac4134ffced95dd6af9" - integrity sha512-jgnQoG9LKnWO3mnVNBnfhkh0QknICd1FGSrXcgrl67zioyJ4wgx25o9ZqwNtrROSflGBCGYnJfjrIyRIby1OoQ== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - set-immediate-shim "~1.0.1" - katex@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/katex/-/katex-0.12.0.tgz#2fb1c665dbd2b043edcf8a1f5c555f46beaa0cb9" @@ -5571,13 +5556,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6346,11 +6324,6 @@ pako@^2.0.3: resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.3.tgz#cdf475e31b678565251406de9e759196a0ea7a43" integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6959,7 +6932,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.2, readable-stream@~2.3.6: +readable-stream@^2.0.2: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7393,11 +7366,6 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= -set-immediate-shim@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" From 5fff64f1280919640819601185799384ef81cb35 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 23 Jun 2021 12:14:20 +0530 Subject: [PATCH 071/176] Fix types --- src/utils/exportUtils/HtmlExport.tsx | 3 +-- yarn.lock | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 1dec02981c..9271db241e 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -79,8 +79,7 @@ export default class HTMLExporter extends Exporter { const creatorName = this.room?.getMember(creator)?.rawDisplayName || creator; const exporter = this.matrixClient.getUserId(); const exporterName = this.room?.getMember(exporter)?.rawDisplayName; - const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic - || this.room.topic || ""; + const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic || ""; const createdText = _t("%(creatorName)s created this room.", { creatorName, }); diff --git a/yarn.lock b/yarn.lock index 7ebe0d2ba8..0cc8be983f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1486,7 +1486,7 @@ resolved "https://registry.yarnpkg.com/@types/counterpart/-/counterpart-0.18.1.tgz#b1b784d9e54d9879f0a8cb12f2caedab65430fe8" integrity sha512-PRuFlBBkvdDOtxlIASzTmkEFar+S66Ek48NVVTWMUjtJAdn5vyMSN8y6IZIoIymGpR36q2nZbIYazBWyFxL+IQ== -"@types/diff-match-patch@^1.0.32": +"@types/diff-match-patch@^1.0.5": version "1.0.32" resolved "https://registry.yarnpkg.com/@types/diff-match-patch/-/diff-match-patch-1.0.32.tgz#d9c3b8c914aa8229485351db4865328337a3d09f" integrity sha512-bPYT5ECFiblzsVzyURaNhljBH2Gh1t9LowgUwciMrNAhFewLkHT2H0Mto07Y4/3KCOGZHRQll3CTtQZ0X11D/A== From dd40f81edf3263789724310cc831b0bbe1f356be Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 24 Jun 2021 14:03:12 +0530 Subject: [PATCH 072/176] Wrap media fetch in try catch --- src/utils/exportUtils/HtmlExport.tsx | 57 ++++++++++++++++++---------- 1 file changed, 36 insertions(+), 21 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 9271db241e..e05a7bd494 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -57,6 +57,7 @@ export default class HTMLExporter extends Exporter { if (avatarUrl) { const image = await fetch(avatarUrl); blob = await image.blob(); + this.totalSize += blob.size; this.addFile(avatarPath, blob); } const avatar = ( @@ -270,32 +271,44 @@ export default class HTMLExporter extends Exporter { return eventTileMarkup; } + protected createModifiedEvent = (text: string, mxEv: MatrixEvent) => { + const modifiedContent = { + msgtype: "m.text", + body: `*${text}*`, + format: "org.matrix.custom.html", + formatted_body: `<em>${text}</em>`, + } + const modifiedEvent = new MatrixEvent(); + modifiedEvent.event = mxEv.event; + modifiedEvent.sender = mxEv.sender; + modifiedEvent.event.type = "m.room.message"; + modifiedEvent.event.content = modifiedContent; + return modifiedEvent; + } + protected async createMessageBody(mxEv: MatrixEvent, joined = false) { let eventTile: string; if (this.isAttachment(mxEv)) { if (this.exportOptions.attachmentsIncluded) { - const blob = await this.getMediaBlob(mxEv); - this.totalSize += blob.size; - const filePath = this.getFilePath(mxEv); - eventTile = await this.getEventTile(mxEv, joined, filePath); - if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { - this.exportOptions.attachmentsIncluded = false; + try { + const blob = await this.getMediaBlob(mxEv); + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + eventTile = await this.getEventTile(mxEv, joined, filePath); + if (this.totalSize > this.exportOptions.maxSize - 1024 * 512) { + this.exportOptions.attachmentsIncluded = false; + } + this.addFile(filePath, blob); + } catch (e) { + console.log("Error while fetching file"); + eventTile = await this.getEventTile( + this.createModifiedEvent(_t("Error fetching file"), mxEv), + joined, + ); } - this.addFile(filePath, blob); } else { - const modifiedContent = { - msgtype: "m.text", - body: `*${this.mediaOmitText}*`, - format: "org.matrix.custom.html", - formatted_body: `<em>${this.mediaOmitText}</em>`, - } - const modifiedEvent = new MatrixEvent(); - modifiedEvent.event = mxEv.event; - modifiedEvent.sender = mxEv.sender; - modifiedEvent.event.type = "m.room.message"; - modifiedEvent.event.content = modifiedContent; - eventTile = await this.getEventTile(modifiedEvent, joined); + eventTile = await this.getEventTile(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); } } else eventTile = await this.getEventTile(mxEv, joined); @@ -305,14 +318,16 @@ export default class HTMLExporter extends Exporter { protected async createHTML(events: MatrixEvent[]) { let content = ""; let prevEvent = null; - for (const event of events) { + for (let i = 0; i < events.length; i++) { + const event = events[i]; + console.log("Processing event " + i + " out of " + events.length); if (!haveTileForEvent(event)) continue; content += this._wantsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; const shouldBeJoined = !this._wantsDateSeparator(event, prevEvent) && shouldFormContinuation(prevEvent, event); const body = await this.createMessageBody(event, shouldBeJoined); - + this.totalSize += Buffer.byteLength(body); content += body; prevEvent = event; } From 4bfac11911c139d926bb00ea120cbe4705249b00 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 24 Jun 2021 14:04:37 +0530 Subject: [PATCH 073/176] i18n --- src/i18n/strings/en_EN.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index f0f8cd343b..ae9fc753e0 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -736,6 +736,7 @@ "%(creatorName)s created this room.": "%(creatorName)s created this room.", "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.": "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.", "Topic: %(topic)s": "Topic: %(topic)s", + "Error fetching file": "Error fetching file", "Help us improve %(brand)s": "Help us improve %(brand)s", "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.": "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.", "Yes": "Yes", From 112dfa2b96fc7e4d6dd10348ea293034eeca6b36 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 24 Jun 2021 18:19:12 +0530 Subject: [PATCH 074/176] Finish JSON export implementation --- src/components/views/rooms/RoomHeader.js | 6 +- src/utils/exportUtils/Exporter.ts | 13 +-- src/utils/exportUtils/HtmlExport.tsx | 8 +- src/utils/exportUtils/JSONExport.ts | 124 +++++++++++++++++++++++ src/utils/exportUtils/PlainTextExport.ts | 1 - src/utils/exportUtils/exportUtils.ts | 2 + 6 files changed, 138 insertions(+), 16 deletions(-) create mode 100644 src/utils/exportUtils/JSONExport.ts diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 891b690f7b..f37145261c 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -84,12 +84,12 @@ export default class RoomHeader extends React.Component { _exportConversationalHistory = async () => { await exportConversationalHistory( this.props.room, - exportFormats.HTML, + exportFormats.JSON, exportTypes.START_DATE, { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), - attachmentsIncluded: true, - maxSize: 7 * 1024 * 1024, // 3 MB + attachmentsIncluded: false, + maxSize: 7 * 1024 * 1024, // 7 MB }, ); } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index f6dce9c8e8..5e766ff7ba 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -5,6 +5,7 @@ import { exportOptions, exportTypes } from "./exportUtils"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; +import { MatrixClient } from "matrix-js-sdk"; type FileStream = { name: string, @@ -13,12 +14,14 @@ type FileStream = { export default abstract class Exporter { protected files: FileStream[]; + protected client: MatrixClient; protected constructor( protected room: Room, protected exportType: exportTypes, protected exportOptions?: exportOptions, ) { this.files = []; + this.client = MatrixClientPeg.get(); } protected addFile = (filePath: string, blob: Blob) => { @@ -39,8 +42,7 @@ export default abstract class Exporter { } protected setEventMetadata = (event: MatrixEvent) => { - const client = MatrixClientPeg.get(); - const roomState = client.getRoom(this.room.roomId).currentState; + const roomState = this.client.getRoom(this.room.roomId).currentState; event.sender = roomState.getSentinelMember( event.getSender(), ); @@ -68,8 +70,7 @@ export default abstract class Exporter { } protected getRequiredEvents = async () : Promise<MatrixEvent[]> => { - const client = MatrixClientPeg.get(); - const eventMapper = client.getEventMapper(); + const eventMapper = this.client.getEventMapper(); let prevToken: string|null = null; let limit = this.getLimit(); @@ -77,7 +78,7 @@ export default abstract class Exporter { while (limit) { const eventsPerCrawl = Math.min(limit, 1000); - const res: any = await client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); + const res: any = await this.client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); if (res.chunk.length === 0) break; @@ -102,7 +103,7 @@ export default abstract class Exporter { const decryptionPromises = events .filter(event => event.isEncrypted()) .map(event => { - return client.decryptEventIfNeeded(event, { + return this.client.decryptEventIfNeeded(event, { isRetry: true, emit: false, }); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index e05a7bd494..2db4e243a7 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -10,7 +10,6 @@ import { shouldFormContinuation } from "../../components/structures/MessagePanel import { formatFullDateNoDay, formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; import { _t } from "../../languageHandler"; -import { MatrixClientPeg } from "../../MatrixClientPeg"; import { EventType } from "matrix-js-sdk/src/@types/event"; import * as ponyfill from "web-streams-polyfill/ponyfill" import * as Avatar from "../../Avatar"; @@ -23,20 +22,17 @@ import exportIcons from "./exportIcons"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; -import { MatrixClient } from "matrix-js-sdk"; import zip from "./StreamToZip"; export default class HTMLExporter extends Exporter { protected avatars: Map<string, boolean>; protected permalinkCreator: RoomPermalinkCreator; - protected matrixClient: MatrixClient; protected totalSize: number; protected mediaOmitText: string; constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); this.avatars = new Map<string, boolean>(); - this.matrixClient = MatrixClientPeg.get(); this.permalinkCreator = new RoomPermalinkCreator(this.room); this.totalSize = 0; this.mediaOmitText = !this.exportOptions.attachmentsIncluded @@ -78,7 +74,7 @@ export default class HTMLExporter extends Exporter { const exportDate = formatFullDateNoDayNoTime(new Date()); const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); const creatorName = this.room?.getMember(creator)?.rawDisplayName || creator; - const exporter = this.matrixClient.getUserId(); + const exporter = this.client.getUserId(); const exporterName = this.room?.getMember(exporter)?.rawDisplayName; const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic || ""; const createdText = _t("%(creatorName)s created this room.", { @@ -235,7 +231,7 @@ export default class HTMLExporter extends Exporter { if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); const eventTile = <div className="mx_Export_EventWrapper" id={mxEv.getId()}> - <MatrixClientContext.Provider value = {this.matrixClient}> + <MatrixClientContext.Provider value = {this.client}> <EventTile mxEvent={mxEv} continuation={continuation} diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts new file mode 100644 index 0000000000..89cfbcb4ff --- /dev/null +++ b/src/utils/exportUtils/JSONExport.ts @@ -0,0 +1,124 @@ +import streamSaver from "streamsaver"; +import Exporter from "./Exporter"; +import { Room } from "matrix-js-sdk/src/models/room"; +import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { formatFullDateNoDay, formatFullDateNoDayNoTime } from "../../DateUtils"; +import * as ponyfill from "web-streams-polyfill/ponyfill" +import { haveTileForEvent } from "../../components/views/rooms/EventTile"; +import { exportTypes } from "./exportUtils"; +import { exportOptions } from "./exportUtils"; +import zip from "./StreamToZip"; +import { EventType } from "../../../../matrix-js-sdk/src/@types/event"; + + +export default class JSONExporter extends Exporter { + protected totalSize: number; + + constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { + super(room, exportType, exportOptions); + this.totalSize = 0; + window.addEventListener("beforeunload", this.onBeforeUnload) + } + + protected wrapJSON(json: string): string { + const exportDate = formatFullDateNoDayNoTime(new Date()); + const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); + const creatorName = this.room?.getMember(creator)?.rawDisplayName || creator; + const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic || ""; + const exporter = this.client.getUserId(); + const exporterName = this.room?.getMember(exporter)?.rawDisplayName || exporter; + return `{ +"room_name": "${this.room.name}", +"room_creator": "${creatorName}", +"topic": "${topic}", +"export_date": "${exportDate}", +"exported_by": "${exporterName}", +"messages": [ +${json} +] +}` + } + + protected indentEachLine(string: string) { + const indent = ' '; + const regex = /^(?!\s*$)/gm; + return string.replace(regex, indent.repeat(1)); + } + + protected onBeforeUnload = (e: BeforeUnloadEvent) => { + e.preventDefault(); + return e.returnValue = "Are you sure you want to exit during this export?"; + } + + protected async getJSONString(mxEv: MatrixEvent) { + if (this.exportOptions.attachmentsIncluded && this.isAttachment(mxEv)) { + try { + const blob = await this.getMediaBlob(mxEv); + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + this.addFile(filePath, blob); + if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { + this.exportOptions.attachmentsIncluded = false; + } + } catch (err) { + console.log("Error fetching file: " + err); + } + } + const jsonEvent: any = mxEv.toJSON(); + const clearEvent = mxEv.isEncrypted() ? jsonEvent.decrypted : jsonEvent; + const jsonString = JSON.stringify(clearEvent, null, 2); + return jsonString.length > 2 ? jsonString + ",\n" : ""; + } + + protected async createOutput(events: MatrixEvent[]) { + let content = ""; + for (const event of events) { + if (!haveTileForEvent(event)) continue; + content += await this.getJSONString(event); + } + return this.wrapJSON(this.indentEachLine(content.slice(0, -2))); + } + + public async export() { + console.info("Starting export process..."); + console.info("Fetching events..."); + const fetchStart = performance.now(); + const res = await this.getRequiredEvents(); + const fetchEnd = performance.now(); + + console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000} s`); + console.info("Creating Output..."); + + const text = await this.createOutput(res); + + console.info("Writing to the file system..."); + streamSaver.WritableStream = ponyfill.WritableStream + + const fileName = `matrix-export-${formatFullDateNoDay(new Date())}.json`; + const files = this.files; + if (files.length) { + this.addFile("result.json", new Blob([text])); + const fileStream = streamSaver.createWriteStream(fileName.slice(0, -5) + ".zip"); + const readableZipStream = zip({ + start(ctrl) { + for (const file of files) ctrl.enqueue(file); + ctrl.close(); + }, + }); + const writer = fileStream.getWriter() + const reader = readableZipStream.getReader() + await this.pumpToFileStream(reader, writer); + } else { + const fileStream = streamSaver.createWriteStream(fileName); + const writer = fileStream.getWriter() + const data = new TextEncoder().encode(text); + await writer.write(data); + await writer.close(); + } + + const exportEnd = performance.now(); + console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("beforeunload", this.onBeforeUnload); + } +} + diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 862fac3aa1..89a9ff4b98 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -5,7 +5,6 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; import * as ponyfill from "web-streams-polyfill/ponyfill" -import "web-streams-polyfill/ponyfill" // to support blob.stream() import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 22457f926b..ba87dbdd67 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,5 +1,6 @@ import { Room } from "matrix-js-sdk/src/models/room"; import HTMLExporter from "./HtmlExport"; +import JSONExporter from "./JSONExport"; import PlainTextExporter from "./PlainTextExport"; export enum exportFormats { @@ -33,6 +34,7 @@ const exportConversationalHistory = async ( await new HTMLExporter(room, exportType, exportOptions).export(); break; case exportFormats.JSON: + await new JSONExporter(room, exportType, exportOptions).export(); break; case exportFormats.LOGS: await new PlainTextExporter(room, exportType, exportOptions).export(); From 70cc2b20d5dc8f035505d17fde47418d2eb385e6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 24 Jun 2021 18:23:08 +0530 Subject: [PATCH 075/176] Fix auto import --- src/utils/exportUtils/JSONExport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 89cfbcb4ff..95903bfecd 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -8,7 +8,7 @@ import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import zip from "./StreamToZip"; -import { EventType } from "../../../../matrix-js-sdk/src/@types/event"; +import { EventType } from "matrix-js-sdk/src/@types/event"; export default class JSONExporter extends Exporter { From ccd02c48b311f5b0ca5e7136e723c00578b720b2 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 24 Jun 2021 22:49:36 +0530 Subject: [PATCH 076/176] Nicer indentation --- src/utils/exportUtils/JSONExport.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 95903bfecd..af62428ae1 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -28,21 +28,21 @@ export default class JSONExporter extends Exporter { const exporter = this.client.getUserId(); const exporterName = this.room?.getMember(exporter)?.rawDisplayName || exporter; return `{ -"room_name": "${this.room.name}", -"room_creator": "${creatorName}", -"topic": "${topic}", -"export_date": "${exportDate}", -"exported_by": "${exporterName}", -"messages": [ + "room_name": "${this.room.name}", + "room_creator": "${creatorName}", + "topic": "${topic}", + "export_date": "${exportDate}", + "exported_by": "${exporterName}", + "messages": [ ${json} -] + ] }` } protected indentEachLine(string: string) { const indent = ' '; const regex = /^(?!\s*$)/gm; - return string.replace(regex, indent.repeat(1)); + return string.replace(regex, indent.repeat(2)); } protected onBeforeUnload = (e: BeforeUnloadEvent) => { From 3718826e94bc163250c0f5ed397f4dd41f4a3e92 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 11:16:59 +0530 Subject: [PATCH 077/176] refactor to share downloading code across all formats --- src/components/views/rooms/RoomHeader.js | 4 +- src/utils/exportUtils/Exporter.ts | 67 +++++++++++++++++++++--- src/utils/exportUtils/HtmlExport.tsx | 37 ++----------- src/utils/exportUtils/JSONExport.ts | 43 ++++----------- src/utils/exportUtils/PlainTextExport.ts | 44 +++------------- src/utils/exportUtils/StreamToZip.ts | 2 +- src/utils/exportUtils/exportUtils.ts | 4 +- 7 files changed, 83 insertions(+), 118 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index f37145261c..d977b6d87b 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -84,11 +84,11 @@ export default class RoomHeader extends React.Component { _exportConversationalHistory = async () => { await exportConversationalHistory( this.props.room, - exportFormats.JSON, + exportFormats.PLAIN_TEXT, exportTypes.START_DATE, { startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), - attachmentsIncluded: false, + attachmentsIncluded: true, maxSize: 7 * 1024 * 1024, // 7 MB }, ); diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 5e766ff7ba..028b5c808e 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,3 +1,4 @@ +import streamSaver from "streamsaver"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; @@ -6,6 +7,9 @@ import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; import { MatrixClient } from "matrix-js-sdk"; +import streamToZIP from "./StreamToZip"; +import * as ponyfill from "web-streams-polyfill/ponyfill" +import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers type FileStream = { name: string, @@ -15,6 +19,9 @@ type FileStream = { export default abstract class Exporter { protected files: FileStream[]; protected client: MatrixClient; + protected writer: WritableStreamDefaultWriter<any>; + protected fileStream: WritableStream<any>; + protected constructor( protected room: Room, protected exportType: exportTypes, @@ -22,9 +29,16 @@ export default abstract class Exporter { ) { this.files = []; this.client = MatrixClientPeg.get(); + window.addEventListener("beforeunload", this.onBeforeUnload); + window.addEventListener("onunload", this.abortExport); } - protected addFile = (filePath: string, blob: Blob) => { + protected onBeforeUnload(e: BeforeUnloadEvent) { + e.preventDefault(); + return e.returnValue = "Are you sure you want to exit during this export?"; + } + + protected addFile(filePath: string, blob: Blob) { const file = { name: filePath, stream: () => blob.stream(), @@ -32,16 +46,53 @@ export default abstract class Exporter { this.files.push(file); } - protected pumpToFileStream = async (reader: ReadableStreamDefaultReader, writer: WritableStreamDefaultWriter) => { + protected async downloadZIP() { + const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; + //Support for firefox browser + streamSaver.WritableStream = ponyfill.WritableStream + //Create a writable stream to the directory + this.fileStream = streamSaver.createWriteStream(filename); + + this.writer = this.fileStream.getWriter(); + const files = this.files; + + console.info("Generating a ZIP..."); + const readableZipStream = streamToZIP({ + start(ctrl) { + for (const file of files) ctrl.enqueue(file); + ctrl.close(); + }, + }); + + console.info("Writing to the file system...") + + const reader = readableZipStream.getReader() + await this.pumpToFileStream(reader); + } + + protected async downloadPlainText(fileName: string, text: string): Promise<any> { + this.fileStream = streamSaver.createWriteStream(fileName); + this.writer = this.fileStream.getWriter() + const data = new TextEncoder().encode(text); + await this.writer.write(data); + await this.writer.close(); + } + + protected async abortExport(): Promise<void> { + if (this.fileStream) await this.fileStream.abort(); + if (this.writer) await this.writer.abort(); + } + + protected async pumpToFileStream(reader: ReadableStreamDefaultReader) { const res = await reader.read(); - if (res.done) await writer.close(); + if (res.done) await this.writer.close(); else { - await writer.write(res.value); - await this.pumpToFileStream(reader, writer) + await this.writer.write(res.value); + await this.pumpToFileStream(reader); } } - protected setEventMetadata = (event: MatrixEvent) => { + protected setEventMetadata(event: MatrixEvent) { const roomState = this.client.getRoom(this.room.roomId).currentState; event.sender = roomState.getSentinelMember( event.getSender(), @@ -54,7 +105,7 @@ export default abstract class Exporter { return event; } - protected getLimit = () => { + protected getLimit() { let limit: number; switch (this.exportType) { case exportTypes.LAST_N_MESSAGES: @@ -69,7 +120,7 @@ export default abstract class Exporter { return limit; } - protected getRequiredEvents = async () : Promise<MatrixEvent[]> => { + protected async getRequiredEvents():Promise<MatrixEvent[]> { const eventMapper = this.client.getEventMapper(); let prevToken: string|null = null; diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 2db4e243a7..6415f996db 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -1,5 +1,4 @@ import React from "react" -import streamSaver from "streamsaver"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; @@ -7,11 +6,10 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { renderToStaticMarkup } from 'react-dom/server' import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; -import { formatFullDateNoDay, formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; +import { formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; import { _t } from "../../languageHandler"; import { EventType } from "matrix-js-sdk/src/@types/event"; -import * as ponyfill from "web-streams-polyfill/ponyfill" import * as Avatar from "../../Avatar"; import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventTile"; import DateSeparator from "../../components/views/messages/DateSeparator"; @@ -22,7 +20,6 @@ import exportIcons from "./exportIcons"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; -import zip from "./StreamToZip"; export default class HTMLExporter extends Exporter { protected avatars: Map<string, boolean>; @@ -38,12 +35,6 @@ export default class HTMLExporter extends Exporter { this.mediaOmitText = !this.exportOptions.attachmentsIncluded ? _t("Media omitted") : _t("Media omitted - file size limit exceeded"); - window.addEventListener("beforeunload", this.onBeforeUnload) - } - - protected onBeforeUnload = (e: BeforeUnloadEvent) => { - e.preventDefault(); - return e.returnValue = "Are you sure you want to exit during this export?"; } protected async getRoomAvatar() { @@ -267,7 +258,7 @@ export default class HTMLExporter extends Exporter { return eventTileMarkup; } - protected createModifiedEvent = (text: string, mxEv: MatrixEvent) => { + protected createModifiedEvent(text: string, mxEv: MatrixEvent) { const modifiedContent = { msgtype: "m.text", body: `*${text}*`, @@ -351,34 +342,14 @@ export default class HTMLExporter extends Exporter { this.addFile(`icons/${iconName}`, new Blob([exportIcons[iconName]])); } - const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; - console.info("HTML creation successful!"); - //Support for firefox browser - streamSaver.WritableStream = ponyfill.WritableStream - //Create a writable stream to the directory - const fileStream = streamSaver.createWriteStream(filename); - - const writer = fileStream.getWriter(); - const files = this.files; - - console.info("Generating a ZIP..."); - const readableZipStream = zip({ - start(ctrl) { - for (const file of files) ctrl.enqueue(file); - ctrl.close(); - }, - }); - - console.info("Writing to file system...") - - const reader = readableZipStream.getReader() - await this.pumpToFileStream(reader, writer); + await this.downloadZIP(); const exportEnd = performance.now(); console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); window.removeEventListener("beforeunload", this.onBeforeUnload); + window.removeEventListener("onunload", this.abortExport); } } diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index af62428ae1..b261b305f9 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -1,13 +1,10 @@ -import streamSaver from "streamsaver"; import Exporter from "./Exporter"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay, formatFullDateNoDayNoTime } from "../../DateUtils"; -import * as ponyfill from "web-streams-polyfill/ponyfill" import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; -import zip from "./StreamToZip"; import { EventType } from "matrix-js-sdk/src/@types/event"; @@ -17,7 +14,6 @@ export default class JSONExporter extends Exporter { constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); this.totalSize = 0; - window.addEventListener("beforeunload", this.onBeforeUnload) } protected wrapJSON(json: string): string { @@ -39,15 +35,10 @@ ${json} }` } - protected indentEachLine(string: string) { + protected indentEachLine(JSONString: string, spaces: number) { const indent = ' '; const regex = /^(?!\s*$)/gm; - return string.replace(regex, indent.repeat(2)); - } - - protected onBeforeUnload = (e: BeforeUnloadEvent) => { - e.preventDefault(); - return e.returnValue = "Are you sure you want to exit during this export?"; + return JSONString.replace(regex, indent.repeat(spaces)); } protected async getJSONString(mxEv: MatrixEvent) { @@ -76,7 +67,7 @@ ${json} if (!haveTileForEvent(event)) continue; content += await this.getJSONString(event); } - return this.wrapJSON(this.indentEachLine(content.slice(0, -2))); + return this.wrapJSON(this.indentEachLine(content.slice(0, -2), 2)); } public async export() { @@ -91,34 +82,18 @@ ${json} const text = await this.createOutput(res); - console.info("Writing to the file system..."); - streamSaver.WritableStream = ponyfill.WritableStream - - const fileName = `matrix-export-${formatFullDateNoDay(new Date())}.json`; - const files = this.files; - if (files.length) { - this.addFile("result.json", new Blob([text])); - const fileStream = streamSaver.createWriteStream(fileName.slice(0, -5) + ".zip"); - const readableZipStream = zip({ - start(ctrl) { - for (const file of files) ctrl.enqueue(file); - ctrl.close(); - }, - }); - const writer = fileStream.getWriter() - const reader = readableZipStream.getReader() - await this.pumpToFileStream(reader, writer); + if (this.files.length) { + this.addFile("export.json", new Blob([text])); + await this.downloadZIP(); } else { - const fileStream = streamSaver.createWriteStream(fileName); - const writer = fileStream.getWriter() - const data = new TextEncoder().encode(text); - await writer.write(data); - await writer.close(); + const fileName = `matrix-export-${formatFullDateNoDay(new Date())}.json`; + await this.downloadPlainText(fileName, text); } const exportEnd = performance.now(); console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); window.removeEventListener("beforeunload", this.onBeforeUnload); + window.removeEventListener("onunload", this.abortExport); } } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 89a9ff4b98..61665d4646 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -1,35 +1,24 @@ -import streamSaver from "streamsaver"; import Exporter from "./Exporter"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; -import * as ponyfill from "web-streams-polyfill/ponyfill" import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; -import zip from "./StreamToZip"; export default class PlainTextExporter extends Exporter { protected totalSize: number; protected mediaOmitText: string; - private readonly fileDir: string; constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); this.totalSize = 0; - this.fileDir = `matrix-export-${formatFullDateNoDay(new Date())}`; this.mediaOmitText = !this.exportOptions.attachmentsIncluded ? _t("Media omitted") : _t("Media omitted - file size limit exceeded"); - window.addEventListener("beforeunload", this.onBeforeUnload) - } - - protected onBeforeUnload = (e: BeforeUnloadEvent) => { - e.preventDefault(); - return e.returnValue = "Are you sure you want to exit during this export?"; } protected textForReplyEvent = (ev : MatrixEvent) => { @@ -90,12 +79,6 @@ export default class PlainTextExporter extends Exporter { return content; } - protected getFileName = () => { - if (this.exportOptions.attachmentsIncluded) { - return `${this.room.name}.txt`; - } else return `${this.fileDir}.txt` - } - public async export() { console.info("Starting export process..."); console.info("Fetching events..."); @@ -108,32 +91,17 @@ export default class PlainTextExporter extends Exporter { const text = await this.createOutput(res); - console.info("Writing to the file system..."); - streamSaver.WritableStream = ponyfill.WritableStream - - const files = this.files; - if (files.length) { - this.addFile(this.getFileName(), new Blob([text])); - const fileStream = streamSaver.createWriteStream(`${this.fileDir}.zip`); - const readableZipStream = zip({ - start(ctrl) { - for (const file of files) ctrl.enqueue(file); - ctrl.close(); - }, - }); - const writer = fileStream.getWriter() - const reader = readableZipStream.getReader() - await this.pumpToFileStream(reader, writer); + if (this.files.length) { + this.addFile("export.txt", new Blob([text])); + await this.downloadZIP(); } else { - const fileStream = streamSaver.createWriteStream(`${this.fileDir}.txt`); - const writer = fileStream.getWriter() - const data = new TextEncoder().encode(text); - await writer.write(data); - await writer.close(); + const fileName = `matrix-export-${formatFullDateNoDay(new Date())}.txt`; + await this.downloadPlainText(fileName, text); } const exportEnd = performance.now(); console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("onunload", this.abortExport); window.removeEventListener("beforeunload", this.onBeforeUnload); } } diff --git a/src/utils/exportUtils/StreamToZip.ts b/src/utils/exportUtils/StreamToZip.ts index b98e3e142f..a411d35190 100644 --- a/src/utils/exportUtils/StreamToZip.ts +++ b/src/utils/exportUtils/StreamToZip.ts @@ -101,7 +101,7 @@ const pump = (zipObj: ZipObj) => zipObj.reader ? zipObj.reader.read().then(chunk } }) : undefined; -export default function ZIP(underlyingSource: UnderlyingSource) { +export default function streamToZIP(underlyingSource: UnderlyingSource) { const files = Object.create(null); const filenames: string[] = []; const encoder = new TextEncoder(); diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index ba87dbdd67..0439d51ee2 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -6,7 +6,7 @@ import PlainTextExporter from "./PlainTextExport"; export enum exportFormats { HTML = "HTML", JSON = "JSON", - LOGS = "LOGS", + PLAIN_TEXT = "PLAIN_TEXT", } export enum exportTypes { @@ -36,7 +36,7 @@ const exportConversationalHistory = async ( case exportFormats.JSON: await new JSONExporter(room, exportType, exportOptions).export(); break; - case exportFormats.LOGS: + case exportFormats.PLAIN_TEXT: await new PlainTextExporter(room, exportType, exportOptions).export(); break; } From 02f15d573ac9f98aa145706a0beaec2d6c2b3fbd Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 11:52:26 +0530 Subject: [PATCH 078/176] Refactor --- src/utils/exportUtils/Exporter.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 028b5c808e..2401bce0c8 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -48,15 +48,18 @@ export default abstract class Exporter { protected async downloadZIP() { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; - //Support for firefox browser + + // Support for older browsers streamSaver.WritableStream = ponyfill.WritableStream - //Create a writable stream to the directory + + // Create a writable stream to the directory this.fileStream = streamSaver.createWriteStream(filename); + console.info("Generating a ZIP..."); + this.writer = this.fileStream.getWriter(); const files = this.files; - console.info("Generating a ZIP..."); const readableZipStream = streamToZIP({ start(ctrl) { for (const file of files) ctrl.enqueue(file); @@ -79,8 +82,8 @@ export default abstract class Exporter { } protected async abortExport(): Promise<void> { - if (this.fileStream) await this.fileStream.abort(); - if (this.writer) await this.writer.abort(); + await this.fileStream?.abort(); + await this.writer?.abort(); } protected async pumpToFileStream(reader: ReadableStreamDefaultReader) { From abbe047bfdba27b8ecca2e4aa6a0c49f165464b8 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 14:49:01 +0530 Subject: [PATCH 079/176] try catch for plain text --- src/utils/exportUtils/Exporter.ts | 2 +- src/utils/exportUtils/PlainTextExport.ts | 27 ++++++++++++++++-------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 2401bce0c8..832d990f61 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -118,7 +118,7 @@ export default abstract class Exporter { limit = 40; break; default: - limit = Number.MAX_VALUE; + limit = 10**8; } return limit; } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 61665d4646..9852ea5301 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -56,16 +56,25 @@ export default class PlainTextExporter extends Exporter { protected _textForEvent = async (mxEv: MatrixEvent) => { const senderDisplayName = mxEv.sender && mxEv.sender.name ? mxEv.sender.name : mxEv.getSender(); - if (this.exportOptions.attachmentsIncluded && this.isAttachment(mxEv)) { - const blob = await this.getMediaBlob(mxEv); - this.totalSize += blob.size; - const filePath = this.getFilePath(mxEv); - this.addFile(filePath, blob); - if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { - this.exportOptions.attachmentsIncluded = false; - } + let mediaText = ""; + if (this.isAttachment(mxEv)) { + if (this.exportOptions.attachmentsIncluded) { + try { + const blob = await this.getMediaBlob(mxEv); + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + mediaText = " (" + _t("File Attached") + ")"; + this.addFile(filePath, blob); + if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { + this.exportOptions.attachmentsIncluded = false; + } + } catch (error) { + mediaText = " (" + _t("Error fetching file") + ")"; + console.log("Error fetching file" + error); + } + } else mediaText = ` (${this.mediaOmitText})`; } - if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv); + if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv) + mediaText; else return textForEvent(mxEv); } From c885cd719fbd7a140b8f10c0ebecdae81e19d552 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 14:58:59 +0530 Subject: [PATCH 080/176] i18n --- src/i18n/strings/en_EN.json | 1 + src/utils/exportUtils/PlainTextExport.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index ca22dd04ab..d58a7e8831 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -741,6 +741,7 @@ "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.": "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.", "Topic: %(topic)s": "Topic: %(topic)s", "Error fetching file": "Error fetching file", + "File Attached": "File Attached", "Help us improve %(brand)s": "Help us improve %(brand)s", "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.": "Send <UsageDataLink>anonymous usage data</UsageDataLink> which helps us improve %(brand)s. This will use a <PolicyLink>cookie</PolicyLink>.", "Yes": "Yes", diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 9852ea5301..1777abc616 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -70,7 +70,7 @@ export default class PlainTextExporter extends Exporter { } } catch (error) { mediaText = " (" + _t("Error fetching file") + ")"; - console.log("Error fetching file" + error); + console.log("Error fetching file " + error); } } else mediaText = ` (${this.mediaOmitText})`; } From 593f14beae8ba0cb412f2b9b62c2a41eef88eff9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 15:01:14 +0530 Subject: [PATCH 081/176] Append media text to text for event --- src/utils/exportUtils/PlainTextExport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 1777abc616..4ec2e81d9d 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -75,7 +75,7 @@ export default class PlainTextExporter extends Exporter { } else mediaText = ` (${this.mediaOmitText})`; } if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv) + mediaText; - else return textForEvent(mxEv); + else return textForEvent(mxEv) + mediaText; } protected async createOutput(events: MatrixEvent[]) { From 4af8ec4d408900c1464c526819b83343df781e28 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 15:19:17 +0530 Subject: [PATCH 082/176] Explicitly declare file extensions for stickers and log event fetching progress --- src/utils/exportUtils/Exporter.ts | 5 +++-- src/utils/exportUtils/HtmlExport.tsx | 2 +- src/utils/exportUtils/JSONExport.ts | 7 ++++--- src/utils/exportUtils/PlainTextExport.ts | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 832d990f61..0834cb7dc8 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -148,7 +148,7 @@ export default abstract class Exporter { } events.push(mxEv); } - + console.log("Fetched " + events.length + " events so far."); prevToken = res.end; } // Reverse the events so that we preserve the order @@ -216,7 +216,8 @@ export default abstract class Exporter { fileDirectory = event.getType() === "m.sticker" ? "stickers" : "files"; } const fileDate = formatFullDateNoDay(new Date(event.getTs())); - const [fileName, fileExt] = this.splitFileName(event.getContent().body); + let [fileName, fileExt] = this.splitFileName(event.getContent().body); + if (event.getType() === "m.sticker") fileExt = ".png"; return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 6415f996db..7b36439ad5 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -328,7 +328,7 @@ export default class HTMLExporter extends Exporter { const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); - console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000} s`); + console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); console.info("Creating HTML..."); const html = await this.createHTML(res); diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index b261b305f9..4612a37481 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -77,8 +77,8 @@ ${json} const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); - console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000} s`); - console.info("Creating Output..."); + console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); + console.info("Creating output..."); const text = await this.createOutput(res); @@ -91,7 +91,8 @@ ${json} } const exportEnd = performance.now(); - console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + console.info(`Export successful!`) + console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); window.removeEventListener("beforeunload", this.onBeforeUnload); window.removeEventListener("onunload", this.abortExport); } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 4ec2e81d9d..f8bb6fe34e 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -95,7 +95,7 @@ export default class PlainTextExporter extends Exporter { const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); - console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000} s`); + console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); console.info("Creating Output..."); const text = await this.createOutput(res); From 566e7bc8d6cb655a187c7cd6bcf89ec409d3e19e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 15:49:39 +0530 Subject: [PATCH 083/176] format --- src/utils/exportUtils/HtmlExport.tsx | 9 ++++++--- src/utils/exportUtils/JSONExport.ts | 7 +++++-- src/utils/exportUtils/PlainTextExport.ts | 8 ++++++-- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 7b36439ad5..33d0e78915 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -324,20 +324,20 @@ export default class HTMLExporter extends Exporter { public async export() { console.info("Starting export process..."); console.info("Fetching events..."); + const fetchStart = performance.now(); const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); - console.info("Creating HTML..."); + console.info("Creating HTML..."); const html = await this.createHTML(res); this.addFile("index.html", new Blob([html])); this.addFile("css/style.css", new Blob([exportCSS])); this.addFile("js/script.js", new Blob([exportJS])); - for (const iconName in exportIcons) { this.addFile(`icons/${iconName}`, new Blob([exportIcons[iconName]])); } @@ -347,7 +347,10 @@ export default class HTMLExporter extends Exporter { await this.downloadZIP(); const exportEnd = performance.now(); - console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + + console.info("Export successful!") + console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("beforeunload", this.onBeforeUnload); window.removeEventListener("onunload", this.abortExport); } diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 4612a37481..d25d96b2e4 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -73,13 +73,14 @@ ${json} public async export() { console.info("Starting export process..."); console.info("Fetching events..."); + const fetchStart = performance.now(); const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); - console.info("Creating output..."); + console.info("Creating output..."); const text = await this.createOutput(res); if (this.files.length) { @@ -91,8 +92,10 @@ ${json} } const exportEnd = performance.now(); - console.info(`Export successful!`) + + console.info("Export successful!") console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("beforeunload", this.onBeforeUnload); window.removeEventListener("onunload", this.abortExport); } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index f8bb6fe34e..a207029955 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -91,13 +91,14 @@ export default class PlainTextExporter extends Exporter { public async export() { console.info("Starting export process..."); console.info("Fetching events..."); + const fetchStart = performance.now(); const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); - console.info("Creating Output..."); + console.info("Creating output..."); const text = await this.createOutput(res); if (this.files.length) { @@ -109,7 +110,10 @@ export default class PlainTextExporter extends Exporter { } const exportEnd = performance.now(); - console.info(`Export Successful! Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + + console.info("Export successful!") + console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + window.removeEventListener("onunload", this.abortExport); window.removeEventListener("beforeunload", this.onBeforeUnload); } From 4d6ad91e5262fbf917216cc36772243c7f57a2e9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 25 Jun 2021 22:45:14 +0530 Subject: [PATCH 084/176] Add export option to right panel --- res/css/views/right_panel/_RoomSummaryCard.scss | 4 ++++ res/img/element-icons/export.svg | 14 ++++++++++++++ .../views/right_panel/RoomSummaryCard.tsx | 3 +++ src/i18n/strings/en_EN.json | 1 + 4 files changed, 22 insertions(+) create mode 100644 res/img/element-icons/export.svg diff --git a/res/css/views/right_panel/_RoomSummaryCard.scss b/res/css/views/right_panel/_RoomSummaryCard.scss index dc7804d072..663682da2e 100644 --- a/res/css/views/right_panel/_RoomSummaryCard.scss +++ b/res/css/views/right_panel/_RoomSummaryCard.scss @@ -239,3 +239,7 @@ limitations under the License. .mx_RoomSummaryCard_icon_settings::before { mask-image: url('$(res)/img/element-icons/settings.svg'); } + +.mx_RoomSummaryCard_icon_export::before { + mask-image: url('$(res)/img/element-icons/export.svg'); +} diff --git a/res/img/element-icons/export.svg b/res/img/element-icons/export.svg new file mode 100644 index 0000000000..49899e9520 --- /dev/null +++ b/res/img/element-icons/export.svg @@ -0,0 +1,14 @@ +<svg + width="24" + height="24" + viewBox="0 0 24 24" + fill="none" + xmlns="http://www.w3.org/2000/svg" +> + <path + fill-rule="evenodd" + clip-rule="evenodd" + d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47716 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22ZM12.7071 17.7071C12.6112 17.803 12.5007 17.8753 12.3828 17.9241L11.2929 17.7071L11.2925 17.7067L7.2929 13.7071C6.90237 13.3166 6.90237 12.6834 7.2929 12.2929C7.68342 11.9024 8.31658 11.9024 8.70711 12.2929L11 14.5858L11 7C11 6.44771 11.4477 6 12 6C12.5523 6 13 6.44771 13 7L13 14.5858L15.2929 12.2929C15.6834 11.9024 16.3166 11.9024 16.7071 12.2929C17.0976 12.6834 17.0976 13.3166 16.7071 13.7071L12.7071 17.7071ZM12.3828 17.9241L11.295 17.7092C11.4758 17.8889 11.7249 18 12 18C12.1356 18 12.2649 17.973 12.3828 17.9241Z" + fill="#C1C6CD" + /> +</svg> diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index 937037f644..28996305c7 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -279,6 +279,9 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { <Button className="mx_RoomSummaryCard_icon_settings" onClick={onRoomSettingsClick}> {_t("Room settings")} </Button> + <Button className="mx_RoomSummaryCard_icon_export" onClick = {() => {}}> + {_t("Export chat")} + </Button> </Group> { SettingsStore.getValue(UIFeature.Widgets) && <AppsSection room={room} /> } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d58a7e8831..189c686815 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1790,6 +1790,7 @@ "Show files": "Show files", "Share room": "Share room", "Room settings": "Room settings", + "Export chat": "Export chat", "Trusted": "Trusted", "Not trusted": "Not trusted", "%(count)s verified sessions|other": "%(count)s verified sessions", From c3dc51c4526eeb0c78b3c46bd59b4392781f74c1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 26 Jun 2021 12:14:18 +0530 Subject: [PATCH 085/176] Create export dialog and async import export utils --- src/components/views/dialogs/ExportDialog.tsx | 56 +++++++++++++++++++ .../views/right_panel/RoomSummaryCard.tsx | 9 ++- src/components/views/rooms/RoomHeader.js | 21 ------- src/i18n/strings/en_EN.json | 4 +- 4 files changed, 66 insertions(+), 24 deletions(-) create mode 100644 src/components/views/dialogs/ExportDialog.tsx diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx new file mode 100644 index 0000000000..22223848ea --- /dev/null +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { Room } from 'matrix-js-sdk/src'; +import { _t } from '../../../languageHandler'; +import { IDialogProps } from './IDialogProps'; +import BaseDialog from "./BaseDialog" +import DialogButtons from "../elements/DialogButtons"; + +interface IProps extends IDialogProps{ + room: Room; +} + +export default class ExportDialog extends React.PureComponent<IProps> { + onExportClick = async () => { + const { + default: exportConversationalHistory, + exportFormats, + exportTypes, + } = await import("../../../utils/exportUtils/exportUtils"); + + await exportConversationalHistory( + this.props.room, + exportFormats.PLAIN_TEXT, + exportTypes.START_DATE, + { + startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), + attachmentsIncluded: true, + maxSize: 7 * 1024 * 1024, // 7 MB + }, + ); + }; + + onCancel = () => { + this.props.onFinished(false); + }; + + render() { + return ( + <BaseDialog + title={_t("Export Chat")} + contentId='mx_Dialog_content' + hasCancel={true} + onFinished={this.props.onFinished} + fixedWidth={false} + > + <div className="mx_Dialog_content" id='mx_Dialog_content'> + Export + </div> + <DialogButtons + primaryButton={_t('Export')} + onPrimaryButtonClick={this.onExportClick} + onCancel={this.onCancel} + /> + </BaseDialog> + ); + } +} diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index 28996305c7..0cc5bf8e7f 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -47,6 +47,7 @@ import {useRoomMemberCount} from "../../../hooks/useRoomMembers"; import { Container, MAX_PINNED, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; import RoomName from "../elements/RoomName"; import UIStore from "../../../stores/UIStore"; +import ExportDialog from "../dialogs/ExportDialog"; interface IProps { room: Room; @@ -233,6 +234,12 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { }); }; + const onRoomExportClick = () => { + Modal.createTrackedDialog('export room dialog', '', ExportDialog, { + room, + }); + }; + const isRoomEncrypted = useIsEncrypted(cli, room); const roomContext = useContext(RoomContext); const e2eStatus = roomContext.e2eStatus; @@ -279,7 +286,7 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { <Button className="mx_RoomSummaryCard_icon_settings" onClick={onRoomSettingsClick}> {_t("Room settings")} </Button> - <Button className="mx_RoomSummaryCard_icon_export" onClick = {() => {}}> + <Button className="mx_RoomSummaryCard_icon_export" onClick = {onRoomExportClick}> {_t("Export chat")} </Button> </Group> diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index d977b6d87b..0e1a7bc60b 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -31,7 +31,6 @@ import RoomTopic from "../elements/RoomTopic"; import RoomName from "../elements/RoomName"; import { PlaceCallType } from "../../../CallHandler"; import { replaceableComponent } from "../../../utils/replaceableComponent"; -import exportConversationalHistory, { exportTypes, exportFormats } from '../../../utils/exportUtils/exportUtils'; @replaceableComponent("views.rooms.RoomHeader") @@ -80,20 +79,6 @@ export default class RoomHeader extends React.Component { this.forceUpdate(); }, 500); - - _exportConversationalHistory = async () => { - await exportConversationalHistory( - this.props.room, - exportFormats.PLAIN_TEXT, - exportTypes.START_DATE, - { - startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), - attachmentsIncluded: true, - maxSize: 7 * 1024 * 1024, // 7 MB - }, - ); - } - render() { let searchStatus = null; @@ -197,14 +182,8 @@ export default class RoomHeader extends React.Component { title={_t("Video call")} />; } - const exportButton = <AccessibleTooltipButton - className="mx_RoomHeader_button mx_ImageView_button_download" - onClick={this._exportConversationalHistory} - title={_t("Export conversation")} />; - const rightRow = <div className="mx_RoomHeader_buttons"> - { exportButton } { videoCallButton } { voiceCallButton } { forgetButton } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 189c686815..00212fa137 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1593,7 +1593,6 @@ "Search": "Search", "Voice call": "Voice call", "Video call": "Video call", - "Export conversation": "Export conversation", "Start a Conversation": "Start a Conversation", "Open dial pad": "Open dial pad", "Invites": "Invites", @@ -2250,6 +2249,8 @@ "There was an error updating your community. The server is unable to process your request.": "There was an error updating your community. The server is unable to process your request.", "Update community": "Update community", "An error has occurred.": "An error has occurred.", + "Export Chat": "Export Chat", + "Export": "Export", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", "Tell us below how you feel about %(brand)s so far.": "Tell us below how you feel about %(brand)s so far.", @@ -2978,7 +2979,6 @@ "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", "Enter passphrase": "Enter passphrase", "Confirm passphrase": "Confirm passphrase", - "Export": "Export", "Import room keys": "Import room keys", "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.", "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", From 92e34c7993b5303050676705667027e81b335a70 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 26 Jun 2021 13:04:10 +0530 Subject: [PATCH 086/176] Format dropdown --- src/components/views/dialogs/ExportDialog.tsx | 95 +++++++++++-------- .../views/right_panel/RoomSummaryCard.tsx | 5 +- src/i18n/strings/en_EN.json | 1 + src/utils/exportUtils/exportUtils.ts | 20 +++- 4 files changed, 76 insertions(+), 45 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 22223848ea..7aba38c5c0 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -1,56 +1,75 @@ -import React from 'react'; -import { Room } from 'matrix-js-sdk/src'; -import { _t } from '../../../languageHandler'; -import { IDialogProps } from './IDialogProps'; -import BaseDialog from "./BaseDialog" +import React, { useState } from "react"; +import { Room } from "matrix-js-sdk/src"; +import { _t } from "../../../languageHandler"; +import { IDialogProps } from "./IDialogProps"; +import BaseDialog from "./BaseDialog"; import DialogButtons from "../elements/DialogButtons"; +import Dropdown from "../elements/Dropdown"; +import exportConversationalHistory, { + exportFormats, + exportTypes, +} from "../../../utils/exportUtils/exportUtils"; -interface IProps extends IDialogProps{ +interface IProps extends IDialogProps { room: Room; } -export default class ExportDialog extends React.PureComponent<IProps> { - onExportClick = async () => { - const { - default: exportConversationalHistory, - exportFormats, - exportTypes, - } = await import("../../../utils/exportUtils/exportUtils"); - +const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { + const [format, setFormat] = useState("HTML"); + const onExportClick = async () => { await exportConversationalHistory( - this.props.room, + room, exportFormats.PLAIN_TEXT, exportTypes.START_DATE, { - startDate: parseInt(new Date("2021.05.20").getTime().toFixed(0)), + startDate: parseInt( + new Date("2021.05.20").getTime().toFixed(0), + ), attachmentsIncluded: true, maxSize: 7 * 1024 * 1024, // 7 MB }, ); }; - onCancel = () => { - this.props.onFinished(false); + const onCancel = () => { + onFinished(false); }; - render() { - return ( - <BaseDialog - title={_t("Export Chat")} - contentId='mx_Dialog_content' - hasCancel={true} - onFinished={this.props.onFinished} - fixedWidth={false} + const options = Object.keys(exportFormats).map(key => { + return <div key={key}> + { exportFormats[key] } + </div> + }) + + return ( + <BaseDialog + title={_t("Export Chat")} + contentId="mx_Dialog_content" + hasCancel={true} + onFinished={onFinished} + fixedWidth={true} + > + <p> + {_t( + "Select from the options below to export chats from your timeline", + )} + </p> + + <Dropdown + onOptionChange={(key: string) => { setFormat(key) }} + value={format} + label={_t("Export formats")} > - <div className="mx_Dialog_content" id='mx_Dialog_content'> - Export - </div> - <DialogButtons - primaryButton={_t('Export')} - onPrimaryButtonClick={this.onExportClick} - onCancel={this.onCancel} - /> - </BaseDialog> - ); - } -} + { options } + </Dropdown> + + <DialogButtons + primaryButton={_t("Export")} + onPrimaryButtonClick={onExportClick} + onCancel={onCancel} + /> + </BaseDialog> + ); +}; + +export default ExportDialog; diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index 0cc5bf8e7f..5dd5790bfb 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -47,7 +47,6 @@ import {useRoomMemberCount} from "../../../hooks/useRoomMembers"; import { Container, MAX_PINNED, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; import RoomName from "../elements/RoomName"; import UIStore from "../../../stores/UIStore"; -import ExportDialog from "../dialogs/ExportDialog"; interface IProps { room: Room; @@ -234,7 +233,9 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { }); }; - const onRoomExportClick = () => { + const onRoomExportClick = async () => { + const {default: ExportDialog} = await import("../dialogs/ExportDialog"); + Modal.createTrackedDialog('export room dialog', '', ExportDialog, { room, }); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 00212fa137..9ab4a77c9f 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2250,6 +2250,7 @@ "Update community": "Update community", "An error has occurred.": "An error has occurred.", "Export Chat": "Export Chat", + "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", "Export": "Export", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 0439d51ee2..7a1d4a9f11 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,19 +1,29 @@ import { Room } from "matrix-js-sdk/src/models/room"; +import { _t } from "../../languageHandler"; import HTMLExporter from "./HtmlExport"; import JSONExporter from "./JSONExport"; import PlainTextExporter from "./PlainTextExport"; +_t("HTML"); +_t("JSON"); +_t("Plain Text"); + export enum exportFormats { HTML = "HTML", JSON = "JSON", - PLAIN_TEXT = "PLAIN_TEXT", + PLAIN_TEXT = "Plain Text", } +_t("Current Timeline"); +_t("From the beginning") +_t("From a specific date") +_t("Last n messages"); + export enum exportTypes { - TIMELINE = "TIMELINE", - BEGINNING = "BEGINNING", - START_DATE = "START_DATE", - LAST_N_MESSAGES = "LAST_N_MESSAGES", + TIMELINE = "Current Timeline", + BEGINNING = "From the beginning", + START_DATE = "From a specific date", + LAST_N_MESSAGES = "Last n messages", } export interface exportOptions { From e505646f2189965772e4f8c6b5fb7d3da7a87a66 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 26 Jun 2021 21:53:50 +0530 Subject: [PATCH 087/176] Finish dialog implementation of export settings --- res/css/_components.scss | 1 + res/css/views/dialogs/_ExportDialog.scss | 22 ++++ src/components/views/dialogs/ExportDialog.tsx | 107 ++++++++++++++---- src/components/views/elements/Field.tsx | 2 +- src/i18n/strings/en_EN.json | 11 ++ src/utils/exportUtils/exportUtils.ts | 43 ++++--- 6 files changed, 151 insertions(+), 35 deletions(-) create mode 100644 res/css/views/dialogs/_ExportDialog.scss diff --git a/res/css/_components.scss b/res/css/_components.scss index ec3af8655e..c0fade8e5e 100644 --- a/res/css/_components.scss +++ b/res/css/_components.scss @@ -75,6 +75,7 @@ @import "./views/dialogs/_DeactivateAccountDialog.scss"; @import "./views/dialogs/_DevtoolsDialog.scss"; @import "./views/dialogs/_EditCommunityPrototypeDialog.scss"; +@import "./views/dialogs/_ExportDialog.scss"; @import "./views/dialogs/_FeedbackDialog.scss"; @import "./views/dialogs/_ForwardDialog.scss"; @import "./views/dialogs/_GroupAddressPicker.scss"; diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss new file mode 100644 index 0000000000..69b76221bb --- /dev/null +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -0,0 +1,22 @@ +.mx_ExportDialog_subheading { + font-size: $font-16px; + display: block; + font-family: $font-family; + font-weight: 600; + color: $primary-fg-color; + margin-top: 18px; + margin-bottom: 12px; +} + +.mx_ExportDialog .mx_RadioButton > .mx_RadioButton_content { + margin-top: 5px; + margin-bottom: 5px; +} + +.mx_ExportDialog .mx_Field { + width: 256px; +} + +.mx_ExportDialog .mx_Field_postfix { + padding: 9px 10px; +} diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 7aba38c5c0..8cefffaa9f 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -4,10 +4,14 @@ import { _t } from "../../../languageHandler"; import { IDialogProps } from "./IDialogProps"; import BaseDialog from "./BaseDialog"; import DialogButtons from "../elements/DialogButtons"; -import Dropdown from "../elements/Dropdown"; +import Field from "../elements/Field"; +import StyledRadioGroup from "../elements/StyledRadioGroup"; +import StyledCheckbox from "../elements/StyledCheckbox"; import exportConversationalHistory, { exportFormats, exportTypes, + textForFormat, + textForType, } from "../../../utils/exportUtils/exportUtils"; interface IProps extends IDialogProps { @@ -15,18 +19,21 @@ interface IProps extends IDialogProps { } const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { - const [format, setFormat] = useState("HTML"); + const [exportFormat, setExportFormat] = useState("HTML"); + const [exportType, setExportType] = useState("TIMELINE"); + const [includeAttachments, setAttachments] = useState(false); + const [numberOfMessages, setNumberOfMessages] = useState<number | null>(); + const [sizeLimit, setSizeLimit] = useState<number | null>(8); + const onExportClick = async () => { await exportConversationalHistory( room, - exportFormats.PLAIN_TEXT, - exportTypes.START_DATE, + exportFormats[exportFormat], + exportTypes[exportType], { - startDate: parseInt( - new Date("2021.05.20").getTime().toFixed(0), - ), - attachmentsIncluded: true, - maxSize: 7 * 1024 * 1024, // 7 MB + numberOfMessages, + attachmentsIncluded: includeAttachments, + maxSize: sizeLimit * 1024 * 1024, }, ); }; @@ -35,15 +42,40 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onFinished(false); }; - const options = Object.keys(exportFormats).map(key => { - return <div key={key}> - { exportFormats[key] } - </div> - }) + const exportFormatOptions = Object.keys(exportFormats).map((format) => ({ + value: format, + label: textForFormat(format), + })); + + const exportTypeOptions = Object.keys(exportTypes).map((type) => { + return ( + <option key={type} value={type}> + {textForType(type)} + </option> + ); + }); + + let MessageCount = null; + if (exportType === exportTypes.LAST_N_MESSAGES) { + MessageCount = ( + <Field + element="input" + value={numberOfMessages} + label={_t("Number of messages")} + onChange={(e) => { + setNumberOfMessages(parseInt(e.target.value)); + }} + type="number" + /> + ); + } + + const sizePostFix = (<span title={_t("MB")}>{_t("MB")}</span>); return ( <BaseDialog title={_t("Export Chat")} + className="mx_ExportDialog" contentId="mx_Dialog_content" hasCancel={true} onFinished={onFinished} @@ -55,13 +87,48 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { )} </p> - <Dropdown - onOptionChange={(key: string) => { setFormat(key) }} - value={format} - label={_t("Export formats")} + <span className="mx_ExportDialog_subheading">{_t("Format")}</span> + + <StyledRadioGroup + name="feedbackRating" + value={exportFormat} + onChange={(key) => setExportFormat(key)} + definitions={exportFormatOptions} + /> + + <span className="mx_ExportDialog_subheading">{_t("Messages")}</span> + + <Field + element="select" + value={exportType} + onChange={(e) => { + setExportType(e.target.value); + }} > - { options } - </Dropdown> + {exportTypeOptions} + </Field> + { MessageCount } + + <span className="mx_ExportDialog_subheading"> + {_t("Size Limit")} + </span> + + <Field + type="number" + autoComplete="off" + value={sizeLimit} + postfixComponent={sizePostFix} + onChange={(e) => setSizeLimit(e.target.value)} + /> + + <StyledCheckbox + checked={includeAttachments} + onChange={(e) => + setAttachments((e.target as HTMLInputElement).checked) + } + > + {_t("Include Attachments")} + </StyledCheckbox> <DialogButtons primaryButton={_t("Export")} diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx index 1373c2df0e..ca02df71a9 100644 --- a/src/components/views/elements/Field.tsx +++ b/src/components/views/elements/Field.tsx @@ -77,7 +77,7 @@ export interface IInputProps extends IProps, InputHTMLAttributes<HTMLInputElemen // The element to create. Defaults to "input". element?: "input"; // The input's value. This is a controlled component, so the value is required. - value: string; + value: string | number; } interface ISelectProps extends IProps, SelectHTMLAttributes<HTMLSelectElement> { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 9ab4a77c9f..cb28f2b07b 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -735,6 +735,12 @@ "Invite to %(spaceName)s": "Invite to %(spaceName)s", "Share your public space": "Share your public space", "Unknown App": "Unknown App", + "HTML": "HTML", + "JSON": "JSON", + "Plain Text": "Plain Text", + "From the beginning": "From the beginning", + "For a number of messages": "For a number of messages", + "Current Timeline": "Current Timeline", "Media omitted": "Media omitted", "Media omitted - file size limit exceeded": "Media omitted - file size limit exceeded", "%(creatorName)s created this room.": "%(creatorName)s created this room.", @@ -2249,8 +2255,13 @@ "There was an error updating your community. The server is unable to process your request.": "There was an error updating your community. The server is unable to process your request.", "Update community": "Update community", "An error has occurred.": "An error has occurred.", + "Number of messages": "Number of messages", + "MB": "MB", "Export Chat": "Export Chat", "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", + "Format": "Format", + "Size Limit": "Size Limit", + "Include Attachments": "Include Attachments", "Export": "Export", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 7a1d4a9f11..37d0bbc524 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -4,26 +4,41 @@ import HTMLExporter from "./HtmlExport"; import JSONExporter from "./JSONExport"; import PlainTextExporter from "./PlainTextExport"; -_t("HTML"); -_t("JSON"); -_t("Plain Text"); - export enum exportFormats { HTML = "HTML", JSON = "JSON", - PLAIN_TEXT = "Plain Text", + PLAIN_TEXT = "PLAIN_TEXT", } -_t("Current Timeline"); -_t("From the beginning") -_t("From a specific date") -_t("Last n messages"); - export enum exportTypes { - TIMELINE = "Current Timeline", - BEGINNING = "From the beginning", - START_DATE = "From a specific date", - LAST_N_MESSAGES = "Last n messages", + TIMELINE = "TIMELINE", + BEGINNING = "BEGINNING", + // START_DATE = "START_DATE", + LAST_N_MESSAGES = "LAST_N_MESSAGES", +} + +export const textForFormat = (format: string) => { + switch (format) { + case exportFormats.HTML: + return _t("HTML"); + case exportFormats.JSON: + return _t("JSON"); + case exportFormats.PLAIN_TEXT: + return _t("Plain Text"); + } +} + +export const textForType = (type: string) => { + switch (type) { + case exportTypes.BEGINNING: + return _t("From the beginning"); + case exportTypes.LAST_N_MESSAGES: + return _t("For a number of messages"); + case exportTypes.TIMELINE: + return _t("Current Timeline"); + // case exportTypes.START_DATE: + // return _t("From a specific date"); + } } export interface exportOptions { From 46f34ba4554dc59df0a360dff03c1e8a7d553eb6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 26 Jun 2021 23:07:38 +0530 Subject: [PATCH 088/176] Add validation --- src/components/views/dialogs/ExportDialog.tsx | 98 +++++++++++++++++-- src/i18n/strings/en_EN.json | 5 + 2 files changed, 96 insertions(+), 7 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 8cefffaa9f..c4eb031aa5 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useRef, useState } from "react"; import { Room } from "matrix-js-sdk/src"; import { _t } from "../../../languageHandler"; import { IDialogProps } from "./IDialogProps"; @@ -13,6 +13,7 @@ import exportConversationalHistory, { textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; +import { IFieldState, IValidationResult } from "../elements/Validation"; interface IProps extends IDialogProps { room: Room; @@ -22,10 +23,26 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [exportFormat, setExportFormat] = useState("HTML"); const [exportType, setExportType] = useState("TIMELINE"); const [includeAttachments, setAttachments] = useState(false); - const [numberOfMessages, setNumberOfMessages] = useState<number | null>(); + const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); + const [sizeLimitRef, messageCountRef] = [useRef<any>(), useRef<any>()]; const onExportClick = async () => { + const isValidSize = await sizeLimitRef.current.validate({ + focused: false, + }); + if (!isValidSize) { + sizeLimitRef.current.validate({ focused: true }); + return; + } + if (exportType === exportTypes.LAST_N_MESSAGES) { + const isValidNumberOfMessages = + await messageCountRef.current.validate({ focused: false }); + if (!isValidNumberOfMessages) { + messageCountRef.current.validate({ focused: true }); + return; + } + } await exportConversationalHistory( room, exportFormats[exportFormat], @@ -38,6 +55,69 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { ); }; + const onValidateSize = async ({ + value, + }: Pick<IFieldState, "value">): Promise<IValidationResult> => { + const parsedSize = parseFloat(value); + const min = 1; + const max = 4000; + + if (isNaN(parsedSize)) { + return { valid: false, feedback: _t("Size must be a number") }; + } + + if (!(min <= parsedSize && parsedSize <= max)) { + return { + valid: false, + feedback: _t( + "Size can only be between %(min)s MB and %(max)s MB", + { min, max }, + ), + }; + } + + return { + valid: true, + feedback: _t("Enter size between %(min)s MB and %(max)s MB", { + min, + max, + }), + }; + }; + + const onValidateNumberOfMessages = async ({ + value, + }: Pick<IFieldState, "value">): Promise<IValidationResult> => { + const parsedSize = parseFloat(value); + const min = 1; + const max = 10 ** 8; + + if (isNaN(parsedSize)) { + return { + valid: false, + feedback: _t("Number of messages must be a number"), + }; + } + + if (!(min <= parsedSize && parsedSize <= max)) { + return { + valid: false, + feedback: _t( + "Number of messages can only be between %(min)s and %(max)s", + { min, max }, + ), + }; + } + + return { + valid: true, + feedback: _t("Enter a number between %(min)s and %(max)s", { + min, + max, + }), + }; + }; + const onCancel = () => { onFinished(false); }; @@ -54,23 +134,24 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </option> ); }); - let MessageCount = null; if (exportType === exportTypes.LAST_N_MESSAGES) { MessageCount = ( <Field element="input" + type="number" value={numberOfMessages} + ref={messageCountRef} + onValidate={onValidateNumberOfMessages} label={_t("Number of messages")} onChange={(e) => { setNumberOfMessages(parseInt(e.target.value)); }} - type="number" /> ); } - const sizePostFix = (<span title={_t("MB")}>{_t("MB")}</span>); + const sizePostFix = <span title={_t("MB")}>{_t("MB")}</span>; return ( <BaseDialog @@ -107,7 +188,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { > {exportTypeOptions} </Field> - { MessageCount } + {MessageCount} <span className="mx_ExportDialog_subheading"> {_t("Size Limit")} @@ -116,9 +197,12 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <Field type="number" autoComplete="off" + onValidate={onValidateSize} + element="input" + ref={sizeLimitRef} value={sizeLimit} postfixComponent={sizePostFix} - onChange={(e) => setSizeLimit(e.target.value)} + onChange={(e) => setSizeLimit(parseInt(e.target.value))} /> <StyledCheckbox diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index cb28f2b07b..8af51cb580 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2255,6 +2255,11 @@ "There was an error updating your community. The server is unable to process your request.": "There was an error updating your community. The server is unable to process your request.", "Update community": "Update community", "An error has occurred.": "An error has occurred.", + "Size can only be between %(min)s MB and %(max)s MB": "Size can only be between %(min)s MB and %(max)s MB", + "Enter size between %(min)s MB and %(max)s MB": "Enter size between %(min)s MB and %(max)s MB", + "Number of messages must be a number": "Number of messages must be a number", + "Number of messages can only be between %(min)s and %(max)s": "Number of messages can only be between %(min)s and %(max)s", + "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", "Number of messages": "Number of messages", "MB": "MB", "Export Chat": "Export Chat", From 55ffb318e5f9cd34435f3fe5cad053fbfbb43ce9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 26 Jun 2021 23:08:37 +0530 Subject: [PATCH 089/176] Change format order --- src/utils/exportUtils/exportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 37d0bbc524..132783fdcc 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -6,8 +6,8 @@ import PlainTextExporter from "./PlainTextExport"; export enum exportFormats { HTML = "HTML", - JSON = "JSON", PLAIN_TEXT = "PLAIN_TEXT", + JSON = "JSON", } export enum exportTypes { From 685441baf55053706768b5a259e6056f286a28d8 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 26 Jun 2021 23:40:35 +0530 Subject: [PATCH 090/176] Remove avatarForExport string --- src/components/views/avatars/MemberAvatar.tsx | 3 +-- src/utils/exportUtils/HtmlExport.tsx | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 81b75cb450..61723efb21 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -67,8 +67,7 @@ export default class MemberAvatar extends React.Component<IProps, IState> { private static getState(props: IProps): IState { if (props.member?.name) { let imageUrl = null; - if (props.forExport && props.member.getMxcAvatarUrl()) imageUrl = "avatarForExport"; - else if (props.member.getMxcAvatarUrl()) { + if (props.member.getMxcAvatarUrl()) { imageUrl = mediaFromMxc(props.member.getMxcAvatarUrl()).getThumbnailOfSourceHttp( props.width, props.height, diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 33d0e78915..f69cb4fb7f 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -190,19 +190,26 @@ export default class HTMLExporter extends Exporter { </html>` } - protected hasAvatar(event: MatrixEvent): boolean { + protected getAvatarURL(event: MatrixEvent): string { const member = event.sender; - return !!member.getMxcAvatarUrl(); + return ( + member.getMxcAvatarUrl() && + mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp( + 30, + 30, + "crop", + ) + ); } protected async saveAvatarIfNeeded(event: MatrixEvent) { const member = event.sender; - const avatarUrl = mediaFromMxc(member.getMxcAvatarUrl()).getThumbnailOfSourceHttp(30, 30, "crop"); if (!this.avatars.has(member.userId)) { + const avatarUrl = this.getAvatarURL(event); this.avatars.set(member.userId, true); const image = await fetch(avatarUrl); const blob = await image.blob(); - this.addFile(`users/${member.userId.replace(/:/g, '-')}`, blob); + this.addFile(`users/${member.userId.replace(/:/g, '-')}.png`, blob); } } @@ -218,7 +225,7 @@ export default class HTMLExporter extends Exporter { } protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { - const hasAvatar = this.hasAvatar(mxEv); + const hasAvatar = !!this.getAvatarURL(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); const eventTile = <div className="mx_Export_EventWrapper" id={mxEv.getId()}> @@ -251,8 +258,8 @@ export default class HTMLExporter extends Exporter { if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/g, `$1"${filePath}"`); if (hasAvatar) { eventTileMarkup = eventTileMarkup.replace( - /src="avatarForExport"/g, - `src="users/${mxEv.sender.userId.replace(/:/g, "-")}"`, + encodeURI(this.getAvatarURL(mxEv)).replace(/&/g, '&'), + `users/${mxEv.sender.userId.replace(/:/g, "-")}.png`, ); } return eventTileMarkup; From d46fe678b0e355148176af2414b25f1a72260ed0 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sun, 27 Jun 2021 20:55:54 +0530 Subject: [PATCH 091/176] Handle export cancellation --- src/components/views/dialogs/ExportDialog.tsx | 66 +++++++++++++++---- src/utils/exportUtils/Exporter.ts | 30 ++++++++- src/utils/exportUtils/HtmlExport.tsx | 15 +++-- src/utils/exportUtils/JSONExport.ts | 12 ++-- src/utils/exportUtils/PlainTextExport.ts | 14 ++-- src/utils/exportUtils/exportUtils.ts | 24 ------- 6 files changed, 107 insertions(+), 54 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index c4eb031aa5..ed567c43e1 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -7,13 +7,17 @@ import DialogButtons from "../elements/DialogButtons"; import Field from "../elements/Field"; import StyledRadioGroup from "../elements/StyledRadioGroup"; import StyledCheckbox from "../elements/StyledCheckbox"; -import exportConversationalHistory, { +import { exportFormats, exportTypes, textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; import { IFieldState, IValidationResult } from "../elements/Validation"; +import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; +import JSONExporter from "../../../utils/exportUtils/JSONExport"; +import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; +import { useStateCallback } from "../../../hooks/useStateCallback"; interface IProps extends IDialogProps { room: Room; @@ -26,6 +30,52 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); const [sizeLimitRef, messageCountRef] = [useRef<any>(), useRef<any>()]; + const [Exporter, setExporter] = useStateCallback( + null, + async (Exporter: HTMLExporter | PlainTextExporter | JSONExporter) => { + await Exporter?.export(); + }, + ); + + const startExport = async () => { + const exportOptions = { + numberOfMessages, + attachmentsIncluded: includeAttachments, + maxSize: sizeLimit * 1024 * 1024, + }; + switch (exportFormat) { + case exportFormats.HTML: + setExporter( + new HTMLExporter( + room, + exportTypes[exportType], + exportOptions, + ), + ); + break; + case exportFormats.JSON: + setExporter( + new JSONExporter( + room, + exportTypes[exportType], + exportOptions, + ), + ); + break; + case exportFormats.PLAIN_TEXT: + setExporter( + new PlainTextExporter( + room, + exportTypes[exportType], + exportOptions, + ), + ); + break; + default: + console.error("Unknown export format"); + return; + } + }; const onExportClick = async () => { const isValidSize = await sizeLimitRef.current.validate({ @@ -43,16 +93,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { return; } } - await exportConversationalHistory( - room, - exportFormats[exportFormat], - exportTypes[exportType], - { - numberOfMessages, - attachmentsIncluded: includeAttachments, - maxSize: sizeLimit * 1024 * 1024, - }, - ); + await startExport(); }; const onValidateSize = async ({ @@ -118,7 +159,8 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; }; - const onCancel = () => { + const onCancel = async () => { + await Exporter?.cancelExport(); onFinished(false); }; diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 0834cb7dc8..de9aba0ff7 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -21,16 +21,18 @@ export default abstract class Exporter { protected client: MatrixClient; protected writer: WritableStreamDefaultWriter<any>; protected fileStream: WritableStream<any>; + protected cancelled: boolean; protected constructor( protected room: Room, protected exportType: exportTypes, protected exportOptions?: exportOptions, ) { + this.cancelled = false; this.files = []; this.client = MatrixClientPeg.get(); window.addEventListener("beforeunload", this.onBeforeUnload); - window.addEventListener("onunload", this.abortExport); + window.addEventListener("onunload", this.abortWriter); } protected onBeforeUnload(e: BeforeUnloadEvent) { @@ -55,7 +57,8 @@ export default abstract class Exporter { // Create a writable stream to the directory this.fileStream = streamSaver.createWriteStream(filename); - console.info("Generating a ZIP..."); + if (!this.cancelled) console.info("Generating a ZIP..."); + else return this.cleanUp(); this.writer = this.fileStream.getWriter(); const files = this.files; @@ -67,21 +70,37 @@ export default abstract class Exporter { }, }); + if (this.cancelled) return this.cleanUp(); + console.info("Writing to the file system...") const reader = readableZipStream.getReader() await this.pumpToFileStream(reader); } + protected cleanUp() { + console.log("Cleaning up..."); + window.removeEventListener("beforeunload", this.onBeforeUnload); + window.removeEventListener("onunload", this.abortWriter); + return ""; + } + + public async cancelExport() { + console.log("Cancelling export..."); + this.cancelled = true; + await this.abortWriter(); + } + protected async downloadPlainText(fileName: string, text: string): Promise<any> { this.fileStream = streamSaver.createWriteStream(fileName); this.writer = this.fileStream.getWriter() const data = new TextEncoder().encode(text); + if (this.cancelled) return this.cleanUp(); await this.writer.write(data); await this.writer.close(); } - protected async abortExport(): Promise<void> { + protected async abortWriter(): Promise<void> { await this.fileStream?.abort(); await this.writer?.abort(); } @@ -134,6 +153,11 @@ export default abstract class Exporter { const eventsPerCrawl = Math.min(limit, 1000); const res: any = await this.client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); + if (this.cancelled) { + this.cleanUp(); + return []; + } + if (res.chunk.length === 0) break; limit -= res.chunk.length; diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index f69cb4fb7f..a62f926097 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -314,7 +314,7 @@ export default class HTMLExporter extends Exporter { let prevEvent = null; for (let i = 0; i < events.length; i++) { const event = events[i]; - console.log("Processing event " + i + " out of " + events.length); + if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; content += this._wantsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; @@ -349,17 +349,18 @@ export default class HTMLExporter extends Exporter { this.addFile(`icons/${iconName}`, new Blob([exportIcons[iconName]])); } - console.info("HTML creation successful!"); - await this.downloadZIP(); const exportEnd = performance.now(); - console.info("Export successful!") - console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + if (this.cancelled) { + console.info("Export cancelled successfully"); + } else { + console.info("Export successful!") + console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + } - window.removeEventListener("beforeunload", this.onBeforeUnload); - window.removeEventListener("onunload", this.abortExport); + this.cleanUp(); } } diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index d25d96b2e4..cbdc78a711 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -64,6 +64,7 @@ ${json} protected async createOutput(events: MatrixEvent[]) { let content = ""; for (const event of events) { + if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; content += await this.getJSONString(event); } @@ -93,11 +94,14 @@ ${json} const exportEnd = performance.now(); - console.info("Export successful!") - console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + if (this.cancelled) { + console.info("Export cancelled successfully"); + } else { + console.info("Export successful!") + console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + } - window.removeEventListener("beforeunload", this.onBeforeUnload); - window.removeEventListener("onunload", this.abortExport); + this.cleanUp() } } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index a207029955..dff4399b95 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -81,6 +81,7 @@ export default class PlainTextExporter extends Exporter { protected async createOutput(events: MatrixEvent[]) { let content = ""; for (const event of events) { + if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; const textForEvent = await this._textForEvent(event); content += textForEvent && `${new Date(event.getTs()).toLocaleString()} - ${textForEvent}\n`; @@ -101,6 +102,8 @@ export default class PlainTextExporter extends Exporter { console.info("Creating output..."); const text = await this.createOutput(res); + if (this.cancelled) return this.cleanUp(); + if (this.files.length) { this.addFile("export.txt", new Blob([text])); await this.downloadZIP(); @@ -111,11 +114,14 @@ export default class PlainTextExporter extends Exporter { const exportEnd = performance.now(); - console.info("Export successful!") - console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + if (this.cancelled) { + console.info("Export cancelled successfully"); + } else { + console.info("Export successful!") + console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + } - window.removeEventListener("onunload", this.abortExport); - window.removeEventListener("beforeunload", this.onBeforeUnload); + this.cleanUp(); } } diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 132783fdcc..2baff69b36 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,8 +1,4 @@ -import { Room } from "matrix-js-sdk/src/models/room"; import { _t } from "../../languageHandler"; -import HTMLExporter from "./HtmlExport"; -import JSONExporter from "./JSONExport"; -import PlainTextExporter from "./PlainTextExport"; export enum exportFormats { HTML = "HTML", @@ -48,23 +44,3 @@ export interface exportOptions { maxSize: number; } -const exportConversationalHistory = async ( - room: Room, - format: string, - exportType: exportTypes, - exportOptions?: exportOptions, -) => { - switch (format) { - case exportFormats.HTML: - await new HTMLExporter(room, exportType, exportOptions).export(); - break; - case exportFormats.JSON: - await new JSONExporter(room, exportType, exportOptions).export(); - break; - case exportFormats.PLAIN_TEXT: - await new PlainTextExporter(room, exportType, exportOptions).export(); - break; - } -}; - -export default exportConversationalHistory; From d8f763664b2aea8f30f9bca46d6193927c90b687 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sun, 27 Jun 2021 22:18:43 +0530 Subject: [PATCH 092/176] Add warning modal during export --- src/components/views/dialogs/ExportDialog.tsx | 54 +++++++++++++++++-- src/i18n/strings/en_EN.json | 2 + 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index ed567c43e1..ec1e8d4cd9 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -18,6 +18,8 @@ import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; +import Modal from "../../../Modal"; +import QuestionDialog from "./QuestionDialog"; interface IProps extends IDialogProps { room: Room; @@ -27,13 +29,14 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [exportFormat, setExportFormat] = useState("HTML"); const [exportType, setExportType] = useState("TIMELINE"); const [includeAttachments, setAttachments] = useState(false); + const [isExporting, setExporting] = useState(false); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); const [sizeLimitRef, messageCountRef] = [useRef<any>(), useRef<any>()]; const [Exporter, setExporter] = useStateCallback( null, async (Exporter: HTMLExporter | PlainTextExporter | JSONExporter) => { - await Exporter?.export(); + await Exporter?.export().then(() => setExporting(false)); }, ); @@ -93,6 +96,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { return; } } + setExporting(true); await startExport(); }; @@ -160,8 +164,31 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; const onCancel = async () => { - await Exporter?.cancelExport(); - onFinished(false); + if (isExporting) { + const { finished } = Modal.createTrackedDialog( + "Warning", + "", + QuestionDialog, + { + title: _t("Warning"), + description: ( + <div> + <p> + {_t(`Are you sure you want to stop exporting your data? + If you do, you'll need to start over.`)} + </p> + </div> + ), + danger: true, + button: _t("Yes"), + }, + ); + const [proceed] = await finished; + if (!proceed) return; + await Exporter?.cancelExport(); + setExporting(false); + setExporter(null); + } else onFinished(false); }; const exportFormatOptions = Object.keys(exportFormats).map((format) => ({ @@ -195,7 +222,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const sizePostFix = <span title={_t("MB")}>{_t("MB")}</span>; - return ( + const ExportSettings = ( <BaseDialog title={_t("Export Chat")} className="mx_ExportDialog" @@ -259,10 +286,29 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <DialogButtons primaryButton={_t("Export")} onPrimaryButtonClick={onExportClick} + onCancel={() => onFinished(false)} + /> + </BaseDialog> + ); + + const ExportProgress = ( + <BaseDialog + title={_t("Exporting you data...")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <DialogButtons + primaryButton={_t("Cancel")} + primaryButtonClass="danger" + hasCancel={false} onCancel={onCancel} /> </BaseDialog> ); + + return isExporting ? ExportProgress : ExportSettings; }; export default ExportDialog; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 5e443b1474..4d8b9806ab 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2259,6 +2259,7 @@ "Number of messages must be a number": "Number of messages must be a number", "Number of messages can only be between %(min)s and %(max)s": "Number of messages can only be between %(min)s and %(max)s", "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", + "Are you sure you want to stop exporting your data? \n If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? \n If you do, you'll need to start over.", "Number of messages": "Number of messages", "MB": "MB", "Export Chat": "Export Chat", @@ -2267,6 +2268,7 @@ "Size Limit": "Size Limit", "Include Attachments": "Include Attachments", "Export": "Export", + "Exporting you data...": "Exporting you data...", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", "Tell us below how you feel about %(brand)s so far.": "Tell us below how you feel about %(brand)s so far.", From efd8bf3a0fec30ed95d05830c1256e322701ba8a Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 28 Jun 2021 11:00:34 +0530 Subject: [PATCH 093/176] Delint --- src/utils/exportUtils/PlainTextExport.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index dff4399b95..d6d686a841 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -102,8 +102,6 @@ export default class PlainTextExporter extends Exporter { console.info("Creating output..."); const text = await this.createOutput(res); - if (this.cancelled) return this.cleanUp(); - if (this.files.length) { this.addFile("export.txt", new Blob([text])); await this.downloadZIP(); From 64b683a0df6639f0013ce79f5bee53db78f0206d Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 28 Jun 2021 12:20:41 +0530 Subject: [PATCH 094/176] Add cancel warning and progress completion modals --- src/components/views/dialogs/ExportDialog.tsx | 122 +++++++++++++----- src/i18n/strings/en_EN.json | 10 +- 2 files changed, 97 insertions(+), 35 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index ec1e8d4cd9..e5454b1c18 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -18,25 +18,28 @@ import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; -import Modal from "../../../Modal"; -import QuestionDialog from "./QuestionDialog"; interface IProps extends IDialogProps { room: Room; } const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { - const [exportFormat, setExportFormat] = useState("HTML"); - const [exportType, setExportType] = useState("TIMELINE"); + const [exportFormat, setExportFormat] = useState(exportFormats.HTML); + const [exportType, setExportType] = useState(exportTypes.TIMELINE); const [includeAttachments, setAttachments] = useState(false); const [isExporting, setExporting] = useState(false); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); const [sizeLimitRef, messageCountRef] = [useRef<any>(), useRef<any>()]; + const [displayCancel, setCancelWarning] = useState(false); + const [exportCancelled, setExportCancelled] = useState(false); + const [exportSuccessful, setExportSuccessful] = useState(false); const [Exporter, setExporter] = useStateCallback( null, async (Exporter: HTMLExporter | PlainTextExporter | JSONExporter) => { - await Exporter?.export().then(() => setExporting(false)); + await Exporter?.export().then(() => { + if (!exportCancelled) setExportSuccessful(true); + }); }, ); @@ -164,31 +167,16 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; const onCancel = async () => { - if (isExporting) { - const { finished } = Modal.createTrackedDialog( - "Warning", - "", - QuestionDialog, - { - title: _t("Warning"), - description: ( - <div> - <p> - {_t(`Are you sure you want to stop exporting your data? - If you do, you'll need to start over.`)} - </p> - </div> - ), - danger: true, - button: _t("Yes"), - }, - ); - const [proceed] = await finished; - if (!proceed) return; - await Exporter?.cancelExport(); + if (isExporting) setCancelWarning(true); + else onFinished(false); + }; + + const confirmCanel = async () => { + await Exporter?.cancelExport().then(() => { + setExportCancelled(true); setExporting(false); setExporter(null); - } else onFinished(false); + }); }; const exportFormatOptions = Object.keys(exportFormats).map((format) => ({ @@ -222,6 +210,31 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const sizePostFix = <span title={_t("MB")}>{_t("MB")}</span>; + const ExportCancelWarning = ( + <BaseDialog + title={_t("Warning")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p> + {" "} + {_t( + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + )}{" "} + </p> + <DialogButtons + primaryButton={_t("Abort export process")} + primaryButtonClass="danger" + hasCancel={true} + cancelButton={_t("Continue")} + onCancel={() => setCancelWarning(false)} + onPrimaryButtonClick={confirmCanel} + /> + </BaseDialog> + ); + const ExportSettings = ( <BaseDialog title={_t("Export Chat")} @@ -242,7 +255,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <StyledRadioGroup name="feedbackRating" value={exportFormat} - onChange={(key) => setExportFormat(key)} + onChange={(key) => setExportFormat(exportFormats[key])} definitions={exportFormatOptions} /> @@ -252,7 +265,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { element="select" value={exportType} onChange={(e) => { - setExportType(e.target.value); + setExportType(exportTypes[e.target.value]); }} > {exportTypeOptions} @@ -291,9 +304,45 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </BaseDialog> ); + const ExportSuccessful = ( + <BaseDialog + title={_t("Export Successful")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p> {_t("Your messages were successfully exported")} </p> + + <DialogButtons + primaryButton={_t("Okay")} + hasCancel={false} + onPrimaryButtonClick={onFinished} + /> + </BaseDialog> + ); + + const ExportCancelSuccess = ( + <BaseDialog + title={_t("Export Cancelled")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p> {_t("The export was cancelled successfully")} </p> + + <DialogButtons + primaryButton={_t("Okay")} + hasCancel={false} + onPrimaryButtonClick={onFinished} + /> + </BaseDialog> + ); + const ExportProgress = ( <BaseDialog - title={_t("Exporting you data...")} + title={_t("Exporting your data...")} className="mx_ExportDialog" contentId="mx_Dialog_content" onFinished={onFinished} @@ -303,12 +352,19 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { primaryButton={_t("Cancel")} primaryButtonClass="danger" hasCancel={false} - onCancel={onCancel} + onPrimaryButtonClick={onCancel} /> </BaseDialog> ); - return isExporting ? ExportProgress : ExportSettings; + let componentToDisplay: JSX.Element; + if (exportCancelled) componentToDisplay = ExportCancelSuccess; + else if (exportSuccessful) componentToDisplay = ExportSuccessful; + else if (!isExporting) componentToDisplay = ExportSettings; + else if (displayCancel) componentToDisplay = ExportCancelWarning; + else componentToDisplay = ExportProgress; + + return componentToDisplay; }; export default ExportDialog; diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 4d8b9806ab..7489846008 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2259,16 +2259,22 @@ "Number of messages must be a number": "Number of messages must be a number", "Number of messages can only be between %(min)s and %(max)s": "Number of messages can only be between %(min)s and %(max)s", "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", - "Are you sure you want to stop exporting your data? \n If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? \n If you do, you'll need to start over.", "Number of messages": "Number of messages", "MB": "MB", + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + "Abort export process": "Abort export process", "Export Chat": "Export Chat", "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", "Format": "Format", "Size Limit": "Size Limit", "Include Attachments": "Include Attachments", "Export": "Export", - "Exporting you data...": "Exporting you data...", + "Export Successful": "Export Successful", + "Your messages were successfully exported": "Your messages were successfully exported", + "Okay": "Okay", + "Export Cancelled": "Export Cancelled", + "The export was cancelled successfully": "The export was cancelled successfully", + "Exporting your data...": "Exporting your data...", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", "Tell us below how you feel about %(brand)s so far.": "Tell us below how you feel about %(brand)s so far.", From 00ee3efbff4f597b2996faca822c9ba35a41a813 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 28 Jun 2021 12:39:05 +0530 Subject: [PATCH 095/176] Wrap avatar fetch in try catch --- src/utils/exportUtils/HtmlExport.tsx | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index a62f926097..7ece487cf7 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -42,10 +42,14 @@ export default class HTMLExporter extends Exporter { const avatarUrl = Avatar.avatarUrlForRoom(this.room, 32, 32, "crop"); const avatarPath = "room.png"; if (avatarUrl) { - const image = await fetch(avatarUrl); - blob = await image.blob(); - this.totalSize += blob.size; - this.addFile(avatarPath, blob); + try { + const image = await fetch(avatarUrl); + blob = await image.blob(); + this.totalSize += blob.size; + this.addFile(avatarPath, blob); + } catch (err) { + console.log("Failed to fetch room's avatar" + err); + } } const avatar = ( <BaseAvatar @@ -205,11 +209,15 @@ export default class HTMLExporter extends Exporter { protected async saveAvatarIfNeeded(event: MatrixEvent) { const member = event.sender; if (!this.avatars.has(member.userId)) { - const avatarUrl = this.getAvatarURL(event); - this.avatars.set(member.userId, true); - const image = await fetch(avatarUrl); - const blob = await image.blob(); - this.addFile(`users/${member.userId.replace(/:/g, '-')}.png`, blob); + try { + const avatarUrl = this.getAvatarURL(event); + this.avatars.set(member.userId, true); + const image = await fetch(avatarUrl); + const blob = await image.blob(); + this.addFile(`users/${member.userId.replace(/:/g, '-')}.png`, blob); + } catch (err) { + console.log("Failed to fetch user's avatar" + err); + } } } From fc8100131631ddf0597b4d1128fa81817d3f006f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 28 Jun 2021 13:23:50 +0530 Subject: [PATCH 096/176] Hide alt text if the image isn't present (for unavailable avatars) --- src/utils/exportUtils/exportCSS.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index cbba088361..0a3ccfb935 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -19465,7 +19465,7 @@ a.mx_RoomPreviewBar_inviter { transform: scaleX(-1); } ` -const snackbarCSS = ` +const customCSS = ` #snackbar { display: flex; visibility: hidden; @@ -19562,8 +19562,13 @@ a.mx_reply_anchor:hover{ left: 0; } +img { + white-space: nowrap; + overflow: hidden; +} + ` const markdownCSS = `.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}` -export default lightCSS + markdownCSS + snackbarCSS; +export default lightCSS + markdownCSS + customCSS; From f0d0b77b8cd7c289a68457996a8cbfc706f49dc4 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:13:14 +0530 Subject: [PATCH 097/176] Update src/TextForEvent.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/TextForEvent.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/TextForEvent.tsx b/src/TextForEvent.tsx index b1f3ebaef8..ac09060e22 100644 --- a/src/TextForEvent.tsx +++ b/src/TextForEvent.tsx @@ -137,7 +137,7 @@ function textForTopicEvent(ev): () => string | null { function textForRoomAvatarEvent(ev: MatrixEvent): () => string | null { const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); - return () => _t('%(senderDisplayName)s changed the room avatar.', {senderDisplayName}); + return () => _t('%(senderDisplayName)s changed the room avatar.', { senderDisplayName }); } function textForRoomNameEvent(ev): () => string | null { From 4ddbe76fbde3084577dbad5eb976e7606c39eaa9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:13:38 +0530 Subject: [PATCH 098/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index e5454b1c18..4556eed3bb 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -30,7 +30,8 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [isExporting, setExporting] = useState(false); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); - const [sizeLimitRef, messageCountRef] = [useRef<any>(), useRef<any>()]; + const sizeLimitRef = useRef<Field>(); + const messageCountRef = useRef<Field>(); const [displayCancel, setCancelWarning] = useState(false); const [exportCancelled, setExportCancelled] = useState(false); const [exportSuccessful, setExportSuccessful] = useState(false); From e6cb0666efae673657c496719e47900fcd85a57d Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:13:51 +0530 Subject: [PATCH 099/176] Update src/utils/exportUtils/exportUtils.ts Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/utils/exportUtils/exportUtils.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 2baff69b36..07da0ee7af 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -13,7 +13,7 @@ export enum exportTypes { LAST_N_MESSAGES = "LAST_N_MESSAGES", } -export const textForFormat = (format: string) => { +export const textForFormat = (format: string): string => { switch (format) { case exportFormats.HTML: return _t("HTML"); @@ -43,4 +43,3 @@ export interface exportOptions { attachmentsIncluded: boolean; maxSize: number; } - From efccf19e9ef9af88872acc71b7659e018bb2294c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:14:00 +0530 Subject: [PATCH 100/176] Update src/utils/exportUtils/exportUtils.ts Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/utils/exportUtils/exportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 07da0ee7af..7587ca4524 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -24,7 +24,7 @@ export const textForFormat = (format: string): string => { } } -export const textForType = (type: string) => { +export const textForType = (type: string): string => { switch (type) { case exportTypes.BEGINNING: return _t("From the beginning"); From 7b683a1f6406545e54e9c74d63979041d48b5b83 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:14:24 +0530 Subject: [PATCH 101/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 4556eed3bb..60cd06a483 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -35,7 +35,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [displayCancel, setCancelWarning] = useState(false); const [exportCancelled, setExportCancelled] = useState(false); const [exportSuccessful, setExportSuccessful] = useState(false); - const [Exporter, setExporter] = useStateCallback( + const [Exporter, setExporter] = useStateCallback<Exporter>( null, async (Exporter: HTMLExporter | PlainTextExporter | JSONExporter) => { await Exporter?.export().then(() => { From 1014e9ea48c4779e9b92ec9e2e0b3f4c83be4c32 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:14:56 +0530 Subject: [PATCH 102/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 60cd06a483..844c7eae5a 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -269,7 +269,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { setExportType(exportTypes[e.target.value]); }} > - {exportTypeOptions} + { exportTypeOptions } </Field> {MessageCount} From 7a5aea14418d716ee35594e487979b33e0203961 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:15:20 +0530 Subject: [PATCH 103/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 844c7eae5a..6189bb00c8 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -271,7 +271,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { > { exportTypeOptions } </Field> - {MessageCount} + { MessageCount } <span className="mx_ExportDialog_subheading"> {_t("Size Limit")} From b626a3d5cb9c50d1b50cffedc007469976a11eaf Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:15:46 +0530 Subject: [PATCH 104/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 6189bb00c8..b7dcf57d4a 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -260,7 +260,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { definitions={exportFormatOptions} /> - <span className="mx_ExportDialog_subheading">{_t("Messages")}</span> + <span className="mx_ExportDialog_subheading">{ _t("Messages") }</span> <Field element="select" From 7bbfaed5005a156cb3bb1eac04918b54f42409fc Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:16:08 +0530 Subject: [PATCH 105/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index b7dcf57d4a..bfa719e247 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -251,7 +251,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { )} </p> - <span className="mx_ExportDialog_subheading">{_t("Format")}</span> + <span className="mx_ExportDialog_subheading">{ _t("Format") }</span> <StyledRadioGroup name="feedbackRating" From a92ddb3f27527abb4449d4f68f58241f6c6fe174 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:16:32 +0530 Subject: [PATCH 106/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index bfa719e247..6c95ac809e 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -313,7 +313,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onFinished={onFinished} fixedWidth={true} > - <p> {_t("Your messages were successfully exported")} </p> + <p>{ _t("Your messages were successfully exported") }</p> <DialogButtons primaryButton={_t("Okay")} From e459f3841d7df1cb6ab46b58519b68f6fb71aeab Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:17:14 +0530 Subject: [PATCH 107/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 6c95ac809e..e66012869f 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -274,7 +274,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { { MessageCount } <span className="mx_ExportDialog_subheading"> - {_t("Size Limit")} + { _t("Size Limit") } </span> <Field From 7a09bcb5a20bef564c2da7bf2e3f5078620d9e6b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:17:38 +0530 Subject: [PATCH 108/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index e66012869f..622630f5da 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -294,7 +294,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { setAttachments((e.target as HTMLInputElement).checked) } > - {_t("Include Attachments")} + { _t("Include Attachments") } </StyledCheckbox> <DialogButtons From 60c6af501b29ce946c5feb0bb907d786027110b0 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:18:17 +0530 Subject: [PATCH 109/176] Update src/components/views/dialogs/ExportDialog.tsx Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 622630f5da..a8bb0fd7fa 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -331,7 +331,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onFinished={onFinished} fixedWidth={true} > - <p> {_t("The export was cancelled successfully")} </p> + <p>{ _t("The export was cancelled successfully") }</p> <DialogButtons primaryButton={_t("Okay")} From b506de098947a9391a903561ad484f30db1b0191 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:19:11 +0530 Subject: [PATCH 110/176] Update src/components/views/messages/MFileBody.js Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/components/views/messages/MFileBody.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index 813b340bb9..af1c011f30 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -175,7 +175,7 @@ export default class MFileBody extends React.Component { if (this.props.showGenericPlaceholder) { placeholder = ( <div className="mx_MFileBody_info"> - <span className="mx_MFileBody_info_icon" > + <span className="mx_MFileBody_info_icon"> {this.props.forExport ? <img alt="Attachment" className="mx_export_attach_icon" src="icons/attach.svg" /> : null} From de6bc3f2eddded08d7e8530a7fc19debc2cf9668 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:19:57 +0530 Subject: [PATCH 111/176] Update src/utils/exportUtils/Exporter.ts Co-authored-by: Michael Telatynski <7t3chguy@googlemail.com> --- src/utils/exportUtils/Exporter.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index de9aba0ff7..e26d25f595 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -12,8 +12,8 @@ import * as ponyfill from "web-streams-polyfill/ponyfill" import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers type FileStream = { - name: string, - stream(): ReadableStream, + name: string; + stream(): ReadableStream; }; export default abstract class Exporter { From 025a7eb9a56ee99579366a67685ca3fcc4c25992 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:36:24 +0530 Subject: [PATCH 112/176] Iterate PR --- res/css/views/dialogs/_ExportDialog.scss | 38 +++--- src/components/views/avatars/MemberAvatar.tsx | 3 +- src/components/views/dialogs/ExportDialog.tsx | 119 ++++++++---------- .../views/elements/EventListSummary.tsx | 2 +- 4 files changed, 78 insertions(+), 84 deletions(-) diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index 69b76221bb..d3af6c843b 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -1,22 +1,24 @@ -.mx_ExportDialog_subheading { - font-size: $font-16px; - display: block; - font-family: $font-family; - font-weight: 600; - color: $primary-fg-color; - margin-top: 18px; - margin-bottom: 12px; -} +.mx_ExportDialog { + .mx_ExportDialog_subheading { + font-size: $font-16px; + display: block; + font-family: $font-family; + font-weight: $font-semi-bold; + color: $primary-fg-color; + margin-top: 18px; + margin-bottom: 12px; + } -.mx_ExportDialog .mx_RadioButton > .mx_RadioButton_content { - margin-top: 5px; - margin-bottom: 5px; -} + .mx_RadioButton > .mx_RadioButton_content { + margin-top: 5px; + margin-bottom: 5px; + } -.mx_ExportDialog .mx_Field { - width: 256px; -} + .mx_Field { + width: 256px; + } -.mx_ExportDialog .mx_Field_postfix { - padding: 9px 10px; + .mx_Field_postfix { + padding: 9px 10px; + } } diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 61723efb21..6015e4f568 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -18,12 +18,13 @@ limitations under the License. import React from 'react'; import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import { ResizeMethod } from 'matrix-js-sdk/src/@types/partials'; +import { omit } from "lodash"; + import dis from "../../../dispatcher/dispatcher"; import { Action } from "../../../dispatcher/actions"; import BaseAvatar from "./BaseAvatar"; import { replaceableComponent } from "../../../utils/replaceableComponent"; import { mediaFromMxc } from "../../../customisations/Media"; -import { omit } from "lodash"; interface IProps extends Omit<React.ComponentProps<typeof BaseAvatar>, "name" | "idName" | "url"> { member: RoomMember; diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index a8bb0fd7fa..62fa7b5bc6 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -18,6 +18,7 @@ import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; +import Exporter from "../../../utils/exportUtils/Exporter"; interface IProps extends IDialogProps { room: Room; @@ -37,8 +38,8 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [exportSuccessful, setExportSuccessful] = useState(false); const [Exporter, setExporter] = useStateCallback<Exporter>( null, - async (Exporter: HTMLExporter | PlainTextExporter | JSONExporter) => { - await Exporter?.export().then(() => { + async (exporter: Exporter) => { + await exporter?.export().then(() => { if (!exportCancelled) setExportSuccessful(true); }); }, @@ -115,7 +116,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { return { valid: false, feedback: _t("Size must be a number") }; } - if (!(min <= parsedSize && parsedSize <= max)) { + if (min >= parsedSize || parsedSize >= max) { return { valid: false, feedback: _t( @@ -148,7 +149,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; } - if (!(min <= parsedSize && parsedSize <= max)) { + if (min >= parsedSize || parsedSize >= max) { return { valid: false, feedback: _t( @@ -192,9 +193,9 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </option> ); }); - let MessageCount = null; + let messageCount = null; if (exportType === exportTypes.LAST_N_MESSAGES) { - MessageCount = ( + messageCount = ( <Field element="input" type="number" @@ -209,34 +210,45 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { ); } - const sizePostFix = <span title={_t("MB")}>{_t("MB")}</span>; + const sizePostFix = <span>{ _t("MB") }</span>; - const ExportCancelWarning = ( - <BaseDialog - title={_t("Warning")} + let componentToDisplay: JSX.Element; + if (exportCancelled) { + // Display successful cancellation message + return <BaseDialog + title={_t("Export Cancelled")} className="mx_ExportDialog" contentId="mx_Dialog_content" onFinished={onFinished} fixedWidth={true} > - <p> - {" "} - {_t( - "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - )}{" "} - </p> + <p>{ _t("The export was cancelled successfully") }</p> + <DialogButtons - primaryButton={_t("Abort export process")} - primaryButtonClass="danger" - hasCancel={true} - cancelButton={_t("Continue")} - onCancel={() => setCancelWarning(false)} - onPrimaryButtonClick={confirmCanel} + primaryButton={_t("Okay")} + hasCancel={false} + onPrimaryButtonClick={onFinished} /> </BaseDialog> - ); + } else if (exportSuccessful) { + // Display successful export message + return <BaseDialog + title={_t("Export Successful")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p>{ _t("Your messages were successfully exported") }</p> - const ExportSettings = ( + <DialogButtons + primaryButton={_t("Okay")} + hasCancel={false} + onPrimaryButtonClick={onFinished} + /> + </BaseDialog> + } else if (!isExporting) { + // Display export settings <BaseDialog title={_t("Export Chat")} className="mx_ExportDialog" @@ -271,7 +283,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { > { exportTypeOptions } </Field> - { MessageCount } + { messageCount } <span className="mx_ExportDialog_subheading"> { _t("Size Limit") } @@ -303,46 +315,32 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onCancel={() => onFinished(false)} /> </BaseDialog> - ); - - const ExportSuccessful = ( + } else if (displayCancel) { + // Display cancel warning <BaseDialog - title={_t("Export Successful")} + title={_t("Warning")} className="mx_ExportDialog" contentId="mx_Dialog_content" onFinished={onFinished} fixedWidth={true} > - <p>{ _t("Your messages were successfully exported") }</p> - + <p> + {_t( + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + )} + </p> <DialogButtons - primaryButton={_t("Okay")} - hasCancel={false} - onPrimaryButtonClick={onFinished} + primaryButton={_t("Abort export process")} + primaryButtonClass="danger" + hasCancel={true} + cancelButton={_t("Continue")} + onCancel={() => setCancelWarning(false)} + onPrimaryButtonClick={confirmCanel} /> </BaseDialog> - ); - - const ExportCancelSuccess = ( - <BaseDialog - title={_t("Export Cancelled")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <p>{ _t("The export was cancelled successfully") }</p> - - <DialogButtons - primaryButton={_t("Okay")} - hasCancel={false} - onPrimaryButtonClick={onFinished} - /> - </BaseDialog> - ); - - const ExportProgress = ( - <BaseDialog + } else { + // Display progress dialog + return <BaseDialog title={_t("Exporting your data...")} className="mx_ExportDialog" contentId="mx_Dialog_content" @@ -356,14 +354,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onPrimaryButtonClick={onCancel} /> </BaseDialog> - ); - - let componentToDisplay: JSX.Element; - if (exportCancelled) componentToDisplay = ExportCancelSuccess; - else if (exportSuccessful) componentToDisplay = ExportSuccessful; - else if (!isExporting) componentToDisplay = ExportSettings; - else if (displayCancel) componentToDisplay = ExportCancelWarning; - else componentToDisplay = ExportProgress; + } return componentToDisplay; }; diff --git a/src/components/views/elements/EventListSummary.tsx b/src/components/views/elements/EventListSummary.tsx index ef40251dec..665263d19c 100644 --- a/src/components/views/elements/EventListSummary.tsx +++ b/src/components/views/elements/EventListSummary.tsx @@ -77,7 +77,7 @@ const EventListSummary: React.FC<IProps> = ({ </React.Fragment>; } else { const avatars = summaryMembers.map((m, idx) => - <MemberAvatar key={m.userId + idx} member={m} width={14} height={14} />); + <MemberAvatar key={m.userId} member={m} width={14} height={14} />); body = ( <div className="mx_EventTile_line"> <div className="mx_EventTile_info"> From e404fa3caedb7ec78dcc5750b8b48328b0ca50d2 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 10:57:02 +0530 Subject: [PATCH 113/176] Apply suggestions --- src/components/views/dialogs/ExportDialog.tsx | 257 +++++++++--------- src/components/views/elements/ReplyThread.js | 18 +- src/i18n/strings/en_EN.json | 14 +- src/utils/exportUtils/JSONExport.ts | 37 +-- 4 files changed, 161 insertions(+), 165 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 62fa7b5bc6..21239edb3c 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -212,151 +212,154 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const sizePostFix = <span>{ _t("MB") }</span>; - let componentToDisplay: JSX.Element; if (exportCancelled) { // Display successful cancellation message - return <BaseDialog - title={_t("Export Cancelled")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <p>{ _t("The export was cancelled successfully") }</p> + return ( + <BaseDialog + title={_t("Export Cancelled")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p>{ _t("The export was cancelled successfully") }</p> - <DialogButtons - primaryButton={_t("Okay")} - hasCancel={false} - onPrimaryButtonClick={onFinished} - /> - </BaseDialog> + <DialogButtons + primaryButton={ _t("Okay") } + hasCancel={false} + onPrimaryButtonClick={onFinished} + /> + </BaseDialog> + ); } else if (exportSuccessful) { // Display successful export message - return <BaseDialog - title={_t("Export Successful")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <p>{ _t("Your messages were successfully exported") }</p> + return ( + <BaseDialog + title={_t("Export Successful")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p>{ _t("Your messages were successfully exported") }</p> - <DialogButtons - primaryButton={_t("Okay")} - hasCancel={false} - onPrimaryButtonClick={onFinished} - /> - </BaseDialog> + <DialogButtons + primaryButton={_t("Okay")} + hasCancel={false} + onPrimaryButtonClick={onFinished} + /> + </BaseDialog> + ); } else if (!isExporting) { // Display export settings - <BaseDialog - title={_t("Export Chat")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - hasCancel={true} - onFinished={onFinished} - fixedWidth={true} - > - <p> - {_t( - "Select from the options below to export chats from your timeline", - )} - </p> - - <span className="mx_ExportDialog_subheading">{ _t("Format") }</span> - - <StyledRadioGroup - name="feedbackRating" - value={exportFormat} - onChange={(key) => setExportFormat(exportFormats[key])} - definitions={exportFormatOptions} - /> - - <span className="mx_ExportDialog_subheading">{ _t("Messages") }</span> - - <Field - element="select" - value={exportType} - onChange={(e) => { - setExportType(exportTypes[e.target.value]); - }} + return ( + <BaseDialog + title={_t("Export Chat")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + hasCancel={true} + onFinished={onFinished} + fixedWidth={true} > - { exportTypeOptions } - </Field> - { messageCount } + <p> + { _t("Select from the options below to export chats from your timeline") } + </p> - <span className="mx_ExportDialog_subheading"> - { _t("Size Limit") } - </span> + <span className="mx_ExportDialog_subheading">{ _t("Format") }</span> - <Field - type="number" - autoComplete="off" - onValidate={onValidateSize} - element="input" - ref={sizeLimitRef} - value={sizeLimit} - postfixComponent={sizePostFix} - onChange={(e) => setSizeLimit(parseInt(e.target.value))} - /> + <StyledRadioGroup + name="feedbackRating" + value={exportFormat} + onChange={(key) => setExportFormat(exportFormats[key])} + definitions={exportFormatOptions} + /> - <StyledCheckbox - checked={includeAttachments} - onChange={(e) => - setAttachments((e.target as HTMLInputElement).checked) - } - > - { _t("Include Attachments") } - </StyledCheckbox> + <span className="mx_ExportDialog_subheading">{ _t("Messages") }</span> - <DialogButtons - primaryButton={_t("Export")} - onPrimaryButtonClick={onExportClick} - onCancel={() => onFinished(false)} - /> - </BaseDialog> + <Field + element="select" + value={exportType} + onChange={(e) => { + setExportType(exportTypes[e.target.value]); + }} + > + { exportTypeOptions } + </Field> + { messageCount } + + <span className="mx_ExportDialog_subheading">{ _t("Size Limit") }</span> + + <Field + type="number" + autoComplete="off" + onValidate={onValidateSize} + element="input" + ref={sizeLimitRef} + value={sizeLimit} + postfixComponent={sizePostFix} + onChange={(e) => setSizeLimit(parseInt(e.target.value))} + /> + + <StyledCheckbox + checked={includeAttachments} + onChange={(e) => + setAttachments((e.target as HTMLInputElement).checked) + } + > + { _t("Include Attachments") } + </StyledCheckbox> + + <DialogButtons + primaryButton={_t("Export")} + onPrimaryButtonClick={onExportClick} + onCancel={() => onFinished(false)} + /> + </BaseDialog> + ); } else if (displayCancel) { // Display cancel warning - <BaseDialog - title={_t("Warning")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <p> - {_t( - "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - )} - </p> - <DialogButtons - primaryButton={_t("Abort export process")} - primaryButtonClass="danger" - hasCancel={true} - cancelButton={_t("Continue")} - onCancel={() => setCancelWarning(false)} - onPrimaryButtonClick={confirmCanel} - /> - </BaseDialog> + return ( + <BaseDialog + title={_t("Warning")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <p> + {_t( + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + )} + </p> + <DialogButtons + primaryButton={_t("Abort export process")} + primaryButtonClass="danger" + hasCancel={true} + cancelButton={_t("Continue")} + onCancel={() => setCancelWarning(false)} + onPrimaryButtonClick={confirmCanel} + /> + </BaseDialog> + ); } else { // Display progress dialog - return <BaseDialog - title={_t("Exporting your data...")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <DialogButtons - primaryButton={_t("Cancel")} - primaryButtonClass="danger" - hasCancel={false} - onPrimaryButtonClick={onCancel} - /> - </BaseDialog> + return ( + <BaseDialog + title={_t("Exporting your data...")} + className="mx_ExportDialog" + contentId="mx_Dialog_content" + onFinished={onFinished} + fixedWidth={true} + > + <DialogButtons + primaryButton={_t("Cancel")} + primaryButtonClass="danger" + hasCancel={false} + onPrimaryButtonClick={onCancel} + /> + </BaseDialog> + ); } - - return componentToDisplay; }; export default ExportDialog; diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index cda237f69d..a9bea25851 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -73,16 +73,16 @@ export default class ReplyThread extends React.Component { this.unmounted = false; - if (this.props.forExport) return; + if (this.props.forExport) { + this.context.on("Event.replaced", this.onEventReplaced); + this.room = this.context.getRoom(this.props.parentEv.getRoomId()); + this.room.on("Room.redaction", this.onRoomRedaction); + this.room.on("Room.redactionCancelled", this.onRoomRedaction); - this.context.on("Event.replaced", this.onEventReplaced); - this.room = this.context.getRoom(this.props.parentEv.getRoomId()); - this.room.on("Room.redaction", this.onRoomRedaction); - this.room.on("Room.redactionCancelled", this.onRoomRedaction); - - this.onQuoteClick = this.onQuoteClick.bind(this); - this.canCollapse = this.canCollapse.bind(this); - this.collapse = this.collapse.bind(this); + this.onQuoteClick = this.onQuoteClick.bind(this); + this.canCollapse = this.canCollapse.bind(this); + this.collapse = this.collapse.bind(this); + } } static getParentEventId(ev) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 7489846008..3929cfa1a6 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2261,19 +2261,19 @@ "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", "Number of messages": "Number of messages", "MB": "MB", - "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - "Abort export process": "Abort export process", + "Export Cancelled": "Export Cancelled", + "The export was cancelled successfully": "The export was cancelled successfully", + "Okay": "Okay", + "Export Successful": "Export Successful", + "Your messages were successfully exported": "Your messages were successfully exported", "Export Chat": "Export Chat", "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", "Format": "Format", "Size Limit": "Size Limit", "Include Attachments": "Include Attachments", "Export": "Export", - "Export Successful": "Export Successful", - "Your messages were successfully exported": "Your messages were successfully exported", - "Okay": "Okay", - "Export Cancelled": "Export Cancelled", - "The export was cancelled successfully": "The export was cancelled successfully", + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + "Abort export process": "Abort export process", "Exporting your data...": "Exporting your data...", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index cbdc78a711..5c3b44da1b 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -10,35 +10,30 @@ import { EventType } from "matrix-js-sdk/src/@types/event"; export default class JSONExporter extends Exporter { protected totalSize: number; + protected messages: any[]; constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { super(room, exportType, exportOptions); this.totalSize = 0; + this.messages = []; } - protected wrapJSON(json: string): string { + protected createJSONString(): string { const exportDate = formatFullDateNoDayNoTime(new Date()); const creator = this.room.currentState.getStateEvents(EventType.RoomCreate, "")?.getSender(); const creatorName = this.room?.getMember(creator)?.rawDisplayName || creator; const topic = this.room.currentState.getStateEvents(EventType.RoomTopic, "")?.getContent()?.topic || ""; const exporter = this.client.getUserId(); const exporterName = this.room?.getMember(exporter)?.rawDisplayName || exporter; - return `{ - "room_name": "${this.room.name}", - "room_creator": "${creatorName}", - "topic": "${topic}", - "export_date": "${exportDate}", - "exported_by": "${exporterName}", - "messages": [ -${json} - ] -}` - } - - protected indentEachLine(JSONString: string, spaces: number) { - const indent = ' '; - const regex = /^(?!\s*$)/gm; - return JSONString.replace(regex, indent.repeat(spaces)); + const jsonObject = { + room_name: this.room.name, + room_creator: creatorName, + topic, + export_date: exportDate, + exported_by: exporterName, + messages: this.messages, + } + return JSON.stringify(jsonObject, null, 2); } protected async getJSONString(mxEv: MatrixEvent) { @@ -57,18 +52,16 @@ ${json} } const jsonEvent: any = mxEv.toJSON(); const clearEvent = mxEv.isEncrypted() ? jsonEvent.decrypted : jsonEvent; - const jsonString = JSON.stringify(clearEvent, null, 2); - return jsonString.length > 2 ? jsonString + ",\n" : ""; + return clearEvent; } protected async createOutput(events: MatrixEvent[]) { - let content = ""; for (const event of events) { if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; - content += await this.getJSONString(event); + this.messages.push(await this.getJSONString(event)); } - return this.wrapJSON(this.indentEachLine(content.slice(0, -2), 2)); + return this.createJSONString(); } public async export() { From 6cbbc0ecb4d1be96e0aace9719bf0a03419f855b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 11:29:05 +0530 Subject: [PATCH 114/176] Replace hard coded forExport string by mxc url --- src/components/views/messages/MAudioBody.js | 2 +- src/components/views/messages/MImageBody.js | 2 +- src/components/views/messages/MVideoBody.tsx | 2 +- src/utils/exportUtils/HtmlExport.tsx | 4 +++- src/utils/exportUtils/StreamToZip.ts | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/views/messages/MAudioBody.js b/src/components/views/messages/MAudioBody.js index 6c6a0527ea..9a8d401185 100644 --- a/src/components/views/messages/MAudioBody.js +++ b/src/components/views/messages/MAudioBody.js @@ -42,7 +42,7 @@ export default class MAudioBody extends React.Component { } _getContentUrl() { - if (this.props.forExport) return "forExport"; + if (this.props.forExport) return this.props.mxEvent.getContent().url; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index d854baec46..2916391f58 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -172,7 +172,7 @@ export default class MImageBody extends React.Component { } _getContentUrl() { - if (this.props.forExport) return "forExport"; + if (this.props.forExport) return this.props.mxEvent.getContent().url; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index a6d849e836..505a1b5a7e 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -78,7 +78,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } private getContentUrl(): string|null { - if (this.props.forExport) return "forExport"; + if (this.props.forExport) return this.props.mxEvent.getContent().url; const media = mediaFromContent(this.props.mxEvent.getContent()); if (media.isEncrypted) { return this.state.decryptedUrl; diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 7ece487cf7..f96efaea4b 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -263,7 +263,9 @@ export default class HTMLExporter extends Exporter { </MatrixClientContext.Provider> </div> let eventTileMarkup = renderToStaticMarkup(eventTile); - if (filePath) eventTileMarkup = eventTileMarkup.replace(/(src=|href=)"forExport"/g, `$1"${filePath}"`); + if (filePath) { + eventTileMarkup = eventTileMarkup.split(mxEv.getContent().url).join(filePath); + } if (hasAvatar) { eventTileMarkup = eventTileMarkup.replace( encodeURI(this.getAvatarURL(mxEv)).replace(/&/g, '&'), diff --git a/src/utils/exportUtils/StreamToZip.ts b/src/utils/exportUtils/StreamToZip.ts index a411d35190..5e5b692793 100644 --- a/src/utils/exportUtils/StreamToZip.ts +++ b/src/utils/exportUtils/StreamToZip.ts @@ -136,7 +136,8 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { const date = new Date(typeof fileLike.lastModified === 'undefined' ? Date.now() : fileLike.lastModified); if (fileLike.directory && !name.endsWith('/')) name += '/'; - if (files[name]) throw new Error('File already exists.'); + // if file already exists, do not enqueue + if (files[name]) return; const nameBuf = encoder.encode(name); filenames.push(name); From 3fc4be0be9d77001f2649ce2f97bd032651a7e9d Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 11:40:26 +0530 Subject: [PATCH 115/176] Add return types to ABC Exporter --- src/utils/exportUtils/Exporter.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index e26d25f595..3f2e8e3caa 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -35,12 +35,12 @@ export default abstract class Exporter { window.addEventListener("onunload", this.abortWriter); } - protected onBeforeUnload(e: BeforeUnloadEvent) { + protected onBeforeUnload(e: BeforeUnloadEvent): string { e.preventDefault(); return e.returnValue = "Are you sure you want to exit during this export?"; } - protected addFile(filePath: string, blob: Blob) { + protected addFile(filePath: string, blob: Blob): void { const file = { name: filePath, stream: () => blob.stream(), @@ -48,7 +48,7 @@ export default abstract class Exporter { this.files.push(file); } - protected async downloadZIP() { + protected async downloadZIP(): Promise<any> { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; // Support for older browsers @@ -78,14 +78,14 @@ export default abstract class Exporter { await this.pumpToFileStream(reader); } - protected cleanUp() { + protected cleanUp(): string { console.log("Cleaning up..."); window.removeEventListener("beforeunload", this.onBeforeUnload); window.removeEventListener("onunload", this.abortWriter); return ""; } - public async cancelExport() { + public async cancelExport(): Promise<void> { console.log("Cancelling export..."); this.cancelled = true; await this.abortWriter(); @@ -105,7 +105,7 @@ export default abstract class Exporter { await this.writer?.abort(); } - protected async pumpToFileStream(reader: ReadableStreamDefaultReader) { + protected async pumpToFileStream(reader: ReadableStreamDefaultReader): Promise<void> { const res = await reader.read(); if (res.done) await this.writer.close(); else { @@ -114,7 +114,7 @@ export default abstract class Exporter { } } - protected setEventMetadata(event: MatrixEvent) { + protected setEventMetadata(event: MatrixEvent): MatrixEvent { const roomState = this.client.getRoom(this.room.roomId).currentState; event.sender = roomState.getSentinelMember( event.getSender(), @@ -127,7 +127,7 @@ export default abstract class Exporter { return event; } - protected getLimit() { + protected getLimit(): number { let limit: number; switch (this.exportType) { case exportTypes.LAST_N_MESSAGES: @@ -195,7 +195,7 @@ export default abstract class Exporter { return events; } - protected async getMediaBlob(event: MatrixEvent) { + protected async getMediaBlob(event: MatrixEvent): Promise<Blob> { let blob: Blob; try { const isEncrypted = event.isEncrypted(); @@ -215,7 +215,7 @@ export default abstract class Exporter { return blob; } - protected splitFileName(file: string) { + protected splitFileName(file: string): string[] { const lastDot = file.lastIndexOf('.'); if (lastDot === -1) return [file, ""]; const fileName = file.slice(0, lastDot); @@ -223,7 +223,7 @@ export default abstract class Exporter { return [fileName, '.' + ext]; } - protected getFilePath(event: MatrixEvent) { + protected getFilePath(event: MatrixEvent): string { const mediaType = event.getContent().msgtype; let fileDirectory: string; switch (mediaType) { @@ -245,7 +245,7 @@ export default abstract class Exporter { return fileDirectory + "/" + fileName + '-' + fileDate + fileExt; } - protected isReply(event: MatrixEvent) { + protected isReply(event: MatrixEvent): boolean { const isEncrypted = event.isEncrypted(); // If encrypted, in_reply_to lies in event.event.content const content = isEncrypted ? event.event.content : event.getContent(); @@ -253,7 +253,7 @@ export default abstract class Exporter { return !!(relatesTo && relatesTo["m.in_reply_to"]); } - protected isAttachment(mxEv: MatrixEvent) { + protected isAttachment(mxEv: MatrixEvent): boolean { const attachmentTypes = ["m.sticker", "m.image", "m.file", "m.video", "m.audio"]; return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); } From 747273cc9caaed6134a64bb40036519ea20bfbdf Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 12:06:58 +0530 Subject: [PATCH 116/176] Convert input's value to string to use existing types --- src/components/views/dialogs/ExportDialog.tsx | 8 ++++---- src/components/views/elements/Field.tsx | 2 +- src/components/views/messages/MFileBody.js | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 21239edb3c..16d144c87b 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -116,7 +116,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { return { valid: false, feedback: _t("Size must be a number") }; } - if (min >= parsedSize || parsedSize >= max) { + if (min > parsedSize || parsedSize > max) { return { valid: false, feedback: _t( @@ -149,7 +149,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; } - if (min >= parsedSize || parsedSize >= max) { + if (min > parsedSize || parsedSize > max) { return { valid: false, feedback: _t( @@ -199,7 +199,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <Field element="input" type="number" - value={numberOfMessages} + value={numberOfMessages.toString()} ref={messageCountRef} onValidate={onValidateNumberOfMessages} label={_t("Number of messages")} @@ -295,7 +295,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onValidate={onValidateSize} element="input" ref={sizeLimitRef} - value={sizeLimit} + value={sizeLimit.toString()} postfixComponent={sizePostFix} onChange={(e) => setSizeLimit(parseInt(e.target.value))} /> diff --git a/src/components/views/elements/Field.tsx b/src/components/views/elements/Field.tsx index ca02df71a9..1373c2df0e 100644 --- a/src/components/views/elements/Field.tsx +++ b/src/components/views/elements/Field.tsx @@ -77,7 +77,7 @@ export interface IInputProps extends IProps, InputHTMLAttributes<HTMLInputElemen // The element to create. Defaults to "input". element?: "input"; // The input's value. This is a controlled component, so the value is required. - value: string | number; + value: string; } interface ISelectProps extends IProps, SelectHTMLAttributes<HTMLSelectElement> { diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index af1c011f30..d1a2903d76 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -187,7 +187,7 @@ export default class MFileBody extends React.Component { if (this.props.forExport) { return <span className="mx_MFileBody"> - <a href="forExport"> + <a href={this.props.mxEvent.getContent().url}> { placeholder } </a> </span>; From 497d8102e213b00792947a70695a0aaf747b95c3 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 12:54:44 +0530 Subject: [PATCH 117/176] Handle mxc urls for non-encrypted rooms --- src/components/views/messages/MAudioBody.js | 5 +++-- src/components/views/messages/MFileBody.js | 3 ++- src/components/views/messages/MImageBody.js | 5 +++-- src/components/views/messages/MVideoBody.tsx | 5 +++-- src/utils/exportUtils/HtmlExport.tsx | 5 +++-- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/components/views/messages/MAudioBody.js b/src/components/views/messages/MAudioBody.js index 9a8d401185..2258aa1713 100644 --- a/src/components/views/messages/MAudioBody.js +++ b/src/components/views/messages/MAudioBody.js @@ -42,8 +42,9 @@ export default class MAudioBody extends React.Component { } _getContentUrl() { - if (this.props.forExport) return this.props.mxEvent.getContent().url; - const media = mediaFromContent(this.props.mxEvent.getContent()); + const content = this.props.mxEvent.getContent(); + if (this.props.forExport) return content.file?.url || content.url; + const media = mediaFromContent(content); if (media.isEncrypted) { return this.state.decryptedUrl; } else { diff --git a/src/components/views/messages/MFileBody.js b/src/components/views/messages/MFileBody.js index d1a2903d76..c33ad5f21b 100644 --- a/src/components/views/messages/MFileBody.js +++ b/src/components/views/messages/MFileBody.js @@ -186,8 +186,9 @@ export default class MFileBody extends React.Component { } if (this.props.forExport) { + const content = this.props.mxEvent.getContent(); return <span className="mx_MFileBody"> - <a href={this.props.mxEvent.getContent().url}> + <a href={content.file?.url || content.url}> { placeholder } </a> </span>; diff --git a/src/components/views/messages/MImageBody.js b/src/components/views/messages/MImageBody.js index 2916391f58..9229755d29 100644 --- a/src/components/views/messages/MImageBody.js +++ b/src/components/views/messages/MImageBody.js @@ -172,8 +172,9 @@ export default class MImageBody extends React.Component { } _getContentUrl() { - if (this.props.forExport) return this.props.mxEvent.getContent().url; - const media = mediaFromContent(this.props.mxEvent.getContent()); + const content = this.props.mxEvent.getContent(); + if (this.props.forExport) return content.url || content.file.url; + const media = mediaFromContent(content); if (media.isEncrypted) { return this.state.decryptedUrl; } else { diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 505a1b5a7e..ec9cbcf7b5 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -78,8 +78,9 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { } private getContentUrl(): string|null { - if (this.props.forExport) return this.props.mxEvent.getContent().url; - const media = mediaFromContent(this.props.mxEvent.getContent()); + const content = this.props.mxEvent.getContent(); + if (this.props.forExport) return content.file?.url || content.url; + const media = mediaFromContent(content); if (media.isEncrypted) { return this.state.decryptedUrl; } else { diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index f96efaea4b..f05581a6cb 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -264,7 +264,8 @@ export default class HTMLExporter extends Exporter { </div> let eventTileMarkup = renderToStaticMarkup(eventTile); if (filePath) { - eventTileMarkup = eventTileMarkup.split(mxEv.getContent().url).join(filePath); + const mxc = mxEv.getContent().url || mxEv.getContent().file?.url; + eventTileMarkup = eventTileMarkup.split(mxc).join(filePath); } if (hasAvatar) { eventTileMarkup = eventTileMarkup.replace( @@ -305,7 +306,7 @@ export default class HTMLExporter extends Exporter { } this.addFile(filePath, blob); } catch (e) { - console.log("Error while fetching file"); + console.log("Error while fetching file" + e); eventTile = await this.getEventTile( this.createModifiedEvent(_t("Error fetching file"), mxEv), joined, From b0be7d2861af9eb3a4ef3af6e60c4cc0da843168 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 29 Jun 2021 19:43:21 +0530 Subject: [PATCH 118/176] Add license and negate the conditional --- src/components/views/elements/ReplyThread.js | 2 +- src/utils/exportUtils/Exporter.ts | 2 +- src/utils/exportUtils/{StreamToZip.ts => ZipStream.ts} | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) rename src/utils/exportUtils/{StreamToZip.ts => ZipStream.ts} (98%) diff --git a/src/components/views/elements/ReplyThread.js b/src/components/views/elements/ReplyThread.js index a9bea25851..1ca68f18a8 100644 --- a/src/components/views/elements/ReplyThread.js +++ b/src/components/views/elements/ReplyThread.js @@ -73,7 +73,7 @@ export default class ReplyThread extends React.Component { this.unmounted = false; - if (this.props.forExport) { + if (!this.props.forExport) { this.context.on("Event.replaced", this.onEventReplaced); this.room = this.context.getRoom(this.props.parentEv.getRoomId()); this.room.on("Room.redaction", this.onRoomRedaction); diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 3f2e8e3caa..1a0b9fe187 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -7,7 +7,7 @@ import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; import { MatrixClient } from "matrix-js-sdk"; -import streamToZIP from "./StreamToZip"; +import streamToZIP from "./ZipStream"; import * as ponyfill from "web-streams-polyfill/ponyfill" import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers diff --git a/src/utils/exportUtils/StreamToZip.ts b/src/utils/exportUtils/ZipStream.ts similarity index 98% rename from src/utils/exportUtils/StreamToZip.ts rename to src/utils/exportUtils/ZipStream.ts index 5e5b692793..4cb9060915 100644 --- a/src/utils/exportUtils/StreamToZip.ts +++ b/src/utils/exportUtils/ZipStream.ts @@ -1,3 +1,5 @@ +// Based on https://github.com/jimmywarting/StreamSaver.js/blob/master/examples/zip-stream.js + /* global ReadableStream */ type TypedArray = From 7d5db4689c04bb3c012747db25ad11af7bf80b0b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 30 Jun 2021 10:03:33 +0530 Subject: [PATCH 119/176] Disable close icon during export --- src/components/views/dialogs/ExportDialog.tsx | 5 +++-- src/i18n/strings/en_EN.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 16d144c87b..ff542bfbf4 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -268,7 +268,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <span className="mx_ExportDialog_subheading">{ _t("Format") }</span> <StyledRadioGroup - name="feedbackRating" + name="exportFormat" value={exportFormat} onChange={(key) => setExportFormat(exportFormats[key])} definitions={exportFormatOptions} @@ -332,7 +332,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { )} </p> <DialogButtons - primaryButton={_t("Abort export process")} + primaryButton={_t("Stop")} primaryButtonClass="danger" hasCancel={true} cancelButton={_t("Continue")} @@ -348,6 +348,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { title={_t("Exporting your data...")} className="mx_ExportDialog" contentId="mx_Dialog_content" + hasCancel={false} onFinished={onFinished} fixedWidth={true} > diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 3929cfa1a6..c6a3e033ec 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2273,7 +2273,7 @@ "Include Attachments": "Include Attachments", "Export": "Export", "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - "Abort export process": "Abort export process", + "Stop": "Stop", "Exporting your data...": "Exporting your data...", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", From 08d886e9d1e6782cf2c2eaf2b5fb70f0982181c1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 30 Jun 2021 14:08:22 +0530 Subject: [PATCH 120/176] Delint --- src/TextForEvent.tsx | 4 +- src/components/views/messages/MVideoBody.tsx | 2 +- .../views/right_panel/RoomSummaryCard.tsx | 2 +- src/components/views/rooms/RoomHeader.js | 1 - src/utils/exportUtils/Exporter.ts | 14 ++-- src/utils/exportUtils/HtmlExport.tsx | 65 ++++++++++--------- src/utils/exportUtils/JSONExport.ts | 7 +- src/utils/exportUtils/PlainTextExport.ts | 11 ++-- src/utils/exportUtils/ZipStream.ts | 38 +++++------ src/utils/exportUtils/exportCSS.ts | 6 +- src/utils/exportUtils/exportJS.ts | 2 +- src/utils/exportUtils/exportUtils.ts | 4 +- 12 files changed, 77 insertions(+), 79 deletions(-) diff --git a/src/TextForEvent.tsx b/src/TextForEvent.tsx index 32e4a2d1fa..c4cc8d71df 100644 --- a/src/TextForEvent.tsx +++ b/src/TextForEvent.tsx @@ -277,9 +277,9 @@ function textForMessageEvent(ev: MatrixEvent): () => string | null { if (ev.getContent().msgtype === "m.emote") { message = "* " + senderDisplayName + " " + message; } else if (ev.getContent().msgtype === "m.image") { - message = _t('%(senderDisplayName)s sent an image.', {senderDisplayName}); + message = _t('%(senderDisplayName)s sent an image.', { senderDisplayName }); } else if (ev.getType() == "m.sticker") { - message = _t('%(senderDisplayName)s sent a sticker.', {senderDisplayName}); + message = _t('%(senderDisplayName)s sent a sticker.', { senderDisplayName }); } else message = senderDisplayName + ': ' + message; return message; }; diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 67394875f6..8950574c66 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -194,7 +194,7 @@ export default class MVideoBody extends React.PureComponent<IProps, IState> { private getFileBody = () => { if (this.props.forExport) return null; return <MFileBody {...this.props} decryptedBlob={this.state.decryptedBlob} showGenericPlaceholder={false} />; - } + }; render() { const content = this.props.mxEvent.getContent(); diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index 75049811e1..8766400729 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -234,7 +234,7 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { }; const onRoomExportClick = async () => { - const {default: ExportDialog} = await import("../dialogs/ExportDialog"); + const { default: ExportDialog } = await import("../dialogs/ExportDialog"); Modal.createTrackedDialog('export room dialog', '', ExportDialog, { room, diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index ed90760e48..886317f2bf 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -32,7 +32,6 @@ import RoomName from "../elements/RoomName"; import { PlaceCallType } from "../../../CallHandler"; import { replaceableComponent } from "../../../utils/replaceableComponent"; - @replaceableComponent("views.rooms.RoomHeader") export default class RoomHeader extends React.Component { static propTypes = { diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 1a0b9fe187..7d7b1bed16 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -8,7 +8,7 @@ import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; import { MatrixClient } from "matrix-js-sdk"; import streamToZIP from "./ZipStream"; -import * as ponyfill from "web-streams-polyfill/ponyfill" +import * as ponyfill from "web-streams-polyfill/ponyfill"; import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers type FileStream = { @@ -44,7 +44,7 @@ export default abstract class Exporter { const file = { name: filePath, stream: () => blob.stream(), - } + }; this.files.push(file); } @@ -52,7 +52,7 @@ export default abstract class Exporter { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; // Support for older browsers - streamSaver.WritableStream = ponyfill.WritableStream + streamSaver.WritableStream = ponyfill.WritableStream; // Create a writable stream to the directory this.fileStream = streamSaver.createWriteStream(filename); @@ -72,9 +72,9 @@ export default abstract class Exporter { if (this.cancelled) return this.cleanUp(); - console.info("Writing to the file system...") + console.info("Writing to the file system..."); - const reader = readableZipStream.getReader() + const reader = readableZipStream.getReader(); await this.pumpToFileStream(reader); } @@ -93,7 +93,7 @@ export default abstract class Exporter { protected async downloadPlainText(fileName: string, text: string): Promise<any> { this.fileStream = streamSaver.createWriteStream(fileName); - this.writer = this.fileStream.getWriter() + this.writer = this.fileStream.getWriter(); const data = new TextEncoder().encode(text); if (this.cancelled) return this.cleanUp(); await this.writer.write(data); @@ -142,7 +142,7 @@ export default abstract class Exporter { return limit; } - protected async getRequiredEvents():Promise<MatrixEvent[]> { + protected async getRequiredEvents(): Promise<MatrixEvent[]> { const eventMapper = this.client.getEventMapper(); let prevToken: string|null = null; diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index f05581a6cb..3c19c4280b 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -1,9 +1,9 @@ -import React from "react" +import React from "react"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import { renderToStaticMarkup } from 'react-dom/server' +import { renderToStaticMarkup } from "react-dom/server"; import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; import { formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; @@ -191,7 +191,7 @@ export default class HTMLExporter extends Exporter { </section> <div id="snackbar"/> </body> - </html>` + </html>`; } protected getAvatarURL(event: MatrixEvent): string { @@ -236,32 +236,35 @@ export default class HTMLExporter extends Exporter { const hasAvatar = !!this.getAvatarURL(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); - const eventTile = <div className="mx_Export_EventWrapper" id={mxEv.getId()}> - <MatrixClientContext.Provider value = {this.client}> - <EventTile - mxEvent={mxEv} - continuation={continuation} - isRedacted={mxEv.isRedacted()} - replacingEventId={mxEv.replacingEventId()} - forExport={true} - readReceipts={null} - readReceiptMap={null} - showUrlPreview={false} - checkUnmounting={() => false} - isTwelveHour={false} - last={false} - lastInSection={false} - permalinkCreator={this.permalinkCreator} - lastSuccessful={false} - isSelectedEvent={false} - getRelationsForEvent={null} - showReactions={false} - layout={Layout.Group} - enableFlair={false} - showReadReceipts={false} - /> - </MatrixClientContext.Provider> - </div> + const eventTile = ( + <div className="mx_Export_EventWrapper" id={mxEv.getId()}> + <MatrixClientContext.Provider value={this.client}> + <EventTile + mxEvent={mxEv} + continuation={continuation} + isRedacted={mxEv.isRedacted()} + replacingEventId={mxEv.replacingEventId()} + forExport={true} + readReceipts={null} + readReceiptMap={null} + showUrlPreview={false} + checkUnmounting={() => false} + isTwelveHour={false} + last={false} + lastInSection={false} + permalinkCreator={this.permalinkCreator} + lastSuccessful={false} + isSelectedEvent={false} + getRelationsForEvent={null} + showReactions={false} + layout={Layout.Group} + enableFlair={false} + showReadReceipts={false} + /> + </MatrixClientContext.Provider> + </div> + ); + let eventTileMarkup = renderToStaticMarkup(eventTile); if (filePath) { const mxc = mxEv.getContent().url || mxEv.getContent().file?.url; @@ -282,7 +285,7 @@ export default class HTMLExporter extends Exporter { body: `*${text}*`, format: "org.matrix.custom.html", formatted_body: `<em>${text}</em>`, - } + }; const modifiedEvent = new MatrixEvent(); modifiedEvent.event = mxEv.event; modifiedEvent.sender = mxEv.sender; @@ -367,7 +370,7 @@ export default class HTMLExporter extends Exporter { if (this.cancelled) { console.info("Export cancelled successfully"); } else { - console.info("Export successful!") + console.info("Export successful!"); console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); } diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 5c3b44da1b..37f5724289 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -7,7 +7,6 @@ import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import { EventType } from "matrix-js-sdk/src/@types/event"; - export default class JSONExporter extends Exporter { protected totalSize: number; protected messages: any[]; @@ -32,7 +31,7 @@ export default class JSONExporter extends Exporter { export_date: exportDate, exported_by: exporterName, messages: this.messages, - } + }; return JSON.stringify(jsonObject, null, 2); } @@ -90,11 +89,11 @@ export default class JSONExporter extends Exporter { if (this.cancelled) { console.info("Export cancelled successfully"); } else { - console.info("Export successful!") + console.info("Export successful!"); console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); } - this.cleanUp() + this.cleanUp(); } } diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index d6d686a841..0ab9407415 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -8,7 +8,6 @@ import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; - export default class PlainTextExporter extends Exporter { protected totalSize: number; protected mediaOmitText: string; @@ -21,7 +20,7 @@ export default class PlainTextExporter extends Exporter { : _t("Media omitted - file size limit exceeded"); } - protected textForReplyEvent = (ev : MatrixEvent) => { + protected textForReplyEvent = (ev: MatrixEvent) => { const REPLY_REGEX = /> <(.*?)>(.*?)\n\n(.*)/; const REPLY_SOURCE_MAX_LENGTH = 32; const content = ev.getContent(); @@ -36,7 +35,7 @@ export default class PlainTextExporter extends Exporter { rplSource = match[2].substring(1, REPLY_SOURCE_MAX_LENGTH); // Get the first non-blank line from the source. - const lines = rplSource.split('\n').filter((line) => !/^\s*$/.test(line)) + const lines = rplSource.split('\n').filter((line) => !/^\s*$/.test(line)); if (lines.length > 0) { // Cut to a maximum length. rplSource = lines[0].substring(0, REPLY_SOURCE_MAX_LENGTH); @@ -52,7 +51,7 @@ export default class PlainTextExporter extends Exporter { } return `<${rplName}${rplSource}> ${rplText}`; - } + }; protected _textForEvent = async (mxEv: MatrixEvent) => { const senderDisplayName = mxEv.sender && mxEv.sender.name ? mxEv.sender.name : mxEv.getSender(); @@ -76,7 +75,7 @@ export default class PlainTextExporter extends Exporter { } if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv) + mediaText; else return textForEvent(mxEv) + mediaText; - } + }; protected async createOutput(events: MatrixEvent[]) { let content = ""; @@ -115,7 +114,7 @@ export default class PlainTextExporter extends Exporter { if (this.cancelled) { console.info("Export cancelled successfully"); } else { - console.info("Export successful!") + console.info("Export successful!"); console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); } diff --git a/src/utils/exportUtils/ZipStream.ts b/src/utils/exportUtils/ZipStream.ts index 4cb9060915..098e2ed12c 100644 --- a/src/utils/exportUtils/ZipStream.ts +++ b/src/utils/exportUtils/ZipStream.ts @@ -13,7 +13,6 @@ type TypedArray = | Float32Array | Float64Array; - /** * 32-bit cyclic redundancy check, or CRC-32 - checksum */ @@ -23,8 +22,8 @@ class Crc32 { constructor() { this.crc = -1; this.table = (() => { - let i - let j + let i; + let j; let t; const table = []; @@ -37,8 +36,8 @@ class Crc32 { } table[i] = t; } - return table - })() + return table; + })(); } append(data: TypedArray) { @@ -55,25 +54,24 @@ class Crc32 { } } - type DataHelper = { array: Uint8Array, view: DataView, -} +}; const getDataHelper = (byteLength: number): DataHelper => { - const uint8 = new Uint8Array(byteLength) + const uint8 = new Uint8Array(byteLength); return { array: uint8, view: new DataView(uint8.buffer), }; -} +}; type FileLike = File & { directory: string, comment: string, stream(): ReadableStream, -} +}; type ZipObj = { crc?: Crc32, @@ -88,7 +86,7 @@ type ZipObj = { fileLike: FileLike, level: number, directory: boolean, -} +}; const pump = (zipObj: ZipObj) => zipObj.reader ? zipObj.reader.read().then(chunk => { if (zipObj.crc) { @@ -124,7 +122,7 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { desiredSize: null, error(err) { - console.error(err) + console.error(err); }, enqueue(fileLike: FileLike) { @@ -155,8 +153,8 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { offset, writeHeader() { - const header = getDataHelper(26) - const data = getDataHelper(30 + nameBuf.length) + const header = getDataHelper(26); + const data = getDataHelper(30 + nameBuf.length); zipObject.offset = offset; zipObject.header = header; @@ -200,10 +198,10 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { ctrl.enqueue(footer.array); offset += zipObject.compressedLength + 16; - next() + next(); }, fileLike, - } + }; if (!activeZipObject) { activeZipObject = zipObject; @@ -220,11 +218,11 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { if (!activeZipObject) closeZip(); closed = true; }, - } + }; function closeZip() { let length = 0; - let index = 0 + let index = 0; let indexFilename; let file; @@ -232,7 +230,7 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { file = files[filenames[indexFilename]]; length += 46 + file.nameBuf.length + file.comment.length; } - const data = getDataHelper(length + 22) + const data = getDataHelper(length + 22); for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { file = files[filenames[indexFilename]]; data.view.setUint32(index, 0x504b0102); @@ -275,7 +273,7 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { return processNextChunk() || ( underlyingSource.pull && Promise.resolve(underlyingSource.pull(zipWriter)) - ) + ); }, }); } diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 0a3ccfb935..7d07f19998 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -19464,7 +19464,7 @@ a.mx_RoomPreviewBar_inviter { -webkit-transform: scaleX(-1); transform: scaleX(-1); } -` +`; const customCSS = ` #snackbar { display: flex; @@ -19567,8 +19567,8 @@ img { overflow: hidden; } -` +`; -const markdownCSS = `.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}` +const markdownCSS = `.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}`; export default lightCSS + markdownCSS + customCSS; diff --git a/src/utils/exportUtils/exportJS.ts b/src/utils/exportUtils/exportJS.ts index 2f7ba550e7..21b10b50d5 100644 --- a/src/utils/exportUtils/exportJS.ts +++ b/src/utils/exportUtils/exportJS.ts @@ -24,4 +24,4 @@ document.querySelectorAll('.mx_reply_anchor').forEach(element => { }) } -` +`; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 7587ca4524..6fa5ab9869 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -22,7 +22,7 @@ export const textForFormat = (format: string): string => { case exportFormats.PLAIN_TEXT: return _t("Plain Text"); } -} +}; export const textForType = (type: string): string => { switch (type) { @@ -35,7 +35,7 @@ export const textForType = (type: string): string => { // case exportTypes.START_DATE: // return _t("From a specific date"); } -} +}; export interface exportOptions { startDate?: number; From 6ca664636e523d83a45bb610c1e24053cef09c51 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 2 Jul 2021 10:23:25 +0530 Subject: [PATCH 121/176] Display progress --- src/components/views/dialogs/ExportDialog.tsx | 5 +++++ src/utils/exportUtils/Exporter.ts | 18 +++++++++++---- src/utils/exportUtils/HtmlExport.tsx | 22 ++++++++++++------- src/utils/exportUtils/JSONExport.ts | 13 ++++++++--- src/utils/exportUtils/PlainTextExport.ts | 19 +++++++++++----- 5 files changed, 56 insertions(+), 21 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index ff542bfbf4..d82bc1efd8 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -29,6 +29,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [exportType, setExportType] = useState(exportTypes.TIMELINE); const [includeAttachments, setAttachments] = useState(false); const [isExporting, setExporting] = useState(false); + const [exportProgressText, setExportProgressText] = useState(""); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); const sizeLimitRef = useRef<Field>(); @@ -58,6 +59,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, exportTypes[exportType], exportOptions, + setExportProgressText, ), ); break; @@ -67,6 +69,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, exportTypes[exportType], exportOptions, + setExportProgressText, ), ); break; @@ -76,6 +79,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, exportTypes[exportType], exportOptions, + setExportProgressText, ), ); break; @@ -352,6 +356,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onFinished={onFinished} fixedWidth={true} > + <p> { exportProgressText } </p> <DialogButtons primaryButton={_t("Cancel")} primaryButtonClass="danger" diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 7d7b1bed16..3da058233d 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -26,7 +26,8 @@ export default abstract class Exporter { protected constructor( protected room: Room, protected exportType: exportTypes, - protected exportOptions?: exportOptions, + protected exportOptions: exportOptions, + protected setProgressText: React.Dispatch<React.SetStateAction<string>>, ) { this.cancelled = false; this.files = []; @@ -40,6 +41,11 @@ export default abstract class Exporter { return e.returnValue = "Are you sure you want to exit during this export?"; } + protected updateProgress(progress: string, log = true, show = true): void { + if (log) console.log(progress); + if (show) this.setProgressText(progress); + } + protected addFile(filePath: string, blob: Blob): void { const file = { name: filePath, @@ -57,7 +63,7 @@ export default abstract class Exporter { // Create a writable stream to the directory this.fileStream = streamSaver.createWriteStream(filename); - if (!this.cancelled) console.info("Generating a ZIP..."); + if (!this.cancelled) this.updateProgress("Generating a ZIP..."); else return this.cleanUp(); this.writer = this.fileStream.getWriter(); @@ -72,7 +78,7 @@ export default abstract class Exporter { if (this.cancelled) return this.cleanUp(); - console.info("Writing to the file system..."); + this.updateProgress("Writing to the file system..."); const reader = readableZipStream.getReader(); await this.pumpToFileStream(reader); @@ -172,7 +178,11 @@ export default abstract class Exporter { } events.push(mxEv); } - console.log("Fetched " + events.length + " events so far."); + this.updateProgress( + ("Fetched " + events.length + " events ") + (this.exportType === exportTypes.LAST_N_MESSAGES + ? `out of ${this.exportOptions.numberOfMessages}...` + : "so far..."), + ); prevToken = res.end; } // Reverse the events so that we preserve the order diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 3c19c4280b..fc963a27b8 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -27,8 +27,13 @@ export default class HTMLExporter extends Exporter { protected totalSize: number; protected mediaOmitText: string; - constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { - super(room, exportType, exportOptions); + constructor( + room: Room, + exportType: exportTypes, + exportOptions: exportOptions, + setProgressText: React.Dispatch<React.SetStateAction<string>>, + ) { + super(room, exportType, exportOptions, setProgressText); this.avatars = new Map<string, boolean>(); this.permalinkCreator = new RoomPermalinkCreator(this.room); this.totalSize = 0; @@ -328,6 +333,7 @@ export default class HTMLExporter extends Exporter { let prevEvent = null; for (let i = 0; i < events.length; i++) { const event = events[i]; + if (i % 100 == 0) this.updateProgress(`Processing event ${i ? i : 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; @@ -343,16 +349,16 @@ export default class HTMLExporter extends Exporter { } public async export() { - console.info("Starting export process..."); - console.info("Fetching events..."); + this.updateProgress("Starting export process...", true, false); + this.updateProgress("Fetching events..."); const fetchStart = performance.now(); const res = await this.getRequiredEvents(); const fetchEnd = performance.now(); - console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); + this.updateProgress(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`, true, false); - console.info("Creating HTML..."); + this.updateProgress("Creating HTML..."); const html = await this.createHTML(res); this.addFile("index.html", new Blob([html])); @@ -370,8 +376,8 @@ export default class HTMLExporter extends Exporter { if (this.cancelled) { console.info("Export cancelled successfully"); } else { - console.info("Export successful!"); - console.log(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); + this.updateProgress("Export successful!"); + this.updateProgress(`Exported ${res.length} events in ${(exportEnd - fetchStart)/1000} seconds`); } this.cleanUp(); diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 37f5724289..7b2a4f57a9 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -11,8 +11,13 @@ export default class JSONExporter extends Exporter { protected totalSize: number; protected messages: any[]; - constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { - super(room, exportType, exportOptions); + constructor( + room: Room, + exportType: exportTypes, + exportOptions: exportOptions, + setProgressText: React.Dispatch<React.SetStateAction<string>>, + ) { + super(room, exportType, exportOptions, setProgressText); this.totalSize = 0; this.messages = []; } @@ -55,7 +60,9 @@ export default class JSONExporter extends Exporter { } protected async createOutput(events: MatrixEvent[]) { - for (const event of events) { + for (let i = 0; i < events.length; i++) { + const event = events[i]; + if (i % 100 == 0) this.updateProgress(`Processing event ${i ? i : 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; this.messages.push(await this.getJSONString(event)); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 0ab9407415..c437c52de9 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -12,8 +12,13 @@ export default class PlainTextExporter extends Exporter { protected totalSize: number; protected mediaOmitText: string; - constructor(room: Room, exportType: exportTypes, exportOptions: exportOptions) { - super(room, exportType, exportOptions); + constructor( + room: Room, + exportType: exportTypes, + exportOptions: exportOptions, + setProgressText: React.Dispatch<React.SetStateAction<string>>, + ) { + super(room, exportType, exportOptions, setProgressText); this.totalSize = 0; this.mediaOmitText = !this.exportOptions.attachmentsIncluded ? _t("Media omitted") @@ -79,7 +84,9 @@ export default class PlainTextExporter extends Exporter { protected async createOutput(events: MatrixEvent[]) { let content = ""; - for (const event of events) { + for (let i = 0; i < events.length; i++) { + const event = events[i]; + if (i % 100 == 0) this.updateProgress(`Processing event ${i ? i : 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; const textForEvent = await this._textForEvent(event); @@ -89,8 +96,8 @@ export default class PlainTextExporter extends Exporter { } public async export() { - console.info("Starting export process..."); - console.info("Fetching events..."); + this.updateProgress("Starting export process..."); + this.updateProgress("Fetching events..."); const fetchStart = performance.now(); const res = await this.getRequiredEvents(); @@ -98,7 +105,7 @@ export default class PlainTextExporter extends Exporter { console.log(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`); - console.info("Creating output..."); + this.updateProgress("Creating output..."); const text = await this.createOutput(res); if (this.files.length) { From f2e67604e733c8ed972dc0c44567bb059914dbc1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 2 Jul 2021 10:49:24 +0530 Subject: [PATCH 122/176] Delint --- .../views/messages/DateSeparator.tsx | 2 +- src/utils/exportUtils/ZipStream.ts | 32 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/components/views/messages/DateSeparator.tsx b/src/components/views/messages/DateSeparator.tsx index fa363c7c4c..d66fcbf118 100644 --- a/src/components/views/messages/DateSeparator.tsx +++ b/src/components/views/messages/DateSeparator.tsx @@ -35,7 +35,7 @@ function getDaysArray(): string[] { interface IProps { ts: number; - forExport?: boolean + forExport?: boolean; } @replaceableComponent("views.messages.DateSeparator") diff --git a/src/utils/exportUtils/ZipStream.ts b/src/utils/exportUtils/ZipStream.ts index 098e2ed12c..04cd61fb06 100644 --- a/src/utils/exportUtils/ZipStream.ts +++ b/src/utils/exportUtils/ZipStream.ts @@ -55,8 +55,8 @@ class Crc32 { } type DataHelper = { - array: Uint8Array, - view: DataView, + array: Uint8Array; + view: DataView; }; const getDataHelper = (byteLength: number): DataHelper => { @@ -68,24 +68,24 @@ const getDataHelper = (byteLength: number): DataHelper => { }; type FileLike = File & { - directory: string, - comment: string, - stream(): ReadableStream, + directory: string; + comment: string; + stream(): ReadableStream; }; type ZipObj = { crc?: Crc32, - uncompressedLength: number, - compressedLength: number, - ctrl: ReadableStreamDefaultController, - writeFooter: Function, - writeHeader: Function, - reader?: ReadableStreamDefaultReader, - offset: number - header?: DataHelper, - fileLike: FileLike, - level: number, - directory: boolean, + uncompressedLength: number; + compressedLength: number; + ctrl: ReadableStreamDefaultController; + writeFooter: Function; + writeHeader: Function; + reader?: ReadableStreamDefaultReader; + offset: number; + header?: DataHelper; + fileLike: FileLike; + level: number; + directory: boolean; }; const pump = (zipObj: ZipObj) => zipObj.reader ? zipObj.reader.read().then(chunk => { From 3dcc7738f68a5ed13936696f3099014f21581221 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 2 Jul 2021 10:53:19 +0530 Subject: [PATCH 123/176] Add missing semicolon --- src/utils/exportUtils/ZipStream.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/ZipStream.ts b/src/utils/exportUtils/ZipStream.ts index 04cd61fb06..bf8020b7b6 100644 --- a/src/utils/exportUtils/ZipStream.ts +++ b/src/utils/exportUtils/ZipStream.ts @@ -74,7 +74,7 @@ type FileLike = File & { }; type ZipObj = { - crc?: Crc32, + crc?: Crc32; uncompressedLength: number; compressedLength: number; ctrl: ReadableStreamDefaultController; From 87c624d08578de0afab1a4505d0706c243b39c70 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 2 Jul 2021 16:52:33 +0530 Subject: [PATCH 124/176] Use ref for progress updates --- src/components/views/dialogs/ExportDialog.tsx | 10 +++++----- src/utils/exportUtils/Exporter.ts | 5 +++-- src/utils/exportUtils/HtmlExport.tsx | 8 ++++---- src/utils/exportUtils/JSONExport.ts | 7 ++++--- src/utils/exportUtils/PlainTextExport.ts | 7 ++++--- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index d82bc1efd8..64cac3364a 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -29,11 +29,11 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [exportType, setExportType] = useState(exportTypes.TIMELINE); const [includeAttachments, setAttachments] = useState(false); const [isExporting, setExporting] = useState(false); - const [exportProgressText, setExportProgressText] = useState(""); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); const [sizeLimit, setSizeLimit] = useState<number | null>(8); const sizeLimitRef = useRef<Field>(); const messageCountRef = useRef<Field>(); + const exportProgressRef = useRef<HTMLParagraphElement>(); const [displayCancel, setCancelWarning] = useState(false); const [exportCancelled, setExportCancelled] = useState(false); const [exportSuccessful, setExportSuccessful] = useState(false); @@ -59,7 +59,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, exportTypes[exportType], exportOptions, - setExportProgressText, + exportProgressRef, ), ); break; @@ -69,7 +69,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, exportTypes[exportType], exportOptions, - setExportProgressText, + exportProgressRef, ), ); break; @@ -79,7 +79,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, exportTypes[exportType], exportOptions, - setExportProgressText, + exportProgressRef, ), ); break; @@ -356,7 +356,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { onFinished={onFinished} fixedWidth={true} > - <p> { exportProgressText } </p> + <p ref={exportProgressRef} /> <DialogButtons primaryButton={_t("Cancel")} primaryButtonClass="danger" diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 3da058233d..d2b9df23e0 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -10,6 +10,7 @@ import { MatrixClient } from "matrix-js-sdk"; import streamToZIP from "./ZipStream"; import * as ponyfill from "web-streams-polyfill/ponyfill"; import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers +import { MutableRefObject } from "react"; type FileStream = { name: string; @@ -27,7 +28,7 @@ export default abstract class Exporter { protected room: Room, protected exportType: exportTypes, protected exportOptions: exportOptions, - protected setProgressText: React.Dispatch<React.SetStateAction<string>>, + protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { this.cancelled = false; this.files = []; @@ -43,7 +44,7 @@ export default abstract class Exporter { protected updateProgress(progress: string, log = true, show = true): void { if (log) console.log(progress); - if (show) this.setProgressText(progress); + if (show) this.exportProgressRef.current.innerText = progress; } protected addFile(filePath: string, blob: Blob): void { diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index fc963a27b8..51ca9877bf 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -1,4 +1,4 @@ -import React from "react"; +import React, { MutableRefObject } from "react"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; @@ -31,9 +31,9 @@ export default class HTMLExporter extends Exporter { room: Room, exportType: exportTypes, exportOptions: exportOptions, - setProgressText: React.Dispatch<React.SetStateAction<string>>, + exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { - super(room, exportType, exportOptions, setProgressText); + super(room, exportType, exportOptions, exportProgressRef); this.avatars = new Map<string, boolean>(); this.permalinkCreator = new RoomPermalinkCreator(this.room); this.totalSize = 0; @@ -333,7 +333,7 @@ export default class HTMLExporter extends Exporter { let prevEvent = null; for (let i = 0; i < events.length; i++) { const event = events[i]; - if (i % 100 == 0) this.updateProgress(`Processing event ${i ? i : 1} out of ${events.length}`, false, true); + this.updateProgress(`Processing event ${i + 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 7b2a4f57a9..ed42936787 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -6,6 +6,7 @@ import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import { EventType } from "matrix-js-sdk/src/@types/event"; +import { MutableRefObject } from "react"; export default class JSONExporter extends Exporter { protected totalSize: number; @@ -15,9 +16,9 @@ export default class JSONExporter extends Exporter { room: Room, exportType: exportTypes, exportOptions: exportOptions, - setProgressText: React.Dispatch<React.SetStateAction<string>>, + exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { - super(room, exportType, exportOptions, setProgressText); + super(room, exportType, exportOptions, exportProgressRef); this.totalSize = 0; this.messages = []; } @@ -62,7 +63,7 @@ export default class JSONExporter extends Exporter { protected async createOutput(events: MatrixEvent[]) { for (let i = 0; i < events.length; i++) { const event = events[i]; - if (i % 100 == 0) this.updateProgress(`Processing event ${i ? i : 1} out of ${events.length}`, false, true); + this.updateProgress(`Processing event ${i + 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; this.messages.push(await this.getJSONString(event)); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index c437c52de9..109fa78162 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -7,6 +7,7 @@ import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; import { exportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; +import { MutableRefObject } from "react"; export default class PlainTextExporter extends Exporter { protected totalSize: number; @@ -16,9 +17,9 @@ export default class PlainTextExporter extends Exporter { room: Room, exportType: exportTypes, exportOptions: exportOptions, - setProgressText: React.Dispatch<React.SetStateAction<string>>, + exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { - super(room, exportType, exportOptions, setProgressText); + super(room, exportType, exportOptions, exportProgressRef); this.totalSize = 0; this.mediaOmitText = !this.exportOptions.attachmentsIncluded ? _t("Media omitted") @@ -86,7 +87,7 @@ export default class PlainTextExporter extends Exporter { let content = ""; for (let i = 0; i < events.length; i++) { const event = events[i]; - if (i % 100 == 0) this.updateProgress(`Processing event ${i ? i : 1} out of ${events.length}`, false, true); + this.updateProgress(`Processing event ${i + 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; const textForEvent = await this._textForEvent(event); From ed93bf4c770846b02fed5aa9ce0e473ae1fac8c6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 19 Jul 2021 13:00:37 +0530 Subject: [PATCH 125/176] Reverse events in-place --- src/utils/exportUtils/Exporter.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index d2b9df23e0..6cee2543d6 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -154,7 +154,7 @@ export default abstract class Exporter { let prevToken: string|null = null; let limit = this.getLimit(); - let events: MatrixEvent[] = []; + const events: MatrixEvent[] = []; while (limit) { const eventsPerCrawl = Math.min(limit, 1000); @@ -187,7 +187,9 @@ export default abstract class Exporter { prevToken = res.end; } // Reverse the events so that we preserve the order - events = events.reverse(); + for (let i = 0; i < Math.floor(events.length/2); i++) { + [events[i], events[events.length - i - 1]] = [events[events.length - i - 1], events[i]]; + } const decryptionPromises = events .filter(event => event.isEncrypted()) From f07402d234940740bbf2b34cc416131443a32346 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 19 Jul 2021 13:17:19 +0530 Subject: [PATCH 126/176] Fix types and precompute blob sizes to avoid overflows --- src/components/views/messages/MImageBody.tsx | 2 +- src/utils/exportUtils/HtmlExport.tsx | 18 +++++++++++------- src/utils/exportUtils/JSONExport.ts | 12 +++++++----- src/utils/exportUtils/PlainTextExport.ts | 16 ++++++++++------ src/utils/exportUtils/ZipStream.ts | 4 ++-- 5 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/components/views/messages/MImageBody.tsx b/src/components/views/messages/MImageBody.tsx index 7987ed007d..ee18046678 100644 --- a/src/components/views/messages/MImageBody.tsx +++ b/src/components/views/messages/MImageBody.tsx @@ -179,7 +179,7 @@ export default class MImageBody extends React.Component<IProps, IState> { }; protected getContentUrl(): string { - const content = this.props.mxEvent.getContent(); + const content: IMediaEventContent= this.props.mxEvent.getContent(); if (this.props.forExport) return content.url || content.file.url; const media = mediaFromContent(content); if (media.isEncrypted) { diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 51ca9877bf..e545a32a17 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -306,13 +306,17 @@ export default class HTMLExporter extends Exporter { if (this.exportOptions.attachmentsIncluded) { try { const blob = await this.getMediaBlob(mxEv); - this.totalSize += blob.size; - const filePath = this.getFilePath(mxEv); - eventTile = await this.getEventTile(mxEv, joined, filePath); - if (this.totalSize > this.exportOptions.maxSize - 1024 * 512) { - this.exportOptions.attachmentsIncluded = false; + if (this.totalSize + blob.size > this.exportOptions.maxSize) { + eventTile = await this.getEventTile(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); + } else { + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + eventTile = await this.getEventTile(mxEv, joined, filePath); + if (this.totalSize == this.exportOptions.maxSize) { + this.exportOptions.attachmentsIncluded = false; + } + this.addFile(filePath, blob); } - this.addFile(filePath, blob); } catch (e) { console.log("Error while fetching file" + e); eventTile = await this.getEventTile( @@ -339,7 +343,7 @@ export default class HTMLExporter extends Exporter { content += this._wantsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; const shouldBeJoined = !this._wantsDateSeparator(event, prevEvent) - && shouldFormContinuation(prevEvent, event); + && shouldFormContinuation(prevEvent, event, false); const body = await this.createMessageBody(event, shouldBeJoined); this.totalSize += Buffer.byteLength(body); content += body; diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index ed42936787..417a7a40f4 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -45,11 +45,13 @@ export default class JSONExporter extends Exporter { if (this.exportOptions.attachmentsIncluded && this.isAttachment(mxEv)) { try { const blob = await this.getMediaBlob(mxEv); - this.totalSize += blob.size; - const filePath = this.getFilePath(mxEv); - this.addFile(filePath, blob); - if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { - this.exportOptions.attachmentsIncluded = false; + if (this.totalSize + blob.size < this.exportOptions.maxSize) { + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + if (this.totalSize == this.exportOptions.maxSize) { + this.exportOptions.attachmentsIncluded = false; + } + this.addFile(filePath, blob); } } catch (err) { console.log("Error fetching file: " + err); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 109fa78162..00efab0f33 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -66,12 +66,16 @@ export default class PlainTextExporter extends Exporter { if (this.exportOptions.attachmentsIncluded) { try { const blob = await this.getMediaBlob(mxEv); - this.totalSize += blob.size; - const filePath = this.getFilePath(mxEv); - mediaText = " (" + _t("File Attached") + ")"; - this.addFile(filePath, blob); - if (this.totalSize > this.exportOptions.maxSize - 1024 * 1024) { - this.exportOptions.attachmentsIncluded = false; + if (this.totalSize + blob.size > this.exportOptions.maxSize) { + mediaText = ` (${this.mediaOmitText})`; + } else { + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + mediaText = " (" + _t("File Attached") + ")"; + this.addFile(filePath, blob); + if (this.totalSize == this.exportOptions.maxSize) { + this.exportOptions.attachmentsIncluded = false; + } } } catch (error) { mediaText = " (" + _t("Error fetching file") + ")"; diff --git a/src/utils/exportUtils/ZipStream.ts b/src/utils/exportUtils/ZipStream.ts index bf8020b7b6..2ee355f09c 100644 --- a/src/utils/exportUtils/ZipStream.ts +++ b/src/utils/exportUtils/ZipStream.ts @@ -223,8 +223,8 @@ export default function streamToZIP(underlyingSource: UnderlyingSource) { function closeZip() { let length = 0; let index = 0; - let indexFilename; - let file; + let indexFilename: number; + let file: any; for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { file = files[filenames[indexFilename]]; From 6d0fd0322e29a2e4552028689e37109d8e86652e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 19 Jul 2021 13:23:55 +0530 Subject: [PATCH 127/176] Delint --- src/components/views/elements/ReplyThread.tsx | 2 +- src/utils/exportUtils/Exporter.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/elements/ReplyThread.tsx b/src/components/views/elements/ReplyThread.tsx index 10cb5b1804..29b3d1b7f5 100644 --- a/src/components/views/elements/ReplyThread.tsx +++ b/src/components/views/elements/ReplyThread.tsx @@ -44,7 +44,7 @@ interface IProps { layout?: Layout; // Whether to always show a timestamp alwaysShowTimestamps?: boolean; - forExport?: boolean, + forExport?: boolean; } interface IState { diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 6cee2543d6..17e1af1660 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -6,7 +6,7 @@ import { exportOptions, exportTypes } from "./exportUtils"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; -import { MatrixClient } from "matrix-js-sdk"; +import { Direction, MatrixClient } from "matrix-js-sdk"; import streamToZIP from "./ZipStream"; import * as ponyfill from "web-streams-polyfill/ponyfill"; import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers @@ -158,7 +158,7 @@ export default abstract class Exporter { while (limit) { const eventsPerCrawl = Math.min(limit, 1000); - const res: any = await this.client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, "b"); + const res: any = await this.client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, Direction.Backward); if (this.cancelled) { this.cleanUp(); From c0d2dbe7fd203e9c3c081387d1b52810e5f2071d Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 19 Jul 2021 13:28:09 +0530 Subject: [PATCH 128/176] Delint once more --- src/utils/exportUtils/Exporter.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 17e1af1660..5366436dab 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -158,7 +158,12 @@ export default abstract class Exporter { while (limit) { const eventsPerCrawl = Math.min(limit, 1000); - const res: any = await this.client.createMessagesRequest(this.room.roomId, prevToken, eventsPerCrawl, Direction.Backward); + const res = await this.client.createMessagesRequest( + this.room.roomId, + prevToken, + eventsPerCrawl, + Direction.Backward, + ); if (this.cancelled) { this.cleanUp(); From 98aa1fe6b3d15b9da6fc495c812cb79f1c8a4eed Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 20 Jul 2021 13:47:51 +0530 Subject: [PATCH 129/176] Move @types/streamsaver to devDependencies --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f9766198f7..6611505b4c 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ }, "dependencies": { "@babel/runtime": "^7.12.5", - "@types/streamsaver": "^2.0.0", "await-lock": "^2.1.0", "blurhash": "^1.1.3", "browser-encrypt-attachment": "^0.3.0", @@ -145,6 +144,7 @@ "@types/react-dom": "^17.0.2", "@types/react-transition-group": "^4.4.0", "@types/sanitize-html": "^2.3.1", + "@types/streamsaver": "^2.0.1", "@types/zxcvbn": "^4.4.0", "@typescript-eslint/eslint-plugin": "^4.17.0", "@typescript-eslint/parser": "^4.17.0", diff --git a/yarn.lock b/yarn.lock index 7c01d03dff..d018678631 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1709,10 +1709,10 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== -"@types/streamsaver@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/streamsaver/-/streamsaver-2.0.0.tgz#2a6bdec0389f41a74c60091d37e84f8840d27ac9" - integrity sha512-TzUEZk30QmNaS6GAhcOnH/Cl2mO7HCFhQUr6GpzvuoFziFCxmvuyLftHW79agJpZvIrqti9jSiDHMgflUwbejg== +"@types/streamsaver@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/streamsaver/-/streamsaver-2.0.1.tgz#fa5e5b891d1b282be3078c232a30ee004b8e0be0" + integrity sha512-I49NtT8w6syBI3Zg3ixCyygTHoTVMY0z2TMRcTgccdIsVd2MwlKk7ITLHLsJtgchUHcOd7QEARG9h0ifcA6l2Q== "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.3" From 6dd3631a17cd8bbc16f586b26817558670f463ac Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 21 Jul 2021 11:48:37 +0530 Subject: [PATCH 130/176] Delint --- src/components/views/dialogs/ExportDialog.tsx | 8 +++---- src/components/views/messages/MFileBody.tsx | 5 ++-- .../views/right_panel/RoomSummaryCard.tsx | 4 ++-- src/utils/exportUtils/HtmlExport.tsx | 24 +++++++++---------- src/utils/exportUtils/PlainTextExport.ts | 4 ++-- 5 files changed, 22 insertions(+), 23 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 64cac3364a..b1de882950 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -193,7 +193,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const exportTypeOptions = Object.keys(exportTypes).map((type) => { return ( <option key={type} value={type}> - {textForType(type)} + { textForType(type) } </option> ); }); @@ -229,7 +229,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <p>{ _t("The export was cancelled successfully") }</p> <DialogButtons - primaryButton={ _t("Okay") } + primaryButton={_t("Okay")} hasCancel={false} onPrimaryButtonClick={onFinished} /> @@ -331,9 +331,9 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { fixedWidth={true} > <p> - {_t( + { _t( "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - )} + ) } </p> <DialogButtons primaryButton={_t("Stop")} diff --git a/src/components/views/messages/MFileBody.tsx b/src/components/views/messages/MFileBody.tsx index e1cc1705d9..c2578625ac 100644 --- a/src/components/views/messages/MFileBody.tsx +++ b/src/components/views/messages/MFileBody.tsx @@ -125,7 +125,6 @@ export function presentableTextForFile(content: IContent, withSize = true): stri interface IProps extends IBodyProps { /* whether or not to show the default placeholder for the file. Defaults to true. */ showGenericPlaceholder: boolean; - forExport?: boolean; } interface IState { @@ -174,9 +173,9 @@ export default class MFileBody extends React.Component<IProps, IState> { placeholder = ( <div className="mx_MFileBody_info"> <span className="mx_MFileBody_info_icon"> - {this.props.forExport ? + { this.props.forExport ? <img alt="Attachment" className="mx_export_attach_icon" src="icons/attach.svg" /> - : null} + : null } </span> <span className="mx_MFileBody_info_filename"> { presentableTextForFile(content, false) } diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index b0d8070b8c..c1b4112423 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -287,8 +287,8 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { <Button className="mx_RoomSummaryCard_icon_settings" onClick={onRoomSettingsClick}> { _t("Room settings") } </Button> - <Button className="mx_RoomSummaryCard_icon_export" onClick = {onRoomExportClick}> - {_t("Export chat")} + <Button className="mx_RoomSummaryCard_icon_export" onClick={onRoomExportClick}> + { _t("Export chat") } </Button> </Group> diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index e545a32a17..5b1b8ee8c7 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -63,7 +63,7 @@ export default class HTMLExporter extends Exporter { name={this.room.name} title={this.room.name} url={blob ? avatarPath : null} - resizeMethod={"crop"} + resizeMethod="crop" /> ); return renderToStaticMarkup(avatar); @@ -83,31 +83,31 @@ export default class HTMLExporter extends Exporter { const exportedText = renderToStaticMarkup( <p> - {_t( + { _t( "This is the start of export of <roomName/>. Exported by <exporterDetails/> at %(exportDate)s.", { exportDate, }, { - roomName: () => <b>{this.room.name}</b>, + roomName: () => <b>{ this.room.name }</b>, exporterDetails: () => ( <a href={`https://matrix.to/#/${exporter}`} target="_blank" rel="noopener noreferrer" > - {exporterName ? ( + { exporterName ? ( <> - <b>{exporterName}</b> - {exporter} + <b>{ exporterName }</b> + { exporter } </> ) : ( - <b>{exporter}</b> - )} + <b>{ exporter }</b> + ) } </a> ), }, - )} + ) } </p>, ); @@ -232,7 +232,7 @@ export default class HTMLExporter extends Exporter { return renderToStaticMarkup(dateSeparator); } - protected _wantsDateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { + protected needsDateSeparator(event: MatrixEvent, prevEvent: MatrixEvent) { if (prevEvent == null) return true; return wantsDateSeparator(prevEvent.getDate(), event.getDate()); } @@ -341,8 +341,8 @@ export default class HTMLExporter extends Exporter { if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; - content += this._wantsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; - const shouldBeJoined = !this._wantsDateSeparator(event, prevEvent) + content += this.needsDateSeparator(event, prevEvent) ? this.getDateSeparator(event) : ""; + const shouldBeJoined = !this.needsDateSeparator(event, prevEvent) && shouldFormContinuation(prevEvent, event, false); const body = await this.createMessageBody(event, shouldBeJoined); this.totalSize += Buffer.byteLength(body); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 00efab0f33..feb4afe618 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -59,7 +59,7 @@ export default class PlainTextExporter extends Exporter { return `<${rplName}${rplSource}> ${rplText}`; }; - protected _textForEvent = async (mxEv: MatrixEvent) => { + protected plainTextForEvent = async (mxEv: MatrixEvent) => { const senderDisplayName = mxEv.sender && mxEv.sender.name ? mxEv.sender.name : mxEv.getSender(); let mediaText = ""; if (this.isAttachment(mxEv)) { @@ -94,7 +94,7 @@ export default class PlainTextExporter extends Exporter { this.updateProgress(`Processing event ${i + 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); if (!haveTileForEvent(event)) continue; - const textForEvent = await this._textForEvent(event); + const textForEvent = await this.plainTextForEvent(event); content += textForEvent && `${new Date(event.getTs()).toLocaleString()} - ${textForEvent}\n`; } return content; From c81bac1a4c9d004f1d1f7c4a48d08149f9939266 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 23 Jul 2021 10:47:40 +0530 Subject: [PATCH 131/176] Add try catch for event tile errors --- src/components/views/messages/CallEvent.tsx | 4 +- src/utils/exportUtils/HtmlExport.tsx | 56 ++++++++++++--------- 2 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/components/views/messages/CallEvent.tsx b/src/components/views/messages/CallEvent.tsx index c0be3b46bb..f760f29ea2 100644 --- a/src/components/views/messages/CallEvent.tsx +++ b/src/components/views/messages/CallEvent.tsx @@ -46,7 +46,7 @@ export default class CallEvent extends React.Component<IProps, IState> { super(props); this.state = { - callState: this.props.callEventGrouper.state, + callState: this.props.callEventGrouper?.state, silenced: false, }; } @@ -184,7 +184,7 @@ export default class CallEvent extends React.Component<IProps, IState> { render() { const event = this.props.mxEvent; const sender = event.sender ? event.sender.name : event.getSender(); - const isVoice = this.props.callEventGrouper.isVoice; + const isVoice = this.props.callEventGrouper?.isVoice; const callType = isVoice ? _t("Voice call") : _t("Video call"); const content = this.renderContent(this.state.callState); const className = classNames({ diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 5b1b8ee8c7..6f2394242c 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -301,33 +301,41 @@ export default class HTMLExporter extends Exporter { protected async createMessageBody(mxEv: MatrixEvent, joined = false) { let eventTile: string; - - if (this.isAttachment(mxEv)) { - if (this.exportOptions.attachmentsIncluded) { - try { - const blob = await this.getMediaBlob(mxEv); - if (this.totalSize + blob.size > this.exportOptions.maxSize) { - eventTile = await this.getEventTile(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); - } else { - this.totalSize += blob.size; - const filePath = this.getFilePath(mxEv); - eventTile = await this.getEventTile(mxEv, joined, filePath); - if (this.totalSize == this.exportOptions.maxSize) { - this.exportOptions.attachmentsIncluded = false; + try { + if (this.isAttachment(mxEv)) { + if (this.exportOptions.attachmentsIncluded) { + try { + const blob = await this.getMediaBlob(mxEv); + if (this.totalSize + blob.size > this.exportOptions.maxSize) { + eventTile = await this.getEventTile( + this.createModifiedEvent(this.mediaOmitText, mxEv), + joined, + ); + } else { + this.totalSize += blob.size; + const filePath = this.getFilePath(mxEv); + eventTile = await this.getEventTile(mxEv, joined, filePath); + if (this.totalSize == this.exportOptions.maxSize) { + this.exportOptions.attachmentsIncluded = false; + } + this.addFile(filePath, blob); } - this.addFile(filePath, blob); + } catch (e) { + console.log("Error while fetching file" + e); + eventTile = await this.getEventTile( + this.createModifiedEvent(_t("Error fetching file"), mxEv), + joined, + ); } - } catch (e) { - console.log("Error while fetching file" + e); - eventTile = await this.getEventTile( - this.createModifiedEvent(_t("Error fetching file"), mxEv), - joined, - ); + } else { + eventTile = await this.getEventTile(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); } - } else { - eventTile = await this.getEventTile(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); - } - } else eventTile = await this.getEventTile(mxEv, joined); + } else eventTile = await this.getEventTile(mxEv, joined); + } catch (e) { + // TODO: Handle callEvent errors + console.error(e); + eventTile = await this.getEventTile(this.createModifiedEvent("Error parsing HTML", mxEv), joined); + } return eventTile; } From 3d4d1d32d9cae26a73375d3932fd618cbca2e3ab Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 00:09:59 +0530 Subject: [PATCH 132/176] Modify design according to the design team --- res/css/views/dialogs/_ExportDialog.scss | 49 +++++ src/components/views/dialogs/ExportDialog.tsx | 170 ++++++++++-------- src/i18n/strings/en_EN.json | 8 +- src/utils/exportUtils/Exporter.ts | 10 +- src/utils/exportUtils/HtmlExport.tsx | 4 +- src/utils/exportUtils/exportUtils.ts | 2 +- 6 files changed, 154 insertions(+), 89 deletions(-) diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index d3af6c843b..03b7b2a8d3 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -9,6 +9,34 @@ margin-bottom: 12px; } + &.mx_ExportDialog_Exporting .mx_ExportDialog_options { + pointer-events: none; + } + + .mx_ExportDialog_progress { + .mx_Dialog_buttons { + margin-top: unset; + margin-left: 18px; + } + .mx_ExportDialog_spinner { + animation: mx_rotate 2s linear infinite; + z-index: 2; + position: relative; + margin-right: 10px; + width: 24px; + height: 24px; + & .mx_ExportDialog_spinner_path { + stroke: #0dbd8b; + stroke-linecap: round; + animation: mx_dash 1.5s ease-in-out infinite; + } + } + display: flex; + flex-direction: row; + justify-content: flex-end; + align-items: center; + } + .mx_RadioButton > .mx_RadioButton_content { margin-top: 5px; margin-bottom: 5px; @@ -22,3 +50,24 @@ padding: 9px 10px; } } + +@keyframes mx_rotate { + 100% { + transform: rotate(360deg); + } +} + +@keyframes mx_dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35; + } + 100% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124; + } +} diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index b1de882950..570308edc1 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -197,6 +197,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </option> ); }); + let messageCount = null; if (exportType === exportTypes.LAST_N_MESSAGES) { messageCount = ( @@ -254,72 +255,6 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { /> </BaseDialog> ); - } else if (!isExporting) { - // Display export settings - return ( - <BaseDialog - title={_t("Export Chat")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - hasCancel={true} - onFinished={onFinished} - fixedWidth={true} - > - <p> - { _t("Select from the options below to export chats from your timeline") } - </p> - - <span className="mx_ExportDialog_subheading">{ _t("Format") }</span> - - <StyledRadioGroup - name="exportFormat" - value={exportFormat} - onChange={(key) => setExportFormat(exportFormats[key])} - definitions={exportFormatOptions} - /> - - <span className="mx_ExportDialog_subheading">{ _t("Messages") }</span> - - <Field - element="select" - value={exportType} - onChange={(e) => { - setExportType(exportTypes[e.target.value]); - }} - > - { exportTypeOptions } - </Field> - { messageCount } - - <span className="mx_ExportDialog_subheading">{ _t("Size Limit") }</span> - - <Field - type="number" - autoComplete="off" - onValidate={onValidateSize} - element="input" - ref={sizeLimitRef} - value={sizeLimit.toString()} - postfixComponent={sizePostFix} - onChange={(e) => setSizeLimit(parseInt(e.target.value))} - /> - - <StyledCheckbox - checked={includeAttachments} - onChange={(e) => - setAttachments((e.target as HTMLInputElement).checked) - } - > - { _t("Include Attachments") } - </StyledCheckbox> - - <DialogButtons - primaryButton={_t("Export")} - onPrimaryButtonClick={onExportClick} - onCancel={() => onFinished(false)} - /> - </BaseDialog> - ); } else if (displayCancel) { // Display cancel warning return ( @@ -346,23 +281,104 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </BaseDialog> ); } else { - // Display progress dialog + // Display export settings return ( <BaseDialog - title={_t("Exporting your data...")} - className="mx_ExportDialog" + title={_t("Export Chat")} + className={`mx_ExportDialog ${isExporting && "mx_ExportDialog_Exporting"}`} contentId="mx_Dialog_content" - hasCancel={false} + hasCancel={true} onFinished={onFinished} fixedWidth={true} > - <p ref={exportProgressRef} /> - <DialogButtons - primaryButton={_t("Cancel")} - primaryButtonClass="danger" - hasCancel={false} - onPrimaryButtonClick={onCancel} - /> + <p> + { _t( + "Select from the options below to export chats from your timeline", + ) } + </p> + + <span className="mx_ExportDialog_subheading"> + { _t("Format") } + </span> + + <div className="mx_ExportDialog_options"> + <StyledRadioGroup + name="exportFormat" + value={exportFormat} + onChange={(key) => setExportFormat(exportFormats[key])} + definitions={exportFormatOptions} + /> + + <span className="mx_ExportDialog_subheading"> + { _t("Messages") } + </span> + + <Field + element="select" + value={exportType} + onChange={(e) => { + setExportType(exportTypes[e.target.value]); + }} + > + { exportTypeOptions } + </Field> + { messageCount } + + <span className="mx_ExportDialog_subheading"> + { _t("Size Limit") } + </span> + + <Field + type="number" + autoComplete="off" + onValidate={onValidateSize} + element="input" + ref={sizeLimitRef} + value={sizeLimit.toString()} + postfixComponent={sizePostFix} + onChange={(e) => setSizeLimit(parseInt(e.target.value))} + /> + + <StyledCheckbox + checked={includeAttachments} + onChange={(e) => + setAttachments( + (e.target as HTMLInputElement).checked, + ) + } + > + { _t("Include Attachments") } + </StyledCheckbox> + </div> + { isExporting ? ( + <div className = "mx_ExportDialog_progress"> + <svg className="mx_ExportDialog_spinner" viewBox="0 0 50 50"> + <circle + className="mx_ExportDialog_spinner_path" + cx="25" + cy="25" + r="20" + fill="none" + stroke-width="5" + ></circle> + </svg> + <p ref={exportProgressRef}> + { _t("Processing...") } + </p> + <DialogButtons + primaryButton={_t("Cancel")} + primaryButtonClass="danger" + hasCancel={false} + onPrimaryButtonClick={onCancel} + /> + </div> + ) : ( + <DialogButtons + primaryButton={_t("Export")} + onPrimaryButtonClick={onExportClick} + onCancel={() => onFinished(false)} + /> + ) } </BaseDialog> ); } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d69b368550..01485741ef 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -730,7 +730,7 @@ "JSON": "JSON", "Plain Text": "Plain Text", "From the beginning": "From the beginning", - "For a number of messages": "For a number of messages", + "Specify a number of messages": "Specify a number of messages", "Current Timeline": "Current Timeline", "Media omitted": "Media omitted", "Media omitted - file size limit exceeded": "Media omitted - file size limit exceeded", @@ -2272,15 +2272,15 @@ "Okay": "Okay", "Export Successful": "Export Successful", "Your messages were successfully exported": "Your messages were successfully exported", + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + "Stop": "Stop", "Export Chat": "Export Chat", "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", "Format": "Format", "Size Limit": "Size Limit", "Include Attachments": "Include Attachments", + "Processing...": "Processing...", "Export": "Export", - "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - "Stop": "Stop", - "Exporting your data...": "Exporting your data...", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", "Tell us below how you feel about %(brand)s so far.": "Tell us below how you feel about %(brand)s so far.", diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 5366436dab..d43f937c7b 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -44,7 +44,7 @@ export default abstract class Exporter { protected updateProgress(progress: string, log = true, show = true): void { if (log) console.log(progress); - if (show) this.exportProgressRef.current.innerText = progress; + if (show && this.exportProgressRef.current) this.exportProgressRef.current.innerText = progress; } protected addFile(filePath: string, blob: Blob): void { @@ -64,7 +64,7 @@ export default abstract class Exporter { // Create a writable stream to the directory this.fileStream = streamSaver.createWriteStream(filename); - if (!this.cancelled) this.updateProgress("Generating a ZIP..."); + if (!this.cancelled) this.updateProgress("Generating a ZIP"); else return this.cleanUp(); this.writer = this.fileStream.getWriter(); @@ -79,7 +79,7 @@ export default abstract class Exporter { if (this.cancelled) return this.cleanUp(); - this.updateProgress("Writing to the file system..."); + this.updateProgress("Writing to the file system"); const reader = readableZipStream.getReader(); await this.pumpToFileStream(reader); @@ -186,8 +186,8 @@ export default abstract class Exporter { } this.updateProgress( ("Fetched " + events.length + " events ") + (this.exportType === exportTypes.LAST_N_MESSAGES - ? `out of ${this.exportOptions.numberOfMessages}...` - : "so far..."), + ? `out of ${this.exportOptions.numberOfMessages}` + : "so far"), ); prevToken = res.end; } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 6f2394242c..3f98b4c92a 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -361,8 +361,8 @@ export default class HTMLExporter extends Exporter { } public async export() { - this.updateProgress("Starting export process...", true, false); - this.updateProgress("Fetching events..."); + this.updateProgress("Starting export process", true, false); + this.updateProgress("Fetching events"); const fetchStart = performance.now(); const res = await this.getRequiredEvents(); diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 6fa5ab9869..3e281269bf 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -29,7 +29,7 @@ export const textForType = (type: string): string => { case exportTypes.BEGINNING: return _t("From the beginning"); case exportTypes.LAST_N_MESSAGES: - return _t("For a number of messages"); + return _t("Specify a number of messages"); case exportTypes.TIMELINE: return _t("Current Timeline"); // case exportTypes.START_DATE: From 2487fe73803439ffff70694e6511f06aa53522c3 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 00:13:52 +0530 Subject: [PATCH 133/176] Delint --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 570308edc1..bb7ba1ed86 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -351,7 +351,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </StyledCheckbox> </div> { isExporting ? ( - <div className = "mx_ExportDialog_progress"> + <div className="mx_ExportDialog_progress"> <svg className="mx_ExportDialog_spinner" viewBox="0 0 50 50"> <circle className="mx_ExportDialog_spinner_path" From 9fe64c34a50a7a833c39952f7b93db78e8d8db01 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 00:24:04 +0530 Subject: [PATCH 134/176] Delint --- src/components/views/dialogs/ExportDialog.tsx | 2 +- src/components/views/messages/MVideoBody.tsx | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index bb7ba1ed86..8dd6eb92fd 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -360,7 +360,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { r="20" fill="none" stroke-width="5" - ></circle> + /> </svg> <p ref={exportProgressRef}> { _t("Processing...") } diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 9ec45c2fb6..3239482515 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -279,8 +279,7 @@ export default class MVideoBody extends React.PureComponent<IBodyProps, IState> width={width} poster={poster} onPlay={this.videoOnPlay} - > - </video> + /> { fileBody } </span> ); From 30a64a1b5a0e01c565771c605dd4d5a97a5da7c1 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 12:41:36 +0530 Subject: [PATCH 135/176] Gray out and hide some options during export --- res/css/views/dialogs/_ExportDialog.scss | 30 +++++++++++++++++-- src/components/views/dialogs/ExportDialog.tsx | 6 ++-- src/i18n/strings/en_EN.json | 1 + 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index 03b7b2a8d3..d01f258d62 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -9,8 +9,32 @@ margin-bottom: 12px; } - &.mx_ExportDialog_Exporting .mx_ExportDialog_options { - pointer-events: none; + &.mx_ExportDialog_Exporting { + .mx_ExportDialog_options { + pointer-events: none; + } + + .mx_RadioButton input[type="radio"]:checked + div > div { + background: gray; + } + + .mx_Field_valid.mx_Field label, + .mx_Field_valid.mx_Field:focus-within label { + color: unset; + } + + .mx_Field_valid.mx_Field, + .mx_Field_valid.mx_Field:focus-within { + border-color: unset; + } + + .mx_Checkbox + input[type="checkbox"]:checked + + label + > .mx_Checkbox_background { + background: gray; + border-color: gray; + } } .mx_ExportDialog_progress { @@ -26,7 +50,7 @@ width: 24px; height: 24px; & .mx_ExportDialog_spinner_path { - stroke: #0dbd8b; + stroke: $accent-color; stroke-linecap: round; animation: mx_dash 1.5s ease-in-out infinite; } diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 8dd6eb92fd..82ea111ed4 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -284,18 +284,18 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { // Display export settings return ( <BaseDialog - title={_t("Export Chat")} + title={isExporting ? _t("Exporting your data") : _t("Export Chat")} className={`mx_ExportDialog ${isExporting && "mx_ExportDialog_Exporting"}`} contentId="mx_Dialog_content" hasCancel={true} onFinished={onFinished} fixedWidth={true} > - <p> + { !isExporting ? <p> { _t( "Select from the options below to export chats from your timeline", ) } - </p> + </p> : null} <span className="mx_ExportDialog_subheading"> { _t("Format") } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 46926ee798..a55576921c 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2300,6 +2300,7 @@ "Your messages were successfully exported": "Your messages were successfully exported", "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", "Stop": "Stop", + "Exporting your data": "Exporting your data", "Export Chat": "Export Chat", "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", "Format": "Format", From 06d84a16d014ff18cec417f0cbdd988f36967702 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 12:58:17 +0530 Subject: [PATCH 136/176] Delint --- res/css/views/dialogs/_ExportDialog.scss | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index d01f258d62..4255768447 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -14,24 +14,28 @@ pointer-events: none; } + .mx_Field_select::before { + display: none; + } + .mx_RadioButton input[type="radio"]:checked + div > div { background: gray; } + .mx_RadioButton input[type=radio]:checked + div { + border-color: unset; + } + .mx_Field_valid.mx_Field label, .mx_Field_valid.mx_Field:focus-within label { color: unset; } - .mx_Field_valid.mx_Field, - .mx_Field_valid.mx_Field:focus-within { - border-color: unset; + .mx_Field_valid.mx_Field, .mx_Field_valid.mx_Field:focus-within { + border-color: $input-border-color; } - .mx_Checkbox - input[type="checkbox"]:checked - + label - > .mx_Checkbox_background { + .mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background { background: gray; border-color: gray; } From ad1da9ea821fae42e6c96dd86a32a265a2c91c89 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 13:03:15 +0530 Subject: [PATCH 137/176] Delint2 --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 82ea111ed4..82c38763c3 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -295,7 +295,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { { _t( "Select from the options below to export chats from your timeline", ) } - </p> : null} + </p> : null } <span className="mx_ExportDialog_subheading"> { _t("Format") } From a4da8f9e9ef0e553c947ea7ae88d76a0aa435286 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 15:07:45 +0530 Subject: [PATCH 138/176] Update exportCSS --- src/utils/exportUtils/exportCSS.ts | 7612 ++++++++++++++++++++++++---- 1 file changed, 6732 insertions(+), 880 deletions(-) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 7d07f19998..49f3bf3bb7 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -3,9 +3,11 @@ const lightCSS = `@charset "utf-8"; .hljs-addition { background: #dfd; } + .hljs-deletion { background: #fdd; } + @supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { .mx_LeftPanel { background-image: unset; @@ -24,31 +26,40 @@ const lightCSS = `@charset "utf-8"; backdrop-filter: blur(40px); } } + .mx_RoomSublist_showNButton { background-color: transparent !important; } + a:hover, a:link, a:visited { text-decoration: none; } + :root { font-size: 10px; --transition-short: 0.1s; --transition-standard: 0.3s; } + @media (prefers-reduced-motion) { :root { --transition-short: 0; --transition-standard: 0; } } + html { height: 100%; overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; } + body { - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.5rem; background-color: #fff; color: #2e2f32; @@ -57,26 +68,33 @@ body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } + code, pre { - font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; + font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, + monospace; font-size: 100% !important; } + .error, .text-error, .text-warning, .warning { color: #ff4b55; } + .text-success { color: #0dbd8b; } + .text-muted { color: #61708b; } + b { font-weight: 700; } + h2 { color: #2e2f32; font-weight: 400; @@ -84,66 +102,81 @@ h2 { margin-top: 16px; margin-bottom: 16px; } + a:hover, a:link, a:visited { color: #238cf5; } + input[type="password"], input[type="search"], input[type="text"] { padding: 9px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.4rem; font-weight: 600; min-width: 0; } + input[type="search"].mx_textinput_icon, input[type="text"].mx_textinput_icon { padding-left: 36px; background-repeat: no-repeat; background-position: 10px; } + input[type="search"].mx_textinput_icon.mx_textinput_search, input[type="text"].mx_textinput_icon.mx_textinput_search { background-image: url(../../img/feather-customised/search-input.044bfa7.svg); } + input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { display: none; } + input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { opacity: 1; } + input::-moz-placeholder, textarea::-moz-placeholder { opacity: 1; } + input:-ms-input-placeholder, textarea:-ms-input-placeholder { opacity: 1; } + input::-ms-input-placeholder, textarea::-ms-input-placeholder { opacity: 1; } + input::placeholder, textarea::placeholder { opacity: 1; } + input[type="password"], input[type="text"], textarea { background-color: transparent; color: #2e2f32; } + textarea { - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; color: #2e2f32; } + input[type="password"]:focus, input[type="text"]:focus, textarea:focus { @@ -151,9 +184,11 @@ textarea:focus { -webkit-box-shadow: none; box-shadow: none; } + :focus:not(.focus-visible) { outline: none; } + .mx_Dialog .mx_textinput > input[type="search"], .mx_Dialog .mx_textinput > input[type="text"], .mx_MatrixChat .mx_textinput > input[type="search"], @@ -164,6 +199,7 @@ textarea:focus { flex: 1; color: #2e2f32; } + .mx_Dialog .mx_textinput, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -187,6 +223,7 @@ textarea:focus { border: 1px solid rgba(46, 47, 50, 0.1); margin: 9px; } + .mx_Dialog .mx_textinput, .mx_MatrixChat .mx_textinput { display: -webkit-box; @@ -196,6 +233,7 @@ textarea:focus { -ms-flex-align: center; align-items: center; } + .mx_Dialog .mx_textinput input::-webkit-input-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -212,6 +250,7 @@ textarea:focus { > input[type="text"]::-webkit-input-placeholder { color: rgba(159, 169, 186, 0.75); } + .mx_Dialog .mx_textinput input::-moz-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -228,6 +267,7 @@ textarea:focus { > input[type="text"]::-moz-placeholder { color: rgba(159, 169, 186, 0.75); } + .mx_Dialog .mx_textinput input:-ms-input-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -244,6 +284,7 @@ textarea:focus { > input[type="text"]:-ms-input-placeholder { color: rgba(159, 169, 186, 0.75); } + .mx_Dialog .mx_textinput input::-ms-input-placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -260,6 +301,7 @@ textarea:focus { > input[type="text"]::-ms-input-placeholder { color: rgba(159, 169, 186, 0.75); } + .mx_Dialog .mx_textinput input::placeholder, .mx_Dialog :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -276,9 +318,11 @@ textarea:focus { > input[type="text"]::placeholder { color: rgba(159, 169, 186, 0.75); } + .dark-panel { background-color: #f2f5f8; } + .dark-panel .mx_textinput, .dark-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -290,6 +334,7 @@ textarea:focus { background-color: #fff; border: none; } + .light-panel .mx_textinput, .light-panel :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) @@ -301,18 +346,23 @@ textarea:focus { background-color: #f2f5f8; border: none; } + ::-moz-focus-inner { border: 0; } + #mx_theme_accentColor { color: #0dbd8b; } + #mx_theme_secondaryAccentColor { color: #f2f5f8; } + #mx_theme_tertiaryAccentColor { color: #d3efe1; } + .mx_Dialog_wrapper { position: fixed; z-index: 4000; @@ -330,6 +380,7 @@ textarea:focus { -ms-flex-pack: center; justify-content: center; } + .mx_Dialog { background-color: #fff; color: #747474; @@ -344,13 +395,17 @@ textarea:focus { border-radius: 8px; overflow-y: auto; } + .mx_Dialog_fixedWidth { width: 60vw; max-width: 704px; } + .mx_Dialog_staticWrapper .mx_Dialog { z-index: 4010; + contain: content; } + .mx_Dialog_background { position: fixed; top: 0; @@ -361,16 +416,20 @@ textarea:focus { opacity: 0.8; z-index: 4011; } + .mx_Dialog_background.mx_Dialog_staticBackground { z-index: 4009; } + .mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background { opacity: 0.4; } + .mx_Dialog_lightbox .mx_Dialog_background { opacity: 0.95; background-color: #000; } + .mx_Dialog_lightbox .mx_Dialog { border-radius: 0; background-color: transparent; @@ -381,10 +440,12 @@ textarea:focus { pointer-events: none; padding: 0; } + .mx_Dialog_header { position: relative; margin-bottom: 10px; } + .mx_Dialog_titleImage { vertical-align: sub; width: 25px; @@ -392,21 +453,26 @@ textarea:focus { margin-left: -2px; margin-right: 4px; } + .mx_Dialog_title { font-size: 2.2rem; font-weight: 600; line-height: 3.6rem; color: #45474a; } + .mx_Dialog_header.mx_Dialog_headerWithButton > .mx_Dialog_title { text-align: center; } + .mx_Dialog_header.mx_Dialog_headerWithCancel > .mx_Dialog_title { margin-right: 20px; } + .mx_Dialog_title.danger { color: #ff4b55; } + .mx_Dialog_cancelButton { -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); mask: url(../../img/feather-customised/cancel.23c2689.svg); @@ -424,26 +490,31 @@ textarea:focus { top: 10px; right: 0; } + .mx_Dialog_content { margin: 24px 0 68px; font-size: 1.4rem; color: #2e2f32; word-wrap: break-word; } + .mx_Dialog_buttons { margin-top: 20px; text-align: right; } + .mx_Dialog_buttons .mx_Dialog_buttons_additive { float: left; } + .mx_Dialog_buttons button, .mx_Dialog_buttons input[type="submit"], .mx_Dialog button, .mx_Dialog input[type="submit"] { vertical-align: middle; border-radius: 8px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.4rem; color: #fff; background-color: #0dbd8b; @@ -460,9 +531,11 @@ textarea:focus { background-color: #fff; font-family: inherit; } + .mx_Dialog button:last-child { margin-right: 0; } + .mx_Dialog_buttons button:focus, .mx_Dialog_buttons input[type="submit"]:focus, .mx_Dialog button:focus, @@ -470,6 +543,7 @@ textarea:focus { -webkit-filter: brightness(105%); filter: brightness(105%); } + .mx_Dialog_buttons button.mx_Dialog_primary, .mx_Dialog_buttons input[type="submit"].mx_Dialog_primary, .mx_Dialog button.mx_Dialog_primary, @@ -478,6 +552,7 @@ textarea:focus { background-color: #0dbd8b; min-width: 156px; } + .mx_Dialog_buttons button.danger, .mx_Dialog_buttons input[type="submit"].danger, .mx_Dialog button.danger, @@ -486,11 +561,13 @@ textarea:focus { border: 1px solid #ff4b55; color: #fff; } + .mx_Dialog button.warning, .mx_Dialog input[type="submit"].warning { border: 1px solid #ff4b55; color: #ff4b55; } + .mx_Dialog_buttons button:disabled, .mx_Dialog_buttons input[type="submit"]:disabled, .mx_Dialog button:disabled, @@ -499,6 +576,7 @@ textarea:focus { border: 1px solid #747474; opacity: 0.7; } + .mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { width: auto; border-radius: 8px; @@ -508,11 +586,13 @@ textarea:focus { overflow-x: hidden; overflow-y: hidden; } + .mx_GeneralButton { vertical-align: middle; border: 0; border-radius: 8px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.4rem; color: #fff; background-color: #0dbd8b; @@ -524,14 +604,17 @@ textarea:focus { display: inline; margin: auto; } + .mx_linkButton { cursor: pointer; color: #0dbd8b; } + .mx_TextInputDialog_label { text-align: left; padding-bottom: 12px; } + .mx_TextInputDialog_input { font-size: 1.5rem; border-radius: 3px; @@ -540,11 +623,13 @@ textarea:focus { color: #2e2f32; background-color: #fff; } + .mx_textButton { vertical-align: middle; border: 0; border-radius: 8px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.4rem; color: #fff; background-color: #0dbd8b; @@ -555,78 +640,100 @@ textarea:focus { font-size: 1.5rem; padding: 0 1.5em; } + .mx_button_row { margin-top: 69px; } + .mx_Username_color1 { color: #368bd6; } + .mx_Username_color2 { color: #ac3ba8; } + .mx_Username_color3 { color: #0dbd8b; } + .mx_Username_color4 { color: #e64f7a; } + .mx_Username_color5 { color: #ff812d; } + .mx_Username_color6 { color: #2dc2c5; } + .mx_Username_color7 { color: #5c56f5; } + .mx_Username_color8 { color: #74d12c; } + .mx_Tooltip_dark .mx_Tooltip_chevron:after { border-right-color: #27303a; } + html { scrollbar-color: rgba(0, 0, 0, 0.2) transparent; } + * { scrollbar-width: thin; } + ::-webkit-scrollbar { width: 6px; height: 6px; background-color: transparent; } + ::-webkit-scrollbar-thumb { border-radius: 3px; background-color: rgba(0, 0, 0, 0.2); } + .mx_AutoHideScrollbar:hover { scrollbar-color: rgba(0, 0, 0, 0.2) transparent; } + .mx_AutoHideScrollbar:hover::-webkit-scrollbar { background-color: transparent; } + .mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 0, 0.2); } + .mx_AutoHideScrollbar { overflow-x: hidden; overflow-y: auto; overflow-y: overlay; -ms-overflow-style: -ms-autohiding-scrollbar; } + .mx_AutoHideScrollbar::-webkit-scrollbar, .mx_AutoHideScrollbar::-webkit-scrollbar-thumb { background-color: transparent; } + .mx_AutoHideScrollbar { scrollbar-color: transparent transparent; } + .mx_CompatibilityPage { width: 100%; height: 100%; background-color: #e55; } + .mx_CompatibilityPage_box { position: absolute; top: 0; @@ -640,10 +747,12 @@ html { padding: 10px; background-color: #fcc; } + .mx_ContextualMenu_wrapper { position: fixed; z-index: 5000; } + .mx_ContextualMenu_background { position: fixed; top: 0; @@ -653,6 +762,7 @@ html { opacity: 1; z-index: 5000; } + .mx_ContextualMenu { border-radius: 8px; -webkit-box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); @@ -662,13 +772,17 @@ html { position: absolute; font-size: 1.4rem; z-index: 5001; + contain: content; } + .mx_ContextualMenu_right { right: 0; } + .mx_ContextualMenu.mx_ContextualMenu_withChevron_right { right: 8px; } + .mx_ContextualMenu_chevron_right { position: absolute; right: -8px; @@ -679,12 +793,15 @@ html { border-left: 8px solid #fff; border-bottom: 8px solid transparent; } + .mx_ContextualMenu_left { left: 0; } + .mx_ContextualMenu.mx_ContextualMenu_withChevron_left { left: 8px; } + .mx_ContextualMenu_chevron_left { position: absolute; left: -8px; @@ -695,12 +812,15 @@ html { border-right: 8px solid #fff; border-bottom: 8px solid transparent; } + .mx_ContextualMenu_top { top: 0; } + .mx_ContextualMenu.mx_ContextualMenu_withChevron_top { top: 8px; } + .mx_ContextualMenu_chevron_top { position: absolute; left: 0; @@ -711,12 +831,15 @@ html { border-bottom: 8px solid #fff; border-right: 8px solid transparent; } + .mx_ContextualMenu_bottom { bottom: 0; } + .mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom { bottom: 8px; } + .mx_ContextualMenu_chevron_bottom { position: absolute; left: 0; @@ -727,16 +850,14 @@ html { border-top: 8px solid #fff; border-right: 8px solid transparent; } -.mx_ContextualMenu_spinner { - display: block; - margin: 0 auto; -} + .mx_CreateRoom { width: 960px; margin-left: auto; margin-right: auto; color: #2e2f32; } + .mx_CreateRoom input, .mx_CreateRoom textarea { border-radius: 3px; @@ -746,13 +867,16 @@ html { padding: 9px; margin-top: 6px; } + .mx_CreateRoom_description { width: 330px; } + .mx_CustomRoomTagPanel { background-color: hsla(0, 0%, 91%, 0.77); max-height: 40vh; } + .mx_CustomRoomTagPanel_scroller { max-height: inherit; display: -webkit-box; @@ -766,18 +890,21 @@ html { -ms-flex-align: center; align-items: center; } + .mx_CustomRoomTagPanel .mx_AccessibleButton { margin: 0 auto; width: 40px; padding: 10px 0 9px; position: relative; } + .mx_CustomRoomTagPanel .mx_BaseAvatar_image { -webkit-box-sizing: border-box; box-sizing: border-box; width: 40px; height: 40px; } + .mx_CustomRoomTagPanel .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before { content: ""; @@ -789,6 +916,7 @@ html { border-radius: 0 3px 3px 0; top: 5px; } + .mx_FilePanel { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; @@ -801,6 +929,7 @@ html { display: -ms-flexbox; display: flex; } + .mx_FilePanel .mx_RoomView_messageListWrapper { -webkit-box-orient: horizontal; -webkit-box-direction: normal; @@ -813,23 +942,34 @@ html { -ms-flex-pack: center; justify-content: center; } + .mx_FilePanel .mx_RoomView_MessageList { width: 100%; } + .mx_FilePanel .mx_EventTile_avatar, .mx_FilePanel .mx_RoomView_MessageList h2 { display: none; } -.mx_FilePanel .mx_EventTile { + +.mx_FilePanel .mx_EventTile:not([data-layout="bubble"]) { word-break: break-word; - margin-top: 32px; + margin-top: 10px; + padding-top: 0; } + +.mx_FilePanel .mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_line { + padding-left: 0; +} + .mx_FilePanel .mx_EventTile .mx_MImageBody { margin-right: 0; } + .mx_FilePanel .mx_EventTile .mx_MFileBody { line-height: 2.4rem; } + .mx_FilePanel .mx_EventTile .mx_MFileBody_download { padding-top: 8px; display: -webkit-box; @@ -838,12 +978,14 @@ html { font-size: 1.4rem; color: #acacac; } + .mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; color: #747474; } + .mx_FilePanel .mx_EventTile .mx_MImageBody_size { -webkit-box-flex: 1; -ms-flex: 1 0 0px; @@ -852,15 +994,18 @@ html { text-align: right; white-space: nowrap; } + .mx_FilePanel .mx_EventTile_senderDetails { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: -2px; } + .mx_FilePanel .mx_EventTile_senderDetailsLink { text-decoration: none; } + .mx_FilePanel .mx_EventTile .mx_SenderProfile { -webkit-box-flex: 1; -ms-flex: 1 1 auto; @@ -871,6 +1016,7 @@ html { opacity: 1; color: #acacac; } + .mx_FilePanel .mx_EventTile .mx_MessageTimestamp { -webkit-box-flex: 1; -ms-flex: 1 0 0px; @@ -882,20 +1028,21 @@ html { opacity: 1; color: #acacac; } + .mx_FilePanel .mx_EventTile_line { margin-right: 0; padding-left: 0; } + .mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { padding-left: 0; } -.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { - background-color: #fff; -} + .mx_FilePanel_empty:before { -webkit-mask-image: url(../../img/element-icons/room/files.5709c0c.svg); mask-image: url(../../img/element-icons/room/files.5709c0c.svg); } + .mx_GenericErrorPage { width: 100%; height: 100%; @@ -910,6 +1057,7 @@ html { -ms-flex-pack: center; justify-content: center; } + .mx_GenericErrorPage_box { display: inline; width: 500px; @@ -918,6 +1066,7 @@ html { padding: 10px 10px 20px; background-color: #fcc; } + .mx_GroupFilterPanel { -webkit-box-flex: 1; -ms-flex: 1; @@ -939,21 +1088,25 @@ html { justify-content: space-between; min-height: 0; } + .mx_GroupFilterPanel_items_selected { cursor: pointer; } + .mx_GroupFilterPanel .mx_GroupFilterPanel_divider { height: 0; width: 90%; border: none; border-bottom: 1px solid #8d99a5; } + .mx_GroupFilterPanel .mx_GroupFilterPanel_scroller { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; width: 100%; } + .mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer { display: -webkit-box; display: -ms-flexbox; @@ -967,39 +1120,49 @@ html { align-items: center; padding-top: 6px; } + .mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer > div { margin: 6px 0; } + .mx_GroupFilterPanel .mx_TagTile { position: relative; } + .mx_GroupFilterPanel .mx_TagTile .mx_BetaDot { position: absolute; right: -13px; top: -11px; } + .mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype { padding: 3px; } + .mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype { background-color: #fff; border-radius: 6px; } + .mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before { background-color: #2e2f32; } + .mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon { background-color: rgba(92, 100, 112, 0.2); border-radius: 48px; } + .mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before { background-color: #5c6470; } + .mx_TagTile_homeIcon { width: 32px; height: 32px; position: relative; } + .mx_TagTile_homeIcon:before { -webkit-mask-image: url(../../img/element-icons/home.b706c0e.svg); mask-image: url(../../img/element-icons/home.b706c0e.svg); @@ -1017,6 +1180,7 @@ html { top: calc(50% - 16px); left: calc(50% - 16px); } + .mx_GroupFilterPanel .mx_TagTile_plus { margin-bottom: 12px; height: 32px; @@ -1026,6 +1190,7 @@ html { position: relative; display: block !important; } + .mx_GroupFilterPanel .mx_TagTile_plus:before { background-color: #5c6470; -webkit-mask-image: url(../../img/feather-customised/plus.38ae979.svg); @@ -1041,6 +1206,7 @@ html { left: 0; right: 0; } + .mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before { content: ""; height: 100%; @@ -1050,15 +1216,18 @@ html { left: -12px; border-radius: 0 3px 3px 0; } + .mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus { -webkit-filter: none; filter: none; } + .mx_TagTile_tooltip { position: relative; top: -30px; left: 5px; } + .mx_TagTile_context_button { min-width: 15px; height: 15px; @@ -1075,9 +1244,11 @@ html { padding-left: 4px; padding-right: 4px; } + .mx_TagTile_avatar { position: relative; } + .mx_TagTile_badge { position: absolute; right: -4px; @@ -1089,9 +1260,11 @@ html { padding: 0 5px; background-color: #61708b; } + .mx_TagTile_badgeHighlight { background-color: #ff4b55; } + .mx_GroupView { display: -webkit-box; display: -ms-flexbox; @@ -1102,9 +1275,11 @@ html { flex-direction: column; overflow: hidden; } + .mx_GroupView_error { margin: auto; } + .mx_GroupView_header { min-height: 52px; -webkit-box-align: center; @@ -1116,16 +1291,19 @@ html { padding-bottom: 10px; padding-left: 19px; } + .mx_GroupView_header_view { border-bottom: 1px solid transparent; padding-bottom: 0; padding-right: 8px; } + .mx_GroupView_header_avatar, .mx_GroupView_header_info { display: table-cell; vertical-align: middle; } + .mx_GroupHeader_button { position: relative; margin-left: 5px; @@ -1134,6 +1312,7 @@ html { height: 20px; width: 20px; } + .mx_GroupHeader_button:before { content: ""; position: absolute; @@ -1145,52 +1324,63 @@ html { -webkit-mask-size: contain; mask-size: contain; } + .mx_GroupHeader_editButton:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + .mx_GroupHeader_shareButton:before { -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); } + .mx_GroupView_hostingSignup img { margin-left: 5px; } + .mx_GroupView_editable { border-bottom: 1px solid #c7c7c7 !important; min-width: 150px; cursor: text; } + .mx_GroupView_editable:focus { border-bottom: 1px solid #0dbd8b !important; outline: none; -webkit-box-shadow: none; box-shadow: none; } + .mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable) { color: #0dbd8b; cursor: pointer; } + .mx_GroupView_avatarPicker { position: relative; } + .mx_GroupView_avatarPicker_edit { position: absolute; top: 50px; left: 15px; } + .mx_GroupView_avatarPicker .mx_Spinner { width: 48px; height: 48px !important; } + .mx_GroupView_header_leftCol { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; overflow: hidden; } + .mx_GroupView_header_rightCol { display: -webkit-box; display: -ms-flexbox; @@ -1199,14 +1389,17 @@ html { -ms-flex-align: center; align-items: center; } + .mx_GroupView_textButton { display: inline-block; } + .mx_GroupView_header_groupid { font-weight: 400; font-size: medium; padding-left: 10px; } + .mx_GroupView_header_name { vertical-align: middle; width: 100%; @@ -1216,6 +1409,7 @@ html { font-size: 2.2rem; padding-right: 16px; } + .mx_GroupView_header_name, .mx_GroupView_header_shortDesc { overflow: hidden; @@ -1223,6 +1417,7 @@ html { text-overflow: ellipsis; border-bottom: 1px solid transparent; } + .mx_GroupView_header_shortDesc { vertical-align: bottom; float: left; @@ -1232,34 +1427,42 @@ html { font-size: 1.3rem; margin-right: 16px; } + .mx_GroupView_avatarPicker_label { cursor: pointer; } + .mx_GroupView_cancelButton { padding-left: 8px; } + .mx_GroupView_cancelButton img { position: relative; top: 5px; } + .mx_GroupView input[type="radio"] { margin: 10px 10px 0; } + .mx_GroupView_label_text { display: inline-block; max-width: 80%; vertical-align: 0.1em; line-height: 2em; } + .mx_GroupView_body { margin: 0 24px; } + .mx_GroupView_body, .mx_GroupView_rooms { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } + .mx_GroupView_rooms { display: -webkit-box; display: -ms-flexbox; @@ -1274,6 +1477,7 @@ html { -ms-user-select: none; user-select: none; } + .mx_GroupView h3 { text-transform: uppercase; color: #3d3b39; @@ -1281,24 +1485,30 @@ html { font-size: 1.3rem; margin-bottom: 10px; } + .mx_GroupView_rooms_header .mx_AccessibleButton { padding-left: 14px; margin-bottom: 14px; height: 24px; } + .mx_GroupView_group { border-top: 1px solid transparent; } + .mx_GroupView_group_disabled { opacity: 0.3; pointer-events: none; } + .mx_GroupView_rooms_header_addRow_button { display: inline-block; } + .mx_GroupView_rooms_header_addRow_button object { pointer-events: none; } + .mx_GroupView_rooms_header_addRow_label { display: inline-block; vertical-align: top; @@ -1306,6 +1516,7 @@ html { padding-left: 28px; color: #0dbd8b; } + .mx_GroupView_rooms .mx_RoomDetailList { -webkit-box-flex: 1; -ms-flex-positive: 1; @@ -1314,15 +1525,18 @@ html { padding-top: 10px; word-break: break-word; } + .mx_GroupView .mx_RoomView_messageListWrapper { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } + .mx_GroupView_membershipSection { color: #888; margin-top: 10px; } + .mx_GroupView_membershipSubSection { -webkit-box-pack: justify; -ms-flex-pack: justify; @@ -1332,22 +1546,27 @@ html { display: flex; padding-bottom: 8px; } + .mx_GroupView_membershipSubSection .mx_Spinner { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } + .mx_GroupView_membershipSection_description { line-height: 3.4rem; } + .mx_GroupView_membershipSection_description .mx_BaseAvatar { margin-right: 10px; } + .mx_GroupView_membershipSection .mx_GroupView_textButton { margin-right: 0; margin-top: 0; margin-left: 8px; } + .mx_GroupView_memberSettings_toggle label { cursor: pointer; -webkit-user-select: none; @@ -1355,27 +1574,33 @@ html { -ms-user-select: none; user-select: none; } + .mx_GroupView_memberSettings input { margin-right: 6px; } + .mx_GroupView_featuredThings { margin-top: 20px; } + .mx_GroupView_featuredThings_header { font-weight: 700; font-size: 120%; margin-bottom: 20px; } + .mx_GroupView_featuredThings_category { font-weight: 700; font-size: 110%; margin-top: 10px; } + .mx_GroupView_featuredThings_container { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_GroupView_featuredThing, .mx_GroupView_featuredThings_addButton { display: table-cell; @@ -1383,36 +1608,45 @@ html { width: 100px; margin: 0 20px; } + .mx_GroupView_featuredThing { position: relative; } + .mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { position: absolute; top: -7px; right: 11px; opacity: 0.4; } + .mx_GroupView_featuredThing .mx_BaseAvatar { vertical-align: baseline; vertical-align: initial; } + .mx_GroupView_featuredThings_addButton object { pointer-events: none; } + .mx_GroupView_featuredThing_name { word-wrap: break-word; } + .mx_GroupView_uploadInput { display: none; } + .mx_GroupView_body .mx_AutoHideScrollbar > * { margin: 11px 50px 50px 68px; } + .mx_GroupView_groupDesc textarea { width: 100%; max-width: 100%; height: 150px; } + .mx_GroupView_changeDelayWarning, .mx_GroupView_groupDesc_placeholder { background-color: #f7f7f7; @@ -1421,13 +1655,16 @@ html { text-align: center; margin: 20px 0; } + .mx_GroupView_groupDesc_placeholder { padding: 100px 20px; cursor: pointer; } + .mx_GroupView_changeDelayWarning { padding: 40px 20px; } + .mx_GroupView .mx_MemberInfo .mx_AutoHideScrollbar @@ -1435,14 +1672,17 @@ html { padding-left: 16px; padding-right: 16px; } + .mx_HeaderButtons { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_RoomHeader_buttons + .mx_HeaderButtons:before { content: unset; } + .mx_HeaderButtons:before { content: ""; background-color: #91a1c0; @@ -1451,6 +1691,7 @@ html { border-radius: 1px; width: 1px; } + .mx_HomePage { max-width: 960px; width: 100%; @@ -1458,24 +1699,29 @@ html { margin-left: auto; margin-right: auto; } + .mx_HomePage_default { text-align: center; display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_HomePage_default .mx_HomePage_default_wrapper { margin: auto; } + .mx_HomePage_default img { height: 48px; } + .mx_HomePage_default h1 { font-weight: 600; font-size: 3.2rem; line-height: 4.4rem; margin-bottom: 4px; } + .mx_HomePage_default h4 { margin-top: 4px; font-weight: 600; @@ -1483,15 +1729,18 @@ html { line-height: 2.5rem; color: #61708b; } + .mx_HomePage_default .mx_MiniAvatarUploader { margin: 0 auto; } + .mx_HomePage_default .mx_HomePage_default_buttons { margin: 60px auto 0; width: -webkit-fit-content; width: -moz-fit-content; width: fit-content; } + .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton { padding: 73px 8px 15px; width: 160px; @@ -1510,6 +1759,7 @@ html { color: #fff; background-color: #0dbd8b; } + .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before { top: 20px; left: 60px; @@ -1523,24 +1773,28 @@ html { -webkit-mask-size: contain; mask-size: contain; } + .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_sendDm:before { -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); mask-image: url(../../img/element-icons/feedback.a91241e.svg); } + .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_explore:before { -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); } + .mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton.mx_HomePage_button_createGroup:before { -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); } + .mx_LeftPanel { background-color: hsla(0, 0%, 96.1%, 0.9); min-width: 206px; @@ -1548,7 +1802,9 @@ html { display: -webkit-box; display: -ms-flexbox; display: flex; + contain: content; } + .mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer { -webkit-box-flex: 0; -ms-flex-positive: 0; @@ -1561,6 +1817,7 @@ html { -ms-flex-direction: column; flex-direction: column; } + .mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer, .mx_LeftPanel .mx_LeftPanel_roomListContainer { display: -webkit-box; @@ -1569,6 +1826,7 @@ html { -webkit-box-orient: vertical; -webkit-box-direction: normal; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer { background-color: hsla(0, 0%, 96.1%, 0.9); -webkit-box-flex: 1; @@ -1578,6 +1836,7 @@ html { -ms-flex-direction: column; flex-direction: column; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader { padding: 12px; -ms-flex-negative: 0; @@ -1590,6 +1849,7 @@ html { -ms-flex-direction: column; flex-direction: column; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer { @@ -1605,7 +1865,9 @@ html { -webkit-box-align: center; -ms-flex-align: center; align-items: center; + contain: content; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow { @@ -1626,6 +1888,7 @@ html { ); mask-image: linear-gradient(90deg, transparent, #000 5%); } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow { @@ -1648,6 +1911,7 @@ html { ); mask-image: linear-gradient(90deg, #000, #000 95%, transparent); } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow { @@ -1684,6 +1948,7 @@ html { transparent ); } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer { margin-left: 12px; margin-right: 12px; @@ -1696,6 +1961,7 @@ html { -ms-flex-align: center; align-items: center; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer @@ -1711,6 +1977,7 @@ html { margin: 0; width: 0; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer @@ -1723,6 +1990,40 @@ html { + .mx_LeftPanel_exploreButton:before { content: none; } + +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_dialPadButton { + width: 32px; + height: 32px; + border-radius: 8px; + background-color: rgba(141, 151, 165, 0.2); + position: relative; + margin-left: 8px; +} + +.mx_LeftPanel + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_dialPadButton:before { + content: ""; + position: absolute; + top: 8px; + left: 8px; + width: 16px; + height: 16px; + -webkit-mask-image: url(../../img/element-icons/call/dialpad.3be6cbc.svg); + mask-image: url(../../img/element-icons/call/dialpad.3be6cbc.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #737d8c; +} + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer @@ -1734,6 +2035,7 @@ html { position: relative; margin-left: 8px; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer @@ -1754,6 +2056,7 @@ html { mask-repeat: no-repeat; background: #737d8c; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer @@ -1761,6 +2064,7 @@ html { -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListFilterCount { @@ -1770,6 +2074,7 @@ html { margin-top: 14px; margin-bottom: -4px; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper { overflow: hidden; margin-top: 10px; @@ -1777,29 +2082,35 @@ html { -ms-flex: 1 0 0px; flex: 1 0 0; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom { padding-bottom: 32px; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop { padding-top: 32px; } + .mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_actualRoomListContainer { position: relative; height: 100%; } + .mx_LeftPanel.mx_LeftPanel_minimized { min-width: unset; width: unset !important; } + .mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer { width: 68px; } + .mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader { @@ -1811,6 +2122,7 @@ html { -ms-flex-pack: center; justify-content: center; } + .mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer { @@ -1822,6 +2134,11 @@ html { -ms-flex-pack: center; justify-content: center; } + +.mx_LeftPanel.mx_LeftPanel_minimized + .mx_LeftPanel_roomListContainer + .mx_LeftPanel_filterContainer + .mx_LeftPanel_dialPadButton, .mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer @@ -1830,10 +2147,12 @@ html { margin-top: 8px; background-color: transparent; } + .mx_LeftPanelWidget { margin-left: 8px; margin-bottom: 4px; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer { display: -webkit-box; display: -ms-flexbox; @@ -1845,6 +2164,7 @@ html { color: #8d99a5; margin-top: 4px; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_stickable { @@ -1859,6 +2179,7 @@ html { -ms-flex-align: center; align-items: center; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText { @@ -1873,6 +2194,7 @@ html { overflow: hidden; white-space: nowrap; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText @@ -1883,6 +2205,7 @@ html { height: 14px; margin-right: 6px; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText @@ -1901,6 +2224,7 @@ html { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer .mx_LeftPanelWidget_headerText @@ -1908,12 +2232,14 @@ html { -webkit-transform: rotate(-90deg); transform: rotate(-90deg); } + .mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox { position: relative; -ms-flex-direction: column; flex-direction: column; overflow: visible; } + .mx_LeftPanelWidget .mx_AppTileFullWidth, .mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox { display: -webkit-box; @@ -1922,6 +2248,7 @@ html { -webkit-box-orient: vertical; -webkit-box-direction: normal; } + .mx_LeftPanelWidget .mx_AppTileFullWidth { -webkit-box-flex: 1; -ms-flex: 1 0 0px; @@ -1934,6 +2261,7 @@ html { -webkit-mask-image: linear-gradient(0deg, transparent, #000 4px); mask-image: linear-gradient(0deg, transparent, #000 4px); } + .mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle { cursor: ns-resize; border-radius: 3px; @@ -1944,10 +2272,12 @@ html { left: calc(50% - 32px) !important; right: calc(50% - 32px) !important; } + .mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle { opacity: 0.8; background-color: #2e2f32; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton { margin-left: 8px; margin-right: 7px; @@ -1956,6 +2286,7 @@ html { height: 24px; border-radius: 32px; } + .mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before { content: ""; width: 16px; @@ -1973,9 +2304,11 @@ html { mask-image: url(../../img/feather-customised/maximise.dc32127.svg); background: #61708b; } + .mx_LeftPanelWidget_maximizeButtonTooltip { margin-top: -3px; } + .mx_MainSplit { display: -webkit-box; display: -ms-flexbox; @@ -1988,11 +2321,13 @@ html { min-height: 0; height: 100%; } + .mx_MainSplit > .mx_RightPanel_ResizeWrapper { padding: 5px; margin-left: 8px; height: calc(100vh - 51px); } + .mx_MainSplit > .mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle { top: 50% !important; -webkit-transform: translateY(-50%); @@ -2003,16 +2338,19 @@ html { background-color: #2e2f32; opacity: 0.8; } + .mx_MatrixChat_splash { position: relative; height: 100%; } + .mx_MatrixChat_splashButtons { text-align: center; width: 100%; position: absolute; bottom: 30px; } + .mx_MatrixChat_wrapper { display: -webkit-box; display: -ms-flexbox; @@ -2024,12 +2362,14 @@ html { width: 100%; height: 100%; } + .mx_MatrixToolbar { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; order: 1; height: 40px; } + .mx_MatrixChat { width: 100%; height: 100%; @@ -2044,6 +2384,7 @@ html { flex: 1; min-height: 0; } + .mx_MatrixChat_syncError { color: #fff; background-color: #df2a8b; @@ -2056,6 +2397,7 @@ html { -webkit-transform: translateX(-50%); transform: translateX(-50%); } + .mx_MatrixChat > :not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle) { background-color: #fff; -webkit-box-flex: 1; @@ -2064,9 +2406,11 @@ html { min-width: 0; height: 100%; } + .mx_MatrixChat > .mx_ResizeHandle_horizontal:hover { position: relative; } + .mx_MatrixChat > .mx_ResizeHandle_horizontal:hover:before { position: absolute; left: 6px; @@ -2080,6 +2424,7 @@ html { background-color: #2e2f32; opacity: 0.8; } + .mx_MyGroups { display: -webkit-box; display: -ms-flexbox; @@ -2089,13 +2434,16 @@ html { -ms-flex-direction: column; flex-direction: column; } + .mx_MyGroups .mx_BetaCard { margin: 0 72px; max-width: 760px; } + .mx_MyGroups .mx_RoomHeader_simpleHeader { margin-left: 0; } + .mx_MyGroups_header { margin-left: 2px; display: -webkit-box; @@ -2104,10 +2452,12 @@ html { -ms-flex-wrap: wrap; flex-wrap: wrap; } + .mx_MyGroups > :not(.mx_RoomHeader):not(.mx_BetaCard) { max-width: 960px; margin: 40px; } + .mx_MyGroups_headerCard { -webkit-box-flex: 1; -ms-flex: 1 0 50%; @@ -2121,6 +2471,7 @@ html { -ms-flex-align: center; align-items: center; } + .mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -2132,6 +2483,7 @@ html { background-color: rgba(92, 100, 112, 0.2); position: relative; } + .mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before { background-color: #5c6470; -webkit-mask: url(../../img/icons-create-room.817ede2.svg); @@ -2149,18 +2501,22 @@ html { left: 0; right: 0; } + .mx_MyGroups_headerCard_header { font-weight: 700; margin-bottom: 10px; } + .mx_MyGroups_headerCard_content { padding-right: 15px; } + .mx_MyGroups_joinBox { visibility: hidden; height: 0; margin: 0; } + .mx_MyGroups_content { margin-left: 2px; -webkit-box-flex: 1; @@ -2175,9 +2531,11 @@ html { flex-direction: column; overflow-y: auto; } + .mx_MyGroups_scrollable { overflow-y: inherit; } + .mx_MyGroups_placeholder { background-color: #f7f7f7; color: #888; @@ -2185,6 +2543,7 @@ html { border-radius: 10px; text-align: center; } + .mx_MyGroups_joinedGroups { border-top: 1px solid transparent; overflow-x: hidden; @@ -2198,6 +2557,7 @@ html { -ms-flex-line-pack: start; align-content: flex-start; } + .mx_MyGroups_joinedGroups .mx_GroupTile { min-width: 300px; max-width: 33%; @@ -2214,10 +2574,12 @@ html { align-items: flex-start; cursor: pointer; } + .mx_GroupTile_avatar { cursor: -webkit-grab, -webkit-grab; cursor: grab, -webkit-grab; } + .mx_GroupTile_profile { margin-left: 10px; display: -webkit-box; @@ -2231,19 +2593,23 @@ html { -ms-flex-pack: center; justify-content: center; } + .mx_GroupTile_profile .mx_GroupTile_desc, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_name { padding-right: 10px; } + .mx_GroupTile_profile .mx_GroupTile_name { margin: 0; font-size: 1.5rem; } + .mx_GroupTile_profile .mx_GroupTile_groupId { font-size: 1.3rem; opacity: 0.7; } + .mx_GroupTile_profile .mx_GroupTile_desc { display: -webkit-box; -webkit-line-clamp: 2; @@ -2252,12 +2618,14 @@ html { max-height: 36px; overflow: hidden; } + .mx_NonUrgentToastContainer { position: absolute; bottom: 30px; left: 28px; z-index: 101; } + .mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast { padding: 10px 12px; border-radius: 8px; @@ -2267,6 +2635,7 @@ html { background-color: #17191c; color: #fff; } + .mx_NotificationPanel { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; @@ -2279,6 +2648,7 @@ html { display: -ms-flexbox; display: flex; } + .mx_NotificationPanel .mx_RoomView_messageListWrapper { -webkit-box-orient: horizontal; -webkit-box-direction: normal; @@ -2291,17 +2661,21 @@ html { -ms-flex-pack: center; justify-content: center; } + .mx_NotificationPanel .mx_RoomView_MessageList { width: 100%; } + .mx_NotificationPanel .mx_RoomView_MessageList h2 { margin-left: 0; } + .mx_NotificationPanel .mx_EventTile { word-break: break-word; position: relative; padding-bottom: 18px; } + .mx_NotificationPanel .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after { position: absolute; @@ -2313,64 +2687,87 @@ html { opacity: 0.4; content: ""; } + .mx_NotificationPanel .mx_EventTile_roomName { font-weight: 700; font-size: 1.4rem; } + .mx_NotificationPanel .mx_EventTile_roomName > * { vertical-align: middle; } + .mx_NotificationPanel .mx_EventTile_roomName > .mx_BaseAvatar { margin-right: 8px; } + .mx_NotificationPanel .mx_EventTile_roomName a { color: #2e2f32; } + .mx_NotificationPanel .mx_EventTile_avatar { display: none; } + .mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp, .mx_NotificationPanel .mx_EventTile .mx_SenderProfile { color: #2e2f32; font-size: 1.2rem; display: inline; - padding-left: 0; } -.mx_NotificationPanel .mx_EventTile_senderDetails { + +.mx_NotificationPanel + .mx_EventTile:not([data-layout="bubble"]) + .mx_EventTile_senderDetails { padding-left: 36px; position: relative; } -.mx_NotificationPanel .mx_EventTile_senderDetails a { + +.mx_NotificationPanel + .mx_EventTile:not([data-layout="bubble"]) + .mx_EventTile_senderDetails + a { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_NotificationPanel .mx_EventTile_roomName a, .mx_NotificationPanel .mx_EventTile_senderDetails a { text-decoration: none !important; } + .mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { visibility: visible; position: static; display: inline; + padding-left: 5px; } -.mx_NotificationPanel .mx_EventTile_line { + +.mx_NotificationPanel + .mx_EventTile:not([data-layout="bubble"]) + .mx_EventTile_line { margin-right: 0; padding: 0 0 0 36px; } + .mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { padding-left: 0; } + .mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { background-color: #fff; } + .mx_NotificationPanel .mx_EventTile_content { margin-right: 0; } + .mx_NotificationPanel_empty:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); } + .mx_RightPanel { overflow-x: hidden; -webkit-box-flex: 0; @@ -2389,10 +2786,13 @@ html { -webkit-box-sizing: border-box; box-sizing: border-box; height: 100%; + contain: strict; } + .mx_RightPanel .mx_RoomView_MessageList { padding: 14px 18px; } + .mx_RightPanel_header { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; @@ -2402,6 +2802,7 @@ html { -ms-flex: 0 0 52px; flex: 0 0 52px; } + .mx_RightPanel_headerButtonGroup { height: 100%; display: -webkit-box; @@ -2413,6 +2814,7 @@ html { -ms-flex-align: center; align-items: center; } + .mx_RightPanel_headerButton { cursor: pointer; -webkit-box-flex: 0; @@ -2425,6 +2827,7 @@ html { position: relative; border-radius: 100%; } + .mx_RightPanel_headerButton:before { content: ""; position: absolute; @@ -2438,39 +2841,154 @@ html { -webkit-mask-size: contain; mask-size: contain; } + .mx_RightPanel_headerButton:hover { background: rgba(13, 189, 139, 0.1); } + .mx_RightPanel_headerButton:hover:before { background-color: #0dbd8b; } + .mx_RightPanel_notifsButton:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); -webkit-mask-position: center; mask-position: center; } + .mx_RightPanel_roomSummaryButton:before { -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); -webkit-mask-position: center; mask-position: center; } + .mx_RightPanel_groupMembersButton:before { -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); -webkit-mask-position: center; mask-position: center; } + .mx_RightPanel_roomsButton:before { -webkit-mask-image: url(../../img/element-icons/community-rooms.8f0b6c9.svg); mask-image: url(../../img/element-icons/community-rooms.8f0b6c9.svg); -webkit-mask-position: center; mask-position: center; } + +.mx_RightPanel_pinnedMessagesButton:before { + -webkit-mask-image: url(../../img/element-icons/room/pin.a996417.svg); + mask-image: url(../../img/element-icons/room/pin.a996417.svg); + -webkit-mask-position: center; + mask-position: center; +} + +.mx_RightPanel_pinnedMessagesButton + .mx_RightPanel_pinnedMessagesButton_unreadIndicator { + position: absolute; + right: 0; + top: 0; + margin: 4px; + width: 8px; + height: 8px; + border-radius: 50%; + -webkit-transform: scale(1); + transform: scale(1); + background: #ff4b55; + -webkit-box-shadow: 0 0 0 0 #ff4b55; + box-shadow: 0 0 0 0 #ff4b55; + -webkit-animation: mx_RightPanel_indicator_pulse 2s infinite; + animation: mx_RightPanel_indicator_pulse 2s infinite; + -webkit-animation-iteration-count: 1; + animation-iteration-count: 1; +} + +.mx_RightPanel_pinnedMessagesButton + .mx_RightPanel_pinnedMessagesButton_unreadIndicator:after { + content: ""; + position: absolute; + width: inherit; + height: inherit; + top: 0; + left: 0; + -webkit-transform: scale(1); + transform: scale(1); + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-animation-name: mx_RightPanel_indicator_pulse_shadow; + animation-name: mx_RightPanel_indicator_pulse_shadow; + -webkit-animation-duration: inherit; + animation-duration: inherit; + -webkit-animation-iteration-count: inherit; + animation-iteration-count: inherit; + border-radius: 50%; + background: #ff4b55; +} + +@-webkit-keyframes mx_RightPanel_indicator_pulse { + 0% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + } + 70% { + -webkit-transform: scale(1); + transform: scale(1); + } + to { + -webkit-transform: scale(0.95); + transform: scale(0.95); + } +} + +@keyframes mx_RightPanel_indicator_pulse { + 0% { + -webkit-transform: scale(0.95); + transform: scale(0.95); + } + 70% { + -webkit-transform: scale(1); + transform: scale(1); + } + to { + -webkit-transform: scale(0.95); + transform: scale(0.95); + } +} + +@-webkit-keyframes mx_RightPanel_indicator_pulse_shadow { + 0% { + opacity: 0.7; + } + 70% { + -webkit-transform: scale(2.2); + transform: scale(2.2); + opacity: 0; + } + to { + opacity: 0; + } +} + +@keyframes mx_RightPanel_indicator_pulse_shadow { + 0% { + opacity: 0.7; + } + 70% { + -webkit-transform: scale(2.2); + transform: scale(2.2); + opacity: 0; + } + to { + opacity: 0; + } +} + .mx_RightPanel_headerButton_highlight:before { background-color: #0dbd8b !important; } + .mx_RightPanel_headerButton_badge { font-size: 0.8rem; border-radius: 8px; @@ -2482,6 +3000,7 @@ html { left: 20px; padding: 2px 4px; } + .mx_RightPanel_collapsebutton { -webkit-box-flex: 1; -ms-flex: 1; @@ -2490,6 +3009,7 @@ html { height: 16px; border: none; } + .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_MemberList, @@ -2501,23 +3021,28 @@ html { -ms-flex: 1 1 0px; flex: 1 1 0; } + .mx_RightPanel .mx_RoomView_messagePanelSpinner { -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; margin: auto; } + .mx_RightPanel_empty { margin-right: -28px; } + .mx_RightPanel_empty h2 { font-weight: 700; margin: 16px 0; } + .mx_RightPanel_empty h2, .mx_RightPanel_empty p { font-size: 1.4rem; } + .mx_RightPanel_empty:before { content: ""; display: block; @@ -2532,6 +3057,7 @@ html { -webkit-mask-position: center; mask-position: center; } + .mx_RightPanel_scopeHeader { margin: 24px; text-align: center; @@ -2539,21 +3065,26 @@ html { font-size: 1.8rem; line-height: 2.2rem; } + .mx_RightPanel_scopeHeader .mx_BaseAvatar { margin-right: 8px; vertical-align: middle; } + .mx_RightPanel_scopeHeader .mx_BaseAvatar_image { border-radius: 8px; } + .mx_RoomDirectory_dialogWrapper > .mx_Dialog { max-width: 960px; height: 100%; } + .mx_RoomDirectory_dialog { height: 100%; flex-direction: column; } + .mx_RoomDirectory, .mx_RoomDirectory_dialog { display: -webkit-box; @@ -2563,11 +3094,13 @@ html { -webkit-box-direction: normal; -ms-flex-direction: column; } + .mx_RoomDirectory { margin-bottom: 12px; color: #2e2f32; word-break: break-word; } + .mx_RoomDirectory, .mx_RoomDirectory_list { flex-direction: column; @@ -2575,6 +3108,7 @@ html { -ms-flex: 1; flex: 1; } + .mx_RoomDirectory_list { display: -webkit-box; display: -ms-flexbox; @@ -2583,31 +3117,74 @@ html { -webkit-box-direction: normal; -ms-flex-direction: column; } + .mx_RoomDirectory_list .mx_RoomView_messageListWrapper { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } + .mx_RoomDirectory_listheader { display: block; margin-top: 13px; } + .mx_RoomDirectory_searchbox { -webkit-box-flex: 1 !important; -ms-flex: 1 !important; flex: 1 !important; } + .mx_RoomDirectory_listheader .mx_NetworkDropdown { -webkit-box-flex: 0; -ms-flex: 0 0 200px; flex: 0 0 200px; } + .mx_RoomDirectory_tableWrapper { overflow-y: auto; -webkit-box-flex: 1; -ms-flex: 1 1 0px; flex: 1 1 0; } + +.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer { + margin-top: 24px; + text-align: center; +} + +.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer > h5 { + margin: 0; + font-weight: 600; + font-size: 1.5rem; + line-height: 1.8rem; + color: #2e2f32; +} + +.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer > p { + margin: 40px auto 60px; + font-size: 1.4rem; + line-height: 2rem; + color: #737d8c; + max-width: 464px; +} + +.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer > hr { + margin: 0; + border: none; + height: 1px; + background-color: #f3f8fd; +} + +.mx_RoomDirectory_tableWrapper + .mx_RoomDirectory_footer + .mx_RoomDirectory_newRoom { + margin: 24px auto 0; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; +} + .mx_RoomDirectory_table { color: #2e2f32; display: grid; @@ -2619,15 +3196,18 @@ html { text-align: left; width: 100%; } + .mx_RoomDirectory_roomAvatar { padding: 2px 14px 0 0; } + .mx_RoomDirectory_roomMemberCount { -ms-flex-item-align: center; align-self: center; color: #747474; padding: 3px 10px 0; } + .mx_RoomDirectory_roomMemberCount:before { background-color: #747474; display: inline-block; @@ -2645,20 +3225,24 @@ html { width: 16px; height: 16px; } + .mx_RoomDirectory_join, .mx_RoomDirectory_preview { -ms-flex-item-align: center; align-self: center; white-space: nowrap; } + .mx_RoomDirectory_name { display: inline-block; font-size: 1.8rem; font-weight: 600; } + .mx_RoomDirectory_perms { display: inline-block; } + .mx_RoomDirectory_perm { border-radius: 10px; display: inline-block; @@ -2668,6 +3252,7 @@ html { color: #fff; background-color: #aaa; } + .mx_RoomDirectory_topic { cursor: auto; color: #747474; @@ -2676,24 +3261,25 @@ html { -webkit-line-clamp: 3; overflow: hidden; } + .mx_RoomDirectory_alias { font-size: 1.2rem; color: #a2a2a2; } -.mx_RoomDirectory_table tr { - padding-bottom: 10px; - cursor: pointer; -} + .mx_RoomDirectory .mx_RoomView_MessageList { padding: 0; } + .mx_RoomDirectory > span { font-size: 1.5rem; margin-top: 0; } + .mx_RoomDirectory > span .mx_AccessibleButton { padding: 0; } + .mx_RoomSearch { -webkit-box-flex: 1; -ms-flex: 1; @@ -2710,6 +3296,7 @@ html { -ms-flex-align: center; align-items: center; } + .mx_RoomSearch .mx_RoomSearch_icon { width: 16px; height: 16px; @@ -2720,6 +3307,7 @@ html { background-color: #737d8c; margin-left: 7px; } + .mx_RoomSearch .mx_RoomSearch_input { border: none !important; -webkit-box-flex: 1 !important; @@ -2732,38 +3320,47 @@ html { font-size: 1.2rem; line-height: 1.6rem; } + .mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder { color: #8d99a5 !important; } + .mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder { color: #8d99a5 !important; } + .mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder { color: #8d99a5 !important; } + .mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder { color: #8d99a5 !important; } + .mx_RoomSearch .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder { color: #8d99a5 !important; } + .mx_RoomSearch.mx_RoomSearch_hasQuery { border-color: #737d8c; } + .mx_RoomSearch.mx_RoomSearch_focused { -webkit-box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); border-color: transparent; } + .mx_RoomSearch.mx_RoomSearch_focused, .mx_RoomSearch.mx_RoomSearch_hasQuery { background-color: #fff; } + .mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton, .mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton { width: 16px; @@ -2779,36 +3376,44 @@ html { background-color: #737d8c; margin-right: 8px; } + .mx_RoomSearch .mx_RoomSearch_clearButton { width: 0; height: 0; } + .mx_RoomSearch.mx_RoomSearch_minimized { border-radius: 32px; height: auto; width: auto; padding: 8px; } + .mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon { margin-left: 0; } + .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) { margin-left: 65px; min-height: 50px; } + .mx_RoomStatusBar_typingIndicatorAvatars { width: 52px; margin-top: -1px; text-align: left; } + .mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { margin-right: -12px; border: 1px solid #fff; } + .mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { padding-left: 1px; padding-top: 1px; } + .mx_RoomStatusBar_typingIndicatorRemaining { display: inline-block; color: #acacac; @@ -2823,15 +3428,18 @@ html { text-align: center; position: absolute; } + .mx_RoomStatusBar_scrollDownIndicator { cursor: pointer; padding-left: 1px; } + .mx_RoomStatusBar_unreadMessagesBar { padding-top: 10px; color: #ff4b55; cursor: pointer; } + .mx_RoomStatusBar_connectionLostBar { display: -webkit-box; display: -ms-flexbox; @@ -2839,6 +3447,7 @@ html { margin-top: 19px; min-height: 58px; } + .mx_RoomStatusBar_unsentMessages > div[role="alert"] { display: -webkit-box; display: -ms-flexbox; @@ -2852,9 +3461,11 @@ html { background-color: #f3f8fd; border-radius: 4px; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge { margin-right: 12px; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge { @@ -2862,19 +3473,23 @@ html { height: 24px !important; border-radius: 24px !important; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge .mx_NotificationBadge .mx_NotificationBadge_count { font-size: 1.6rem !important; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle { color: #ff4b55; font-size: 1.5rem; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription { font-size: 1.2rem; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar { -webkit-box-flex: 1; -ms-flex-positive: 1; @@ -2883,18 +3498,21 @@ html { margin-right: 22px; color: #61708b; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton { - padding: 5px 10px 5px 28px; + padding: 5px 10px 5px 30px; display: inline-block; position: relative; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:nth-child(2) { border-left: 1px solid #e3e8f0; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton:before { @@ -2908,30 +3526,33 @@ html { mask-position: center; -webkit-mask-size: contain; mask-size: contain; + width: 18px; + height: 18px; + top: 50%; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before { - -webkit-mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); - mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); - width: 12px; - height: 16px; - top: calc(50% - 8px); + -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); + mask-image: url(../../img/element-icons/trashcan.3b626db.svg); } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn { padding-left: 34px; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before { -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); mask-image: url(../../img/element-icons/retry.6cd23ad.svg); - width: 18px; - height: 18px; - top: calc(50% - 9px); } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner { @@ -2939,32 +3560,38 @@ html { margin-right: 5px; top: 1px; } + .mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar .mx_InlineSpinner + span { margin-right: 10px; } + .mx_RoomStatusBar_connectionLostBar img { padding-left: 10px; padding-right: 10px; vertical-align: middle; float: left; } + .mx_RoomStatusBar_connectionLostBar_title { color: #ff4b55; } + .mx_RoomStatusBar_connectionLostBar_desc { color: #2e2f32; font-size: 1.3rem; opacity: 0.5; padding-bottom: 20px; } + .mx_RoomStatusBar_resend_link { color: #2e2f32 !important; text-decoration: underline !important; cursor: pointer; } + .mx_RoomStatusBar_typingBar { height: 50px; line-height: 5rem; @@ -2973,17 +3600,21 @@ html { overflow-y: hidden; display: block; } + .mx_MatrixChat_useCompactLayout .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) { min-height: 40px; } + .mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator { margin-top: 10px; } + .mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar { height: 40px; line-height: 4rem; } + .mx_RoomView { word-wrap: break-word; display: -webkit-box; @@ -2994,6 +3625,7 @@ html { -ms-flex-direction: column; flex-direction: column; } + @-webkit-keyframes mx_RoomView_fileDropTarget_animation { 0% { opacity: 0; @@ -3002,6 +3634,7 @@ html { opacity: 0.95; } } + @keyframes mx_RoomView_fileDropTarget_animation { 0% { opacity: 0; @@ -3010,6 +3643,7 @@ html { opacity: 0.95; } } + .mx_RoomView_fileDropTarget { min-width: 0; width: 100%; @@ -3039,29 +3673,38 @@ html { -webkit-animation-duration: 0.5s; animation-duration: 0.5s; } + @-webkit-keyframes mx_RoomView_fileDropTarget_image_animation { 0% { - width: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0); } to { - width: 32px; + -webkit-transform: scaleX(1); + transform: scaleX(1); } } + @keyframes mx_RoomView_fileDropTarget_image_animation { 0% { - width: 0; + -webkit-transform: scaleX(0); + transform: scaleX(0); } to { - width: 32px; + -webkit-transform: scaleX(1); + transform: scaleX(1); } } + .mx_RoomView_fileDropTarget_image { + width: 32px; -webkit-animation: mx_RoomView_fileDropTarget_image_animation; animation: mx_RoomView_fileDropTarget_image_animation; -webkit-animation-duration: 0.5s; animation-duration: 0.5s; margin-bottom: 16px; } + .mx_RoomView_auxPanel { min-width: 0; width: 100%; @@ -3071,6 +3714,7 @@ html { -ms-flex: 0 0 auto; flex: 0 0 auto; } + .mx_RoomView_auxPanel_fullHeight { position: absolute; top: 0; @@ -3080,26 +3724,31 @@ html { z-index: 3000; background-color: #fff; } + .mx_RoomView_auxPanel_hiddenHighlights { border-bottom: 1px solid transparent; padding: 10px 26px; color: #ff4b55; cursor: pointer; } + .mx_RoomView_auxPanel_apps { max-width: 1920px !important; } + .mx_RoomView .mx_MainSplit, .mx_RoomView_messagePanel { -webkit-box-flex: 1; -ms-flex: 1 1 0px; flex: 1 1 0; } + .mx_RoomView_messagePanel { width: 100%; overflow-y: auto; overflow-anchor: none; } + .mx_RoomView_messagePanelSearchSpinner { -webkit-box-flex: 1; -ms-flex: 1; @@ -3110,6 +3759,7 @@ html { background-repeat: no-repeat; position: relative; } + .mx_RoomView_messagePanelSearchSpinner:before { background-color: #888; -webkit-mask: url(../../img/feather-customised/search-input.044bfa7.svg); @@ -3127,6 +3777,7 @@ html { right: 0; height: 50px; } + .mx_RoomView_body { display: -webkit-box; display: -ms-flexbox; @@ -3140,6 +3791,7 @@ html { flex: 1; min-width: 0; } + .mx_RoomView_body .mx_RoomView_messagePanel, .mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner, .mx_RoomView_body .mx_RoomView_messagePanelSpinner { @@ -3147,6 +3799,7 @@ html { -ms-flex-order: 2; order: 2; } + .mx_RoomView_body .mx_RoomView_timeline { position: relative; -webkit-box-flex: 1; @@ -3159,7 +3812,9 @@ html { -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; + contain: content; } + .mx_RoomView_statusArea { width: 100%; -webkit-box-flex: 0; @@ -3172,18 +3827,22 @@ html { -webkit-transition: all 0.2s ease-out; transition: all 0.2s ease-out; } + .mx_RoomView_statusArea_expanded { max-height: 100px; } + .mx_RoomView_statusAreaBox { margin: auto; min-height: 50px; } + .mx_RoomView_statusAreaBox_line { margin-left: 65px; border-top: 1px solid transparent; height: 1px; } + .mx_RoomView_messageListWrapper { min-height: 100%; display: -webkit-box; @@ -3197,15 +3856,18 @@ html { -ms-flex-pack: end; justify-content: flex-end; } + .mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } + .mx_RoomView_searchResultsPanel a { text-decoration: none; color: inherit; } + .mx_RoomView_empty { font-size: 1.3rem; padding: 0 24px; @@ -3213,6 +3875,7 @@ html { text-align: center; margin-bottom: 80px; } + .mx_RoomView_MessageList { list-style-type: none; padding: 18px; @@ -3220,15 +3883,18 @@ html { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_RoomView_MessageList li { clear: both; } + li.mx_RoomView_myReadMarker_container { height: 0; margin: 0; padding: 0; border: 0; } + hr.mx_RoomView_myReadMarker { border-top: 1px solid #0dbd8b; border-bottom: 1px solid #0dbd8b; @@ -3236,41 +3902,50 @@ hr.mx_RoomView_myReadMarker { position: relative; top: -1px; z-index: 1; + will-change: width; -webkit-transition: width easeinsine 0.4s 1s, opacity easeinsine 0.4s 1s; transition: width easeinsine 0.4s 1s, opacity easeinsine 0.4s 1s; width: 99%; opacity: 1; } + .mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { background-color: #fff; } + .mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { color: #fff; opacity: 1; } + .mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { margin-top: 2px; border: none; height: 0; } + .mx_RoomView_inCall .mx_MessageComposer_wrapper { border-top: 2px hidden; padding-top: 1px; } + .mx_RoomView_voipChevron { position: absolute; bottom: -11px; right: 11px; } + .mx_RoomView_voipButton { float: right; margin-right: 13px; margin-top: 13px; cursor: pointer; } + .mx_RoomView_voipButton object { pointer-events: none; } + .mx_RoomView .mx_MessageComposer { width: 100%; -webkit-box-flex: 0; @@ -3278,6 +3953,7 @@ hr.mx_RoomView_myReadMarker { flex: 0 0 auto; margin-right: 2px; } + .mx_RoomView_ongoingConfCallNotification { width: 100%; text-align: center; @@ -3287,15 +3963,19 @@ hr.mx_RoomView_myReadMarker { padding: 6px 0; cursor: pointer; } + .mx_RoomView_ongoingConfCallNotification a { color: #fff !important; } + .mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList { margin-bottom: 4px; } + .mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox { min-height: 42px; } + .mx_ScrollPanel .mx_RoomView_MessageList { position: relative; display: -webkit-box; @@ -3308,16 +3988,21 @@ hr.mx_RoomView_myReadMarker { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; + content-visibility: auto; + contain-intrinsic-size: 50px; } + .mx_SearchBox { -webkit-box-flex: 1; -ms-flex: 1 1 0px; flex: 1 1 0; min-width: 0; } + .mx_SearchBox.mx_SearchBox_blurred:not(:hover) { background-color: transparent; } + .mx_SearchBox .mx_SearchBox_closeButton { cursor: pointer; background-image: url(../../img/icons-close.11ff07c.svg); @@ -3327,6 +4012,7 @@ hr.mx_RoomView_myReadMarker { background-position: 50%; padding: 9px; } + .mx_SpacePanel { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -3341,14 +4027,15 @@ hr.mx_RoomView_myReadMarker { -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; - overflow-y: auto; } + .mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; padding: 8px 8px 16px 0; } + .mx_SpacePanel .mx_SpacePanel_toggleCollapse { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -3367,21 +4054,30 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/element-icons/expand-space-panel.e6f74b9.svg); mask-image: url(../../img/element-icons/expand-space-panel.e6f74b9.svg); } + .mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded { -webkit-transform: scaleX(-1); transform: scaleX(-1); } + .mx_SpacePanel ul { margin: 0; list-style: none; padding: 0; } + .mx_SpacePanel ul > .mx_SpaceItem { padding-left: 16px; } + .mx_SpacePanel .mx_SpaceButton_toggleCollapse { cursor: pointer; } + +.mx_SpacePanel .mx_SpaceItem_dragging .mx_SpaceButton_toggleCollapse { + visibility: hidden; +} + .mx_SpacePanel .mx_SpaceTreeLevel { display: -webkit-box; display: -ms-flexbox; @@ -3395,6 +4091,7 @@ hr.mx_RoomView_myReadMarker { -ms-flex-positive: 1; flex-grow: 1; } + .mx_SpacePanel .mx_SpaceItem { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -3402,10 +4099,12 @@ hr.mx_RoomView_myReadMarker { -ms-flex-flow: wrap; flex-flow: wrap; } + .mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow { -ms-flex-item-align: baseline; align-self: baseline; } + .mx_SpacePanel .mx_SpaceItem.collapsed > .mx_SpaceButton @@ -3413,13 +4112,16 @@ hr.mx_RoomView_myReadMarker { -webkit-transform: rotate(-90deg); transform: rotate(-90deg); } + .mx_SpacePanel .mx_SpaceItem.collapsed > .mx_SpaceTreeLevel { display: none; } + .mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces) > .mx_SpaceButton { margin-left: 16px; min-width: 40px; } + .mx_SpacePanel .mx_SpaceButton { border-radius: 8px; display: -webkit-box; @@ -3431,17 +4133,20 @@ hr.mx_RoomView_myReadMarker { padding: 4px 4px 4px 0; width: 100%; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper { background-color: #fff; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow .mx_SpaceButton_selectionWrapper { padding: 1px; border: 3px solid #737d8c; } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper { position: relative; display: -webkit-box; @@ -3456,6 +4161,7 @@ hr.mx_RoomView_myReadMarker { border-radius: 12px; padding: 4px; } + .mx_SpacePanel .mx_SpaceButton:not(.mx_SpaceButton_narrow) .mx_SpaceButton_selectionWrapper { @@ -3463,6 +4169,7 @@ hr.mx_RoomView_myReadMarker { padding-right: 16px; overflow: hidden; } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name { -webkit-box-flex: 1; -ms-flex: 1; @@ -3476,6 +4183,7 @@ hr.mx_RoomView_myReadMarker { font-size: 1.4rem; line-height: 1.8rem; } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse { width: 16px; height: 20px; @@ -3489,6 +4197,7 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon { width: 32px; min-width: 32px; @@ -3496,6 +4205,7 @@ hr.mx_RoomView_myReadMarker { border-radius: 8px; position: relative; } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before { position: absolute; content: ""; @@ -3510,19 +4220,23 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-size: 18px; mask-size: 18px; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon { background-color: #fff; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before { background-color: #3f3d3d; -webkit-mask-image: url(../../img/element-icons/home.b706c0e.svg); mask-image: url(../../img/element-icons/home.b706c0e.svg); } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon { background-color: #0dbd8b; -webkit-transition: all 0.1s ease-in-out; transition: all 0.1s ease-in-out; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before { background-color: #fff; -webkit-mask-image: url(../../img/element-icons/plus.62cc275.svg); @@ -3530,18 +4244,22 @@ hr.mx_RoomView_myReadMarker { -webkit-transition: all 0.2s ease-in-out; transition: all 0.2s ease-in-out; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon { background-color: #c1c6cd; } + .mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon:before { -webkit-transform: rotate(45deg); transform: rotate(45deg); } + .mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image { border-radius: 8px; } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton { width: 20px; min-width: 20px; @@ -3552,6 +4270,7 @@ hr.mx_RoomView_myReadMarker { position: absolute; right: 4px; } + .mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before { top: 2px; left: 2px; @@ -3569,6 +4288,7 @@ hr.mx_RoomView_myReadMarker { mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); background: #2e2f32; } + .mx_SpacePanel .mx_SpacePanel_badgeContainer { position: absolute; display: -webkit-box; @@ -3578,22 +4298,27 @@ hr.mx_RoomView_myReadMarker { -ms-flex-align: center; align-items: center; } + .mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge { margin: 0 2px; } + .mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot { margin: 0 7px; } + .mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer { right: 0; top: 0; } + .mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer .mx_NotificationBadge { background-clip: padding-box; } + .mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer @@ -3601,6 +4326,7 @@ hr.mx_RoomView_myReadMarker { margin: 0 -1px 0 0; border: 3px solid hsla(0, 0%, 91%, 0.77); } + .mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer @@ -3612,16 +4338,19 @@ hr.mx_RoomView_myReadMarker { margin: -5px -5px 0 0; border: 2px solid hsla(0, 0%, 91%, 0.77); } + .mx_SpacePanel.collapsed .mx_SpaceButton.mx_SpaceButton_active .mx_SpacePanel_badgeContainer { right: -3px; top: -3px; } + .mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer { position: absolute; right: 4px; } + .mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpacePanel_badgeContainer, @@ -3635,6 +4364,7 @@ hr.mx_RoomView_myReadMarker { height: 0; display: none; } + .mx_SpacePanel:not(.collapsed) .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) .mx_SpaceButton_menuButton, @@ -3646,26 +4376,31 @@ hr.mx_RoomView_myReadMarker { .mx_SpaceButton_menuButton { display: block; } + .mx_SpacePanel > .mx_AutoHideScrollbar > .mx_SpaceButton, .mx_SpacePanel > .mx_AutoHideScrollbar > .mx_SpaceButton.mx_SpaceButton_active:before { height: 32px; } + .mx_SpacePanel > .mx_AutoHideScrollbar > ul { padding-left: 0; } + .mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header { margin: 12px 16px; font-weight: 600; font-size: 1.5rem; line-height: 1.8rem; } + .mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton { color: #0dbd8b; } + .mx_SpacePanel_contextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton @@ -3674,37 +4409,46 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + .mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before { -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); mask-image: url(../../img/element-icons/leave.bb917e7.svg); } + .mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before { -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); mask-image: url(../../img/element-icons/room/members.88c3e93.svg); } + .mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before { -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); } + .mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before { -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); } + .mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before { -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); } + .mx_SpacePanel_sharePublicSpace { margin: 0; } + .mx_SpaceRoomDirectory_dialogWrapper > .mx_Dialog { max-width: 960px; height: 100%; } + .mx_SpaceRoomDirectory { height: 100%; margin-bottom: 12px; @@ -3715,6 +4459,7 @@ hr.mx_RoomView_myReadMarker { -ms-flex-direction: column; flex-direction: column; } + .mx_SpaceRoomDirectory, .mx_SpaceRoomDirectory .mx_Dialog_title, .mx_SpaceRoomView_landing .mx_Dialog_title { @@ -3722,16 +4467,19 @@ hr.mx_RoomView_myReadMarker { display: -ms-flexbox; display: flex; } + .mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar, .mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar { margin-right: 12px; -ms-flex-item-align: center; align-self: center; } + .mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image, .mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image { border-radius: 8px; } + .mx_SpaceRoomDirectory .mx_Dialog_title > div > h1, .mx_SpaceRoomView_landing .mx_Dialog_title > div > h1 { font-weight: 600; @@ -3739,6 +4487,7 @@ hr.mx_RoomView_myReadMarker { line-height: 2.2rem; margin: 0; } + .mx_SpaceRoomDirectory .mx_Dialog_title > div > div, .mx_SpaceRoomView_landing .mx_Dialog_title > div > div { font-weight: 400; @@ -3746,24 +4495,29 @@ hr.mx_RoomView_myReadMarker { font-size: 1.5rem; line-height: 2.4rem; } + .mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link, .mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link { padding: 0; } + .mx_SpaceRoomDirectory .mx_SearchBox, .mx_SpaceRoomView_landing .mx_SearchBox { margin: 24px 0 16px; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults { text-align: center; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults > div, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults > div { font-size: 1.5rem; line-height: 2.4rem; color: #737d8c; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader { display: -webkit-box; @@ -3777,6 +4531,7 @@ hr.mx_RoomView_myReadMarker { line-height: 2.4rem; color: #2e2f32; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader @@ -3784,6 +4539,7 @@ hr.mx_RoomView_myReadMarker { padding: 4px 12px; font-weight: 400; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton @@ -3794,6 +4550,7 @@ hr.mx_RoomView_myReadMarker { + .mx_AccessibleButton { margin-left: 16px; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton_kind_danger_outline, @@ -3808,10 +4565,12 @@ hr.mx_RoomView_myReadMarker { .mx_AccessibleButton_kind_primary_outline { padding: 3px 12px; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader > span, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader > span { margin-left: auto; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error { position: relative; @@ -3825,6 +4584,7 @@ hr.mx_RoomView_myReadMarker { width: -moz-max-content; width: max-content; } + .mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before, .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before { content: ""; @@ -3832,12 +4592,14 @@ hr.mx_RoomView_myReadMarker { height: 16px; width: 16px; left: 0; - background-image: url(../../img/element-icons/warning-badge.de1033e.svg); + background-image: url(../../img/element-icons/warning-badge.413c9a9.svg); } + .mx_SpaceRoomDirectory_list { margin-top: 16px; padding-bottom: 40px; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount > h3 { display: inline; font-weight: 600; @@ -3845,17 +4607,20 @@ hr.mx_RoomView_myReadMarker { line-height: 2.2rem; color: #2e2f32; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount > span { margin-left: 8px; font-size: 1.5rem; line-height: 2.4rem; color: #737d8c; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace .mx_BaseAvatar_image { border-radius: 8px; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle { position: absolute; left: -1px; @@ -3865,6 +4630,7 @@ hr.mx_RoomView_myReadMarker { border-radius: 4px; background-color: #fff; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before { content: ""; position: absolute; @@ -3884,15 +4650,18 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before { -webkit-transform: rotate(0deg); transform: rotate(0deg); } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children { position: relative; padding-left: 12px; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile { position: relative; padding: 8px 16px; @@ -3909,10 +4678,12 @@ hr.mx_RoomView_myReadMarker { -ms-flex-align: center; align-items: center; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar { grid-row: 1; grid-column: 1; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name { @@ -3922,6 +4693,7 @@ hr.mx_RoomView_myReadMarker { grid-row: 1; grid-column: 2; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name @@ -3932,6 +4704,7 @@ hr.mx_RoomView_myReadMarker { font-size: 1.2rem; line-height: 1.5rem; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name @@ -3941,6 +4714,7 @@ hr.mx_RoomView_myReadMarker { position: relative; vertical-align: text-top; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_name @@ -3950,6 +4724,7 @@ hr.mx_RoomView_myReadMarker { top: 0; left: 0; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_roomTile_info { @@ -3963,6 +4738,7 @@ hr.mx_RoomView_myReadMarker { -webkit-line-clamp: 2; overflow: hidden; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions { @@ -3971,6 +4747,7 @@ hr.mx_RoomView_myReadMarker { grid-column: 3; grid-row: 1/3; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions @@ -3980,6 +4757,7 @@ hr.mx_RoomView_myReadMarker { display: inline-block; visibility: hidden; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions @@ -3990,6 +4768,7 @@ hr.mx_RoomView_myReadMarker { .mx_AccessibleButton_kind_primary_outline { padding: 3px 16px; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_SpaceRoomDirectory_actions @@ -4000,14 +4779,17 @@ hr.mx_RoomView_myReadMarker { vertical-align: middle; margin-left: 12px; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover { background-color: hsla(0, 0%, 91%, 0.77); } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover .mx_AccessibleButton { visibility: visible; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before, .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before { content: ""; @@ -4018,6 +4800,7 @@ hr.mx_RoomView_myReadMarker { left: 6px; top: 0; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_actions .mx_SpaceRoomDirectory_actionsText { @@ -4026,12 +4809,14 @@ hr.mx_RoomView_myReadMarker { line-height: 1.5rem; color: #737d8c; } + .mx_SpaceRoomDirectory_list > hr { border: none; height: 1px; background-color: rgba(141, 151, 165, 0.2); margin: 20px 0; } + .mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom { display: block; margin: 16px auto 0; @@ -4039,6 +4824,7 @@ hr.mx_RoomView_myReadMarker { width: -moz-max-content; width: max-content; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child { padding: 80px 60px; -webkit-box-flex: 1; @@ -4047,6 +4833,7 @@ hr.mx_RoomView_myReadMarker { max-height: 100%; overflow-y: auto; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child h1 { margin: 0; font-size: 2.4rem; @@ -4056,6 +4843,7 @@ hr.mx_RoomView_myReadMarker { width: -moz-max-content; width: max-content; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child @@ -4066,9 +4854,11 @@ hr.mx_RoomView_myReadMarker { margin-bottom: 24px; max-width: 428px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AddExistingToSpace { max-width: 428px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child @@ -4077,18 +4867,21 @@ hr.mx_RoomView_myReadMarker { height: calc(100vh - 360px); max-height: 400px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child:not(.mx_SpaceRoomView_landing) .mx_SpaceFeedbackPrompt { width: 428px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_buttons { display: block; margin-top: 44px; width: 428px; text-align: right; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child @@ -4097,6 +4890,7 @@ hr.mx_RoomView_myReadMarker { padding: 8px 22px; margin-left: 16px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child @@ -4104,12 +4898,15 @@ hr.mx_RoomView_myReadMarker { input.mx_AccessibleButton { border: none; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field { max-width: 428px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field + .mx_Field { margin-top: 28px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_errorText { font-weight: 600; font-size: 1.2rem; @@ -4117,12 +4914,14 @@ hr.mx_RoomView_myReadMarker { color: #ff4b55; margin-bottom: 28px; } + .mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AccessibleButton_disabled { cursor: not-allowed; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview { padding: 32px 24px !important; margin: auto; @@ -4134,11 +4933,13 @@ hr.mx_RoomView_myReadMarker { border-radius: 8px; position: relative; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill { position: absolute; right: 24px; top: 32px; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt { @@ -4150,6 +4951,7 @@ hr.mx_RoomView_myReadMarker { position: relative; padding-left: 24px; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt @@ -4159,6 +4961,7 @@ hr.mx_RoomView_myReadMarker { font-size: inherit; line-height: inherit; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_spaceBetaPrompt:before { @@ -4177,6 +4980,7 @@ hr.mx_RoomView_myReadMarker { mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); background-color: #737d8c; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter { display: -webkit-box; display: -ms-flexbox; @@ -4187,12 +4991,14 @@ hr.mx_RoomView_myReadMarker { margin-bottom: 20px; font-size: 1.5rem; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter > div { margin-left: 8px; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter @@ -4200,6 +5006,7 @@ hr.mx_RoomView_myReadMarker { .mx_SpaceRoomView_preview_inviter_name { line-height: 1.8rem; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter @@ -4208,6 +5015,7 @@ hr.mx_RoomView_myReadMarker { line-height: 2.4rem; color: #737d8c; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview > .mx_BaseAvatar @@ -4215,9 +5023,11 @@ hr.mx_RoomView_myReadMarker { .mx_SpaceRoomView .mx_SpaceRoomView_preview > .mx_BaseAvatar_image { border-radius: 12px; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name { margin: 20px 0 !important; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic { font-size: 1.4rem; line-height: 2.2rem; @@ -4226,11 +5036,13 @@ hr.mx_RoomView_myReadMarker { max-height: 160px; overflow-y: auto; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons { margin-top: 20px; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons @@ -4240,6 +5052,7 @@ hr.mx_RoomView_myReadMarker { box-sizing: border-box; padding: 14px 0; } + .mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_joinButtons @@ -4247,6 +5060,17 @@ hr.mx_RoomView_myReadMarker { + .mx_AccessibleButton { margin-left: 20px; } + +.mx_SpaceRoomView .mx_SpaceRoomView_landing { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + .mx_SpaceRoomView .mx_SpaceRoomView_landing > .mx_BaseAvatar @@ -4254,23 +5078,27 @@ hr.mx_RoomView_myReadMarker { .mx_SpaceRoomView .mx_SpaceRoomView_landing > .mx_BaseAvatar_image { border-radius: 12px; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name { margin: 24px 0 16px; font-size: 1.5rem; color: #737d8c; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name > span { display: inline-block; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name .mx_SpaceRoomView_landing_nameRow { margin-top: 12px; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name @@ -4278,6 +5106,7 @@ hr.mx_RoomView_myReadMarker { > h1 { display: inline-block; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name @@ -4286,6 +5115,7 @@ hr.mx_RoomView_myReadMarker { margin-right: 4px; vertical-align: middle; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info { display: -webkit-box; display: -ms-flexbox; @@ -4294,6 +5124,7 @@ hr.mx_RoomView_myReadMarker { -ms-flex-align: center; align-items: center; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4301,6 +5132,7 @@ hr.mx_RoomView_myReadMarker { display: inline-block; margin: 0 auto 0 0; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4308,6 +5140,7 @@ hr.mx_RoomView_myReadMarker { display: inline-block; margin-right: 12px; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4315,6 +5148,7 @@ hr.mx_RoomView_myReadMarker { .mx_FacePile_faces { cursor: pointer; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4326,6 +5160,7 @@ hr.mx_RoomView_myReadMarker { height: -moz-min-content; height: min-content; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4345,6 +5180,7 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4354,6 +5190,7 @@ hr.mx_RoomView_myReadMarker { width: 24px; height: 24px; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info @@ -4374,25 +5211,40 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic { font-size: 1.5rem; margin-top: 12px; margin-bottom: 16px; + white-space: pre-wrap; + word-wrap: break-word; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing > hr { border: none; height: 1px; background-color: hsla(0, 0%, 91%, 0.77); } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox { margin: 0 0 20px; + -webkit-box-flex: 0; + -ms-flex: 0; + flex: 0; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt { margin-bottom: 16px; } + .mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt + hr { display: none; } + +.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_list { + display: contents; +} + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton { position: relative; padding: 16px 32px 16px 72px; @@ -4404,13 +5256,16 @@ hr.mx_RoomView_myReadMarker { font-size: 1.5rem; margin: 20px 0; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > h3 { font-weight: 600; margin: 0 0 4px; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > span { color: #737d8c; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:before { position: absolute; content: ""; @@ -4426,32 +5281,82 @@ hr.mx_RoomView_myReadMarker { mask-size: 24px; background-color: #8d99a5; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover { border-color: #0dbd8b; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover:before { background-color: #0dbd8b; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover > span { color: #2e2f32; } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_justMeButton:before { -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); mask-image: url(../../img/element-icons/room/members.88c3e93.svg); } + .mx_SpaceRoomView .mx_SpaceRoomView_privateScope .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before { -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); } + +.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning { + padding: 12px 12px 12px 54px; + position: relative; + font-size: 1.5rem; + line-height: 2.4rem; + width: 432px; + border-radius: 8px; + background-color: #f7f7f7; + color: #737d8c; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning > h3 { + font-weight: 600; + font-size: inherit; + line-height: inherit; + margin: 0; +} + +.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning > p { + font-size: inherit; + line-height: inherit; + margin: 0; +} + +.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning:before { + -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + content: ""; + width: 20px; + height: 20px; + position: absolute; + top: 14px; + left: 14px; + background-color: #737d8c; +} + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer { @@ -4464,6 +5369,7 @@ hr.mx_RoomView_myReadMarker { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_betaDisclaimer @@ -4472,12 +5378,14 @@ hr.mx_RoomView_myReadMarker { left: 16px; top: 16px; } + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons { color: #737d8c; margin-top: 28px; } + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons @@ -4487,6 +5395,7 @@ hr.mx_RoomView_myReadMarker { padding-left: 32px; line-height: 24px; } + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons @@ -4505,6 +5414,7 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-size: contain; mask-size: contain; } + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons @@ -4512,6 +5422,7 @@ hr.mx_RoomView_myReadMarker { + .mx_AccessibleButton { margin-left: 32px; } + .mx_SpaceRoomView .mx_SpaceRoomView_inviteTeammates .mx_SpaceRoomView_inviteTeammates_buttons @@ -4519,17 +5430,20 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_SpaceRoomView_info { color: #737d8c; font-size: 1.5rem; line-height: 2.4rem; margin: 20px 0; } + .mx_SpaceRoomView_info .mx_SpaceRoomView_info_private, .mx_SpaceRoomView_info .mx_SpaceRoomView_info_public { padding-left: 20px; position: relative; } + .mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before, .mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before { position: absolute; @@ -4544,37 +5458,44 @@ hr.mx_RoomView_myReadMarker { mask-repeat: no-repeat; background-color: #8d99a5; } + .mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before { -webkit-mask-size: 12px; mask-size: 12px; -webkit-mask-image: url(../../img/globe.8201f08.svg); mask-image: url(../../img/globe.8201f08.svg); } + .mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before { -webkit-mask-size: 14px; mask-size: 14px; -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); mask-image: url(../../img/element-icons/lock.1f264bd.svg); } + .mx_SpaceRoomView_info .mx_AccessibleButton_kind_link { color: inherit; position: relative; padding-left: 16px; } + .mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before { content: "·"; position: absolute; left: 6px; } + .mx_SpaceFeedbackPrompt { margin-top: 18px; margin-bottom: 12px; } + .mx_SpaceFeedbackPrompt > hr { border: none; border-top: 1px solid #e7e7e7; margin-bottom: 12px; } + .mx_SpaceFeedbackPrompt > div { display: -webkit-box; display: -ms-flexbox; @@ -4586,6 +5507,7 @@ hr.mx_RoomView_myReadMarker { font-size: 1.5rem; line-height: 2.4rem; } + .mx_SpaceFeedbackPrompt > div > span { color: #737d8c; position: relative; @@ -4594,6 +5516,7 @@ hr.mx_RoomView_myReadMarker { line-height: inherit; margin-right: auto; } + .mx_SpaceFeedbackPrompt > div > span:before { content: ""; position: absolute; @@ -4611,6 +5534,7 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-position: center; mask-position: center; } + .mx_SpaceFeedbackPrompt > div .mx_AccessibleButton_kind_link { color: #0dbd8b; position: relative; @@ -4619,6 +5543,7 @@ hr.mx_RoomView_myReadMarker { font-size: inherit; line-height: inherit; } + .mx_SpaceFeedbackPrompt > div .mx_AccessibleButton_kind_link:before { content: ""; position: absolute; @@ -4635,28 +5560,132 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-position: center; mask-position: center; } + .mx_TabbedView { padding: 0 0 0 16px; display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin: 8px 0 0; } -.mx_TabbedView_tabLabels { + +.mx_TabbedView, +.mx_TabbedView_tabsOnLeft { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.mx_TabbedView_tabsOnLeft { + position: absolute; +} + +.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabels { width: 170px; max-width: 170px; - color: #45474a; position: fixed; } + +.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabPanel { + margin-left: 240px; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabel_active { + background-color: #0dbd8b; + color: #fff; +} + +.mx_TabbedView_tabsOnLeft + .mx_TabbedView_tabLabel_active + .mx_TabbedView_maskedIcon:before { + background-color: #fff; +} + +.mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon { + width: 16px; + height: 16px; + margin-left: 8px; + margin-right: 16px; +} + +.mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon:before { + -webkit-mask-size: 16px; + mask-size: 16px; + width: 16px; + height: 16px; +} + +.mx_TabbedView_tabsOnTop { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabels { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 8px; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel { + padding-left: 0; + padding-right: 52px; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel .mx_TabbedView_tabLabel_text { + font-size: 15px; + color: #8d99a5; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_tabPanel { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel_active, +.mx_TabbedView_tabsOnTop + .mx_TabbedView_tabLabel_active + .mx_TabbedView_tabLabel_text { + color: #0dbd8b; +} + +.mx_TabbedView_tabsOnTop + .mx_TabbedView_tabLabel_active + .mx_TabbedView_maskedIcon:before { + background-color: #0dbd8b; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_maskedIcon { + width: 22px; + height: 22px; + margin-left: 0; + margin-right: 8px; +} + +.mx_TabbedView_tabsOnTop .mx_TabbedView_maskedIcon:before { + -webkit-mask-size: 22px; + mask-size: 22px; + width: inherit; + height: inherit; +} + +.mx_TabbedView_tabLabels { + color: #45474a; +} + .mx_TabbedView_tabLabel { display: -webkit-box; display: -ms-flexbox; @@ -4671,46 +5700,31 @@ hr.mx_RoomView_myReadMarker { font-size: 1.3rem; position: relative; } -.mx_TabbedView_tabLabel_active { - background-color: #0dbd8b; - color: #fff; -} + .mx_TabbedView_maskedIcon { - margin-left: 8px; - margin-right: 16px; - width: 16px; - height: 16px; display: inline-block; } + .mx_TabbedView_maskedIcon:before { display: inline-block; - background-color: #454545; + background-color: #c1c6cd; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; - -webkit-mask-size: 16px; - mask-size: 16px; - width: 16px; - height: 16px; -webkit-mask-position: center; mask-position: center; content: ""; } -.mx_TabbedView_tabLabel_active .mx_TabbedView_maskedIcon:before { - background-color: #fff; -} + .mx_TabbedView_tabLabel_text { vertical-align: middle; } + .mx_TabbedView_tabPanel { - margin-left: 240px; display: -webkit-box; display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; } + .mx_TabbedView_tabPanel, .mx_TabbedView_tabPanelContent { -webkit-box-flex: 1; @@ -4718,9 +5732,11 @@ hr.mx_RoomView_myReadMarker { flex-grow: 1; min-height: 0; } + .mx_TabbedView_tabPanelContent { overflow: auto; } + .mx_ToastContainer { position: absolute; top: 0; @@ -4730,11 +5746,13 @@ hr.mx_RoomView_myReadMarker { display: grid; grid-template-rows: 1fr 14px 6px; } + .mx_ToastContainer.mx_ToastContainer_stacked:before { content: ""; margin: 0 4px; grid-row: 2/4; } + .mx_ToastContainer .mx_Toast_toast, .mx_ToastContainer.mx_ToastContainer_stacked:before { grid-column: 1; @@ -4743,6 +5761,7 @@ hr.mx_RoomView_myReadMarker { box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); border-radius: 8px; } + .mx_ToastContainer .mx_Toast_toast { grid-row: 1/3; color: #2e2f32; @@ -4757,6 +5776,7 @@ hr.mx_RoomView_myReadMarker { row-gap: 4px; padding: 8px; } + .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after, .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before { content: ""; @@ -4773,51 +5793,61 @@ hr.mx_RoomView_myReadMarker { background-size: 100%; background-repeat: no-repeat; } + .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after { -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); background-color: #2e2f32; } + .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before { background-color: #fff; -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); - -webkit-mask-size: 90%; - mask-size: 90%; + -webkit-mask-size: 80%; + mask-size: 80%; } + .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); background-color: #ff4b55; } + .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after { -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); background-color: #2e2f32; } + .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body, .mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title { grid-column: 2; } + .mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) { padding-left: 12px; } + .mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title { grid-column: 1/-1; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_description, .mx_ToastContainer .mx_Toast_toast .mx_Toast_title { padding-right: 8px; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_title { width: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2 { grid-column: 1/3; grid-row: 1; @@ -4828,6 +5858,7 @@ hr.mx_RoomView_myReadMarker { width: auto; vertical-align: middle; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_title span { padding-left: 8px; float: right; @@ -4835,21 +5866,33 @@ hr.mx_RoomView_myReadMarker { line-height: 2.2rem; color: #61708b; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_body { grid-column: 1/3; grid-row: 2; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons { float: right; display: -webkit-box; display: -ms-flexbox; display: flex; } -.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_FormButton { + +.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_AccessibleButton { min-width: 96px; -webkit-box-sizing: border-box; box-sizing: border-box; } + +.mx_ToastContainer + .mx_Toast_toast + .mx_Toast_buttons + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 5px; +} + .mx_ToastContainer .mx_Toast_toast .mx_Toast_description { max-width: 272px; overflow: hidden; @@ -4857,6 +5900,7 @@ hr.mx_RoomView_myReadMarker { margin: 4px 0 11px; font-size: 1.2rem; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_description @@ -4864,22 +5908,28 @@ hr.mx_RoomView_myReadMarker { font-size: inherit; padding: 0; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_description a { text-decoration: none; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_detail { color: #737d8c; } + .mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID { font-size: 1rem; } + .mx_UploadBar { padding-left: 65px; position: relative; } + .mx_UploadBar .mx_ProgressBar { width: calc(100% - 40px); } + .mx_UploadBar_filename { margin-top: 5px; color: #61708b; @@ -4888,6 +5938,7 @@ hr.mx_RoomView_myReadMarker { font-size: 1.5rem; vertical-align: middle; } + .mx_UploadBar_filename:before { content: ""; height: 18px; @@ -4896,6 +5947,7 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/element-icons/upload.e2a53e0.svg); mask-image: url(../../img/element-icons/upload.e2a53e0.svg); } + .mx_UploadBar_cancel, .mx_UploadBar_filename:before { position: absolute; @@ -4906,6 +5958,7 @@ hr.mx_RoomView_myReadMarker { mask-position: center; background-color: #61708b; } + .mx_UploadBar_cancel { right: 0; height: 16px; @@ -4914,16 +5967,20 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/icons-close.11ff07c.svg); mask-image: url(../../img/icons-close.11ff07c.svg); } + .mx_UserMenu { padding-right: 6px; } + .mx_UserMenu.mx_UserMenu_prototype { margin-bottom: 6px; padding-right: 0; } + .mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons { margin-right: 2px; } + .mx_UserMenu.mx_UserMenu_prototype:after { content: ""; border-bottom: 1px solid #2e2f32; @@ -4931,12 +5988,14 @@ hr.mx_RoomView_myReadMarker { display: block; padding-top: 8px; } + .mx_UserMenu .mx_UserMenu_headerButtons { width: 16px; height: 16px; position: relative; display: block; } + .mx_UserMenu .mx_UserMenu_headerButtons:before { content: ""; width: 16px; @@ -4954,6 +6013,7 @@ hr.mx_RoomView_myReadMarker { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_UserMenu .mx_UserMenu_row { display: -webkit-box; display: -ms-flexbox; @@ -4962,12 +6022,14 @@ hr.mx_RoomView_myReadMarker { -ms-flex-align: center; align-items: center; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer { position: relative; margin-right: 8px; height: 32px; padding: 3px 0; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer @@ -4976,16 +6038,19 @@ hr.mx_RoomView_myReadMarker { -o-object-fit: cover; object-fit: cover; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; min-width: 0; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName, .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName { display: block; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName { color: #61708b; font-size: 1.3rem; @@ -4997,6 +6062,7 @@ hr.mx_RoomView_myReadMarker { overflow: hidden; white-space: nowrap; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName { font-weight: 600; font-size: 1.5rem; @@ -5008,12 +6074,14 @@ hr.mx_RoomView_myReadMarker { overflow: hidden; white-space: nowrap; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd { width: 24px; height: 24px; margin-right: 8px; position: relative; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before { content: ""; position: absolute; @@ -5027,61 +6095,75 @@ hr.mx_RoomView_myReadMarker { mask-repeat: no-repeat; background: #61708b; } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); } + .mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before { -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); } + .mx_UserMenu.mx_UserMenu_minimized { padding-right: 0; } + .mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer { margin-right: 0; } + .mx_UserMenu_contextMenu { width: 258px; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype { padding-bottom: 16px; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header { padding-bottom: 0; padding-top: 16px; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype .mx_UserMenu_contextMenu_header:nth-child(n + 2) { padding-top: 8px; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr { width: 85%; opacity: 0.2; border: none; border-bottom: 1px solid #2e2f32; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu > .mx_IconizedContextMenu_optionList { margin-top: 4px; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu > .mx_IconizedContextMenu_optionList:before { border: none; } + .mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu > .mx_IconizedContextMenu_optionList > .mx_AccessibleButton { padding-top: 2px; padding-bottom: 2px; } + .mx_UserMenu_contextMenu.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton { padding-top: 16px; padding-bottom: 16px; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header { padding: 20px; display: -webkit-box; @@ -5091,6 +6173,7 @@ hr.mx_RoomView_myReadMarker { -ms-flex-align: center; align-items: center; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name { @@ -5103,6 +6186,7 @@ hr.mx_RoomView_myReadMarker { flex-direction: column; width: calc(100% - 40px); } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name @@ -5115,6 +6199,7 @@ hr.mx_RoomView_myReadMarker { overflow: hidden; white-space: nowrap; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name @@ -5123,6 +6208,7 @@ hr.mx_RoomView_myReadMarker { font-size: 1.5rem; line-height: 2rem; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_name @@ -5130,6 +6216,7 @@ hr.mx_RoomView_myReadMarker { font-size: 1.5rem; line-height: 2.4rem; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header .mx_UserMenu_contextMenu_themeButton { @@ -5151,28 +6238,33 @@ hr.mx_RoomView_myReadMarker { -ms-flex-pack: center; justify-content: center; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts, .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink { padding-top: 0; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts { display: inline-block; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts > span { font-weight: 600; display: block; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts > span + span { margin-top: 8px; } + .mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts .mx_AccessibleButton_kind_link { @@ -5180,11 +6272,13 @@ hr.mx_RoomView_myReadMarker { font-size: inherit; padding: 0; } + .mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon { width: 16px; height: 16px; display: block; } + .mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before { content: ""; width: 16px; @@ -5198,58 +6292,71 @@ hr.mx_RoomView_myReadMarker { mask-repeat: no-repeat; background: #2e2f32; } + .mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before { -webkit-mask-image: url(../../img/element-icons/roomlist/home.1b4edd5.svg); mask-image: url(../../img/element-icons/roomlist/home.1b4edd5.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before { -webkit-mask-image: url(../../img/element-icons/brands/element.182040d.svg); mask-image: url(../../img/element-icons/brands/element.182040d.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before { -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); mask-image: url(../../img/element-icons/security.66f2fa6.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before { -webkit-mask-image: url(../../img/element-icons/roomlist/archived.226584d.svg); mask-image: url(../../img/element-icons/roomlist/archived.226584d.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before { -webkit-mask-image: url(../../img/element-icons/roomlist/feedback.b9a3f53.svg); mask-image: url(../../img/element-icons/roomlist/feedback.b9a3f53.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before { -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); mask-image: url(../../img/element-icons/leave.bb917e7.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before { -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); mask-image: url(../../img/element-icons/room/members.88c3e93.svg); } + .mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_ViewSource_separator { clear: both; border-bottom: 1px solid #e5e5e5; padding-top: 0.7em; padding-bottom: 0.7em; } + .mx_ViewSource_heading { font-size: 1.7rem; font-weight: 400; color: #2e2f32; margin-top: 0.7em; } + .mx_ViewSource pre { text-align: left; font-size: 1.2rem; @@ -5257,9 +6364,11 @@ hr.mx_RoomView_myReadMarker { word-wrap: break-word; white-space: pre-wrap; } + .mx_ViewSource_details { margin-top: 0.8em; } + .mx_CompleteSecurity_header { display: -webkit-box; display: -ms-flexbox; @@ -5268,24 +6377,29 @@ hr.mx_RoomView_myReadMarker { -ms-flex-align: center; align-items: center; } + .mx_CompleteSecurity_headerIcon { width: 24px; height: 24px; margin-right: 4px; position: relative; } + .mx_CompleteSecurity_heroIcon { width: 128px; height: 128px; position: relative; margin: 0 auto; } + .mx_CompleteSecurity_body { font-size: 1.5rem; } + .mx_CompleteSecurity_waiting { color: #8d99a5; } + .mx_CompleteSecurity_actionRow { display: -webkit-box; display: -ms-flexbox; @@ -5295,13 +6409,16 @@ hr.mx_RoomView_myReadMarker { justify-content: flex-end; margin-top: 2.8rem; } + .mx_CompleteSecurity_actionRow .mx_AccessibleButton { -webkit-margin-start: 18px; margin-inline-start: 18px; } + .mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning { color: #ff4b55; } + .mx_Login_submit { vertical-align: middle; border: 0; @@ -5323,23 +6440,28 @@ hr.mx_RoomView_myReadMarker { box-sizing: border-box; text-align: center; } + .mx_Login_submit:disabled { opacity: 0.3; cursor: default; } + .mx_Login_loader { display: inline; position: relative; top: 2px; left: 8px; } + .mx_Login_loader .mx_Spinner { display: inline; } + .mx_Login_loader .mx_Spinner img { width: 16px; height: 16px; } + .mx_Login_error { color: #ff4b55; font-weight: 700; @@ -5347,13 +6469,16 @@ hr.mx_RoomView_myReadMarker { margin-top: 12px; margin-bottom: 12px; } + .mx_Login_error.mx_Login_serverError { text-align: left; font-weight: 400; } + .mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal { color: #ff8d13; } + .mx_Login_type_container { display: -webkit-box; display: -ms-flexbox; @@ -5363,29 +6488,274 @@ hr.mx_RoomView_myReadMarker { align-items: center; color: #232f32; } + .mx_Login_type_container .mx_Field { margin: 0; } + .mx_Login_type_label { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } + .mx_Login_underlinedServerName { width: -webkit-max-content; width: -moz-max-content; width: max-content; border-bottom: 1px dashed #0dbd8b; } + div.mx_AccessibleButton_kind_link.mx_Login_forgot { display: block; margin: 0 auto; font-size: inherit; padding: 0; } + div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { cursor: not-allowed; } + +.mx_MediaBody.mx_AudioPlayer_container { + padding: 16px 12px 12px; +} + +.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.mx_MediaBody.mx_AudioPlayer_container + .mx_AudioPlayer_primaryContainer + .mx_PlayPauseButton { + margin-right: 8px; +} + +.mx_MediaBody.mx_AudioPlayer_container + .mx_AudioPlayer_primaryContainer + .mx_AudioPlayer_mediaInfo { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; +} + +.mx_MediaBody.mx_AudioPlayer_container + .mx_AudioPlayer_primaryContainer + .mx_AudioPlayer_mediaInfo + > * { + display: block; +} + +.mx_MediaBody.mx_AudioPlayer_container + .mx_AudioPlayer_primaryContainer + .mx_AudioPlayer_mediaInfo + .mx_AudioPlayer_mediaName { + color: #2e2f32; + font-size: 1.5rem; + line-height: 1.5rem; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + padding-bottom: 4px; +} + +.mx_MediaBody.mx_AudioPlayer_container + .mx_AudioPlayer_primaryContainer + .mx_AudioPlayer_mediaInfo + .mx_AudioPlayer_byline { + font-size: 1.2rem; + line-height: 1.2rem; +} + +.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek .mx_SeekBar { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek .mx_Clock { + width: 4.2rem; + min-width: 4.2rem; + padding-left: 4px; + text-align: right; +} + +.mx_PlayPauseButton { + position: relative; + width: 32px; + height: 32px; + min-width: 32px; + min-height: 32px; + border-radius: 32px; + background-color: #f4f6fa; +} + +.mx_PlayPauseButton:before { + content: ""; + position: absolute; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} + +.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before { + opacity: 0.5; +} + +.mx_PlayPauseButton.mx_PlayPauseButton_play:before { + width: 13px; + height: 16px; + top: 8px; + left: 12px; + -webkit-mask-image: url(../../img/element-icons/play.a72552b.svg); + mask-image: url(../../img/element-icons/play.a72552b.svg); +} + +.mx_PlayPauseButton.mx_PlayPauseButton_pause:before { + width: 10px; + height: 12px; + top: 10px; + left: 11px; + -webkit-mask-image: url(../../img/element-icons/pause.c4c0886.svg); + mask-image: url(../../img/element-icons/pause.c4c0886.svg); +} + +.mx_MediaBody.mx_VoiceMessagePrimaryContainer { + padding-right: 11px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + contain: content; +} + +.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar { + background-color: #c1c6cd; + height: 100%; + -webkit-transform: scaleY(max(0.05, var(--barHeight))); + transform: scaleY(max(0.05, var(--barHeight))); +} + +.mx_MediaBody.mx_VoiceMessagePrimaryContainer + .mx_Waveform + .mx_Waveform_bar.mx_Waveform_bar_100pct { + -webkit-transition: background-color 0.25s ease; + transition: background-color 0.25s ease; + background-color: #737d8c; +} + +.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Clock { + width: 4.2rem; + padding-right: 6px; + padding-left: 8px; +} + +.mx_MediaBody.mx_VoiceMessagePrimaryContainer.mx_VoiceMessagePrimaryContainer_noWaveform { + max-width: 162px; +} + +.mx_SeekBar { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 100%; + height: 1px; + background: #c1c6cd; + outline: none; + position: relative; + cursor: pointer; +} + +.mx_SeekBar::-webkit-slider-thumb { + -webkit-appearance: none; + appearance: none; + width: 8px; + height: 8px; + border-radius: 8px; + background-color: #8d99a5; + cursor: pointer; +} + +.mx_SeekBar::-moz-range-thumb { + width: 8px; + height: 8px; + border-radius: 8px; + background-color: #8d99a5; + cursor: pointer; + border: none; +} + +.mx_SeekBar:before { + content: ""; + background-color: #8d99a5; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 1px; + -webkit-transform-origin: 0 100%; + transform-origin: 0 100%; + -webkit-transform: scaleX(var(--fillTo)); + transform: scaleX(var(--fillTo)); +} + +.mx_SeekBar::-moz-range-progress { + background-color: #8d99a5; + height: 1px; +} + +.mx_SeekBar:disabled { + opacity: 0.5; +} + +.mx_SeekBar:after { + content: ""; + position: absolute; + top: -6px; + bottom: -6px; + left: 0; + right: 0; +} + +.mx_Waveform { + position: relative; + height: 30px; + top: 1px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + overflow: hidden; +} + +.mx_Waveform .mx_Waveform_bar { + width: 0; + border: 1px solid transparent; + border-radius: 2px; + min-height: 0; + max-height: 100%; + margin-left: 1px; + margin-right: 1px; +} + .mx_AuthBody { width: 500px; font-size: 1.2rem; @@ -5396,46 +6766,56 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_AuthBody h2 { font-size: 2.4rem; font-weight: 600; margin-top: 8px; color: #232f32; } + .mx_AuthBody h3 { font-size: 1.4rem; font-weight: 600; color: #61708b; } + .mx_AuthBody h3.mx_AuthBody_centered { text-align: center; } + .mx_AuthBody a:hover, .mx_AuthBody a:link, .mx_AuthBody a:visited { color: #0dbd8b; text-decoration: none; } + .mx_AuthBody input[type="password"], .mx_AuthBody input[type="text"] { color: #232f32; } + .mx_AuthBody .mx_Field input, .mx_AuthBody .mx_Field select { color: #232f32; background-color: #fff; } + .mx_AuthBody .mx_Field label { color: #232f32; } + .mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown) + label, .mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown) + label { background-color: #fff; } + .mx_AuthBody .mx_Field input:not(:-ms-input-placeholder) + label, .mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder) + label { background-color: #fff; } + .mx_AuthBody .mx_Field_labelAlwaysTopLeft label, .mx_AuthBody .mx_Field input:focus + label, .mx_AuthBody .mx_Field input:not(:placeholder-shown) + label, @@ -5444,53 +6824,67 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { .mx_AuthBody .mx_Field textarea:not(:placeholder-shown) + label { background-color: #fff; } + .mx_AuthBody input.error { color: #ff4b55; } + .mx_AuthBody .mx_Field input { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_AuthBody .mx_Field_select:before { background-color: #232f32; } + .mx_AuthBody .mx_Dropdown { color: #232f32; } + .mx_AuthBody .mx_Dropdown_arrow { background: #232f32; } + .mx_AuthBody .mx_Dropdown_menu { background-color: #fff; } + .mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight { background-color: #ddd; } + .mx_AuthBody_fieldRow { display: -webkit-box; display: -ms-flexbox; display: flex; margin-bottom: 10px; } + .mx_AuthBody_fieldRow > .mx_Field { margin: 0 5px; } + .mx_AuthBody_fieldRow > .mx_Field:first-child { margin-left: 0; } + .mx_AuthBody_fieldRow > .mx_Field:last-child { margin-right: 0; } + .mx_AuthBody_paddedFooter { height: 80px; padding-top: 28px; text-align: center; } + .mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title { margin-top: 16px; font-size: 1.5rem; line-height: 2.4rem; } + .mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title .mx_InlineSpinner @@ -5498,25 +6892,31 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { vertical-align: sub; margin-right: 5px; } + .mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle { margin-top: 8px; font-size: 1rem; line-height: 1.4rem; } + .mx_AuthBody_changeFlow { display: block; text-align: center; width: 100%; } + .mx_AuthBody_changeFlow > a { font-weight: 600; } + .mx_SSOButtons + .mx_AuthBody_changeFlow { margin-top: 24px; } + .mx_AuthBody_spinner { margin: 1em 0; } + @media only screen and (max-width: 480px) { .mx_AuthBody { border-radius: 4px; @@ -5525,6 +6925,7 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { padding: 10px; } } + .mx_AuthButtons { min-height: 24px; height: unset !important; @@ -5534,10 +6935,12 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { -ms-flex-order: 4; order: 4; } + .mx_AuthButtons_loginButton_wrapper { text-align: center; width: 100%; } + .mx_AuthButtons_loginButton, .mx_AuthButtons_registerButton { margin-top: 3px; @@ -5554,6 +6957,7 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { padding: 0 11px; word-break: break-word; } + .mx_AuthFooter { text-align: center; width: 100%; @@ -5569,12 +6973,14 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { ); background: linear-gradient(transparent, rgba(0, 0, 0, 0.8)); } + .mx_AuthFooter a:hover, .mx_AuthFooter a:link, .mx_AuthFooter a:visited { color: #fff; margin: 0 22px; } + .mx_AuthHeader { display: -webkit-box; display: -ms-flexbox; @@ -5588,11 +6994,13 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { -webkit-box-sizing: border-box; box-sizing: border-box; } + @media only screen and (max-width: 480px) { .mx_AuthHeader { display: none; } } + .mx_AuthHeaderLogo { margin-top: 15px; -webkit-box-flex: 1; @@ -5600,14 +7008,17 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { flex: 1; padding: 0 25px; } + .mx_AuthHeaderLogo img { width: 100%; } + @media only screen and (max-width: 480px) { .mx_AuthHeaderLogo { display: none; } } + .mx_AuthPage { width: 100%; min-height: 100%; @@ -5617,12 +7028,14 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { flex-direction: column; background-color: #2e3649; } + .mx_AuthPage, .mx_AuthPage_modal { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_AuthPage_modal { margin: 100px auto auto; border-radius: 4px; @@ -5630,11 +7043,13 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33); background-color: hsla(0, 0%, 96.1%, 0.9); } + @media only screen and (max-width: 480px) { .mx_AuthPage_modal { margin-top: 0; } } + .mx_CompleteSecurityBody { width: 600px; color: #232f32; @@ -5644,50 +7059,60 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_CompleteSecurityBody h2 { font-size: 2.4rem; font-weight: 600; margin-top: 0; } + .mx_CompleteSecurityBody h3 { font-size: 1.4rem; font-weight: 600; } + .mx_CompleteSecurityBody a:hover, .mx_CompleteSecurityBody a:link, .mx_CompleteSecurityBody a:visited { color: #0dbd8b; text-decoration: none; } + .mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option { padding: 0 3px; } + .mx_CountryDropdown .mx_Dropdown_arrow { padding-right: 3px; } + .mx_CountryDropdown_shortOption { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; height: 100%; } + .mx_CountryDropdown_option, .mx_CountryDropdown_shortOption { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } + .mx_CountryDropdown_option { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_InteractiveAuthEntryComponents_emailWrapper { padding-right: 100px; position: relative; margin-top: 32px; margin-bottom: 32px; } + .mx_InteractiveAuthEntryComponents_emailWrapper:after, .mx_InteractiveAuthEntryComponents_emailWrapper:before { position: absolute; @@ -5696,11 +7121,13 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { content: ""; right: -10px; } + .mx_InteractiveAuthEntryComponents_emailWrapper:before { background-color: rgba(244, 246, 250, 0.91); border-radius: 50%; top: -20px; } + .mx_InteractiveAuthEntryComponents_emailWrapper:after { background-image: url(../../img/element-icons/email-prompt.1d04dfe.svg); background-repeat: no-repeat; @@ -5708,9 +7135,11 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { background-size: contain; top: -25px; } + .mx_InteractiveAuthEntryComponents_msisdnWrapper { text-align: center; } + .mx_InteractiveAuthEntryComponents_msisdnEntry { font-size: 200%; font-weight: 700; @@ -5718,27 +7147,33 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { border-radius: 3px; width: 6em; } + .mx_InteractiveAuthEntryComponents_msisdnEntry:focus { border: 1px solid #0dbd8b; } + .mx_InteractiveAuthEntryComponents_msisdnSubmit { margin-top: 4px; margin-bottom: 5px; } + .mx_InteractiveAuthEntryComponents_termsSubmit { margin-top: 20px; margin-bottom: 5px; display: block; width: 100%; } + .mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { background-color: #747474; cursor: default; } + .mx_InteractiveAuthEntryComponents_termsSubmit:disabled { background-color: #92caad; cursor: default; } + .mx_InteractiveAuthEntryComponents_termsPolicy { display: -webkit-box; display: -ms-flexbox; @@ -5754,9 +7189,11 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { -ms-flex-align: center; align-items: center; } + .mx_InteractiveAuthEntryComponents_passwordSection { width: 300px; } + .mx_InteractiveAuthEntryComponents_sso_buttons { display: -webkit-box; display: -ms-flexbox; @@ -5770,12 +7207,15 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { justify-content: flex-end; margin-top: 20px; } + .mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton { margin-left: 5px; } + .mx_AuthBody_language { width: 100%; } + .mx_AuthBody_language .mx_Dropdown_input { border: none; font-size: 1.4rem; @@ -5783,9 +7223,11 @@ div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { color: #4e5054; width: auto; } + .mx_AuthBody_language .mx_Dropdown_arrow { background: #4e5054; } + progress.mx_PassphraseField_progress { -webkit-appearance: none; -moz-appearance: none; @@ -5797,43 +7239,55 @@ progress.mx_PassphraseField_progress { top: -12px; border-radius: "2px"; } + progress.mx_PassphraseField_progress::-moz-progress-bar { border-radius: "2px"; } + progress.mx_PassphraseField_progress::-webkit-progress-bar, progress.mx_PassphraseField_progress::-webkit-progress-value { border-radius: "2px"; } + progress.mx_PassphraseField_progress { color: #ff4b55; } + progress.mx_PassphraseField_progress::-moz-progress-bar { background-color: #ff4b55; } + progress.mx_PassphraseField_progress::-webkit-progress-value { background-color: #ff4b55; } + progress.mx_PassphraseField_progress[value="2"], progress.mx_PassphraseField_progress[value="3"] { color: #ff812d; } + progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar, progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar { background-color: #ff812d; } + progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value, progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value { background-color: #ff812d; } + progress.mx_PassphraseField_progress[value="4"] { color: #0dbd8b; } + progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar { background-color: #0dbd8b; } + progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { background-color: #0dbd8b; } + .mx_Welcome { display: -webkit-box; display: -ms-flexbox; @@ -5846,13 +7300,16 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { -ms-flex-align: center; align-items: center; } + .mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount { display: none; } + .mx_Welcome .mx_AuthBody_language { width: 160px; margin-bottom: 10px; } + .mx_BaseAvatar { position: relative; display: inline-block; @@ -5861,6 +7318,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { -ms-user-select: none; user-select: none; } + .mx_BaseAvatar_initial { position: absolute; left: 0; @@ -5870,6 +7328,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { pointer-events: none; font-weight: 400; } + .mx_BaseAvatar_image { -o-object-fit: cover; object-fit: cover; @@ -5877,10 +7336,13 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { vertical-align: top; background-color: #fff; } + .mx_DecoratedRoomAvatar, .mx_ExtraTile { position: relative; + contain: content; } + .mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar, .mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar { -webkit-mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg); @@ -5892,6 +7354,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; } + .mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon { position: absolute; @@ -5902,6 +7365,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { height: 8px; border-radius: 50%; } + .mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before { content: ""; @@ -5910,6 +7374,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { position: absolute; border-radius: 8px; } + .mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before { -webkit-mask-position: center; @@ -5922,18 +7387,22 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { -webkit-mask-image: url(../../img/globe.8201f08.svg); mask-image: url(../../img/globe.8201f08.svg); } + .mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before { background-color: #e3e8f0; } + .mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before { background-color: #0dbd8b; } + .mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before, .mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before { background-color: #d9b072; } + .mx_DecoratedRoomAvatar .mx_NotificationBadge, .mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer, .mx_ExtraTile .mx_NotificationBadge, @@ -5944,90 +7413,106 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { height: 18px; width: 18px; } + .mx_MessageComposer_avatar .mx_BaseAvatar { padding: 2px; border: 1px solid transparent; border-radius: 100%; } + .mx_MessageComposer_avatar .mx_BaseAvatar_initial { left: 2px; } + .mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar { border-color: #0dbd8b; } -@-webkit-keyframes shadow-pulse { - 0% { - -webkit-box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); - box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); - } - to { - -webkit-box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); - box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); - } -} -@keyframes shadow-pulse { - 0% { - -webkit-box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); - box-shadow: 0 0 0 0 rgba(13, 189, 139, 0.2); - } - to { - -webkit-box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); - box-shadow: 0 0 0 6px rgba(13, 189, 139, 0); - } -} -.mx_PulsedAvatar img { - -webkit-animation: shadow-pulse 1s infinite; - animation: shadow-pulse 1s infinite; -} + .mx_WidgetAvatar { border-radius: 4px; } + .mx_BetaCard { margin-bottom: 20px; padding: 24px; background-color: #f4f6fa; border-radius: 8px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -webkit-box-sizing: border-box; box-sizing: border-box; } -.mx_BetaCard > div .mx_BetaCard_title { + +.mx_BetaCard .mx_BetaCard_columns { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.mx_BetaCard .mx_BetaCard_columns > div .mx_BetaCard_title { font-weight: 600; font-size: 1.8rem; line-height: 2.2rem; color: #2e2f32; margin: 4px 0 14px; } -.mx_BetaCard > div .mx_BetaCard_title .mx_BetaCard_betaPill { + +.mx_BetaCard + .mx_BetaCard_columns + > div + .mx_BetaCard_title + .mx_BetaCard_betaPill { margin-left: 12px; } -.mx_BetaCard > div .mx_BetaCard_caption { + +.mx_BetaCard .mx_BetaCard_columns > div .mx_BetaCard_caption { font-size: 1.5rem; line-height: 2rem; color: #737d8c; margin-bottom: 20px; } -.mx_BetaCard > div .mx_AccessibleButton { + +.mx_BetaCard + .mx_BetaCard_columns + > div + .mx_BetaCard_buttons + .mx_AccessibleButton { display: block; margin: 12px 0; padding: 7px 40px; width: auto; } -.mx_BetaCard > div .mx_BetaCard_disclaimer { + +.mx_BetaCard .mx_BetaCard_columns > div .mx_BetaCard_disclaimer { font-size: 1.2rem; line-height: 1.5rem; color: #737d8c; margin-top: 20px; } -.mx_BetaCard > img { + +.mx_BetaCard .mx_BetaCard_columns > img { margin: auto 0 auto 20px; width: 300px; -o-object-fit: contain; object-fit: contain; height: 100%; } + +.mx_BetaCard .mx_BetaCard_relatedSettings .mx_SettingsFlag { + margin: 16px 0 0; + font-size: 1.5rem; + line-height: 2.4rem; + color: #2e2f32; +} + +.mx_BetaCard + .mx_BetaCard_relatedSettings + .mx_SettingsFlag + .mx_SettingsFlag_microcopy { + margin-top: 4px; + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; +} + .mx_BetaCard_betaPill { background-color: #238cf5; padding: 4px 10px; @@ -6039,64 +7524,105 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { display: inline-block; vertical-align: text-bottom; } + .mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable { cursor: pointer; } + .mx_BetaDot { - border-radius: 50%; margin: 10px; height: 12px; width: 12px; - -webkit-transform: scale(1); - transform: scale(1); - background: #238cf5; - -webkit-box-shadow: 0 0 0 0 #238cf5; - box-shadow: 0 0 0 0 #238cf5; -webkit-animation: mx_Beta_bluePulse 2s infinite; animation: mx_Beta_bluePulse 2s infinite; -webkit-animation-iteration-count: 20; animation-iteration-count: 20; + position: relative; } + +.mx_BetaDot, +.mx_BetaDot:after { + border-radius: 50%; + -webkit-transform: scale(1); + transform: scale(1); + background: #238cf5; +} + +.mx_BetaDot:after { + content: ""; + position: absolute; + width: inherit; + height: inherit; + top: 0; + left: 0; + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-animation-name: mx_Beta_bluePulse_shadow; + animation-name: mx_Beta_bluePulse_shadow; + -webkit-animation-duration: inherit; + animation-duration: inherit; + -webkit-animation-iteration-count: inherit; + animation-iteration-count: inherit; +} + @-webkit-keyframes mx_Beta_bluePulse { 0% { -webkit-transform: scale(0.95); transform: scale(0.95); - -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); - box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); } 70% { -webkit-transform: scale(1); transform: scale(1); - -webkit-box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); - box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); } to { -webkit-transform: scale(0.95); transform: scale(0.95); - -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); - box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); } } + @keyframes mx_Beta_bluePulse { 0% { -webkit-transform: scale(0.95); transform: scale(0.95); - -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); - box-shadow: 0 0 0 0 rgba(35, 140, 245, 0.7); } 70% { -webkit-transform: scale(1); transform: scale(1); - -webkit-box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); - box-shadow: 0 0 0 10px rgba(35, 140, 245, 0); } to { -webkit-transform: scale(0.95); transform: scale(0.95); - -webkit-box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); - box-shadow: 0 0 0 0 rgba(35, 140, 245, 0); } } + +@-webkit-keyframes mx_Beta_bluePulse_shadow { + 0% { + opacity: 0.7; + } + 70% { + -webkit-transform: scale(2.2); + transform: scale(2.2); + opacity: 0; + } + to { + opacity: 0; + } +} + +@keyframes mx_Beta_bluePulse_shadow { + 0% { + opacity: 0.7; + } + 70% { + -webkit-transform: scale(2.2); + transform: scale(2.2); + opacity: 0; + } + to { + opacity: 0; + } +} + .mx_CallContextMenu_item { width: 205px; height: 40px; @@ -6104,13 +7630,16 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { line-height: 40px; vertical-align: center; } + .mx_IconizedContextMenu { min-width: 146px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList > * { padding-left: 20px; padding-right: 20px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_IconizedContextMenu_optionList_notFirst:before, @@ -6123,16 +7652,19 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { position: absolute; left: 0; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:first-child .mx_AccessibleButton:first-child { border-radius: 8px 8px 0 0; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList:last-child .mx_AccessibleButton:last-child { border-radius: 0 0 8px 8px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton { @@ -6149,17 +7681,20 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { -ms-flex-align: center; align-items: center; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton:hover { background-color: #f5f8fa; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton.mx_AccessibleButton_disabled { opacity: 0.5; cursor: not-allowed; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton @@ -6172,6 +7707,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { min-width: 16px; max-width: 16px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton @@ -6184,6 +7720,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { overflow: hidden; white-space: nowrap; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList .mx_AccessibleButton @@ -6191,11 +7728,13 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { + .mx_IconizedContextMenu_label { padding-left: 14px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_icon { position: relative; width: 16px; height: 16px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before { content: ""; width: 16px; @@ -6209,53 +7748,130 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { mask-repeat: no-repeat; background: #2e2f32; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_AccessibleButton { color: #ff4b55 !important; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_optionList_red .mx_IconizedContextMenu_icon:before { background-color: #ff4b55; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton, .mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton { color: #0dbd8b !important; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_IconizedContextMenu_icon:before { background-color: #0dbd8b; } + .mx_IconizedContextMenu.mx_IconizedContextMenu_compact .mx_IconizedContextMenu_optionList > * { padding: 8px 16px 8px 11px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_checked { margin-left: 16px; margin-right: -5px; } + .mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before { -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); } -.mx_MessageContextMenu { - padding: 6px; -} -.mx_MessageContextMenu_field { + +.mx_MessageContextMenu .mx_IconizedContextMenu_icon { + width: 16px; + height: 16px; display: block; - padding: 3px 6px; - cursor: pointer; - white-space: nowrap; } -.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { - font-weight: 700; + +.mx_MessageContextMenu .mx_IconizedContextMenu_icon:before { + content: ""; + width: 16px; + height: 16px; + display: block; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background: #2e2f32; } + +.mx_MessageContextMenu .mx_MessageContextMenu_iconCollapse:before { + -webkit-mask-image: url(../../img/element-icons/message/chevron-up.90f4709.svg); + mask-image: url(../../img/element-icons/message/chevron-up.90f4709.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconReport:before { + -webkit-mask-image: url(../../img/element-icons/warning-badge.413c9a9.svg); + mask-image: url(../../img/element-icons/warning-badge.413c9a9.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconLink:before { + -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); + mask-image: url(../../img/element-icons/link.8f4b1fc.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconPermalink:before { + -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); + mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconUnhidePreview:before { + -webkit-mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); + mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconForward:before { + -webkit-mask-image: url(../../img/element-icons/message/fwd.d1f50ee.svg); + mask-image: url(../../img/element-icons/message/fwd.d1f50ee.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconRedact:before { + -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); + mask-image: url(../../img/element-icons/trashcan.3b626db.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconResend:before { + -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); + mask-image: url(../../img/element-icons/retry.6cd23ad.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconSource:before { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); + mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconQuote:before { + -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); + mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconPin:before { + -webkit-mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); + mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); +} + +.mx_MessageContextMenu .mx_MessageContextMenu_iconUnpin:before { + -webkit-mask-image: url(../../img/element-icons/room/pin.a996417.svg); + mask-image: url(../../img/element-icons/room/pin.a996417.svg); +} + .mx_StatusMessageContextMenu { padding: 10px; } + .mx_StatusMessageContextMenu_form { display: -webkit-box; display: -ms-flexbox; @@ -6265,6 +7881,7 @@ progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { -ms-flex-direction: column; flex-direction: column; } + input.mx_StatusMessageContextMenu_message { border-radius: 4px; border: 1px solid #e7e7e7; @@ -6273,26 +7890,33 @@ input.mx_StatusMessageContextMenu_message { font-weight: 400; margin: 0 0 10px; } + .mx_StatusMessageContextMenu_message::-webkit-input-placeholder { color: #61708b; } + .mx_StatusMessageContextMenu_message::-moz-placeholder { color: #61708b; } + .mx_StatusMessageContextMenu_message:-ms-input-placeholder { color: #61708b; } + .mx_StatusMessageContextMenu_message::-ms-input-placeholder { color: #61708b; } + .mx_StatusMessageContextMenu_message::placeholder { color: #61708b; } + .mx_StatusMessageContextMenu_actionContainer { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_StatusMessageContextMenu_clear, .mx_StatusMessageContextMenu_submit { vertical-align: middle; @@ -6313,19 +7937,23 @@ input.mx_StatusMessageContextMenu_message { border: 1px solid transparent; margin-right: 10px; } + .mx_StatusMessageContextMenu_submit[disabled] { opacity: 0.49; } + .mx_StatusMessageContextMenu_clear { color: #ff4b55; background-color: transparent; border: 1px solid #ff4b55; } + .mx_StatusMessageContextMenu_actionContainer .mx_Spinner { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } + .mx_TagTileContextMenu_item { padding: 8px 20px 8px 8px; cursor: pointer; @@ -6338,6 +7966,7 @@ input.mx_StatusMessageContextMenu_message { align-items: center; line-height: 1.6rem; } + .mx_TagTileContextMenu_item:before { content: ""; height: 15px; @@ -6349,14 +7978,28 @@ input.mx_StatusMessageContextMenu_message { mask-size: contain; margin-right: 8px; } + .mx_TagTileContextMenu_viewCommunity:before { -webkit-mask-image: url(../../img/element-icons/view-community.0cad1a5.svg); mask-image: url(../../img/element-icons/view-community.0cad1a5.svg); } + +.mx_TagTileContextMenu_moveUp:before { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); +} + +.mx_TagTileContextMenu_moveDown:before, +.mx_TagTileContextMenu_moveUp:before { + -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); + mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); +} + .mx_TagTileContextMenu_hideCommunity:before { -webkit-mask-image: url(../../img/element-icons/hide.2b52315.svg); mask-image: url(../../img/element-icons/hide.2b52315.svg); } + .mx_TagTileContextMenu_separator { margin-top: 0; margin-bottom: 0; @@ -6364,6 +8007,7 @@ input.mx_StatusMessageContextMenu_message { border-top: 1px solid; border-color: #e7e7e7; } + .mx_AddExistingToSpaceDialog_wrapper .mx_Dialog { display: -webkit-box; display: -ms-flexbox; @@ -6373,24 +8017,29 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-direction: column; flex-direction: column; } + .mx_AddExistingToSpace .mx_SearchBox { margin: 0 0 15px; -webkit-box-flex: 0; -ms-flex-positive: 0; flex-grow: 0; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_content { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_noResults { display: block; margin-top: 24px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child) { margin-top: 24px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section > h3 { margin: 0; color: #737d8c; @@ -6398,6 +8047,7 @@ input.mx_StatusMessageContextMenu_message { font-weight: 600; line-height: 1.5rem; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry { @@ -6406,12 +8056,14 @@ input.mx_StatusMessageContextMenu_message { display: flex; margin-top: 12px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry .mx_DecoratedRoomAvatar { margin-right: 12px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry @@ -6426,6 +8078,7 @@ input.mx_StatusMessageContextMenu_message { text-overflow: ellipsis; margin-right: 12px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section .mx_AddExistingToSpace_entry @@ -6434,14 +8087,17 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar { margin-right: 12px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar_image { border-radius: 8px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental { position: relative; border-radius: 8px; @@ -6452,6 +8108,7 @@ input.mx_StatusMessageContextMenu_message { line-height: 1.5rem; color: #737d8c; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before { content: ""; position: absolute; @@ -6469,12 +8126,14 @@ input.mx_StatusMessageContextMenu_message { -webkit-mask-position: center; mask-position: center; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 20px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span { -webkit-box-flex: 1; -ms-flex-positive: 1; @@ -6483,17 +8142,20 @@ input.mx_StatusMessageContextMenu_message { line-height: 1.5rem; color: #737d8c; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar { height: 8px; width: 100%; border-radius: 8px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar::-moz-progress-bar { border-radius: 8px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span @@ -6504,6 +8166,7 @@ input.mx_StatusMessageContextMenu_message { .mx_ProgressBar::-webkit-progress-value { border-radius: 8px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span @@ -6513,14 +8176,17 @@ input.mx_StatusMessageContextMenu_message { line-height: 2.4rem; color: #2e2f32; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span > * { vertical-align: middle; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error { padding-left: 12px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error @@ -6528,6 +8194,7 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-item-align: center; align-self: center; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error @@ -6537,6 +8204,7 @@ input.mx_StatusMessageContextMenu_message { line-height: 1.8rem; color: #ff4b55; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_error @@ -6546,16 +8214,19 @@ input.mx_StatusMessageContextMenu_message { line-height: 1.5rem; color: #2e2f32; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton { display: inline-block; -ms-flex-item-align: center; align-self: center; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_primary { padding: 8px 36px; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton { @@ -6563,6 +8234,7 @@ input.mx_StatusMessageContextMenu_message { padding-left: 24px; position: relative; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AddExistingToSpace_retryButton:before { @@ -6581,11 +8253,13 @@ input.mx_StatusMessageContextMenu_message { height: 18px; left: 0; } + .mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton_kind_link { padding: 0; } + .mx_AddExistingToSpaceDialog { width: 480px; color: #2e2f32; @@ -6598,17 +8272,20 @@ input.mx_StatusMessageContextMenu_message { min-height: 0; height: 80vh; } + .mx_AddExistingToSpaceDialog, .mx_AddExistingToSpaceDialog .mx_Dialog_title { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image { border-radius: 8px; margin: 0; vertical-align: unset; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -6616,12 +8293,14 @@ input.mx_StatusMessageContextMenu_message { margin: auto 16px auto 5px; vertical-align: middle; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title > div > h1 { font-weight: 600; font-size: 1.8rem; line-height: 2.2rem; margin: 0; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title > div @@ -6630,9 +8309,11 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.5rem; line-height: 2.4rem; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input { border: none; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input @@ -6646,6 +8327,7 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.5rem; line-height: 2.4rem; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input @@ -6653,6 +8335,7 @@ input.mx_StatusMessageContextMenu_message { .mx_BaseAvatar { display: none; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input @@ -6662,6 +8345,7 @@ input.mx_StatusMessageContextMenu_message { padding-right: 32px; position: relative; } + .mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input @@ -6683,15 +8367,18 @@ input.mx_StatusMessageContextMenu_message { -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); } + .mx_AddExistingToSpaceDialog .mx_AddExistingToSpace { display: contents; } + .mx_AddressPickerDialog a:hover, .mx_AddressPickerDialog a:link, .mx_AddressPickerDialog a:visited { color: #0dbd8b; text-decoration: none; } + .mx_AddressPickerDialog_input, .mx_AddressPickerDialog_input:focus { height: 26px; @@ -6711,9 +8398,11 @@ input.mx_StatusMessageContextMenu_message { box-sizing: border-box; word-wrap: nowrap; } + .mx_AddressPickerDialog .mx_Dialog_content { min-height: 50px; } + .mx_AddressPickerDialog_inputContainer { border-radius: 3px; border: 1px solid #e7e7e7; @@ -6723,78 +8412,97 @@ input.mx_StatusMessageContextMenu_message { overflow-x: hidden; overflow-y: auto; } + .mx_AddressPickerDialog_error { margin-top: 10px; color: #ff4b55; } + .mx_AddressPickerDialog_cancel { position: absolute; right: 11px; top: 13px; cursor: pointer; } + .mx_AddressPickerDialog_cancel object { pointer-events: none; } + .mx_AddressPickerDialog_identityServer { margin-top: 1em; } + .mx_AnalyticsModal table { margin: 10px 0; } + .mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading { color: #2e2f32; font-size: 1.4rem; line-height: 2rem; margin-bottom: 24px; } + .mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link { padding: 0; font-size: inherit; line-height: inherit; } + .mx_BugReportDialog .mx_BugReportDialog_download .mx_AccessibleButton_kind_link { padding-left: 0; } + .mx_ChangelogDialog_content { max-height: 300px; overflow: auto; } + .mx_ChangelogDialog_li { padding: 0.2em; } + .mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { margin-top: 24px; } + .mx_ChatCreateOrReuseDialog .mx_Dialog_content { margin-bottom: 24px; min-height: 100px; } + .mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { display: none; } + .mx_ChatCreateOrReuseDialog_profile { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_ChatCreateOrReuseDialog_profile_name { padding: 14px; } + .mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth { width: 360px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content { margin-bottom: 0; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people { position: relative; margin-bottom: 4px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_people @@ -6806,23 +8514,27 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.2rem; float: right; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_morePeople { margin-top: 8px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person { position: relative; margin-top: 4px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person > * { vertical-align: middle; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person @@ -6832,12 +8544,14 @@ input.mx_StatusMessageContextMenu_message { top: calc(50% - 8px); width: 16px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person .mx_CommunityPrototypeInviteDialog_personIdentifiers { display: inline-block; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person @@ -6845,6 +8559,7 @@ input.mx_StatusMessageContextMenu_message { > * { display: block; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person @@ -6855,6 +8570,7 @@ input.mx_StatusMessageContextMenu_message { color: #2e2f32; margin-left: 7px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_person @@ -6864,6 +8580,7 @@ input.mx_StatusMessageContextMenu_message { color: #61708b; margin-left: 7px; } + .mx_CommunityPrototypeInviteDialog .mx_Dialog_content .mx_CommunityPrototypeInviteDialog_primaryButton { @@ -6873,21 +8590,26 @@ input.mx_StatusMessageContextMenu_message { height: 20px; margin-top: 24px; } + .mx_ConfirmUserActionDialog .mx_Dialog_content { min-height: 48px; margin-bottom: 24px; } + .mx_ConfirmUserActionDialog_avatar { float: left; margin-right: 20px; margin-top: -2px; } + .mx_ConfirmUserActionDialog_name { font-size: 1.8rem; } + .mx_ConfirmUserActionDialog_userId { font-size: 1.3rem; } + .mx_ConfirmUserActionDialog_reasonField { font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, Helvetica, Sans-Serif, Noto Color Emoji; @@ -6901,6 +8623,7 @@ input.mx_StatusMessageContextMenu_message { margin-bottom: 24px; width: 90%; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content { display: -webkit-box; display: -ms-flexbox; @@ -6911,6 +8634,7 @@ input.mx_StatusMessageContextMenu_message { flex-direction: row; margin-bottom: 12px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName { @@ -6918,6 +8642,7 @@ input.mx_StatusMessageContextMenu_message { flex-basis: 66.66%; padding-right: 100px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName @@ -6926,6 +8651,7 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.6rem; line-height: 2rem; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName @@ -6934,24 +8660,28 @@ input.mx_StatusMessageContextMenu_message { color: #61708b; margin-bottom: 16px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext:last-child { margin-top: 16px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error { color: #ff4b55; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName .mx_CreateCommunityPrototypeDialog_communityId { position: relative; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName @@ -6959,6 +8689,7 @@ input.mx_StatusMessageContextMenu_message { .mx_InfoTooltip { float: right; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colName @@ -6968,12 +8699,14 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.6rem; line-height: 32px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar { -ms-flex-preferred-size: 33.33%; flex-basis: 33.33%; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar @@ -6981,6 +8714,7 @@ input.mx_StatusMessageContextMenu_message { margin-top: 12px; margin-bottom: 20px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar @@ -6995,6 +8729,7 @@ input.mx_StatusMessageContextMenu_message { height: 96px; border-radius: 96px; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar @@ -7002,6 +8737,7 @@ input.mx_StatusMessageContextMenu_message { .mx_CreateCommunityPrototypeDialog_placeholderAvatar { background-color: #368bd6; } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar @@ -7022,6 +8758,7 @@ input.mx_StatusMessageContextMenu_message { -webkit-mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); } + .mx_CreateCommunityPrototypeDialog .mx_Dialog_content .mx_CreateCommunityPrototypeDialog_colAvatar @@ -7035,14 +8772,17 @@ input.mx_StatusMessageContextMenu_message { display: block; color: #61708b; } + .mx_CreateGroupDialog_inputRow { margin-top: 10px; margin-bottom: 10px; } + .mx_CreateGroupDialog_label { text-align: left; padding-bottom: 12px; } + .mx_CreateGroupDialog_input { font-size: 1.5rem; border-radius: 3px; @@ -7051,14 +8791,17 @@ input.mx_StatusMessageContextMenu_message { color: #2e2f32; background-color: #fff; } + .mx_CreateGroupDialog_input_hasPrefixAndSuffix { border-radius: 0; } + .mx_CreateGroupDialog_input_group { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_CreateGroupDialog_prefix, .mx_CreateGroupDialog_suffix { padding: 0 5px; @@ -7067,17 +8810,21 @@ input.mx_StatusMessageContextMenu_message { border: 1px solid #e7e7e7; text-align: center; } + .mx_CreateGroupDialog_prefix { border-right: 0; border-radius: 3px 0 0 3px; } + .mx_CreateGroupDialog_suffix { border-left: 0; border-radius: 0 3px 3px 0; } + .mx_CreateRoomDialog_details { margin-top: 15px; } + .mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary { outline: none; list-style: none; @@ -7085,10 +8832,12 @@ input.mx_StatusMessageContextMenu_message { cursor: pointer; color: #0dbd8b; } + .mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary::-webkit-details-marker { display: none; } + .mx_CreateRoomDialog_details > div { display: -webkit-box; display: -ms-flexbox; @@ -7098,16 +8847,20 @@ input.mx_StatusMessageContextMenu_message { align-items: flex-start; margin: 5px 0; } + .mx_CreateRoomDialog_details > div input[type="checkbox"] { margin-right: 10px; } + .mx_CreateRoomDialog_label { text-align: left; padding-bottom: 12px; } + .mx_CreateRoomDialog_input_container { padding-right: 20px; } + .mx_CreateRoomDialog_input { font-size: 1.5rem; border-radius: 3px; @@ -7117,30 +8870,37 @@ input.mx_StatusMessageContextMenu_message { background-color: #fff; width: 100%; } + .mx_CreateRoomDialog_aliasContainer { display: -webkit-box; display: -ms-flexbox; display: flex; - margin: 10px 0; + margin: 24px 0 10px; } + .mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField { margin: 0; } + .mx_CreateRoomDialog.mx_Dialog_fixedWidth { width: 450px; } + .mx_CreateRoomDialog .mx_Dialog_content { margin-bottom: 40px; } + .mx_CreateRoomDialog .mx_Field_input label, .mx_CreateRoomDialog p { color: #61708b; } + .mx_CreateRoomDialog .mx_SettingsFlag { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_CreateRoomDialog .mx_SettingsFlag_label { -webkit-box-flex: 1; -ms-flex: 1 1 0px; @@ -7148,69 +8908,145 @@ input.mx_StatusMessageContextMenu_message { min-width: 0; font-weight: 600; } + .mx_CreateRoomDialog .mx_ToggleSwitch { -webkit-box-flex: 0; -ms-flex: 0 0 auto; flex: 0 0 auto; margin-left: 30px; } -.mx_CreateRoomDialog .mx_CreateRoomDialog_topic { - margin-bottom: 36px; -} + .mx_CreateRoomDialog .mx_Dialog_content > .mx_SettingsFlag { margin-top: 24px; } + .mx_CreateRoomDialog p { margin: 0 85px 0 0; font-size: 1.2rem; } + +.mx_CreateRoomDialog .mx_Dropdown { + margin-bottom: 8px; + font-weight: 400; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-size: 1.4rem; + color: #2e2f32; +} + +.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_input { + border: 1px solid #e7e7e7; +} + +.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_option { + font-size: 1.4rem; + line-height: 3.2rem; + height: 32px; + min-height: 32px; +} + +.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_option > div { + padding-left: 30px; + position: relative; +} + +.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_option > div:before { + content: ""; + position: absolute; + height: 16px; + width: 16px; + left: 6px; + top: 8px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + background-color: #737d8c; +} + +.mx_CreateRoomDialog .mx_Dropdown .mx_CreateRoomDialog_dropdown_invite:before { + -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); + mask-image: url(../../img/element-icons/lock.1f264bd.svg); + -webkit-mask-size: contain; + mask-size: contain; +} + +.mx_CreateRoomDialog .mx_Dropdown .mx_CreateRoomDialog_dropdown_public:before { + -webkit-mask-image: url(../../img/globe.8201f08.svg); + mask-image: url(../../img/globe.8201f08.svg); + -webkit-mask-size: 12px; + mask-size: 12px; +} + +.mx_CreateRoomDialog + .mx_Dropdown + .mx_CreateRoomDialog_dropdown_restricted:before { + -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); + mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); + -webkit-mask-size: contain; + mask-size: contain; +} + .mx_DeactivateAccountDialog .mx_Dialog_content { margin-bottom: 30px; } + .mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { margin-top: 60px; } + .mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section .mx_Field { width: 300px; } + .mx_DevTools_content { margin: 10px 0; } + .mx_DevTools_ServersInRoomList_button { cursor: default !important; } + .mx_DevTools_RoomStateExplorer_query { margin-bottom: 10px; } + .mx_DevTools_RoomStateExplorer_button, .mx_DevTools_ServersInRoomList_button { margin-bottom: 10px; width: 100%; } + .mx_DevTools_label_left { float: left; } + .mx_DevTools_label_right { float: right; } + .mx_DevTools_label_bottom { clear: both; border-bottom: 1px solid #e5e5e5; } + .mx_DevTools_inputRow { display: table-row; } + .mx_DevTools_inputLabelCell { display: table-cell; font-weight: 700; padding-right: 24px; } + .mx_DevTools_inputCell { display: table-cell; width: 240px; } + .mx_DevTools_inputCell input { display: inline-block; border: 0; @@ -7222,12 +9058,14 @@ input.mx_StatusMessageContextMenu_message { Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.6rem; } + .mx_DevTools_textarea { font-size: 1.2rem; max-width: 684px; min-height: 250px; padding: 10px; } + .mx_DevTools_eventTypeStateKeyGroup { display: -webkit-box; display: -ms-flexbox; @@ -7235,12 +9073,15 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-wrap: wrap; flex-wrap: wrap; } + .mx_DevTools_content .mx_Field_input:first-of-type { margin-right: 42px; } + .mx_DevTools_tgl { display: none; } + .mx_DevTools_tgl, .mx_DevTools_tgl *, .mx_DevTools_tgl + .mx_DevTools_tgl-btn, @@ -7251,6 +9092,7 @@ input.mx_StatusMessageContextMenu_message { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_DevTools_tgl + .mx_DevTools_tgl-btn::-moz-selection, .mx_DevTools_tgl::-moz-selection, .mx_DevTools_tgl ::-moz-selection, @@ -7260,6 +9102,7 @@ input.mx_StatusMessageContextMenu_message { .mx_DevTools_tgl :before::-moz-selection { background: none; } + .mx_DevTools_tgl + .mx_DevTools_tgl-btn::selection, .mx_DevTools_tgl::selection, .mx_DevTools_tgl ::selection, @@ -7269,6 +9112,7 @@ input.mx_StatusMessageContextMenu_message { .mx_DevTools_tgl :before::selection { background: none; } + .mx_DevTools_tgl + .mx_DevTools_tgl-btn { outline: 0; display: block; @@ -7281,6 +9125,7 @@ input.mx_StatusMessageContextMenu_message { -ms-user-select: none; user-select: none; } + .mx_DevTools_tgl + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { position: relative; @@ -7289,15 +9134,19 @@ input.mx_StatusMessageContextMenu_message { width: 50%; height: 100%; } + .mx_DevTools_tgl + .mx_DevTools_tgl-btn:after { left: 0; } + .mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { display: none; } + .mx_DevTools_tgl:checked + .mx_DevTools_tgl-btn:after { left: 50%; } + .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn { padding: 2px; -webkit-transition: all 0.2s ease; @@ -7306,6 +9155,7 @@ input.mx_StatusMessageContextMenu_message { -webkit-perspective: 100px; perspective: 100px; } + .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { display: inline-block; @@ -7323,73 +9173,89 @@ input.mx_StatusMessageContextMenu_message { backface-visibility: hidden; border-radius: 4px; } + .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { content: attr(data-tg-on); background: #02c66f; -webkit-transform: rotateY(-180deg); transform: rotateY(-180deg); } + .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { background: #ff3a19; content: attr(data-tg-off); } + .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { -webkit-transform: rotateY(-20deg); transform: rotateY(-20deg); } + .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { -webkit-transform: rotateY(180deg); transform: rotateY(180deg); } + .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { -webkit-transform: rotateY(0); transform: rotateY(0); left: 0; background: #7fc6a6; } + .mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { -webkit-transform: rotateY(20deg); transform: rotateY(20deg); } + .mx_DevTools_VerificationRequest { border: 1px solid #ccc; border-radius: 3px; padding: 1px 5px; margin-bottom: 6px; - font-family: Inconsolata, Twemoji, Apple Color Emoji, Segoe UI Emoji, Courier, - monospace, Noto Color Emoji; + font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, + monospace; } + .mx_DevTools_VerificationRequest dl { display: grid; grid-template-columns: -webkit-max-content auto; grid-template-columns: max-content auto; margin: 0; } + .mx_DevTools_VerificationRequest dd { grid-column-start: 2; } + .mx_DevTools_VerificationRequest dd:empty { color: #666; } + .mx_DevTools_VerificationRequest dd:empty:after { content: "(empty)"; } + .mx_DevTools_VerificationRequest dt { font-weight: 700; grid-column-start: 1; } + .mx_DevTools_VerificationRequest dt:after { content: ":"; } + .mx_DevTools_SettingsExplorer table { width: 100%; table-layout: fixed; border-collapse: collapse; } + .mx_DevTools_SettingsExplorer table th { border-bottom: 1px solid #0dbd8b; text-align: left; } + .mx_DevTools_SettingsExplorer table td, .mx_DevTools_SettingsExplorer table th { width: 360px; @@ -7397,35 +9263,44 @@ input.mx_StatusMessageContextMenu_message { overflow: hidden; white-space: nowrap; } + .mx_DevTools_SettingsExplorer table td + td, .mx_DevTools_SettingsExplorer table th + th { width: auto; } + .mx_DevTools_SettingsExplorer table tr:hover { background-color: rgba(13, 189, 139, 0.5); } + .mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable { background-color: #0dbd8b; } + .mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable { background-color: #ff4b55; } + .mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit { float: right; margin-right: 16px; } + .mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning { border: 2px solid #ff4b55; border-radius: 4px; padding: 4px; margin-bottom: 8px; } + .mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth { width: 360px; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content { margin-bottom: 12px; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_AccessibleButton.mx_AccessibleButton_kind_primary { @@ -7434,6 +9309,7 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.6rem; line-height: 32px; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_rowAvatar { @@ -7448,12 +9324,14 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer { margin-top: 20px; margin-bottom: 20px; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer @@ -7466,12 +9344,14 @@ input.mx_StatusMessageContextMenu_message { height: 96px; border-radius: 96px; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer .mx_EditCommunityPrototypeDialog_placeholderAvatar { background-color: #368bd6; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_avatarContainer @@ -7491,11 +9371,13 @@ input.mx_StatusMessageContextMenu_message { -webkit-mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip { margin-left: 20px; } + .mx_EditCommunityPrototypeDialog .mx_Dialog_content .mx_EditCommunityPrototypeDialog_tip @@ -7507,32 +9389,194 @@ input.mx_StatusMessageContextMenu_message { display: block; color: #61708b; } + +.mx_ExportDialog .mx_ExportDialog_subheading { + font-size: 1.6rem; + display: block; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; + font-weight: 600; + color: #2e2f32; + margin-top: 18px; + margin-bottom: 12px; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting .mx_ExportDialog_options { + pointer-events: none; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_select:before { + display: none; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting + .mx_RadioButton + input[type="radio"]:checked + + div + > div { + background: grey; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting + .mx_RadioButton + input[type="radio"]:checked + + div { + border-color: unset; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting + .mx_Field_valid.mx_Field:focus-within + label, +.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field label { + color: unset; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field, +.mx_ExportDialog.mx_ExportDialog_Exporting + .mx_Field_valid.mx_Field:focus-within { + border-color: #e7e7e7; +} + +.mx_ExportDialog.mx_ExportDialog_Exporting + .mx_Checkbox + input[type="checkbox"]:checked + + label + > .mx_Checkbox_background { + background: grey; + border-color: grey; +} + +.mx_ExportDialog .mx_ExportDialog_progress .mx_Dialog_buttons { + margin-top: unset; + margin-left: 18px; +} + +.mx_ExportDialog .mx_ExportDialog_progress .mx_ExportDialog_spinner { + -webkit-animation: mx_rotate 2s linear infinite; + animation: mx_rotate 2s linear infinite; + z-index: 2; + position: relative; + margin-right: 10px; + width: 24px; + height: 24px; +} + +.mx_ExportDialog + .mx_ExportDialog_progress + .mx_ExportDialog_spinner + .mx_ExportDialog_spinner_path { + stroke: #0dbd8b; + stroke-linecap: round; + -webkit-animation: mx_dash 1.5s ease-in-out infinite; + animation: mx_dash 1.5s ease-in-out infinite; +} + +.mx_ExportDialog .mx_ExportDialog_progress { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_ExportDialog .mx_RadioButton > .mx_RadioButton_content { + margin-top: 5px; + margin-bottom: 5px; +} + +.mx_ExportDialog .mx_Field { + width: 256px; +} + +.mx_ExportDialog .mx_Field_postfix { + padding: 9px 10px; +} + +@-webkit-keyframes mx_rotate { + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} + +@keyframes mx_rotate { + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} + +@-webkit-keyframes mx_dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35; + } + to { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124; + } +} + +@keyframes mx_dash { + 0% { + stroke-dasharray: 1, 150; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 90, 150; + stroke-dashoffset: -35; + } + to { + stroke-dasharray: 90, 150; + stroke-dashoffset: -124; + } +} + .mx_FeedbackDialog hr { margin: 24px 0; border-color: #e7e7e7; } + .mx_FeedbackDialog .mx_Dialog_content { margin-bottom: 24px; } + .mx_FeedbackDialog .mx_Dialog_content > h2 { margin-bottom: 32px; } + .mx_FeedbackDialog .mx_FeedbackDialog_section { position: relative; padding-left: 52px; } + .mx_FeedbackDialog .mx_FeedbackDialog_section > p { color: #8d99a5; } + .mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link { padding: 0; font-size: inherit; } + .mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link, .mx_FeedbackDialog .mx_FeedbackDialog_section a { color: #0dbd8b; text-decoration: underline; } + .mx_FeedbackDialog .mx_FeedbackDialog_section:after, .mx_FeedbackDialog .mx_FeedbackDialog_section:before { content: ""; @@ -7542,10 +9586,12 @@ input.mx_StatusMessageContextMenu_message { left: 0; top: 0; } + .mx_FeedbackDialog .mx_FeedbackDialog_section:before { background-color: #c1c6cd; border-radius: 20px; } + .mx_FeedbackDialog .mx_FeedbackDialog_section:after { background: #fff; -webkit-mask-position: center; @@ -7555,10 +9601,12 @@ input.mx_StatusMessageContextMenu_message { -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; } + .mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after { -webkit-mask-image: url(../../img/feather-customised/bug.3dc7afa.svg); mask-image: url(../../img/feather-customised/bug.3dc7afa.svg); } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -7573,6 +9621,7 @@ input.mx_StatusMessageContextMenu_message { vertical-align: top; cursor: pointer; } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton @@ -7580,6 +9629,7 @@ input.mx_StatusMessageContextMenu_message { + div { display: none; } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton @@ -7592,32 +9642,254 @@ input.mx_StatusMessageContextMenu_message { border-radius: 20px; margin: 5px; } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton .mx_RadioButton_spacer { display: none; } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton + .mx_RadioButton { margin-left: 16px; } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked { font-size: 24px; border-color: #0dbd8b; } + .mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after { -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); mask-image: url(../../img/element-icons/feedback.a91241e.svg); } + +.mx_ForwardDialog { + width: 520px; + color: #2e2f32; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + min-height: 0; + height: 80vh; +} + +.mx_ForwardDialog > h3 { + margin: 0 0 6px; + color: #737d8c; + font-size: 1.2rem; + font-weight: 600; + line-height: 1.5rem; +} + +.mx_ForwardDialog > .mx_ForwardDialog_preview { + max-height: 30%; + -ms-flex-negative: 0; + flex-shrink: 0; + overflow-y: auto; +} + +.mx_ForwardDialog + > .mx_ForwardDialog_preview + .mx_EventTile[data-layout="bubble"] { + margin-top: 20px; +} + +.mx_ForwardDialog > .mx_ForwardDialog_preview div { + pointer-events: none; +} + +.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_e2eIcon_unencrypted, +.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_msgOption, +.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_MFileBody_download { + display: none; +} + +.mx_ForwardDialog > hr { + width: 100%; + border: none; + border-top: 1px solid #e7e7e7; + margin: 12px 0; +} + +.mx_ForwardDialog > .mx_ForwardList { + display: contents; +} + +.mx_ForwardDialog > .mx_ForwardList .mx_SearchBox { + margin: 0 0 15px; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_content { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_noResults { + display: block; + margin-top: 24px; +} + +.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results:not(:first-child) { + margin-top: 24px; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + height: 32px; + padding: 6px; + border-radius: 8px; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry:hover { + background-color: hsla(0, 0%, 91%, 0.77); +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_roomButton { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-right: 12px; + min-width: 0; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_roomButton + .mx_DecoratedRoomAvatar { + margin-right: 12px; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_roomButton + .mx_ForwardList_entry_name { + font-size: 1.5rem; + line-height: 30px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + margin-right: 12px; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton { + position: relative; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton:not(.mx_ForwardList_canSend) + .mx_ForwardList_sendLabel { + visibility: hidden; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton + .mx_ForwardList_sendIcon, +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton + .mx_NotificationBadge { + position: absolute; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton + .mx_NotificationBadge { + background-color: #fff; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton.mx_ForwardList_sending + .mx_ForwardList_sendIcon { + background-color: #0dbd8b; + -webkit-mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); + mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 14px; + mask-size: 14px; + width: 14px; + height: 14px; +} + +.mx_ForwardDialog + > .mx_ForwardList + .mx_ForwardList_results + .mx_ForwardList_entry + .mx_ForwardList_sendButton.mx_ForwardList_sent + .mx_ForwardList_sendIcon { + background-color: #0dbd8b; + -webkit-mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); + mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 14px; + mask-size: 14px; + width: 14px; + height: 14px; +} + .mx_GroupAddressPicker_checkboxContainer { margin-top: 10px; display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_HostSignupDialog { width: 90vw; max-width: 580px; @@ -7625,19 +9897,23 @@ input.mx_StatusMessageContextMenu_message { max-height: 600px; background-color: #fff; } + .mx_HostSignupDialog .mx_HostSignupDialog_info { text-align: center; } + .mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_content_top { margin-bottom: 24px; } + .mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs { text-align: left; padding-left: 25%; padding-right: 25%; } + .mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons { margin-bottom: 24px; display: -webkit-box; @@ -7647,6 +9923,7 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-pack: center; justify-content: center; } + .mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons @@ -7654,6 +9931,7 @@ input.mx_StatusMessageContextMenu_message { padding: 12px; margin: 0 16px; } + .mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer { display: -webkit-box; display: -ms-flexbox; @@ -7665,9 +9943,11 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: baseline; align-items: baseline; } + .mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img { padding-right: 5px; } + .mx_HostSignupDialog iframe { width: 100%; height: 100%; @@ -7675,12 +9955,15 @@ input.mx_StatusMessageContextMenu_message { background-color: #fff; min-height: 540px; } + .mx_HostSignupDialog_text_dark { color: #2e2f32; } + .mx_HostSignupDialog_text_light { color: #737d8c; } + .mx_HostSignup_maximize_button { -webkit-mask: url(../../img/feather-customised/maximise.dc32127.svg); mask: url(../../img/feather-customised/maximise.dc32127.svg); @@ -7692,6 +9975,7 @@ input.mx_StatusMessageContextMenu_message { mask-size: cover; right: 10px; } + .mx_HostSignup_maximize_button, .mx_HostSignup_minimize_button { width: 14px; @@ -7701,6 +9985,7 @@ input.mx_StatusMessageContextMenu_message { position: absolute; top: 10px; } + .mx_HostSignup_minimize_button { -webkit-mask: url(../../img/feather-customised/minimise.aec9142.svg); mask: url(../../img/feather-customised/minimise.aec9142.svg); @@ -7712,6 +9997,7 @@ input.mx_StatusMessageContextMenu_message { mask-size: cover; right: 25px; } + .mx_HostSignup_persisted { width: 90vw; max-width: 580px; @@ -7722,6 +10008,7 @@ input.mx_StatusMessageContextMenu_message { position: fixed; display: none; } + .mx_HostSignupDialog_minimized { position: fixed; bottom: 80px; @@ -7730,27 +10017,37 @@ input.mx_StatusMessageContextMenu_message { height: 217px; overflow: hidden; } + .mx_HostSignupDialog_minimized.mx_Dialog { padding: 12px; } + .mx_HostSignupDialog_minimized .mx_Dialog_title { text-align: left !important; padding-left: 20px; font-size: 1.5rem; } + .mx_HostSignupDialog_minimized iframe { width: 100%; height: 100%; border: none; background-color: #fff; } + .mx_IncomingSasDialog_opponentProfile_image { position: relative; } + .mx_IncomingSasDialog_opponentProfile h2 { display: inline-block; margin-left: 10px; } + +.mx_InviteDialog_transferWrapper .mx_Dialog { + padding-bottom: 16px; +} + .mx_InviteDialog_addressBar { display: -webkit-box; display: -ms-flexbox; @@ -7759,7 +10056,9 @@ input.mx_StatusMessageContextMenu_message { -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; + margin: 8px 45px 0 0; } + .mx_InviteDialog_addressBar .mx_InviteDialog_editor { -webkit-box-flex: 1; -ms-flex: 1; @@ -7777,6 +10076,7 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-wrap: wrap; flex-wrap: wrap; } + .mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile { margin: 6px 6px 0 0; display: inline-block; @@ -7784,6 +10084,7 @@ input.mx_StatusMessageContextMenu_message { min-width: -moz-max-content; min-width: max-content; } + .mx_InviteDialog_addressBar .mx_InviteDialog_editor > input[type="text"] { margin: 6px 0 !important; height: 24px; @@ -7801,12 +10102,14 @@ input.mx_StatusMessageContextMenu_message { flex: 1 !important; color: #2e2f32 !important; } + .mx_InviteDialog_addressBar .mx_InviteDialog_goButton { min-width: 48px; margin-left: 10px; height: 25px; line-height: 2.5rem; } + .mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner { width: 20px; height: 20px; @@ -7814,43 +10117,124 @@ input.mx_StatusMessageContextMenu_message { display: inline-block; vertical-align: middle; } + .mx_InviteDialog_section { - padding-bottom: 10px; + padding-bottom: 4px; } + .mx_InviteDialog_section h3 { font-size: 1.2rem; color: #61708b; font-weight: 700; text-transform: uppercase; } + +.mx_InviteDialog_section > p { + margin: 0; +} + +.mx_InviteDialog_section > span { + color: #2e2f32; +} + .mx_InviteDialog_section .mx_InviteDialog_subname { margin-bottom: 10px; margin-top: -10px; font-size: 1.2rem; color: #61708b; } + +.mx_InviteDialog_section_hidden_suggestions_disclaimer { + padding: 8px 0 16px; + font-size: 1.4rem; +} + +.mx_InviteDialog_section_hidden_suggestions_disclaimer > span { + color: #2e2f32; + font-weight: 600; +} + +.mx_InviteDialog_section_hidden_suggestions_disclaimer > p { + margin: 0; +} + +.mx_InviteDialog_footer { + border-top: 1px solid #e7e7e7; +} + +.mx_InviteDialog_footer > h3 { + margin: 12px 0; + font-size: 1.2rem; + color: #61708b; + font-weight: 700; + text-transform: uppercase; +} + +.mx_InviteDialog_footer .mx_InviteDialog_footer_link { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + border-radius: 4px; + border: 1px solid #747474; + padding: 8px; +} + +.mx_InviteDialog_footer .mx_InviteDialog_footer_link > a { + text-decoration: none; + -ms-flex-negative: 1; + flex-shrink: 1; + overflow: hidden; + text-overflow: ellipsis; +} + +.mx_InviteDialog_footer .mx_InviteDialog_footer_link_copy { + -ms-flex-negative: 0; + flex-shrink: 0; + cursor: pointer; + margin-left: 20px; + display: inherit; +} + +.mx_InviteDialog_footer .mx_InviteDialog_footer_link_copy > div { + -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); + background-color: #2e2f32; + margin-left: 5px; + width: 20px; + height: 20px; + background-repeat: no-repeat; +} + .mx_InviteDialog_roomTile { cursor: pointer; padding: 5px 10px; } + .mx_InviteDialog_roomTile:hover { background-color: #f3f8fd; border-radius: 4px; } + .mx_InviteDialog_roomTile * { vertical-align: middle; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack { display: inline-block; position: relative; width: 36px; height: 36px; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack > * { position: absolute; top: 0; left: 0; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected { width: 36px; height: 36px; @@ -7859,6 +10243,7 @@ input.mx_StatusMessageContextMenu_message { display: inline-block; position: relative; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before { content: ""; width: 24px; @@ -7876,20 +10261,32 @@ input.mx_StatusMessageContextMenu_message { left: 6px; background-color: #fff; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack { display: inline-block; + overflow: hidden; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name { font-weight: 600; font-size: 1.4rem; color: #2e2f32; margin-left: 7px; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId { font-size: 1.2rem; color: #61708b; margin-left: 7px; } + +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name, +.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time { text-align: right; font-size: 1.2rem; @@ -7897,12 +10294,15 @@ input.mx_StatusMessageContextMenu_message { float: right; line-height: 3.6rem; } + .mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight { font-weight: 900; } + .mx_InviteDialog_userTile { margin-right: 8px; } + .mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill { background-color: #368bd6; border-radius: 12px; @@ -7913,6 +10313,7 @@ input.mx_StatusMessageContextMenu_message { padding-right: 8px; color: #fff; } + .mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_avatar { @@ -7921,6 +10322,7 @@ input.mx_StatusMessageContextMenu_message { left: -5px; top: 2px; } + .mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_name, @@ -7929,32 +10331,200 @@ input.mx_StatusMessageContextMenu_message { img.mx_InviteDialog_userTile_avatar { vertical-align: top; } + .mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill .mx_InviteDialog_userTile_threepidAvatar { background-color: #fff; } + .mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove { display: inline-block; margin-left: 4px; } -.mx_InviteDialog { - height: 590px; + +.mx_InviteDialog_other { + height: 600px; padding-left: 20px; } + +.mx_InviteDialog_other .mx_InviteDialog_userSections { + height: calc(100% - 115px); +} + +.mx_InviteDialog_content { + height: calc(100% - 36px); + overflow: hidden; +} + +.mx_InviteDialog_transfer { + width: 496px; + height: 466px; +} + +.mx_InviteDialog_transfer, +.mx_InviteDialog_transfer .mx_InviteDialog_content { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.mx_InviteDialog_transfer .mx_InviteDialog_content .mx_TabbedView { + height: calc(100% - 60px); +} + +.mx_InviteDialog_transfer .mx_InviteDialog_content { + overflow: visible; +} + +.mx_InviteDialog_transfer .mx_InviteDialog_addressBar { + margin-top: 8px; +} + +.mx_InviteDialog_transfer input[type="checkbox"] { + margin-right: 8px; +} + .mx_InviteDialog_userSections { - margin-top: 10px; + margin-top: 4px; overflow-y: auto; - padding-right: 45px; - height: 455px; + padding: 0 45px 4px 0; } -.mx_InviteDialog_addressBar, + +.mx_InviteDialog_hasFooter .mx_InviteDialog_userSections { + height: calc(100% - 175px); +} + .mx_InviteDialog_helpText { - margin-right: 45px; + margin: 0; } + .mx_InviteDialog_helpText .mx_AccessibleButton_kind_link { padding: 0; } + +.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField { + border-top: 0; + border-left: 0; + border-right: 0; + border-radius: 0; + margin-top: 0; + border-color: #c1c6cd; +} + +.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField input { + font-size: 18px; + font-weight: 600; + padding-top: 0; +} + +.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField:focus-within { + border-color: #0dbd8b; +} + +.mx_InviteDialog_dialPadField .mx_Field_postfix { + border-left: none; +} + +.mx_InviteDialog_dialPad { + width: 224px; + margin-top: 16px; + margin-left: auto; + margin-right: auto; +} + +.mx_InviteDialog_dialPad .mx_DialPad { + grid-row-gap: 16px; + row-gap: 16px; + grid-column-gap: 48px; + -webkit-column-gap: 48px; + -moz-column-gap: 48px; + column-gap: 48px; + margin-left: auto; + margin-right: auto; +} + +.mx_InviteDialog_transferConsultConnect { + padding-top: 16px; + position: relative; + width: 496px; + left: -24px; + padding-left: 24px; + padding-right: 24px; + border-top: 1px solid #e3e8f0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_InviteDialog_transferConsultConnect_pushRight { + margin-left: auto; +} + +.mx_InviteDialog_userDirectoryIcon:before { + -webkit-mask-image: url(../../img/voip/tab-userdirectory.cc3ed9a.svg); + mask-image: url(../../img/voip/tab-userdirectory.cc3ed9a.svg); +} + +.mx_InviteDialog_dialPadIcon:before { + -webkit-mask-image: url(../../img/voip/tab-dialpad.a4a190e.svg); + mask-image: url(../../img/voip/tab-dialpad.a4a190e.svg); +} + +.mx_InviteDialog_multiInviterError > h4 { + font-size: 1.5rem; + line-height: 2.4rem; + color: #737d8c; + font-weight: 400; +} + +.mx_InviteDialog_multiInviterError + > div + .mx_InviteDialog_multiInviterError_entry { + margin-bottom: 24px; +} + +.mx_InviteDialog_multiInviterError + > div + .mx_InviteDialog_multiInviterError_entry + .mx_InviteDialog_multiInviterError_entry_userProfile + .mx_InviteDialog_multiInviterError_entry_name { + margin-left: 6px; + font-size: 1.5rem; + line-height: 2.4rem; + font-weight: 600; + color: #2e2f32; +} + +.mx_InviteDialog_multiInviterError + > div + .mx_InviteDialog_multiInviterError_entry + .mx_InviteDialog_multiInviterError_entry_userProfile + .mx_InviteDialog_multiInviterError_entry_userId { + margin-left: 6px; + font-size: 1.2rem; + line-height: 1.5rem; + color: #8d99a5; +} + +.mx_InviteDialog_multiInviterError + > div + .mx_InviteDialog_multiInviterError_entry + .mx_InviteDialog_multiInviterError_entry_error { + margin-left: 32px; + font-size: 1.5rem; + line-height: 2.4rem; + color: #ff4b55; +} + .mx_KeyboardShortcutsDialog { display: -webkit-box; display: -ms-flexbox; @@ -7968,20 +10538,25 @@ input.mx_StatusMessageContextMenu_message { margin-bottom: -50px; max-height: 1100px; } + .mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category { width: 33.3333%; margin: 0 0 40px; } + .mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category > div { padding-left: 5px; } + .mx_KeyboardShortcutsDialog h3 { margin: 0 0 10px; } + .mx_KeyboardShortcutsDialog h5 { margin: 15px 0 5px; font-weight: 400; } + .mx_KeyboardShortcutsDialog kbd { padding: 5px; border-radius: 4px; @@ -7996,15 +10571,211 @@ input.mx_StatusMessageContextMenu_message { margin-bottom: 4px; text-transform: capitalize; } + .mx_KeyboardShortcutsDialog kbd + kbd { margin-left: 5px; } + .mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div { display: inline; } + +.mx_ManageRestrictedJoinRuleDialog, +.mx_ManageRestrictedJoinRuleDialog_wrapper .mx_Dialog { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.mx_ManageRestrictedJoinRuleDialog { + width: 480px; + color: #2e2f32; + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + min-height: 0; + height: 60vh; +} + +.mx_ManageRestrictedJoinRuleDialog .mx_SearchBox { + margin: 0 0 15px; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; +} + +.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_content { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_noResults { + display: block; + margin-top: 24px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section:not(:first-child) { + margin-top: 24px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + > h3 { + margin: 0; + color: #737d8c; + font-size: 1.2rem; + font-weight: 600; + line-height: 1.5rem; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 12px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry + > div { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry + .mx_RoomAvatar_isSpaceRoom + img, +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry + img.mx_RoomAvatar_isSpaceRoom { + border-radius: 4px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry + .mx_ManageRestrictedJoinRuleDialog_entry_name { + margin: 0 8px; + font-size: 1.5rem; + line-height: 30px; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry + .mx_ManageRestrictedJoinRuleDialog_entry_description { + margin-top: 8px; + font-size: 1.2rem; + line-height: 1.5rem; + color: #8d99a5; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section + .mx_ManageRestrictedJoinRuleDialog_entry + .mx_Checkbox { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section_spaces + .mx_BaseAvatar { + margin-right: 12px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section_spaces + .mx_BaseAvatar_image { + border-radius: 8px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section_info { + position: relative; + border-radius: 8px; + margin: 12px 0; + padding: 8px 8px 8px 42px; + background-color: #f3f8fd; + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_section_info:before { + content: ""; + position: absolute; + left: 10px; + top: calc(50% - 8px); + height: 16px; + width: 16px; + background-color: #737d8c; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); + -webkit-mask-position: center; + mask-position: center; +} + +.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_footer { + margin-top: 20px; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_footer + .mx_ManageRestrictedJoinRuleDialog_footer_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + margin-left: auto; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_footer + .mx_ManageRestrictedJoinRuleDialog_footer_buttons + .mx_AccessibleButton { + display: inline-block; +} + +.mx_ManageRestrictedJoinRuleDialog + .mx_ManageRestrictedJoinRuleDialog_footer + .mx_ManageRestrictedJoinRuleDialog_footer_buttons + .mx_AccessibleButton + + .mx_AccessibleButton { + margin-left: 24px; +} + .mx_MessageEditHistoryDialog .mx_Dialog_header > .mx_Dialog_title { text-align: center; } + .mx_MessageEditHistoryDialog { display: -webkit-box; display: -ms-flexbox; @@ -8015,66 +10786,80 @@ input.mx_StatusMessageContextMenu_message { flex-direction: column; max-height: 60vh; } + .mx_MessageEditHistoryDialog_scrollPanel { -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; } + .mx_MessageEditHistoryDialog_error { color: #ff4b55; text-align: center; } + .mx_MessageEditHistoryDialog_edits { list-style-type: none; font-size: 1.4rem; padding: 0; color: #2e2f32; } + .mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion, .mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion { padding: 0 2px; } + .mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion { color: #ff4c55; background-color: rgba(255, 76, 85, 0.1); text-decoration: line-through; } + .mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion { color: #1aa97b; background-color: rgba(26, 169, 123, 0.1); text-decoration: underline; } + .mx_MessageEditHistoryDialog_edits .mx_EventTile_content, .mx_MessageEditHistoryDialog_edits .mx_EventTile_line { margin-right: 0; } + .mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton { font-size: 1rem; padding: 0 8px; } + .mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning { margin-bottom: 24px; } + .mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning > img { vertical-align: middle; margin-right: 8px; } + .mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons { float: right; margin-top: 24px; } + .mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons .mx_AccessibleButton + .mx_AccessibleButton { margin-left: 8px; } + .mx_ModalWidgetDialog iframe { width: 100%; height: 450px; border: 0; border-radius: 8px; } + .mx_NewSessionReviewDialog_header { display: -webkit-box; display: -ms-flexbox; @@ -8084,53 +10869,66 @@ input.mx_StatusMessageContextMenu_message { align-items: center; margin-top: 0; } + .mx_NewSessionReviewDialog_headerIcon { width: 24px; height: 24px; margin-right: 4px; position: relative; } + .mx_NewSessionReviewDialog_deviceName { font-weight: 600; } + .mx_NewSessionReviewDialog_deviceID { font-size: 1.2rem; color: #8d99a5; } + .mx_RegistrationEmailPromptDialog { width: 417px; } + .mx_RegistrationEmailPromptDialog .mx_Dialog_content { margin-bottom: 24px; color: #8d99a5; } + .mx_RegistrationEmailPromptDialog .mx_Dialog_primary { width: 100%; } + .mx_RoomSettingsDialog_settingsIcon:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + .mx_RoomSettingsDialog_securityIcon:before { -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); mask-image: url(../../img/element-icons/security.66f2fa6.svg); } + .mx_RoomSettingsDialog_rolesIcon:before { -webkit-mask-image: url(../../img/element-icons/room/settings/roles.bad9a9e.svg); mask-image: url(../../img/element-icons/room/settings/roles.bad9a9e.svg); } + .mx_RoomSettingsDialog_notificationsIcon:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); } + .mx_RoomSettingsDialog_bridgesIcon:before { -webkit-mask-image: url(../../img/feather-customised/bridge.b2ca042.svg); mask-image: url(../../img/feather-customised/bridge.b2ca042.svg); } + .mx_RoomSettingsDialog_warningIcon:before { -webkit-mask-image: url(../../img/element-icons/room/settings/advanced.e079c15.svg); mask-image: url(../../img/element-icons/room/settings/advanced.e079c15.svg); } + .mx_RoomSettingsDialog .mx_Dialog_title { -ms-text-overflow: ellipsis; text-overflow: ellipsis; @@ -8139,6 +10937,7 @@ input.mx_StatusMessageContextMenu_message { margin: 0 auto; padding-right: 80px; } + .mx_RoomSettingsDialog .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before { @@ -8151,14 +10950,17 @@ input.mx_StatusMessageContextMenu_message { -webkit-mask-position: center; mask-position: center; } + .mx_RoomSettingsDialog_BridgeList { padding: 0; } + .mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton { display: inline; margin: 0; padding: 0; } + .mx_RoomSettingsDialog_BridgeList li { list-style-type: none; padding: 5px; @@ -8166,50 +10968,61 @@ input.mx_StatusMessageContextMenu_message { border: 1px solid transparent; border-radius: 5px; } + .mx_RoomSettingsDialog_BridgeList li .column-icon { float: left; padding-right: 10px; } + .mx_RoomSettingsDialog_BridgeList li .column-icon * { border-radius: 5px; border: 1px solid #e3e8f0; } + .mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon { width: 48px; height: 48px; background: #e3e8f0; border-radius: 5px; } + .mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon { float: left; margin-right: 5px; } + .mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img { border-radius: 5px; border-width: 1px; border-color: transparent; } + .mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span { left: auto; } + .mx_RoomSettingsDialog_BridgeList li .column-data { display: inline-block; width: 85%; } + .mx_RoomSettingsDialog_BridgeList li .column-data > h3 { margin-top: 0; margin-bottom: 0; font-size: 16pt; color: #2e2f32; } + .mx_RoomSettingsDialog_BridgeList li .column-data > * { margin-top: 4px; margin-bottom: 0; } + .mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details { color: #2e2f32; font-weight: 600; } + .mx_RoomSettingsDialog_BridgeList li .column-data @@ -8217,6 +11030,7 @@ input.mx_StatusMessageContextMenu_message { .channel { margin-left: 5px; } + .mx_RoomSettingsDialog_BridgeList li .column-data .metadata { color: #61708b; margin-bottom: 0; @@ -8225,45 +11039,56 @@ input.mx_StatusMessageContextMenu_message { white-space: normal; padding: 0; } + .mx_RoomSettingsDialog_BridgeList li .column-data .metadata > li { padding: 0; border: 0; } + .mx_RoomUpgradeDialog { padding-right: 70px; } + .mx_RoomUpgradeWarningDialog { max-width: 38vw; width: 38vw; } + .mx_RoomUpgradeWarningDialog .mx_SettingsFlag { font-weight: 700; } + .mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch { display: inline-block; vertical-align: middle; margin-left: 8px; float: right; } + .mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label { display: inline-block; vertical-align: middle; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content { padding-right: 85px; color: #2e2f32; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr { border-color: #2e2f32; opacity: 0.1; border-bottom: none; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul { padding: 16px; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n + 2) { margin-top: 16px; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context @@ -8274,6 +11099,7 @@ input.mx_StatusMessageContextMenu_message { line-height: 24px; vertical-align: top; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context @@ -8281,6 +11107,7 @@ input.mx_StatusMessageContextMenu_message { display: inline-block; width: calc(100% - 155px); } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context @@ -8290,6 +11117,7 @@ input.mx_StatusMessageContextMenu_message { margin-left: 8px; vertical-align: middle; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context @@ -8298,6 +11126,7 @@ input.mx_StatusMessageContextMenu_message { position: relative; margin-top: 8px; } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context @@ -8306,6 +11135,7 @@ input.mx_StatusMessageContextMenu_message { .mx_ServerOfflineDialog_content_context_txn_desc { width: calc(100% - 100px); } + .mx_ServerOfflineDialog .mx_ServerOfflineDialog_content .mx_ServerOfflineDialog_content_context @@ -8315,35 +11145,43 @@ input.mx_StatusMessageContextMenu_message { float: right; padding: 0; } + .mx_ServerPickerDialog { width: 468px; -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_ServerPickerDialog .mx_Dialog_content { margin-bottom: 0; } + .mx_ServerPickerDialog .mx_Dialog_content > p { color: #737d8c; font-size: 1.4rem; margin: 16px 0; } + .mx_ServerPickerDialog .mx_Dialog_content > p:first-of-type { margin-bottom: 40px; } + .mx_ServerPickerDialog .mx_Dialog_content > p:last-of-type { margin: 0 24px 24px; } + .mx_ServerPickerDialog .mx_Dialog_content > h4 { font-size: 1.5rem; font-weight: 600; color: #737d8c; margin-left: 8px; } + .mx_ServerPickerDialog .mx_Dialog_content > a { color: #0dbd8b; margin-left: 8px; } + .mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserverRadio input[type="radio"] @@ -8351,23 +11189,28 @@ input.mx_StatusMessageContextMenu_message { margin-top: auto; margin-bottom: auto; } + .mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver { border-top: none; border-left: none; border-right: none; border-radius: unset; } + .mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > input { padding-left: 0; } + .mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > label { margin-left: 0; } + .mx_ServerPickerDialog .mx_AccessibleButton_kind_primary { width: calc(100% - 64px); margin: 0 8px; padding: 15px 18px; } + .mx_SetEmailDialog_email_input { border-radius: 3px; border: 1px solid #e7e7e7; @@ -8379,23 +11222,30 @@ input.mx_StatusMessageContextMenu_message { max-width: 280px; margin-bottom: 10px; } + .mx_SetEmailDialog_email_input:focus { outline: none; -webkit-box-shadow: none; box-shadow: none; border: 1px solid #0dbd8b; } + .mx_RoomSettingsDialog, +.mx_SpaceSettingsDialog, .mx_UserSettingsDialog { width: 90vw; max-width: 1000px; height: 80vh; } + .mx_RoomSettingsDialog .mx_TabbedView, +.mx_SpaceSettingsDialog .mx_TabbedView, .mx_UserSettingsDialog .mx_TabbedView { top: 65px; } + .mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab, +.mx_SpaceSettingsDialog .mx_TabbedView .mx_SettingsTab, .mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab { -webkit-box-sizing: border-box; box-sizing: border-box; @@ -8403,18 +11253,23 @@ input.mx_StatusMessageContextMenu_message { padding-right: 100px; padding-bottom: 100px; } + .mx_RoomSettingsDialog .mx_Dialog_title, +.mx_SpaceSettingsDialog .mx_Dialog_title, .mx_UserSettingsDialog .mx_Dialog_title { margin-bottom: 24px; } + .mx_ShareDialog hr { margin-top: 25px; margin-bottom: 25px; border-color: #747474; } + .mx_ShareDialog_content { margin: 10px 0; } + .mx_ShareDialog_matrixto { display: -webkit-box; display: -ms-flexbox; @@ -8428,15 +11283,18 @@ input.mx_StatusMessageContextMenu_message { margin-top: 30px; padding: 10px; } + .mx_ShareDialog_matrixto a { text-decoration: none; } + .mx_ShareDialog_matrixto_link { -ms-flex-negative: 1; flex-shrink: 1; overflow: hidden; text-overflow: ellipsis; } + .mx_ShareDialog_matrixto_copy { -ms-flex-negative: 0; flex-shrink: 0; @@ -8444,7 +11302,9 @@ input.mx_StatusMessageContextMenu_message { margin-left: 20px; display: inherit; } -.mx_ShareDialog_matrixto_copy > div { + +.mx_ShareDialog_matrixto_copy:after { + content: ""; -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); background-color: #2e2f32; @@ -8453,6 +11313,7 @@ input.mx_StatusMessageContextMenu_message { height: 20px; background-repeat: no-repeat; } + .mx_ShareDialog_split { display: -webkit-box; display: -ms-flexbox; @@ -8460,34 +11321,41 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-wrap: wrap; flex-wrap: wrap; } + .mx_ShareDialog_qrcode_container { float: left; height: 256px; width: 256px; margin-right: 64px; } + .mx_ShareDialog_qrcode_container + .mx_ShareDialog_social_container { width: 299px; } + .mx_ShareDialog_social_container { display: inline-block; } + .mx_ShareDialog_social_icon { display: inline-grid; margin-right: 10px; margin-bottom: 10px; } + .mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2 { margin-bottom: 2px; } + .mx_SlashCommandHelpDialog .mx_Dialog_content { margin-top: 12px; margin-bottom: 34px; } + .mx_SpaceSettingsDialog { - width: 480px; color: #2e2f32; } + .mx_SpaceSettingsDialog .mx_SpaceSettings_errorText { font-weight: 600; font-size: 1.2rem; @@ -8495,31 +11363,91 @@ input.mx_StatusMessageContextMenu_message { color: #ff4b55; margin-bottom: 28px; } + .mx_SpaceSettingsDialog .mx_ToggleSwitch { display: inline-block; vertical-align: middle; margin-left: 16px; } -.mx_SpaceSettingsDialog .mx_AccessibleButton_kind_danger { - margin-top: 28px; + +.mx_SpaceSettingsDialog + .mx_SettingsTab_section + .mx_SettingsTab_section_caption { + margin-top: 12px; + margin-bottom: 20px; } + +.mx_SpaceSettingsDialog .mx_SettingsTab_section + .mx_SettingsTab_subheading { + border-top: 1px solid #e3e8f0; + margin-top: 0; + padding-top: 24px; +} + +.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_RadioButton { + margin-top: 8px; + margin-bottom: 4px; +} + +.mx_SpaceSettingsDialog + .mx_SettingsTab_section + .mx_RadioButton + .mx_RadioButton_content { + font-weight: 600; + line-height: 1.8rem; + color: #2e2f32; +} + +.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_RadioButton + span { + font-size: 1.5rem; + line-height: 1.8rem; + color: #737d8c; + margin-left: 26px; +} + +.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_SettingsTab_showAdvanced { + margin: 16px 0; + padding: 0; +} + +.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_SettingsFlag { + margin-top: 24px; +} + .mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 64px; } + .mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton { display: inline-block; } + .mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton_kind_link { margin-left: auto; } + .mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind { padding: 8px 22px; } + +.mx_SpaceSettingsDialog + .mx_TabbedView_tabLabel + .mx_SpaceSettingsDialog_generalIcon:before { + -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); + mask-image: url(../../img/element-icons/settings.6b381af.svg); +} + +.mx_SpaceSettingsDialog + .mx_TabbedView_tabLabel + .mx_SpaceSettingsDialog_visibilityIcon:before { + -webkit-mask-image: url(../../img/element-icons/eye.23b2229.svg); + mask-image: url(../../img/element-icons/eye.23b2229.svg); +} + .mx_TabbedIntegrationManagerDialog .mx_Dialog { width: 60%; height: 70%; @@ -8529,6 +11457,7 @@ input.mx_StatusMessageContextMenu_message { max-height: none; position: relative; } + .mx_TabbedIntegrationManagerDialog_container { position: absolute; top: 0; @@ -8536,12 +11465,14 @@ input.mx_StatusMessageContextMenu_message { left: 0; right: 0; } + .mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager { width: 100%; height: 100%; border-top: 1px solid #0dbd8b; } + .mx_TabbedIntegrationManagerDialog_container .mx_TabbedIntegrationManagerDialog_currentManager iframe { @@ -8550,6 +11481,7 @@ input.mx_StatusMessageContextMenu_message { width: 100%; height: 100%; } + .mx_TabbedIntegrationManagerDialog_tab { display: inline-block; border: 1px solid #0dbd8b; @@ -8559,28 +11491,34 @@ input.mx_StatusMessageContextMenu_message { padding: 10px 8px; margin-right: 5px; } + .mx_TabbedIntegrationManagerDialog_currentTab { background-color: #0dbd8b; color: #fff; } + .mx_TermsDialog_forIntegrationManager .mx_Dialog { width: 60%; height: 70%; -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_TermsDialog_termsTableHeader { font-weight: 700; text-align: left; } + .mx_TermsDialog_termsTable { font-size: 1.2rem; width: 100%; } + .mx_TermsDialog_service, .mx_TermsDialog_summary { padding-right: 10px; } + .mx_TermsDialog_link { display: inline-block; -webkit-mask-image: url(../../img/external-link.a8d3e9b.svg); @@ -8589,6 +11527,7 @@ input.mx_StatusMessageContextMenu_message { width: 10px; height: 10px; } + .mx_UntrustedDeviceDialog .mx_Dialog_title { display: -webkit-box; display: -ms-flexbox; @@ -8597,76 +11536,95 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon { margin-left: 0; } + .mx_UploadConfirmDialog_fileIcon { margin-right: 5px; } + .mx_UploadConfirmDialog_previewOuter { text-align: center; } + .mx_UploadConfirmDialog_previewInner { display: inline-block; text-align: left; } + .mx_UploadConfirmDialog_imagePreview { max-height: 300px; max-width: 100%; border-radius: 4px; border: 1px solid #c1c1c1; } + .mx_UserSettingsDialog_settingsIcon:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + .mx_UserSettingsDialog_appearanceIcon:before { -webkit-mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); } + .mx_UserSettingsDialog_voiceIcon:before { -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); } + .mx_UserSettingsDialog_bellIcon:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); } + .mx_UserSettingsDialog_preferencesIcon:before { -webkit-mask-image: url(../../img/element-icons/settings/preference.82bfabd.svg); mask-image: url(../../img/element-icons/settings/preference.82bfabd.svg); } + .mx_UserSettingsDialog_securityIcon:before { -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); mask-image: url(../../img/element-icons/security.66f2fa6.svg); } + .mx_UserSettingsDialog_helpIcon:before { -webkit-mask-image: url(../../img/element-icons/settings/help.68b703f.svg); mask-image: url(../../img/element-icons/settings/help.68b703f.svg); } + .mx_UserSettingsDialog_labsIcon:before { -webkit-mask-image: url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg); mask-image: url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg); } + .mx_UserSettingsDialog_mjolnirIcon:before { -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); } + .mx_UserSettingsDialog_flairIcon:before { -webkit-mask-image: url(../../img/element-icons/settings/flair.4227a88.svg); mask-image: url(../../img/element-icons/settings/flair.4227a88.svg); } + .mx_WidgetCapabilitiesPromptDialog .text-muted { font-size: 1.2rem; } + .mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content { margin-bottom: 16px; } + .mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap { margin-top: 20px; font-size: 1.5rem; line-height: 1.5rem; } + .mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap .mx_WidgetCapabilitiesPromptDialog_byline { @@ -8675,14 +11633,17 @@ input.mx_StatusMessageContextMenu_message { font-size: 1.2rem; line-height: 1.2rem; } + .mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons { margin-top: 40px; } + .mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag { line-height: calc(1.4rem + 14px); color: #61708b; font-size: 1.2rem; } + .mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch { display: inline-block; vertical-align: middle; @@ -8690,12 +11651,14 @@ input.mx_StatusMessageContextMenu_message { width: 3.2rem; height: 1.5rem; } + .mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch.mx_ToggleSwitch_on > .mx_ToggleSwitch_ball { left: calc(100% - 1.5rem); } + .mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch @@ -8704,24 +11667,29 @@ input.mx_StatusMessageContextMenu_message { height: 1.5rem; border-radius: 1.5rem; } + .mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label { display: inline-block; vertical-align: middle; } + .mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch { display: inline-block; vertical-align: middle; margin-right: 8px; } + .mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label { display: inline-block; vertical-align: middle; } + .mx_AccessSecretStorageDialog_reset { position: relative; padding-left: 24px; margin-top: 7px; } + .mx_AccessSecretStorageDialog_reset:before { content: ""; display: inline-block; @@ -8730,11 +11698,14 @@ input.mx_StatusMessageContextMenu_message { width: 16px; left: 0; top: 2px; - background-image: url(../../img/element-icons/warning-badge.de1033e.svg); + background-image: url(../../img/element-icons/warning-badge.413c9a9.svg); + background-size: contain; } + .mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link { color: #ff4b55; } + .mx_AccessSecretStorageDialog_titleWithIcon:before { content: ""; display: inline-block; @@ -8745,28 +11716,34 @@ input.mx_StatusMessageContextMenu_message { top: 5px; background-color: #2e2f32; } + .mx_AccessSecretStorageDialog_resetBadge:before { - background-image: url(../../img/element-icons/warning-badge.de1033e.svg); + background-image: url(../../img/element-icons/warning-badge.413c9a9.svg); background-size: 24px; background-color: transparent; } + .mx_AccessSecretStorageDialog_secureBackupTitle:before { -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); } + .mx_AccessSecretStorageDialog_securePhraseTitle:before { -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); } + .mx_AccessSecretStorageDialog_keyStatus { height: 30px; } + .mx_AccessSecretStorageDialog_passPhraseInput { width: 300px; border: 1px solid #0dbd8b; border-radius: 5px; padding: 10px; } + .mx_AccessSecretStorageDialog_recoveryKeyEntry { display: -webkit-box; display: -ms-flexbox; @@ -8775,14 +11752,17 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } + .mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText { margin: 16px; } + .mx_AccessSecretStorageDialog_recoveryKeyFeedback:before { content: ""; display: inline-block; @@ -8797,43 +11777,54 @@ input.mx_StatusMessageContextMenu_message { mask-size: 20px; margin-right: 5px; } + .mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid { color: #0dbd8b; } + .mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before { -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); mask-image: url(../../img/feather-customised/check.5745b4e.svg); background-color: #0dbd8b; } + .mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid { color: #ff4b55; } + .mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before { -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); mask-image: url(../../img/feather-customised/x.9662221.svg); background-color: #ff4b55; } + .mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput { display: none; } + .mx_CreateCrossSigningDialog { width: 560px; } + .mx_CreateCrossSigningDialog details .mx_AccessibleButton { margin: 1em 0; } + .mx_CreateCrossSigningDialog .mx_Dialog_title, .mx_CreateKeyBackupDialog .mx_Dialog_title { margin-bottom: 1em; } + .mx_CreateKeyBackupDialog_primaryContainer { padding: 20px; } + .mx_CreateKeyBackupDialog_primaryContainer:after { content: ""; clear: both; display: block; } + .mx_CreateKeyBackupDialog_passPhraseContainer { display: -webkit-box; display: -ms-flexbox; @@ -8842,6 +11833,7 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: start; align-items: flex-start; } + .mx_CreateKeyBackupDialog_passPhraseInput { -webkit-box-flex: 0; -ms-flex: none; @@ -8852,17 +11844,21 @@ input.mx_StatusMessageContextMenu_message { padding: 10px; margin-bottom: 1em; } + .mx_CreateKeyBackupDialog_passPhraseMatch { margin-left: 20px; } + .mx_CreateKeyBackupDialog_recoveryKeyHeader { margin-bottom: 1em; } + .mx_CreateKeyBackupDialog_recoveryKeyContainer { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_CreateKeyBackupDialog_recoveryKey { width: 262px; padding: 20px; @@ -8870,6 +11866,7 @@ input.mx_StatusMessageContextMenu_message { background-color: #f7f7f7; margin-right: 12px; } + .mx_CreateKeyBackupDialog_recoveryKeyButtons { -webkit-box-flex: 1; -ms-flex: 1; @@ -8881,23 +11878,28 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_CreateKeyBackupDialog_recoveryKeyButtons button { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; white-space: nowrap; } + .mx_CreateKeyBackupDialog details .mx_AccessibleButton { margin: 1em 0; } + .mx_CreateSecretStorageDialog { width: 560px; } + .mx_CreateSecretStorageDialog .mx_SettingsFlag { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_CreateSecretStorageDialog .mx_SettingsFlag_label { -webkit-box-flex: 1; -ms-flex: 1 1 0px; @@ -8905,18 +11907,22 @@ input.mx_StatusMessageContextMenu_message { min-width: 0; font-weight: 600; } + .mx_CreateSecretStorageDialog .mx_ToggleSwitch { -webkit-box-flex: 0; -ms-flex: 0 0 auto; flex: 0 0 auto; margin-left: 30px; } + .mx_CreateSecretStorageDialog details .mx_AccessibleButton { margin: 1em 0; } + .mx_CreateSecretStorageDialog .mx_Dialog_title { margin-bottom: 1em; } + .mx_CreateSecretStorageDialog_titleWithIcon:before { content: ""; display: inline-block; @@ -8927,36 +11933,44 @@ input.mx_StatusMessageContextMenu_message { top: 5px; background-color: #2e2f32; } + .mx_CreateSecretStorageDialog_secureBackupTitle:before { -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); } + .mx_CreateSecretStorageDialog_securePhraseTitle:before { -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); } + .mx_CreateSecretStorageDialog_centeredBody, .mx_CreateSecretStorageDialog_centeredTitle { text-align: center; } + .mx_CreateSecretStorageDialog_primaryContainer { padding-top: 20px; } + .mx_CreateSecretStorageDialog_primaryContainer:after { content: ""; clear: both; display: block; } + .mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton { margin-bottom: 16px; padding: 11px; } + .mx_CreateSecretStorageDialog_optionTitle { color: #45474a; font-weight: 600; font-size: 1.8rem; padding-bottom: 10px; } + .mx_CreateSecretStorageDialog_optionIcon { display: inline-block; width: 24px; @@ -8966,14 +11980,17 @@ input.mx_StatusMessageContextMenu_message { top: 5px; background-color: #2e2f32; } + .mx_CreateSecretStorageDialog_optionIcon_securePhrase { -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); } + .mx_CreateSecretStorageDialog_optionIcon_secureBackup { -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); } + .mx_CreateSecretStorageDialog_passPhraseContainer { display: -webkit-box; display: -ms-flexbox; @@ -8982,18 +11999,22 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: start; align-items: flex-start; } + .mx_Field.mx_CreateSecretStorageDialog_passPhraseField { margin-top: 0; } + .mx_CreateSecretStorageDialog_passPhraseMatch { width: 200px; margin-left: 20px; } + .mx_CreateSecretStorageDialog_recoveryKeyContainer { width: 380px; margin-left: auto; margin-right: auto; } + .mx_CreateSecretStorageDialog_recoveryKey { font-weight: 700; text-align: center; @@ -9004,6 +12025,7 @@ input.mx_StatusMessageContextMenu_message { word-spacing: 1em; margin-bottom: 20px; } + .mx_CreateSecretStorageDialog_recoveryKeyButtons { display: -webkit-box; display: -ms-flexbox; @@ -9015,28 +12037,34 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton { width: 160px; padding-left: 0; padding-right: 0; white-space: nowrap; } + .mx_CreateSecretStorageDialog_continueSpinner { margin-top: 33px; text-align: right; } + .mx_CreateSecretStorageDialog_continueSpinner img { width: 20px; height: 20px; } + .mx_KeyBackupFailedDialog .mx_Dialog_title { margin-bottom: 32px; } + .mx_KeyBackupFailedDialog_title { position: relative; padding-left: 45px; padding-bottom: 10px; } + .mx_KeyBackupFailedDialog_title:before { -webkit-mask: url(../../img/e2e/lock-warning-filled.993fb6c.svg); mask: url(../../img/e2e/lock-warning-filled.993fb6c.svg); @@ -9050,15 +12078,19 @@ input.mx_StatusMessageContextMenu_message { bottom: 0; left: 0; } + .mx_KeyBackupFailedDialog .mx_Dialog_buttons { margin-top: 36px; } + .mx_RestoreKeyBackupDialog_keyStatus { height: 30px; } + .mx_RestoreKeyBackupDialog_primaryContainer { padding: 20px; } + .mx_RestoreKeyBackupDialog_passPhraseInput, .mx_RestoreKeyBackupDialog_recoveryKeyInput { width: 300px; @@ -9066,6 +12098,7 @@ input.mx_StatusMessageContextMenu_message { border-radius: 5px; padding: 10px; } + .mx_RestoreKeyBackupDialog_content > div { display: -webkit-box; display: -ms-flexbox; @@ -9079,6 +12112,7 @@ input.mx_StatusMessageContextMenu_message { justify-content: space-between; min-height: 110px; } + .mx_NetworkDropdown { height: 32px; position: relative; @@ -9087,12 +12121,14 @@ input.mx_StatusMessageContextMenu_message { margin-right: 9px; margin-top: 12px; } + .mx_NetworkDropdown, .mx_NetworkDropdown .mx_AccessibleButton { width: -webkit-max-content; width: -moz-max-content; width: max-content; } + .mx_NetworkDropdown_menu { min-width: 204px; margin: 0; @@ -9104,13 +12140,16 @@ input.mx_StatusMessageContextMenu_message { max-height: calc(100vh - 20px); overflow-y: auto; } + .mx_NetworkDropdown_menu_network { font-weight: 700; } + .mx_NetworkDropdown_server { padding: 12px 0; border-bottom: 1px solid #9fa9ba; } + .mx_NetworkDropdown_server .mx_NetworkDropdown_server_title { padding: 0 10px; font-size: 1.5rem; @@ -9119,6 +12158,7 @@ input.mx_StatusMessageContextMenu_message { margin-bottom: 4px; position: relative; } + .mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton { @@ -9129,6 +12169,7 @@ input.mx_StatusMessageContextMenu_message { width: 16px; margin-top: 2px; } + .mx_NetworkDropdown_server .mx_NetworkDropdown_server_title .mx_AccessibleButton:after { @@ -9146,6 +12187,7 @@ input.mx_StatusMessageContextMenu_message { mask-image: url(../../img/feather-customised/x.9662221.svg); background-color: #ff4b55; } + .mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle { padding: 0 10px; font-size: 1rem; @@ -9154,6 +12196,7 @@ input.mx_StatusMessageContextMenu_message { margin-bottom: 4px; color: #61708b; } + .mx_NetworkDropdown_server .mx_NetworkDropdown_server_network { font-size: 1.2rem; line-height: 1.6rem; @@ -9164,6 +12207,7 @@ input.mx_StatusMessageContextMenu_message { white-space: nowrap; text-overflow: ellipsis; } + .mx_NetworkDropdown_server .mx_NetworkDropdown_server_network[aria-checked="true"]:after { content: ""; @@ -9181,15 +12225,18 @@ input.mx_StatusMessageContextMenu_message { mask-image: url(../../img/feather-customised/check.5745b4e.svg); background-color: #0dbd8b; } + .mx_NetworkDropdown_server_add:hover, .mx_NetworkDropdown_server_network:hover { background-color: #f3f8fd; } + .mx_NetworkDropdown_server_add { padding: 16px 10px 16px 32px; position: relative; border-radius: 0 0 4px 4px; } + .mx_NetworkDropdown_server_add:before { content: ""; position: absolute; @@ -9206,9 +12253,11 @@ input.mx_StatusMessageContextMenu_message { mask-image: url(../../img/feather-customised/plus.38ae979.svg); background-color: #61708b; } + .mx_NetworkDropdown_handle { position: relative; } + .mx_NetworkDropdown_handle:after { content: ""; position: absolute; @@ -9226,19 +12275,24 @@ input.mx_StatusMessageContextMenu_message { mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); background-color: #2e2f32; } + .mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server { color: #61708b; font-size: 1.2rem; } + .mx_NetworkDropdown_dialog .mx_Dialog { width: 45vw; } + .mx_AccessibleButton { cursor: pointer; } + .mx_AccessibleButton_disabled { cursor: default; } + .mx_AccessibleButton_hasKind { padding: 7px 18px; text-align: center; @@ -9254,74 +12308,91 @@ input.mx_StatusMessageContextMenu_message { justify-content: center; font-size: 1.4rem; } + .mx_AccessibleButton_kind_primary { color: #fff; background-color: #0dbd8b; font-weight: 600; } + .mx_AccessibleButton_kind_primary_outline { color: #0dbd8b; background-color: #fff; border: 1px solid #0dbd8b; font-weight: 600; } + .mx_AccessibleButton_kind_secondary { color: #0dbd8b; font-weight: 600; } + .mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled, .mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled { opacity: 0.4; } + .mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm { padding: 5px 12px; color: #fff; background-color: #0dbd8b; } + .mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled { opacity: 0.4; } + .mx_AccessibleButton_kind_danger { color: #fff; background-color: #ff4b55; } + .mx_AccessibleButton_kind_danger_outline { color: #ff4b55; - background-color: #fff; + background-color: transparent; border: 1px solid #ff4b55; } + .mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled { color: #fff; background-color: #f5b6bb; } + .mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled { color: #f5b6bb; border-color: #f5b6bb; } + .mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm { padding: 5px 12px; color: #fff; background-color: #ff4b55; } + .mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled { color: #fff; background-color: #f5b6bb; } + .mx_AccessibleButton_kind_link { color: #0dbd8b; background-color: transparent; } + .mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled { opacity: 0.4; } + .mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm { padding: 5px 12px; color: #0dbd8b; background-color: transparent; } + .mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled { opacity: 0.4; } + .mx_AddressSelector { position: absolute; background-color: #fff; @@ -9333,21 +12404,26 @@ input.mx_StatusMessageContextMenu_message { cursor: pointer; z-index: 1; } + .mx_AddressSelector.mx_AddressSelector_empty { display: none; } + .mx_AddressSelector_addressListElement .mx_AddressTile { background-color: #fff; border: 1px solid #fff; } + .mx_AddressSelector_addressListElement.mx_AddressSelector_selected { background-color: #f2f5f8; } + .mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile { background-color: #f2f5f8; border: 1px solid #f2f5f8; } + .mx_AddressTile { display: inline-block; border-radius: 3px; @@ -9359,14 +12435,17 @@ input.mx_StatusMessageContextMenu_message { font-weight: 400; margin-right: 4px; } + .mx_AddressTile.mx_AddressTile_error { background-color: rgba(255, 0, 100, 0.1); color: #ff4b55; border-color: #ff4b55; } + .mx_AddressTile_network { padding-right: 4px; } + .mx_AddressTile_avatar, .mx_AddressTile_network { display: inline-block; @@ -9374,15 +12453,18 @@ input.mx_StatusMessageContextMenu_message { padding-left: 2px; vertical-align: middle; } + .mx_AddressTile_avatar { padding-right: 7px; } + .mx_AddressTile_mx { display: inline-block; margin: 0; border: 0; padding: 0; } + .mx_AddressTile_name { display: inline-block; padding-right: 4px; @@ -9391,6 +12473,7 @@ input.mx_StatusMessageContextMenu_message { height: 26px; vertical-align: middle; } + .mx_AddressTile_name.mx_AddressTile_justified { width: 180px; overflow: hidden; @@ -9398,10 +12481,12 @@ input.mx_StatusMessageContextMenu_message { text-overflow: ellipsis; vertical-align: middle; } + .mx_AddressTile_id { display: inline-block; padding-right: 11px; } + .mx_AddressTile_id.mx_AddressTile_justified { width: 200px; overflow: hidden; @@ -9409,11 +12494,13 @@ input.mx_StatusMessageContextMenu_message { text-overflow: ellipsis; vertical-align: middle; } + .mx_AddressTile_unknownMx { display: inline-block; font-weight: 600; padding-right: 11px; } + .mx_AddressTile_unknownMxl.mx_AddressTile_justified { width: 380px; overflow: hidden; @@ -9421,11 +12508,13 @@ input.mx_StatusMessageContextMenu_message { text-overflow: ellipsis; vertical-align: middle; } + .mx_AddressTile_email { display: inline-block; font-weight: 600; padding-right: 11px; } + .mx_AddressTile_email.mx_AddressTile_justified { width: 200px; overflow: hidden; @@ -9433,10 +12522,12 @@ input.mx_StatusMessageContextMenu_message { text-overflow: ellipsis; vertical-align: middle; } + .mx_AddressTile_unknown { display: inline-block; padding-right: 11px; } + .mx_AddressTile_unknown.mx_AddressTile_justified { width: 380px; overflow: hidden; @@ -9444,34 +12535,42 @@ input.mx_StatusMessageContextMenu_message { text-overflow: ellipsis; vertical-align: middle; } + .mx_AddressTile_dismiss { display: inline-block; padding-right: 11px; padding-left: 1px; cursor: pointer; } + .mx_AddressTile_dismiss object { pointer-events: none; } + .mx_DesktopBuildsNotice { text-align: center; padding: 0 16px; } + .mx_DesktopBuildsNotice > * { vertical-align: middle; } + .mx_DesktopBuildsNotice > img { margin-right: 8px; } + .mx_desktopCapturerSourcePicker { overflow: hidden; } + .mx_desktopCapturerSourcePicker_tabLabels { display: -webkit-box; display: -ms-flexbox; display: flex; padding: 0 0 8px; } + .mx_desktopCapturerSourcePicker_tabLabel, .mx_desktopCapturerSourcePicker_tabLabel_selected { width: 100%; @@ -9480,10 +12579,12 @@ input.mx_StatusMessageContextMenu_message { padding: 8px 0; font-size: 1.3rem; } + .mx_desktopCapturerSourcePicker_tabLabel_selected { background-color: #0dbd8b; color: #fff; } + .mx_desktopCapturerSourcePicker_panel { display: -webkit-box; display: -ms-flexbox; @@ -9499,6 +12600,7 @@ input.mx_StatusMessageContextMenu_message { height: 500px; overflow: overlay; } + .mx_desktopCapturerSourcePicker_stream_button { display: -webkit-box; display: -ms-flexbox; @@ -9510,14 +12612,17 @@ input.mx_StatusMessageContextMenu_message { margin: 8px; border-radius: 4px; } + .mx_desktopCapturerSourcePicker_stream_button:focus, .mx_desktopCapturerSourcePicker_stream_button:hover { background: #fff; } + .mx_desktopCapturerSourcePicker_stream_thumbnail { margin: 4px; width: 312px; } + .mx_desktopCapturerSourcePicker_stream_name { margin: 0 4px; white-space: nowrap; @@ -9525,6 +12630,33 @@ input.mx_StatusMessageContextMenu_message { overflow: hidden; width: 312px; } + +.mx_DialPadBackspaceButton { + position: relative; + height: 28px; + width: 28px; +} + +.mx_DialPadBackspaceButton:before { + content: ""; + background-color: #8d97a5; + width: inherit; + height: inherit; + top: 0; + left: 0; + position: absolute; + display: inline-block; + vertical-align: middle; + -webkit-mask-image: url(../../img/element-icons/call/delete.833d785.svg); + mask-image: url(../../img/element-icons/call/delete.833d785.svg); + -webkit-mask-position: 8px; + mask-position: 8px; + -webkit-mask-size: 20px; + mask-size: 20px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; +} + .mx_DirectorySearchBox { display: -webkit-box; display: -ms-flexbox; @@ -9532,6 +12664,7 @@ input.mx_StatusMessageContextMenu_message { padding-left: 9px; padding-right: 9px; } + .mx_DirectorySearchBox_joinButton { display: table-cell; padding: 3px 10px; @@ -9549,6 +12682,7 @@ input.mx_StatusMessageContextMenu_message { user-select: none; cursor: pointer; } + .mx_DirectorySearchBox_clear { background-color: #ff4b55; -webkit-mask: url(../../img/cancel.4b9715b.svg); @@ -9563,13 +12697,16 @@ input.mx_StatusMessageContextMenu_message { height: 15px; cursor: pointer; } + .mx_Dropdown { position: relative; color: #2e2f32; } + .mx_Dropdown_disabled { opacity: 0.3; } + .mx_Dropdown_input { display: -webkit-box; display: -ms-flexbox; @@ -9578,7 +12715,7 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; position: relative; - border-radius: 3px; + border-radius: 4px; border: 1px solid #c7c7c7; font-size: 1.2rem; -webkit-user-select: none; @@ -9586,16 +12723,20 @@ input.mx_StatusMessageContextMenu_message { -ms-user-select: none; user-select: none; } + .mx_Dropdown_input.mx_AccessibleButton_disabled { cursor: not-allowed; } + .mx_Dropdown_input:focus { border-color: #238cf5; } + .mx_Dropdown_input.mx_AccessibleButton:focus { -webkit-filter: none; filter: none; } + .mx_Dropdown_arrow { width: 10px; height: 6px; @@ -9606,12 +12747,14 @@ input.mx_StatusMessageContextMenu_message { mask-repeat: no-repeat; background: #2e2f32; } + .mx_Dropdown_option { height: 35px; line-height: 3.5rem; padding-left: 8px; padding-right: 8px; } + .mx_Dropdown_input > .mx_Dropdown_option { -webkit-box-flex: 1; -ms-flex: 1; @@ -9623,22 +12766,26 @@ input.mx_StatusMessageContextMenu_message { -ms-flex-align: center; align-items: center; } + .mx_Dropdown_input > .mx_Dropdown_option, .mx_Dropdown_option div { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .mx_Dropdown_option .mx_Dropdown_option_emoji, .mx_Dropdown_option img { margin: 5px; width: 16px; vertical-align: middle; } + .mx_Dropdown_option_emoji { font-size: 1.6rem; line-height: 1.6rem; } + input.mx_Dropdown_option, input.mx_Dropdown_option:focus { font-weight: 400; @@ -9647,6 +12794,7 @@ input.mx_Dropdown_option:focus { padding-bottom: 0; width: 60%; } + .mx_Dropdown_menu { position: absolute; left: -1px; @@ -9655,34 +12803,40 @@ input.mx_Dropdown_option:focus { z-index: 2; margin: 0; padding: 0; - border-radius: 3px; + border-radius: 4px; border: 1px solid #238cf5; background-color: #fff; max-height: 200px; overflow-y: auto; } + .mx_Dropdown_menu .mx_Dropdown_option { height: auto; min-height: 35px; } + .mx_Dropdown_menu .mx_Dropdown_option_highlight { background-color: #ddd; } + .mx_Dropdown_searchPrompt { font-weight: 400; margin-left: 5px; margin-bottom: 5px; } + .mx_EditableItemList { margin-top: 12px; margin-bottom: 10px; } + .mx_EditableItem { display: -webkit-box; display: -ms-flexbox; display: flex; margin-bottom: 5px; } + .mx_EditableItem_delete { -webkit-box-ordinal-group: 4; -ms-flex-order: 3; @@ -9700,18 +12854,22 @@ input.mx_Dropdown_option:focus { -webkit-mask-size: 100%; mask-size: 100%; } + .mx_EditableItem_email { vertical-align: middle; } + .mx_EditableItem_promptText { margin-right: 10px; -webkit-box-ordinal-group: 3; -ms-flex-order: 2; order: 2; } + .mx_EditableItem_confirmBtn { margin-right: 5px; } + .mx_EditableItem_item { -webkit-box-flex: 1; -ms-flex: auto 1 0px; @@ -9723,9 +12881,11 @@ input.mx_Dropdown_option:focus { overflow-x: hidden; text-overflow: ellipsis; } + .mx_EditableItemList_label { margin-bottom: 5px; } + .mx_ErrorBoundary { width: 100%; height: 100%; @@ -9733,6 +12893,7 @@ input.mx_Dropdown_option:focus { -ms-flex-pack: center; justify-content: center; } + .mx_ErrorBoundary, .mx_ErrorBoundary_body { display: -webkit-box; @@ -9742,6 +12903,7 @@ input.mx_Dropdown_option:focus { -ms-flex-align: center; align-items: center; } + .mx_ErrorBoundary_body { -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -9749,28 +12911,34 @@ input.mx_Dropdown_option:focus { flex-direction: column; max-width: 400px; } + .mx_ErrorBoundary_body .mx_AccessibleButton { margin-top: 5px; } + .mx_EventListSummary { position: relative; } + .mx_TextualEvent.mx_EventListSummary_summary { font-size: 1.4rem; display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } + .mx_EventListSummary_avatars { display: inline-block; margin-right: 8px; padding-top: 8px; line-height: 1.2rem; } + .mx_EventListSummary_avatars .mx_BaseAvatar { margin-right: -4px; cursor: pointer; } + .mx_EventListSummary_toggle { color: #0dbd8b; cursor: pointer; @@ -9778,26 +12946,33 @@ input.mx_Dropdown_option:focus { margin-right: 10px; margin-top: 8px; } + .mx_EventListSummary_line { border-bottom: 1px solid transparent; margin-left: 63px; line-height: 3rem; } + .mx_MatrixChat_useCompactLayout .mx_EventListSummary { font-size: 1.3rem; } + .mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line { line-height: 2rem; } + .mx_MatrixChat_useCompactLayout .mx_EventListSummary_line { line-height: 2.2rem; } + .mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle { margin-top: 3px; } + .mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary { font-size: 1.3rem; } + .mx_FacePile .mx_FacePile_faces { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -9808,15 +12983,19 @@ input.mx_Dropdown_option:focus { flex-direction: row-reverse; vertical-align: middle; } + .mx_FacePile .mx_FacePile_faces > .mx_FacePile_face + .mx_FacePile_face { margin-right: -8px; } + .mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image { border: 1px solid #fff; } + .mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial { margin: 1px; } + .mx_FacePile .mx_FacePile_faces .mx_FacePile_more { position: relative; border-radius: 100%; @@ -9824,6 +13003,7 @@ input.mx_Dropdown_option:focus { height: 30px; background-color: hsla(0, 0%, 91%, 0.77); } + .mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before { content: ""; z-index: 1; @@ -9842,12 +13022,14 @@ input.mx_Dropdown_option:focus { -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); } + .mx_FacePile .mx_FacePile_summary { margin-left: 12px; font-size: 1.4rem; line-height: 2.4rem; color: #8d99a5; } + .mx_Field { display: -webkit-box; display: -ms-flexbox; @@ -9863,12 +13045,15 @@ input.mx_Dropdown_option:focus { transition: border-color 0.25s; border: 1px solid #e7e7e7; } + .mx_Field_prefix { border-right: 1px solid #e7e7e7; } + .mx_Field_postfix { border-left: 1px solid #e7e7e7; } + .mx_Field input, .mx_Field select, .mx_Field textarea { @@ -9886,10 +13071,12 @@ input.mx_Dropdown_option:focus { flex: 1; min-width: 0; } + .mx_Field select { -moz-appearance: none; -webkit-appearance: none; } + .mx_Field_select:before { content: ""; position: absolute; @@ -9905,86 +13092,101 @@ input.mx_Dropdown_option:focus { z-index: 1; pointer-events: none; } + .mx_Field:focus-within { border-color: #238cf5; } + .mx_Field input:focus, .mx_Field select:focus, .mx_Field textarea:focus { outline: 0; } + .mx_Field input::-webkit-input-placeholder, .mx_Field textarea::-webkit-input-placeholder { -webkit-transition: color 0.25s ease-in 0s; transition: color 0.25s ease-in 0s; color: transparent; } + .mx_Field input::-moz-placeholder, .mx_Field textarea::-moz-placeholder { -moz-transition: color 0.25s ease-in 0s; transition: color 0.25s ease-in 0s; color: transparent; } + .mx_Field input:-ms-input-placeholder, .mx_Field textarea:-ms-input-placeholder { -ms-transition: color 0.25s ease-in 0s; transition: color 0.25s ease-in 0s; color: transparent; } + .mx_Field input::-ms-input-placeholder, .mx_Field textarea::-ms-input-placeholder { -ms-transition: color 0.25s ease-in 0s; transition: color 0.25s ease-in 0s; color: transparent; } + .mx_Field input::placeholder, .mx_Field textarea::placeholder { -webkit-transition: color 0.25s ease-in 0s; transition: color 0.25s ease-in 0s; color: transparent; } + .mx_Field input:placeholder-shown:focus::-webkit-input-placeholder, .mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder { -webkit-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field input:placeholder-shown:focus::-moz-placeholder, .mx_Field textarea:placeholder-shown:focus::-moz-placeholder { -moz-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field input:placeholder-shown:focus:-ms-input-placeholder, .mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder { -ms-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field input:placeholder-shown:focus::-ms-input-placeholder, .mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder { -ms-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field input:-moz-placeholder-shown:focus::placeholder, .mx_Field textarea:-moz-placeholder-shown:focus::placeholder { -moz-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field input:-ms-input-placeholder:focus::placeholder, .mx_Field textarea:-ms-input-placeholder:focus::placeholder { -ms-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field input:placeholder-shown:focus::placeholder, .mx_Field textarea:placeholder-shown:focus::placeholder { -webkit-transition: color 0.25s ease-in 0.1s; transition: color 0.25s ease-in 0.1s; color: #888; } + .mx_Field label { -webkit-transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, top 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s; @@ -10004,6 +13206,7 @@ input.mx_Dropdown_option:focus { text-overflow: ellipsis; max-width: calc(100% - 20px); } + .mx_Field input:not(:-moz-placeholder-shown) + label, .mx_Field textarea:not(:-moz-placeholder-shown) + label { -moz-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, @@ -10016,6 +13219,7 @@ input.mx_Dropdown_option:focus { background-color: #fff; pointer-events: auto; } + .mx_Field input:not(:-ms-input-placeholder) + label, .mx_Field textarea:not(:-ms-input-placeholder) + label { -ms-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, @@ -10028,6 +13232,7 @@ input.mx_Dropdown_option:focus { background-color: #fff; pointer-events: auto; } + .mx_Field_labelAlwaysTopLeft label, .mx_Field input:focus + label, .mx_Field input:not(:placeholder-shown) + label, @@ -10044,11 +13249,13 @@ input.mx_Dropdown_option:focus { background-color: #fff; pointer-events: auto; } + .mx_Field input:focus + label, .mx_Field select:focus + label, .mx_Field textarea:focus + label { color: #238cf5; } + .mx_Field input:disabled, .mx_Field input:disabled + label, .mx_Field select:disabled, @@ -10058,63 +13265,48 @@ input.mx_Dropdown_option:focus { background-color: #fff; color: #888; } + .mx_Field_valid.mx_Field, .mx_Field_valid.mx_Field:focus-within { border-color: #0dbd8b; } + .mx_Field_valid.mx_Field:focus-within label, .mx_Field_valid.mx_Field label { color: #0dbd8b; } + .mx_Field_invalid.mx_Field, .mx_Field_invalid.mx_Field:focus-within { border-color: #ff4b55; } + .mx_Field_invalid.mx_Field:focus-within label, .mx_Field_invalid.mx_Field label { color: #ff4b55; } + .mx_Field_tooltip { margin-top: -12px; margin-left: 4px; width: 200px; } + .mx_Field_tooltip.mx_Field_valid { -webkit-animation: mx_fadeout 1s 2s forwards; animation: mx_fadeout 1s 2s forwards; } + .mx_Field .mx_Dropdown_input { border: initial; border-radius: 0; border-radius: initial; } + .mx_Field .mx_CountryDropdown { width: 7.8rem; } -.mx_FormButton { - line-height: 1.6rem; - padding: 5px 15px; - font-size: 1.2rem; - height: -webkit-min-content; - height: -moz-min-content; - height: min-content; -} -.mx_FormButton:not(:last-child) { - margin-right: 8px; -} -.mx_FormButton.mx_AccessibleButton_kind_primary { - color: #0dbd8b; - background-color: rgba(3, 179, 129, 0.16); -} -.mx_FormButton.mx_AccessibleButton_kind_danger { - color: #ff4b55; - background-color: rgba(255, 75, 85, 0.16); -} -.mx_FormButton.mx_AccessibleButton_kind_secondary { - color: #737d8c; - border: 1px solid #737d8c; - background-color: unset; -} + .mx_ImageView { width: 100%; -webkit-box-orient: vertical; @@ -10122,6 +13314,7 @@ input.mx_Dropdown_option:focus { -ms-flex-direction: column; flex-direction: column; } + .mx_ImageView, .mx_ImageView_image_wrapper { display: -webkit-box; @@ -10129,7 +13322,9 @@ input.mx_Dropdown_option:focus { display: flex; height: 100%; } + .mx_ImageView_image_wrapper { + pointer-events: auto; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; @@ -10138,11 +13333,12 @@ input.mx_Dropdown_option:focus { align-items: center; overflow: hidden; } + .mx_ImageView_image { - pointer-events: all; -ms-flex-negative: 0; flex-shrink: 0; } + .mx_ImageView_panel { width: 100%; height: 68px; @@ -10150,6 +13346,7 @@ input.mx_Dropdown_option:focus { -ms-flex-pack: justify; justify-content: space-between; } + .mx_ImageView_info_wrapper, .mx_ImageView_panel { display: -webkit-box; @@ -10159,8 +13356,9 @@ input.mx_Dropdown_option:focus { -ms-flex-align: center; align-items: center; } + .mx_ImageView_info_wrapper { - pointer-events: all; + pointer-events: auto; padding-left: 32px; -webkit-box-orient: horizontal; -webkit-box-direction: normal; @@ -10168,6 +13366,7 @@ input.mx_Dropdown_option:focus { flex-direction: row; color: #fff; } + .mx_ImageView_info { padding-left: 12px; display: -webkit-box; @@ -10178,23 +13377,29 @@ input.mx_Dropdown_option:focus { -ms-flex-direction: column; flex-direction: column; } + .mx_ImageView_info_sender { font-weight: 700; } + .mx_ImageView_toolbar { padding-right: 16px; - pointer-events: all; + pointer-events: auto; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; + grid-gap: 14px; + gap: 14px; } + .mx_ImageView_button { - margin-left: 24px; + padding: 5px; display: block; } + .mx_ImageView_button:before { content: ""; height: 22px; @@ -10208,34 +13413,43 @@ input.mx_Dropdown_option:focus { display: block; background-color: #c1c6cd; } + .mx_ImageView_button_rotateCW:before { -webkit-mask-image: url(../../img/image-view/rotate-cw.60d903e.svg); mask-image: url(../../img/image-view/rotate-cw.60d903e.svg); } + .mx_ImageView_button_rotateCCW:before { -webkit-mask-image: url(../../img/image-view/rotate-ccw.b28ae4a.svg); mask-image: url(../../img/image-view/rotate-ccw.b28ae4a.svg); } + .mx_ImageView_button_zoomOut:before { -webkit-mask-image: url(../../img/image-view/zoom-out.8506f80.svg); mask-image: url(../../img/image-view/zoom-out.8506f80.svg); } + .mx_ImageView_button_zoomIn:before { -webkit-mask-image: url(../../img/image-view/zoom-in.3b3f32e.svg); mask-image: url(../../img/image-view/zoom-in.3b3f32e.svg); } + .mx_ImageView_button_download:before { -webkit-mask-image: url(../../img/image-view/download.2eac468.svg); mask-image: url(../../img/image-view/download.2eac468.svg); } + .mx_ImageView_button_more:before { -webkit-mask-image: url(../../img/image-view/more.0427c6c.svg); mask-image: url(../../img/image-view/more.0427c6c.svg); } + .mx_ImageView_button_close { + padding: 0; border-radius: 100%; background: #21262c; } + .mx_ImageView_button_close:before { width: 32px; height: 32px; @@ -10244,12 +13458,14 @@ input.mx_Dropdown_option:focus { -webkit-mask-size: 40%; mask-size: 40%; } + .mx_InfoTooltip_icon, .mx_InfoTooltip_icon:before { width: 16px; height: 16px; display: inline-block; } + .mx_InfoTooltip_icon:before { background-color: #61708b; -webkit-mask-repeat: no-repeat; @@ -10260,23 +13476,41 @@ input.mx_Dropdown_option:focus { mask-position: center; content: ""; vertical-align: middle; +} + +.mx_InfoTooltip_icon_info:before { -webkit-mask-image: url(../../img/element-icons/info.dc07e19.svg); mask-image: url(../../img/element-icons/info.dc07e19.svg); } + +.mx_InfoTooltip_icon_warning:before { + -webkit-mask-image: url(../../img/element-icons/warning.d65f5be.svg); + mask-image: url(../../img/element-icons/warning.d65f5be.svg); +} + .mx_InlineSpinner { display: inline; } -.mx_InlineSpinner_spin img { + +.mx_InlineSpinner_icon, +.mx_InlineSpinner img { margin: 0 6px; vertical-align: -3px; } + +.mx_InlineSpinner_icon { + display: inline-block; +} + .mx_InviteReason { position: relative; margin-bottom: 1em; } + .mx_InviteReason .mx_InviteReason_reason { visibility: visible; } + .mx_InviteReason .mx_InviteReason_view { display: none; position: absolute; @@ -10293,6 +13527,7 @@ input.mx_Dropdown_option:focus { cursor: pointer; color: #737d8c; } + .mx_InviteReason .mx_InviteReason_view:before { content: ""; margin-right: 8px; @@ -10303,24 +13538,29 @@ input.mx_Dropdown_option:focus { width: 18px; height: 14px; } + .mx_InviteReason_hidden .mx_InviteReason_reason { visibility: hidden; } + .mx_InviteReason_hidden .mx_InviteReason_view { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_ManageIntegsButton_error { position: relative; float: right; cursor: not-allowed; } + .mx_ManageIntegsButton_error img { position: absolute; right: -5px; top: -5px; } + .mx_ManageIntegsButton_errorPopup { position: absolute; top: 110%; @@ -10335,18 +13575,22 @@ input.mx_Dropdown_option:focus { text-align: center; z-index: 1000; } + .mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup { display: none; } + .mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup { display: inline; } + .mx_MiniAvatarUploader { position: relative; width: -webkit-min-content; width: -moz-min-content; width: min-content; } + .mx_MiniAvatarUploader .mx_Tooltip { display: inline-block; position: absolute; @@ -10357,21 +13601,23 @@ input.mx_Dropdown_option:focus { left: 72px; top: 0; } -.mx_MiniAvatarUploader:after, -.mx_MiniAvatarUploader:before { - content: ""; + +.mx_MiniAvatarUploader .mx_MiniAvatarUploader_indicator { position: absolute; height: 26px; width: 26px; right: -6px; bottom: -6px; -} -.mx_MiniAvatarUploader:before { background-color: #fff; border-radius: 50%; z-index: 1; } -.mx_MiniAvatarUploader:after { + +.mx_MiniAvatarUploader + .mx_MiniAvatarUploader_indicator + .mx_MiniAvatarUploader_cameraIcon { + height: 100%; + width: 100%; background-color: #737d8c; -webkit-mask-position: center; mask-position: center; @@ -10383,23 +13629,21 @@ input.mx_Dropdown_option:focus { mask-size: 16px; z-index: 2; } -.mx_MiniAvatarUploader.mx_MiniAvatarUploader_busy:after { - background: url(../../img/spinner.0b29ec9.gif) no-repeat 50%; - background-size: 80%; - -webkit-mask: unset; - mask: unset; -} + .mx_MiniAvatarUploader_input { display: none; } + .mx_PowerSelector { width: 100%; } + .mx_PowerSelector .mx_Field input, .mx_PowerSelector .mx_Field select { -webkit-box-sizing: border-box; box-sizing: border-box; } + progress.mx_ProgressBar { height: 6px; width: 60px; @@ -10410,32 +13654,41 @@ progress.mx_ProgressBar { border: none; border-radius: 6px; } + progress.mx_ProgressBar::-moz-progress-bar { border-radius: 6px; } + progress.mx_ProgressBar::-webkit-progress-bar, progress.mx_ProgressBar::-webkit-progress-value { border-radius: 6px; } + progress.mx_ProgressBar { color: #0dbd8b; } + progress.mx_ProgressBar::-moz-progress-bar { background-color: #0dbd8b; } + progress.mx_ProgressBar::-webkit-progress-value { background-color: #0dbd8b; } + progress.mx_ProgressBar { background-color: rgba(141, 151, 165, 0.2); } + progress.mx_ProgressBar::-webkit-progress-bar { background-color: rgba(141, 151, 165, 0.2); } + progress.mx_ProgressBar ::-webkit-progress-value { -webkit-transition: width 1s; transition: width 1s; } + progress.mx_ProgressBar ::-moz-progress-bar { -moz-transition: padding-bottom 1s; transition: padding-bottom 1s; @@ -10445,27 +13698,54 @@ progress.mx_ProgressBar ::-moz-progress-bar { padding-left: 15px; height: 0; } + .mx_QRCode img { border-radius: 8px; } + .mx_ReplyThread { - margin-top: 0; + margin: 0 0 8px; + padding: 0 10px; + border-left: 2px solid #0dbd8b; + border-radius: 2px; } -.mx_ReplyThread .mx_DateSeparator { - font-size: 1em !important; - margin-top: 0; - margin-bottom: 0; - padding-bottom: 1px; - bottom: -5px; -} -.mx_ReplyThread_show { + +.mx_ReplyThread .mx_ReplyThread_show { cursor: pointer; } -blockquote.mx_ReplyThread { - margin-left: 0; - padding-left: 10px; - border-left: 4px solid #ddd; + +.mx_ReplyThread.mx_ReplyThread_color1 { + border-left-color: #368bd6; } + +.mx_ReplyThread.mx_ReplyThread_color2 { + border-left-color: #ac3ba8; +} + +.mx_ReplyThread.mx_ReplyThread_color3 { + border-left-color: #0dbd8b; +} + +.mx_ReplyThread.mx_ReplyThread_color4 { + border-left-color: #e64f7a; +} + +.mx_ReplyThread.mx_ReplyThread_color5 { + border-left-color: #ff812d; +} + +.mx_ReplyThread.mx_ReplyThread_color6 { + border-left-color: #2dc2c5; +} + +.mx_ReplyThread.mx_ReplyThread_color7 { + border-left-color: #5c56f5; +} + +.mx_ReplyThread.mx_ReplyThread_color8 { + border-left-color: #74d12c; +} + .mx_ResizeHandle { cursor: row-resize; -webkit-box-flex: 0; @@ -10473,30 +13753,37 @@ blockquote.mx_ReplyThread { flex: 0 0 auto; z-index: 100; } + .mx_ResizeHandle.mx_ResizeHandle_horizontal { margin: 0 -5px; padding: 0 5px; cursor: col-resize; } + .mx_ResizeHandle.mx_ResizeHandle_vertical { margin: -5px 0; padding: 5px 0; cursor: row-resize; } + .mx_MatrixChat > .mx_ResizeHandle.mx_ResizeHandle_horizontal { margin: 0 -10px 0 0; padding: 0 8px 0 0; } + .mx_ResizeHandle > div { background: transparent; } + .mx_ResizeHandle.mx_ResizeHandle_horizontal > div { width: 1px; height: 100%; } + .mx_ResizeHandle.mx_ResizeHandle_vertical > div { height: 1px; } + .mx_AtRoomPill, .mx_GroupPill, .mx_RoomPill, @@ -10512,33 +13799,40 @@ blockquote.mx_ReplyThread { line-height: 1.5rem; padding-left: 0; } + a.mx_Pill { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; max-width: calc(100% - 1ch); } + .mx_Pill { padding: 0.1rem 0.4em 0.1rem 0.1rem; vertical-align: text-top; line-height: 1.7rem; } + .mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_GroupPill { color: #fff; background-color: #aaa; } + .mx_EventTile_content .markdown-body a.mx_Pill { text-decoration: none; } + .mx_EventTile_content .markdown-body a.mx_UserPill, .mx_UserPill { color: #2e2f32; background-color: rgba(0, 0, 0, 0.1); } + .mx_UserPill_selected { background-color: #0dbd8b !important; } + .mx_EventTile_content .markdown-body a.mx_AtRoomPill, .mx_EventTile_content .mx_AtRoomPill, .mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, @@ -10546,6 +13840,7 @@ a.mx_Pill { color: #fff; background-color: #ff4b55; } + .mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_EventTile_content .markdown-body a.mx_RoomPill, .mx_GroupPill, @@ -10553,11 +13848,13 @@ a.mx_Pill { color: #fff; background-color: #aaa; } + .mx_EventTile_body .mx_GroupPill, .mx_EventTile_body .mx_RoomPill, .mx_EventTile_body .mx_UserPill { cursor: pointer; } + .mx_AtRoomPill .mx_BaseAvatar, .mx_GroupPill .mx_BaseAvatar, .mx_RoomPill .mx_BaseAvatar, @@ -10572,12 +13869,15 @@ a.mx_Pill { border-radius: 10rem; margin-right: 0.24rem; } + .mx_Markdown_BOLD { font-weight: 700; } + .mx_Markdown_ITALIC { font-style: italic; } + .mx_Markdown_CODE { padding: 0.2em 0; margin: 0; @@ -10585,28 +13885,34 @@ a.mx_Pill { background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; } + .mx_Markdown_HR { display: block; background: #e9e9e9; } + .mx_Markdown_STRIKETHROUGH { text-decoration: line-through; } + .mx_RoleButton { margin-left: 4px; margin-right: 4px; cursor: pointer; display: inline-block; } + .mx_RoleButton object { pointer-events: none; } + .mx_RoleButton_tooltip { display: inline-block; position: relative; top: -25px; left: 6px; } + .mx_RoomAliasField { -webkit-box-flex: 0; -ms-flex: 0 1 auto; @@ -10620,31 +13926,38 @@ a.mx_Pill { min-width: 0; max-width: 100%; } + .mx_RoomAliasField input { width: 150px; padding-left: 0; padding-right: 0; } + .mx_RoomAliasField input::-webkit-input-placeholder { color: #888; font-weight: 400; } + .mx_RoomAliasField input::-moz-placeholder { color: #888; font-weight: 400; } + .mx_RoomAliasField input:-ms-input-placeholder { color: #888; font-weight: 400; } + .mx_RoomAliasField input::-ms-input-placeholder { color: #888; font-weight: 400; } + .mx_RoomAliasField input::placeholder { color: #888; font-weight: 400; } + .mx_RoomAliasField .mx_Field_postfix, .mx_RoomAliasField .mx_Field_prefix { color: #888; @@ -10656,12 +13969,14 @@ a.mx_Pill { -ms-flex: 0 0 auto; flex: 0 0 auto; } + .mx_RoomAliasField .mx_Field_postfix { text-overflow: ellipsis; white-space: nowrap; overflow: hidden; max-width: calc(100% - 180px); } + .mx_SSOButtons { display: -webkit-box; display: -ms-flexbox; @@ -10672,9 +13987,11 @@ a.mx_Pill { -ms-flex-pack: center; justify-content: center; } + .mx_SSOButtons .mx_SSOButtons_row + .mx_SSOButtons_row { margin-top: 16px; } + .mx_SSOButtons .mx_SSOButton { position: relative; width: 100%; @@ -10687,6 +14004,7 @@ a.mx_Pill { border: 1px solid #e7e7e7; color: #2e2f32; } + .mx_SSOButtons .mx_SSOButton > img { -o-object-fit: contain; object-fit: contain; @@ -10694,15 +14012,18 @@ a.mx_Pill { left: 8px; top: 4px; } + .mx_SSOButtons .mx_SSOButton_default { color: #0dbd8b; background-color: #fff; border-color: #0dbd8b; } + .mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary { color: #fff; background-color: #0dbd8b; } + .mx_SSOButtons .mx_SSOButton_mini { -webkit-box-sizing: border-box; box-sizing: border-box; @@ -10711,13 +14032,16 @@ a.mx_Pill { min-width: 50px; padding: 12px; } + .mx_SSOButtons .mx_SSOButton_mini > img { left: 12px; top: 12px; } + .mx_SSOButtons .mx_SSOButton_mini + .mx_SSOButton_mini { margin-left: 16px; } + .mx_ServerPicker { margin-bottom: 14px; border-bottom: 1px solid rgba(141, 151, 165, 0.2); @@ -10728,12 +14052,14 @@ a.mx_Pill { font-size: 1.4rem; line-height: 2rem; } + .mx_ServerPicker > h3 { font-weight: 600; margin: 0 0 20px; grid-column: 1; grid-row: 1; } + .mx_ServerPicker .mx_ServerPicker_help { width: 20px; height: 20px; @@ -10747,6 +14073,7 @@ a.mx_Pill { font-size: 16px; position: relative; } + .mx_ServerPicker .mx_ServerPicker_help:before { content: ""; width: 24px; @@ -10764,18 +14091,21 @@ a.mx_Pill { mask-image: url(../../img/element-icons/i.80d84f3.svg); background: #fff; } + .mx_ServerPicker .mx_ServerPicker_server { color: #232f32; grid-column: 1; grid-row: 2; margin-bottom: 16px; } + .mx_ServerPicker .mx_ServerPicker_change { padding: 0; font-size: inherit; grid-column: 2; grid-row: 2; } + .mx_ServerPicker .mx_ServerPicker_desc { margin-top: -12px; color: #8d99a5; @@ -10783,9 +14113,11 @@ a.mx_Pill { grid-row: 3; margin-bottom: 16px; } + .mx_ServerPicker_helpDialog .mx_Dialog_content { width: 456px; } + .mx_Slider { position: relative; margin: 0; @@ -10793,6 +14125,7 @@ a.mx_Pill { -ms-flex-positive: 1; flex-grow: 1; } + .mx_Slider_dotContainer { -webkit-box-orient: horizontal; -webkit-box-direction: normal; @@ -10802,12 +14135,14 @@ a.mx_Pill { -ms-flex-pack: justify; justify-content: space-between; } + .mx_Slider_bar, .mx_Slider_dotContainer { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_Slider_bar { -webkit-box-sizing: border-box; box-sizing: border-box; @@ -10819,12 +14154,14 @@ a.mx_Pill { -ms-flex-align: center; align-items: center; } + .mx_Slider_bar > hr { width: 100%; height: 0.4em; background-color: #c1c9d6; border: 0; } + .mx_Slider_selection { display: -webkit-box; display: -ms-flexbox; @@ -10837,6 +14174,7 @@ a.mx_Pill { position: absolute; pointer-events: none; } + .mx_Slider_selectionDot { position: absolute; width: 1.1em; @@ -10847,10 +14185,12 @@ a.mx_Pill { box-shadow: 0 0 6px #d3d3d3; z-index: 10; } + .mx_Slider_selection > hr { margin: 0; border: 0.2em solid #0dbd8b; } + .mx_Slider_dot { height: 1em; width: 1em; @@ -10858,9 +14198,11 @@ a.mx_Pill { background-color: #c1c9d6; z-index: 0; } + .mx_Slider_dotActive { background-color: #0dbd8b; } + .mx_Slider_dotValue { display: -webkit-box; display: -ms-flexbox; @@ -10874,9 +14216,11 @@ a.mx_Pill { align-items: center; color: #c1c9d6; } + .mx_Slider_labelContainer { width: 1em; } + .mx_Slider_label { position: relative; width: -webkit-fit-content; @@ -10884,6 +14228,7 @@ a.mx_Pill { width: fit-content; left: -50%; } + .mx_Spinner { display: -webkit-box; display: -ms-flexbox; @@ -10900,9 +14245,43 @@ a.mx_Pill { -ms-flex: 1; flex: 1; } + .mx_MatrixChat_middlePanel .mx_Spinner { height: auto; } + +@-webkit-keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} + +@keyframes spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + to { + -webkit-transform: rotate(1turn); + transform: rotate(1turn); + } +} + +.mx_Spinner_icon { + background-color: #2e2f32; + -webkit-mask: url(../../img/spinner.5a0438d.svg); + mask: url(../../img/spinner.5a0438d.svg); + -webkit-mask-size: contain; + mask-size: contain; + -webkit-animation: spin 1.1s steps(12) infinite; + animation: spin 1.1s steps(12) infinite; +} + .mx_Checkbox { display: -webkit-box; display: -ms-flexbox; @@ -10911,6 +14290,7 @@ a.mx_Pill { -ms-flex-align: start; align-items: flex-start; } + .mx_Checkbox input[type="checkbox"] { -webkit-appearance: none; -moz-appearance: none; @@ -10918,6 +14298,7 @@ a.mx_Pill { margin: 0; padding: 0; } + .mx_Checkbox input[type="checkbox"] + label { display: -webkit-box; display: -ms-flexbox; @@ -10929,6 +14310,7 @@ a.mx_Pill { -ms-flex-positive: 1; flex-grow: 1; } + .mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -10944,6 +14326,7 @@ a.mx_Pill { box-sizing: border-box; border-radius: 0.4rem; } + .mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background img { display: none; height: 100%; @@ -10951,10 +14334,12 @@ a.mx_Pill { -webkit-filter: invert(100%); filter: invert(100%); } + .mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background { background: #0dbd8b; border-color: #0dbd8b; } + .mx_Checkbox input[type="checkbox"]:checked + label @@ -10962,13 +14347,16 @@ a.mx_Pill { img { display: block; } + .mx_Checkbox input[type="checkbox"] + label > :not(.mx_Checkbox_background) { margin-left: 10px; } + .mx_Checkbox input[type="checkbox"]:disabled + label { opacity: 0.5; cursor: not-allowed; } + .mx_Checkbox input[type="checkbox"]:checked:disabled + label @@ -10976,6 +14364,7 @@ a.mx_Pill { background-color: #0dbd8b; border-color: #0dbd8b; } + .mx_Checkbox input[type="checkbox"].focus-visible + label @@ -10984,6 +14373,7 @@ a.mx_Pill { outline-style: solid; outline-color: Highlight; } + @media (-webkit-min-device-pixel-ratio: 0) { .mx_Checkbox input[type="checkbox"].focus-visible @@ -10993,12 +14383,14 @@ a.mx_Pill { outline-style: auto; } } + .mx_RadioButton { position: relative; -webkit-box-align: baseline; -ms-flex-align: baseline; align-items: baseline; } + .mx_RadioButton, .mx_RadioButton > .mx_RadioButton_content { display: -webkit-box; @@ -11008,6 +14400,7 @@ a.mx_Pill { -ms-flex-positive: 1; flex-grow: 1; } + .mx_RadioButton > .mx_RadioButton_content { -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -11016,6 +14409,7 @@ a.mx_Pill { margin-left: 8px; margin-right: 8px; } + .mx_RadioButton .mx_RadioButton_spacer { -ms-flex-negative: 0; flex-shrink: 0; @@ -11025,14 +14419,16 @@ a.mx_Pill { height: 1.6rem; width: 1.6rem; } -.mx_RadioButton > input[type="radio"] { + +.mx_RadioButton input[type="radio"] { margin: 0; padding: 0; -webkit-appearance: none; -moz-appearance: none; appearance: none; } -.mx_RadioButton > input[type="radio"] + div { + +.mx_RadioButton input[type="radio"] + div { -ms-flex-negative: 0; flex-shrink: 0; -webkit-box-flex: 0; @@ -11055,55 +14451,140 @@ a.mx_Pill { border: 0.15rem solid #61708b; border-radius: 1.6rem; } -.mx_RadioButton > input[type="radio"] + div > div { + +.mx_RadioButton input[type="radio"] + div > div { -webkit-box-sizing: border-box; box-sizing: border-box; height: 0.8rem; width: 0.8rem; border-radius: 0.8rem; } -.mx_RadioButton > input[type="radio"].focus-visible + div { + +.mx_RadioButton input[type="radio"].focus-visible + div { outline-width: 2px; outline-style: solid; outline-color: Highlight; } + @media (-webkit-min-device-pixel-ratio: 0) { - .mx_RadioButton > input[type="radio"].focus-visible + div { + .mx_RadioButton input[type="radio"].focus-visible + div { outline-color: -webkit-focus-ring-color; outline-style: auto; } } -.mx_RadioButton > input[type="radio"]:checked + div { + +.mx_RadioButton input[type="radio"]:checked + div { border-color: #0dbd8b; } -.mx_RadioButton > input[type="radio"]:checked + div > div { + +.mx_RadioButton input[type="radio"]:checked + div > div { background: #0dbd8b; } -.mx_RadioButton > input[type="radio"]:disabled + div, -.mx_RadioButton > input[type="radio"]:disabled + div + span { + +.mx_RadioButton input[type="radio"]:disabled + div, +.mx_RadioButton input[type="radio"]:disabled + div + span { opacity: 0.5; cursor: not-allowed; } -.mx_RadioButton > input[type="radio"]:disabled + div { + +.mx_RadioButton input[type="radio"]:disabled + div { border-color: #61708b; } -.mx_RadioButton > input[type="radio"]:checked:disabled + div > div { + +.mx_RadioButton input[type="radio"]:checked:disabled + div > div { background-color: #61708b; } + +.mx_RadioButton .mx_RadioButton_innerLabel { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + position: relative; + top: 4px; +} + .mx_RadioButton_outlined { border: 1px solid #e3e8f0; border-radius: 8px; } + .mx_RadioButton_checked { border-color: #0dbd8b; } + .mx_SyntaxHighlight { background: none !important; color: #747474 !important; } + +.mx_TagComposer .mx_TagComposer_input { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.mx_TagComposer .mx_TagComposer_input .mx_Field { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin: 0; +} + +.mx_TagComposer .mx_TagComposer_input .mx_AccessibleButton { + min-width: 70px; + padding: 0; + margin-left: 16px; +} + +.mx_TagComposer .mx_TagComposer_input .mx_AccessibleButton, +.mx_TagComposer .mx_TagComposer_input .mx_Field, +.mx_TagComposer .mx_TagComposer_input .mx_Field input { + border-radius: 8px; +} + +.mx_TagComposer .mx_TagComposer_tags { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-top: 12px; +} + +.mx_TagComposer .mx_TagComposer_tags .mx_TagComposer_tag { + padding: 6px 8px 8px 12px; + position: relative; + margin-right: 12px; + margin-top: 12px; +} + +.mx_TagComposer .mx_TagComposer_tags .mx_TagComposer_tag:before { + content: ""; + border-radius: 20px; + background-color: #8d99a5; + opacity: 0.15; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; +} + +.mx_TagComposer .mx_TagComposer_tags .mx_AccessibleButton { + background-image: url(../../img/subtract.880420e.svg); + width: 16px; + height: 16px; + margin-left: 8px; + display: inline-block; + vertical-align: middle; + cursor: pointer; +} + .mx_TextWithTooltip_tooltip { display: none; } + .mx_ToggleSwitch { -webkit-transition: background-color 0.2s ease-out 0.1s; transition: background-color 0.2s ease-out 0.1s; @@ -11114,16 +14595,20 @@ a.mx_Pill { background-color: #c1c9d6; opacity: 0.5; } + .mx_ToggleSwitch_enabled { cursor: pointer; opacity: 1; } + .mx_ToggleSwitch.mx_ToggleSwitch_on { background-color: #0dbd8b; } + .mx_ToggleSwitch.mx_ToggleSwitch_on > .mx_ToggleSwitch_ball { left: calc(100% - 2rem); } + .mx_ToggleSwitch_ball { position: relative; width: 2rem; @@ -11134,6 +14619,7 @@ a.mx_Pill { transition: left 0.15s ease-out 0.1s; left: 0; } + @-webkit-keyframes mx_fadein { 0% { opacity: 0; @@ -11142,6 +14628,7 @@ a.mx_Pill { opacity: 1; } } + @keyframes mx_fadein { 0% { opacity: 0; @@ -11150,6 +14637,7 @@ a.mx_Pill { opacity: 1; } } + @-webkit-keyframes mx_fadeout { 0% { opacity: 1; @@ -11158,6 +14646,7 @@ a.mx_Pill { opacity: 0; } } + @keyframes mx_fadeout { 0% { opacity: 1; @@ -11166,6 +14655,7 @@ a.mx_Pill { opacity: 0; } } + .mx_Tooltip_chevron { position: absolute; left: -7px; @@ -11176,6 +14666,7 @@ a.mx_Pill { border-right: 7px solid #e7e7e7; border-bottom: 7px solid transparent; } + .mx_Tooltip_chevron:after { content: ""; width: 0; @@ -11187,6 +14678,7 @@ a.mx_Pill { top: -6px; left: 1px; } + .mx_Tooltip { position: fixed; border-radius: 8px; @@ -11206,34 +14698,42 @@ a.mx_Pill { border: 0; text-align: center; } + .mx_Tooltip, .mx_Tooltip .mx_Tooltip_chevron { display: none; } + .mx_Tooltip.mx_Tooltip_visible { -webkit-animation: mx_fadein 0.2s forwards; animation: mx_fadein 0.2s forwards; } + .mx_Tooltip.mx_Tooltip_invisible { -webkit-animation: mx_fadeout 0.1s forwards; animation: mx_fadeout 0.1s forwards; } + .mx_Field_tooltip { background-color: #fff; color: #2e2f32; border: 1px solid #e7e7e7; text-align: unset; } + .mx_Field_tooltip .mx_Tooltip_chevron { display: unset; } + .mx_Tooltip_title { font-weight: 600; } + .mx_Tooltip_sub { opacity: 0.7; margin-top: 4px; } + .mx_TooltipButton { display: inline-block; width: 11px; @@ -11249,38 +14749,47 @@ a.mx_Pill { text-align: center; cursor: pointer; } + .mx_TooltipButton:hover { opacity: 1; } + .mx_TooltipButton_container { position: relative; top: -18px; left: 4px; } + .mx_TooltipButton_helpText { width: 400px; text-align: start; line-height: 17px !important; } + .mx_Validation { position: relative; } + .mx_Validation_details { padding-left: 20px; margin: 0; } + .mx_Validation_description + .mx_Validation_details { margin: 1em 0 0; } + .mx_Validation_detail { position: relative; font-weight: 400; list-style: none; margin-bottom: 0.5em; } + .mx_Validation_detail:last-child { margin-bottom: 0; } + .mx_Validation_detail:before { content: ""; position: absolute; @@ -11295,22 +14804,27 @@ a.mx_Pill { -webkit-mask-size: contain; mask-size: contain; } + .mx_Validation_detail.mx_Validation_valid { color: #0dbd8b; } + .mx_Validation_detail.mx_Validation_valid:before { -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); mask-image: url(../../img/feather-customised/check.5745b4e.svg); background-color: #0dbd8b; } + .mx_Validation_detail.mx_Validation_invalid { color: #ff4b55; } + .mx_Validation_detail.mx_Validation_invalid:before { -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); mask-image: url(../../img/feather-customised/x.9662221.svg); background-color: #ff4b55; } + .mx_EmojiPicker { width: 340px; height: 450px; @@ -11323,6 +14837,7 @@ a.mx_Pill { -ms-flex-direction: column; flex-direction: column; } + .mx_EmojiPicker_body { -webkit-box-flex: 1; -ms-flex: 1; @@ -11331,10 +14846,12 @@ a.mx_Pill { scrollbar-width: thin; scrollbar-color: rgba(0, 0, 0, 0.2) transparent; } + .mx_EmojiPicker_header { padding: 4px 8px 0; border-bottom: 1px solid #e9edf1; } + .mx_EmojiPicker_anchor { padding: 8px 8px 6px; border: none; @@ -11344,13 +14861,16 @@ a.mx_Pill { width: 36px; height: 38px; } + .mx_EmojiPicker_anchor:not(:disabled) { cursor: pointer; } + .mx_EmojiPicker_anchor:not(:disabled):hover { background-color: #ddd; border-bottom: 2px solid #0dbd8b; } + .mx_EmojiPicker_anchor:before { background-color: #2e2f32; content: ""; @@ -11362,52 +14882,65 @@ a.mx_Pill { width: 100%; height: 100%; } + .mx_EmojiPicker_anchor:disabled:before { background-color: #ddd; } + .mx_EmojiPicker_anchor_activity:before { -webkit-mask-image: url(../../img/emojipicker/activity.921ec9f.svg); mask-image: url(../../img/emojipicker/activity.921ec9f.svg); } + .mx_EmojiPicker_anchor_custom:before { -webkit-mask-image: url(../../img/emojipicker/custom.e1cd0fd.svg); mask-image: url(../../img/emojipicker/custom.e1cd0fd.svg); } + .mx_EmojiPicker_anchor_flags:before { -webkit-mask-image: url(../../img/emojipicker/flags.1a8855e.svg); mask-image: url(../../img/emojipicker/flags.1a8855e.svg); } + .mx_EmojiPicker_anchor_foods:before { -webkit-mask-image: url(../../img/emojipicker/foods.c6b220a.svg); mask-image: url(../../img/emojipicker/foods.c6b220a.svg); } + .mx_EmojiPicker_anchor_nature:before { -webkit-mask-image: url(../../img/emojipicker/nature.6540b99.svg); mask-image: url(../../img/emojipicker/nature.6540b99.svg); } + .mx_EmojiPicker_anchor_objects:before { -webkit-mask-image: url(../../img/emojipicker/objects.4d34f58.svg); mask-image: url(../../img/emojipicker/objects.4d34f58.svg); } + .mx_EmojiPicker_anchor_people:before { -webkit-mask-image: url(../../img/emojipicker/people.e918580.svg); mask-image: url(../../img/emojipicker/people.e918580.svg); } + .mx_EmojiPicker_anchor_places:before { -webkit-mask-image: url(../../img/emojipicker/places.7310322.svg); mask-image: url(../../img/emojipicker/places.7310322.svg); } + .mx_EmojiPicker_anchor_recent:before { -webkit-mask-image: url(../../img/emojipicker/recent.13b42e2.svg); mask-image: url(../../img/emojipicker/recent.13b42e2.svg); } + .mx_EmojiPicker_anchor_symbols:before { -webkit-mask-image: url(../../img/emojipicker/symbols.15a557d.svg); mask-image: url(../../img/emojipicker/symbols.15a557d.svg); } + .mx_EmojiPicker_anchor_visible { border-bottom: 2px solid #0dbd8b; } + .mx_EmojiPicker_search { margin: 8px; border-radius: 4px; @@ -11417,6 +14950,7 @@ a.mx_Pill { display: -ms-flexbox; display: flex; } + .mx_EmojiPicker_search input { -webkit-box-flex: 1; -ms-flex: 1; @@ -11425,6 +14959,7 @@ a.mx_Pill { padding: 8px 12px; border-radius: 4px 0; } + .mx_EmojiPicker_search button { border: none; background-color: inherit; @@ -11435,16 +14970,20 @@ a.mx_Pill { width: 32px; height: 32px; } + .mx_EmojiPicker_search_clear { cursor: pointer; } + .mx_EmojiPicker_search_icon { width: 16px; margin: 8px; } + .mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear) { pointer-events: none; } + .mx_EmojiPicker_search_icon:after { -webkit-mask: url(../../img/emojipicker/search.973c315.svg) no-repeat; mask: url(../../img/emojipicker/search.973c315.svg) no-repeat; @@ -11456,10 +14995,12 @@ a.mx_Pill { width: 100%; height: 100%; } + .mx_EmojiPicker_search_clear:after { -webkit-mask-image: url(../../img/emojipicker/delete.f7344c5.svg); mask-image: url(../../img/emojipicker/delete.f7344c5.svg); } + .mx_EmojiPicker_category { padding: 0 12px; display: -webkit-box; @@ -11473,20 +15014,24 @@ a.mx_Pill { -ms-flex-align: center; align-items: center; } + .mx_EmojiPicker_category_label { width: 304px; } + .mx_EmojiPicker_list { width: 304px; padding: 0; margin: 0; } + .mx_EmojiPicker_item_wrapper { display: inline-block; list-style: none; width: 38px; cursor: pointer; } + .mx_EmojiPicker_item { display: inline-block; font-size: 2rem; @@ -11498,20 +15043,24 @@ a.mx_Pill { text-align: center; border-radius: 4px; } + .mx_EmojiPicker_item:hover { background-color: #ddd; } + .mx_EmojiPicker_item_selected { color: rgba(0, 0, 0, 0.5); border: 1px solid #0dbd8b; padding: 4px; } + .mx_EmojiPicker_category_label, .mx_EmojiPicker_preview_name { font-size: 1.6rem; font-weight: 600; margin: 0; } + .mx_EmojiPicker_footer { border-top: 1px solid #e9edf1; min-height: 72px; @@ -11522,10 +15071,12 @@ a.mx_Pill { -ms-flex-align: center; align-items: center; } + .mx_EmojiPicker_preview_emoji { font-size: 3.2rem; padding: 8px 16px; } + .mx_EmojiPicker_preview_text { display: -webkit-box; display: -ms-flexbox; @@ -11535,17 +15086,21 @@ a.mx_Pill { -ms-flex-direction: column; flex-direction: column; } + .mx_EmojiPicker_name { text-transform: capitalize; } + .mx_EmojiPicker_shortcode { color: #747474; font-size: 1.4rem; } + .mx_EmojiPicker_shortcode:after, .mx_EmojiPicker_shortcode:before { content: ":"; } + .mx_EmojiPicker_quick { -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -11554,9 +15109,11 @@ a.mx_Pill { -ms-flex-pack: distribute; justify-content: space-around; } + .mx_EmojiPicker_quick_header .mx_EmojiPicker_name { margin-right: 4px; } + .mx_GroupPublicity_toggle { display: -webkit-box; display: -ms-flexbox; @@ -11566,6 +15123,7 @@ a.mx_Pill { align-items: center; margin: 8px; } + .mx_GroupPublicity_toggle .mx_GroupTile { display: -webkit-box; display: -ms-flexbox; @@ -11578,9 +15136,11 @@ a.mx_Pill { box-sizing: border-box; width: 100%; } + .mx_GroupPublicity_toggle .mx_ToggleSwitch { float: right; } + .mx_GroupRoomTile { position: relative; color: #2e2f32; @@ -11592,20 +15152,228 @@ a.mx_Pill { -ms-flex-align: center; align-items: center; } + .mx_GroupRoomList_wrapper { padding: 10px; } + .mx_GroupUserSettings_groupPublicity_scrollbox { height: 200px; border: 1px solid transparent; border-radius: 3px; overflow: hidden; } + +.mx_CallEvent { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + background-color: #f2f5f8; + border-radius: 8px; + margin: 10px auto; + max-width: 75%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + height: 60px; +} + +.mx_CallEvent.mx_CallEvent_voice + .mx_CallEvent_content_button_answer + span:before, +.mx_CallEvent.mx_CallEvent_voice + .mx_CallEvent_content_button_callBack + span:before, +.mx_CallEvent.mx_CallEvent_voice .mx_CallEvent_type_icon:before { + -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); + mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); +} + +.mx_CallEvent.mx_CallEvent_video + .mx_CallEvent_content_button_answer + span:before, +.mx_CallEvent.mx_CallEvent_video + .mx_CallEvent_content_button_callBack + span:before, +.mx_CallEvent.mx_CallEvent_video .mx_CallEvent_type_icon:before { + -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); + mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); +} + +.mx_CallEvent .mx_CallEvent_info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin-left: 12px; +} + +.mx_CallEvent .mx_CallEvent_info .mx_CallEvent_info_basic { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 10px; +} + +.mx_CallEvent .mx_CallEvent_info .mx_CallEvent_info_basic .mx_CallEvent_sender { + font-weight: 600; + font-size: 1.5rem; + line-height: 1.8rem; + margin-bottom: 3px; +} + +.mx_CallEvent .mx_CallEvent_info .mx_CallEvent_info_basic .mx_CallEvent_type { + font-weight: 400; + color: #737d8c; + font-size: 1.2rem; + line-height: 1.3rem; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_CallEvent + .mx_CallEvent_info + .mx_CallEvent_info_basic + .mx_CallEvent_type + .mx_CallEvent_type_icon { + height: 13px; + width: 13px; + margin-right: 5px; +} + +.mx_CallEvent + .mx_CallEvent_info + .mx_CallEvent_info_basic + .mx_CallEvent_type + .mx_CallEvent_type_icon:before { + content: ""; + position: absolute; + height: 13px; + width: 13px; + background-color: #8d99a5; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} + +.mx_CallEvent .mx_CallEvent_content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #737d8c; + margin-right: 16px; +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_button { + height: 24px; + padding: 0 12px; + margin-left: 8px; +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_button span { + padding: 8px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_button span:before { + content: ""; + display: inline-block; + background-color: #fff; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: 16px; + mask-size: 16px; + width: 16px; + height: 16px; + margin-right: 8px; +} + +.mx_CallEvent + .mx_CallEvent_content + .mx_CallEvent_content_button_reject + span:before { + -webkit-mask-image: url(../../img/element-icons/call/hangup.a207e54.svg); + mask-image: url(../../img/element-icons/call/hangup.a207e54.svg); +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_tooltip { + margin-right: 5px; +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_iconButton { + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + margin-right: 8px; +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_iconButton:before { + content: ""; + height: 16px; + width: 16px; + background-color: #8d99a5; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_silence:before { + -webkit-mask-image: url(../../img/voip/silence.08cd2d6.svg); + mask-image: url(../../img/voip/silence.08cd2d6.svg); +} + +.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_unSilence:before { + -webkit-mask-image: url(../../img/voip/un-silence.cebdd12.svg); + mask-image: url(../../img/voip/un-silence.cebdd12.svg); +} + .mx_CreateEvent:before { background-color: #91a1c0; -webkit-mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); } + .mx_DateSeparator { clear: both; margin: 4px 0; @@ -11618,6 +15386,7 @@ a.mx_Pill { font-size: 1.4rem; color: #9e9e9e; } + .mx_DateSeparator > hr { -webkit-box-flex: 1; -ms-flex: 1 1 0px; @@ -11626,12 +15395,14 @@ a.mx_Pill { border: none; border-bottom: 1px solid transparent; } + .mx_DateSeparator > div { margin: 0 25px; -webkit-box-flex: 0; -ms-flex: 0 0 auto; flex: 0 0 auto; } + .mx_EventTileBubble { background-color: #f2f5f8; padding: 10px; @@ -11644,6 +15415,7 @@ a.mx_Pill { grid-template-columns: 24px minmax(0, 1fr) -webkit-min-content; grid-template-columns: 24px minmax(0, 1fr) min-content; } + .mx_EventTileBubble:after, .mx_EventTileBubble:before { position: relative; @@ -11664,30 +15436,37 @@ a.mx_Pill { mask-size: contain; margin-top: 4px; } + .mx_EventTileBubble .mx_EventTileBubble_subtitle, .mx_EventTileBubble .mx_EventTileBubble_title { overflow-wrap: break-word; } + .mx_EventTileBubble .mx_EventTileBubble_title { font-weight: 600; font-size: 1.5rem; grid-column: 2; grid-row: 1; } + .mx_EventTileBubble .mx_EventTileBubble_subtitle { font-size: 1.2rem; grid-column: 2; grid-row: 2; } + .mx_MEmoteBody { white-space: pre-wrap; } + .mx_MEmoteBody_sender { cursor: pointer; } + .mx_MFileBody_download { color: #0dbd8b; } + .mx_MFileBody_download .mx_MFileBody_download_icon { width: 12px; height: 12px; @@ -11702,11 +15481,13 @@ a.mx_Pill { background-color: #0dbd8b; display: inline-block; } + .mx_MFileBody_download a { color: #0dbd8b; text-decoration: none; cursor: pointer; } + .mx_MFileBody_download object { margin-left: -16px; padding-right: 4px; @@ -11714,6 +15495,7 @@ a.mx_Pill { vertical-align: middle; pointer-events: none; } + .mx_MFileBody_download iframe { margin: 0; padding: 0; @@ -11721,15 +15503,9 @@ a.mx_Pill { width: 100%; height: 1.5em; } -.mx_MFileBody_info { - background-color: #e3e8f0; - border-radius: 12px; - width: 243px; - padding: 6px 12px; - color: #737d8c; -} + .mx_MFileBody_info .mx_MFileBody_info_icon { - background-color: #fff; + background-color: #f4f6fa; border-radius: 20px; display: inline-block; width: 32px; @@ -11738,6 +15514,7 @@ a.mx_Pill { vertical-align: middle; margin-right: 12px; } + .mx_MFileBody_info .mx_MFileBody_info_icon:before { content: ""; -webkit-mask-repeat: no-repeat; @@ -11746,15 +15523,16 @@ a.mx_Pill { mask-position: center; -webkit-mask-size: cover; mask-size: cover; - -webkit-mask-image: url(../icons/attach.svg); - mask-image: url(../icons/attach.svg); + -webkit-mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); + mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); background-color: #737d8c; - width: 13px; + width: 15px; height: 15px; position: absolute; top: 8px; - left: 9px; + left: 8px; } + .mx_MFileBody_info .mx_MFileBody_info_filename { text-overflow: ellipsis; overflow: hidden; @@ -11763,31 +15541,31 @@ a.mx_Pill { width: calc(100% - 44px); vertical-align: middle; } -.mx_MImageBody { - display: block; - margin-right: 34px; -} + .mx_MImageBody_thumbnail { - position: absolute; - width: 100%; - height: 100%; - left: 0; - top: 0; + -o-object-fit: contain; + object-fit: contain; + border-radius: 4px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.mx_MImageBody_thumbnail > div > canvas { border-radius: 4px; } + .mx_MImageBody_thumbnail_container { overflow: hidden; position: relative; } -.mx_MImageBody_thumbnail_spinner { - position: absolute; - left: 50%; - top: 50%; -} -.mx_MImageBody_thumbnail_spinner > * { - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); -} + .mx_MImageBody_gifLabel { position: absolute; display: block; @@ -11800,6 +15578,7 @@ a.mx_Pill { color: #fff; pointer-events: none; } + .mx_HiddenImagePlaceholder { position: absolute; left: 0; @@ -11819,9 +15598,11 @@ a.mx_Pill { cursor: pointer; background-color: #f3f8fd; } + .mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button { color: #0dbd8b; } + .mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span.mx_HiddenImagePlaceholder_eye { @@ -11833,30 +15614,64 @@ a.mx_Pill { width: 18px; height: 14px; } + .mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button span:not(.mx_HiddenImagePlaceholder_eye) { vertical-align: text-bottom; } + .mx_EventTile:hover .mx_HiddenImagePlaceholder { background-color: #fff; } + +.mx_MImageReplyBody { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.mx_MImageReplyBody .mx_MImageBody_thumbnail_container { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + margin-right: 4px; +} + +.mx_MImageReplyBody .mx_MImageReplyBody_info { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.mx_MImageReplyBody .mx_MImageReplyBody_info .mx_MImageReplyBody_sender { + grid-area: sender; +} + +.mx_MImageReplyBody .mx_MImageReplyBody_info .mx_MImageReplyBody_filename { + grid-area: filename; +} + .mx_MJitsiWidgetEvent:before { background-color: #91a1c0; -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); } + .mx_MNoticeBody { white-space: pre-wrap; opacity: 0.6; } + .mx_MStickerBody_wrapper { padding: 20px 0; } + .mx_MStickerBody_tooltip { position: absolute; top: 50%; } + .mx_MStickerBody_hidden { max-width: 220px; text-decoration: none; @@ -11871,17 +15686,27 @@ a.mx_Pill { -ms-flex-pack: center; justify-content: center; } + .mx_MTextBody { white-space: pre-wrap; } + span.mx_MVideoBody video.mx_MVideoBody { max-width: 100%; height: auto; border-radius: 4px; } -.mx_MVoiceMessageBody { - display: inline-block; + +.mx_MediaBody { + background-color: #e3e8f0; + border-radius: 12px; + max-width: 243px; + color: #737d8c; + font-size: 1.4rem; + line-height: 2.4rem; + padding: 6px 12px; } + .mx_MessageActionBar { position: absolute; visibility: hidden; @@ -11889,11 +15714,12 @@ span.mx_MVideoBody video.mx_MVideoBody { display: -webkit-box; display: -ms-flexbox; display: flex; - height: 24px; + height: 32px; line-height: 2.4rem; - border-radius: 4px; + border-radius: 8px; background: #fff; - top: -26px; + border: 1px solid #e7e7e7; + top: -32px; right: 8px; -webkit-user-select: none; -moz-user-select: none; @@ -11901,6 +15727,7 @@ span.mx_MVideoBody video.mx_MVideoBody { user-select: none; z-index: 1; } + .mx_MessageActionBar:before { content: ""; position: absolute; @@ -11911,29 +15738,25 @@ span.mx_MVideoBody video.mx_MVideoBody { z-index: -1; cursor: auto; } + .mx_MessageActionBar > * { white-space: nowrap; display: inline-block; position: relative; - border: 1px solid #e9edf1; - margin-left: -1px; + margin: 2px; } + .mx_MessageActionBar > :hover { - border-color: #ddd; + background: rgba(141, 151, 165, 0.2); + border-radius: 6px; z-index: 1; } -.mx_MessageActionBar > :first-child { - border-radius: 3px 0 0 3px; -} -.mx_MessageActionBar > :last-child { - border-radius: 0 3px 3px 0; -} -.mx_MessageActionBar > :only-child { - border-radius: 3px; -} + .mx_MessageActionBar_maskButton { - width: 27px; + width: 28px; + height: 28px; } + .mx_MessageActionBar_maskButton:after { content: ""; position: absolute; @@ -11947,32 +15770,54 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; + background-color: #737d8c; +} + +.mx_MessageActionBar_maskButton:hover:after { background-color: #2e2f32; } + .mx_MessageActionBar_reactButton:after { -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); } + .mx_MessageActionBar_replyButton:after { -webkit-mask-image: url(../../img/element-icons/room/message-bar/reply.5812741.svg); mask-image: url(../../img/element-icons/room/message-bar/reply.5812741.svg); } + .mx_MessageActionBar_editButton:after { -webkit-mask-image: url(../../img/element-icons/room/message-bar/edit.688678e.svg); mask-image: url(../../img/element-icons/room/message-bar/edit.688678e.svg); } + .mx_MessageActionBar_optionsButton:after { -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); } + .mx_MessageActionBar_resendButton:after { -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); mask-image: url(../../img/element-icons/retry.6cd23ad.svg); } + .mx_MessageActionBar_cancelButton:after { - -webkit-mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); - mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); + -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); + mask-image: url(../../img/element-icons/trashcan.3b626db.svg); } + +.mx_MessageActionBar_downloadButton:after { + -webkit-mask-size: 14px; + mask-size: 14px; + -webkit-mask-image: url(../../img/download.4f331f0.svg); + mask-image: url(../../img/download.4f331f0.svg); +} + +.mx_MessageActionBar_downloadButton.mx_MessageActionBar_downloadSpinnerButton:after { + background-color: transparent; +} + .mx_MessageTimestamp { color: #acacac; font-size: 1rem; @@ -11980,13 +15825,16 @@ span.mx_MVideoBody video.mx_MVideoBody { font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; } + .mx_MjolnirBody { opacity: 0.4; } + .mx_ReactionsRow { margin: 6px 0; color: #2e2f32; } + .mx_ReactionsRow .mx_ReactionsRow_addReactionButton { position: relative; display: inline-block; @@ -11995,7 +15843,9 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 24px; vertical-align: middle; margin-left: 4px; + margin-right: 4px; } + .mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before { content: ""; position: absolute; @@ -12011,18 +15861,22 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); } + .mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active { visibility: visible; } + .mx_ReactionsRow .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before, .mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before { background-color: #2e2f32; } + .mx_EventTile:hover .mx_ReactionsRow_addReactionButton { visibility: visible; } + .mx_ReactionsRow_showAll { text-decoration: none; font-size: 1.2rem; @@ -12030,13 +15884,16 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-left: 4px; vertical-align: middle; } + .mx_ReactionsRow_showAll:link, .mx_ReactionsRow_showAll:visited { color: #8d99a5; } + .mx_ReactionsRow_showAll:hover { color: #2e2f32; } + .mx_ReactionsRowButton { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -12054,16 +15911,20 @@ span.mx_MVideoBody video.mx_MVideoBody { user-select: none; vertical-align: middle; } + .mx_ReactionsRowButton:hover { border-color: #ddd; } + .mx_ReactionsRowButton.mx_ReactionsRowButton_selected { background-color: #e9fff9; border-color: #0dbd8b; } + .mx_ReactionsRowButton.mx_AccessibleButton_disabled { cursor: not-allowed; } + .mx_ReactionsRowButton .mx_ReactionsRowButton_content { max-width: 100px; overflow: hidden; @@ -12071,6 +15932,7 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; padding-right: 4px; } + .mx_RedactedBody { white-space: pre-wrap; color: #61708b; @@ -12078,12 +15940,13 @@ span.mx_MVideoBody video.mx_MVideoBody { padding-left: 20px; position: relative; } + .mx_RedactedBody:before { height: 14px; width: 14px; background-color: #61708b; - -webkit-mask-image: url(../icons/trash.svg); - mask-image: url(../icons/trash.svg); + -webkit-mask-image: url(../../img/feather-customised/trash.custom.1e6ecd4.svg); + mask-image: url(../../img/feather-customised/trash.custom.1e6ecd4.svg); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; @@ -12095,25 +15958,43 @@ span.mx_MVideoBody video.mx_MVideoBody { top: 1px; left: 0; } + .mx_RoomAvatarEvent { opacity: 0.5; overflow-y: hidden; } + .mx_RoomAvatarEvent_avatar { display: inline; position: relative; top: 5px; } -.mx_SenderProfile_name { + +.mx_SenderProfile_displayName { font-weight: 600; } + +.mx_SenderProfile_mxid { + font-weight: 600; + font-size: 1.1rem; + margin-left: 5px; + opacity: 0.5; +} + .mx_TextualEvent { opacity: 0.5; overflow-y: hidden; } + +.mx_TextualEvent a { + color: #0dbd8b; + cursor: pointer; +} + .mx_UnknownBody { white-space: pre-wrap; } + .mx_EventTile_content.mx_ViewSourceEvent { display: -webkit-box; display: -ms-flexbox; @@ -12121,16 +16002,19 @@ span.mx_MVideoBody video.mx_MVideoBody { opacity: 0.6; font-size: 1.2rem; } + .mx_EventTile_content.mx_ViewSourceEvent code, .mx_EventTile_content.mx_ViewSourceEvent pre { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } + .mx_EventTile_content.mx_ViewSourceEvent pre { line-height: 1.2; margin: 3.5px 0; } + .mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle { width: 12px; -webkit-mask-repeat: no-repeat; @@ -12144,6 +16028,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); mask-image: url(../../img/feather-customised/maximise.dc32127.svg); } + .mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle { -webkit-mask-position: 0 bottom; @@ -12152,41 +16037,49 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/feather-customised/minimise.aec9142.svg); mask-image: url(../../img/feather-customised/minimise.aec9142.svg); } + .mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle { visibility: visible; } + .mx_cryptoEvent.mx_cryptoEvent_icon:before { background-color: #fff; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; - -webkit-mask-size: 90%; - mask-size: 90%; + -webkit-mask-size: 80%; + mask-size: 80%; } + .mx_cryptoEvent.mx_cryptoEvent_icon:after, .mx_cryptoEvent.mx_cryptoEvent_icon:before { -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); } + .mx_cryptoEvent.mx_cryptoEvent_icon:after { background-color: #91a1c0; } + .mx_cryptoEvent.mx_cryptoEvent_icon_verified:after { -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); mask-image: url(../../img/e2e/verified.5be6c9f.svg); background-color: #0dbd8b; } + .mx_cryptoEvent.mx_cryptoEvent_icon_warning:after { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); background-color: #ff4b55; } + .mx_cryptoEvent .mx_cryptoEvent_buttons, .mx_cryptoEvent .mx_cryptoEvent_state { grid-column: 3; grid-row: 1/3; } + .mx_cryptoEvent .mx_cryptoEvent_buttons { -webkit-box-align: center; -ms-flex-align: center; @@ -12194,7 +16087,10 @@ span.mx_MVideoBody video.mx_MVideoBody { display: -webkit-box; display: -ms-flexbox; display: flex; + grid-gap: 5px; + gap: 5px; } + .mx_cryptoEvent .mx_cryptoEvent_state { width: 130px; padding: 10px 20px; @@ -12204,6 +16100,7 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow-wrap: break-word; font-size: 1.2rem; } + .mx_BaseCard { padding: 0 8px; overflow: hidden; @@ -12218,9 +16115,11 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 1; flex: 1; } + .mx_BaseCard .mx_BaseCard_header { margin: 8px 0; } + .mx_BaseCard .mx_BaseCard_header > h2 { margin: 0 44px; font-size: 1.8rem; @@ -12229,6 +16128,7 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; white-space: nowrap; } + .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back, .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close { position: absolute; @@ -12239,6 +16139,7 @@ span.mx_MVideoBody video.mx_MVideoBody { top: 0; border-radius: 10px; } + .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before, .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before { content: ""; @@ -12253,9 +16154,11 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-position: center; background-color: #91a1c0; } + .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back { left: 0; } + .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before { -webkit-transform: rotate(90deg); transform: rotate(90deg); @@ -12264,15 +16167,18 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close { right: 0; } + .mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before { -webkit-mask-image: url(../../img/icons-close.11ff07c.svg); mask-image: url(../../img/icons-close.11ff07c.svg); -webkit-mask-size: 8px; mask-size: 8px; } + .mx_BaseCard .mx_AutoHideScrollbar { margin-right: -8px; padding-right: 8px; @@ -12280,18 +16186,22 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 100%; height: 100%; } + .mx_BaseCard .mx_BaseCard_Group { margin: 20px 0 16px; } + .mx_BaseCard .mx_BaseCard_Group > * { margin-left: 12px; margin-right: 12px; } + .mx_BaseCard .mx_BaseCard_Group > h1 { color: #8d99a5; font-size: 1.2rem; font-weight: 500; } + .mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button { padding: 10px 38px 10px 12px; margin: 0; @@ -12304,9 +16214,11 @@ span.mx_MVideoBody video.mx_MVideoBody { white-space: nowrap; text-overflow: ellipsis; } + .mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover { background-color: rgba(141, 151, 165, 0.1); } + .mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after { content: ""; position: absolute; @@ -12326,16 +16238,19 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled { padding-right: 12px; } + .mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button.mx_AccessibleButton_disabled:after { content: unset; } + .mx_BaseCard .mx_BaseCard_footer { padding-top: 4px; text-align: center; @@ -12345,21 +16260,25 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: distribute; justify-content: space-around; } + .mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary { color: #737d8c; background-color: rgba(141, 151, 165, 0.2); font-weight: 600; font-size: 1.4rem; } + .mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled { cursor: not-allowed; } + .mx_FilePanel.mx_BaseCard, .mx_MemberList.mx_BaseCard, .mx_NotificationPanel.mx_BaseCard, .mx_UserInfo.mx_BaseCard { padding: 32px 0 0; } + .mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar, .mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar, .mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar, @@ -12367,26 +16286,131 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-right: unset; padding-right: unset; } + .mx_EncryptionInfo_spinner .mx_Spinner { margin-top: 25px; margin-bottom: 15px; } + .mx_EncryptionInfo_spinner { text-align: center; } + +.mx_PinnedMessagesCard { + padding-top: 0; +} + +.mx_PinnedMessagesCard .mx_BaseCard_header { + text-align: center; + margin-top: 0; + border-bottom: 1px solid #e7e7e7; +} + +.mx_PinnedMessagesCard .mx_BaseCard_header > h2 { + font-weight: 600; + font-size: 1.8rem; + margin: 8px 0; +} + +.mx_PinnedMessagesCard .mx_BaseCard_header .mx_BaseCard_close { + margin-right: 6px; +} + +.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; +} + +.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty > div { + height: -webkit-max-content; + height: -moz-max-content; + height: max-content; + text-align: center; + margin: auto 40px; +} + +.mx_PinnedMessagesCard + .mx_PinnedMessagesCard_empty + > div + .mx_PinnedMessagesCard_MessageActionBar { + pointer-events: none; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 32px; + line-height: 2.4rem; + border-radius: 8px; + background: #fff; + border: 1px solid #e7e7e7; + padding: 1px; + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + margin: 0 auto; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.mx_PinnedMessagesCard + .mx_PinnedMessagesCard_empty + > div + .mx_PinnedMessagesCard_MessageActionBar + .mx_MessageActionBar_maskButton { + display: inline-block; + position: relative; +} + +.mx_PinnedMessagesCard + .mx_PinnedMessagesCard_empty + > div + .mx_PinnedMessagesCard_MessageActionBar + .mx_MessageActionBar_optionsButton { + background: rgba(141, 151, 165, 0.2); + border-radius: 6px; + z-index: 1; +} + +.mx_PinnedMessagesCard + .mx_PinnedMessagesCard_empty + > div + .mx_PinnedMessagesCard_MessageActionBar + .mx_MessageActionBar_optionsButton:after { + background-color: #2e2f32; +} + +.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty > div > h2 { + font-weight: 600; + font-size: 1.5rem; + line-height: 2.4rem; + color: #2e2f32; + margin-top: 24px; + margin-bottom: 20px; +} + +.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty > div > span { + font-size: 1.2rem; + line-height: 1.5rem; + color: #737d8c; +} + .mx_RoomSummaryCard .mx_BaseCard_header { text-align: center; margin-top: 20px; } + .mx_RoomSummaryCard .mx_BaseCard_header h2 { font-weight: 600; font-size: 1.8rem; margin: 12px 0 4px; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias { font-size: 1.3rem; color: #737d8c; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias, .mx_RoomSummaryCard .mx_BaseCard_header h2 { display: -webkit-box; @@ -12394,12 +16418,15 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; + white-space: pre-wrap; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar @@ -12414,6 +16441,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-left: -10px; border: 3px solid #f2f5f8; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar @@ -12434,12 +16462,14 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-image: url(../../img/e2e/disabled.6c5c6be.svg); background-color: #fff; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_normal { background-color: #424446; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar @@ -12447,12 +16477,14 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_verified { background-color: #0dbd8b; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar @@ -12460,12 +16492,14 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); mask-image: url(../../img/e2e/verified.5be6c9f.svg); } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar .mx_RoomSummaryCard_e2ee_warning { background-color: #ff4b55; } + .mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar @@ -12473,9 +16507,11 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); } + .mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button { padding-left: 44px; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button:before { @@ -12491,11 +16527,13 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-position: center; background-color: #c1c6cd; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button { padding: 0; height: auto; color: #8d99a5; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12504,6 +16542,7 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; overflow: hidden; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12512,6 +16551,7 @@ span.mx_MVideoBody video.mx_MVideoBody { vertical-align: top; margin-right: 12px; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12519,6 +16559,7 @@ span.mx_MVideoBody video.mx_MVideoBody { span { color: #2e2f32; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12536,6 +16577,7 @@ span.mx_MVideoBody video.mx_MVideoBody { box-sizing: border-box; min-width: 24px; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12553,6 +16595,7 @@ span.mx_MVideoBody video.mx_MVideoBody { border-radius: 12px; background-color: rgba(141, 151, 165, 0.1); } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12573,12 +16616,14 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-size: 16px; background-color: #c1c6cd; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button .mx_RoomSummaryCard_app_pinToggle { right: 24px; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12586,6 +16631,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12593,6 +16639,7 @@ span.mx_MVideoBody video.mx_MVideoBody { right: 48px; display: none; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button @@ -12600,40 +16647,47 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after { opacity: 0.2; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned .mx_RoomSummaryCard_app_pinToggle:before { background-color: #0dbd8b; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_icon_app { padding-right: 72px; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:hover .mx_RoomSummaryCard_app_options { display: unset; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:before { content: unset; } + .mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button:after { top: 8px; pointer-events: none; } + .mx_RoomSummaryCard .mx_AccessibleButton_kind_link { padding: 0; margin-top: 12px; @@ -12641,22 +16695,32 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1.3rem; font-weight: 600; } + .mx_RoomSummaryCard_icon_people:before { -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); mask-image: url(../../img/element-icons/room/members.88c3e93.svg); } + .mx_RoomSummaryCard_icon_files:before { -webkit-mask-image: url(../../img/element-icons/room/files.5709c0c.svg); mask-image: url(../../img/element-icons/room/files.5709c0c.svg); } + .mx_RoomSummaryCard_icon_share:before { -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); } + .mx_RoomSummaryCard_icon_settings:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + +.mx_RoomSummaryCard_icon_export:before { + -webkit-mask-image: url(../../img/element-icons/export.57444c5.svg); + mask-image: url(../../img/element-icons/export.57444c5.svg); +} + .mx_UserInfo.mx_BaseCard { padding-top: 0; display: -webkit-box; @@ -12672,6 +16736,7 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow-y: auto; font-size: 1.2rem; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel { cursor: pointer; position: absolute; @@ -12681,6 +16746,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin: 9px; z-index: 1; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div { height: 16px; width: 16px; @@ -12693,44 +16759,55 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-position: 7px center; background-color: #91a1c0; } + .mx_UserInfo.mx_BaseCard h2 { font-size: 1.8rem; font-weight: 600; margin: 18px 0 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_container { padding: 8px 16px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_separator { border-bottom: 1px solid rgba(46, 47, 50, 0.1); } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer { padding-top: 0; padding-bottom: 0; margin-bottom: 8px; } + .mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer { width: 154px; } + .mx_UserInfo.mx_BaseCard .mx_RoomTile_badge { display: none; } + .mx_UserInfo.mx_BaseCard .mx_RoomTile_name { width: 160px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar { margin: 24px 32px 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div { max-width: 30vh; margin: 0 auto; -webkit-transition: 0.5s; transition: 0.5s; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div > div { padding-top: 100%; position: relative; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div > div * { border-radius: 100%; position: absolute; @@ -12739,6 +16816,7 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 100% !important; height: 100% !important; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial { z-index: 1; display: -webkit-box; @@ -12755,12 +16833,14 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-transition: font-size 0.5s; transition: font-size 0.5s; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { cursor: -webkit-zoom-in; cursor: zoom-in; } + .mx_UserInfo.mx_BaseCard h3 { text-transform: uppercase; color: #8d99a5; @@ -12768,12 +16848,15 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1.2rem; margin: 4px 0; } + .mx_UserInfo.mx_BaseCard p { margin: 5px 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_profile { text-align: center; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 { display: -webkit-box; display: -ms-flexbox; @@ -12787,6 +16870,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: center; justify-content: center; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span { display: -webkit-box; -webkit-box-orient: vertical; @@ -12795,17 +16879,21 @@ span.mx_MVideoBody video.mx_MVideoBody { word-break: break-all; text-overflow: ellipsis; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon { margin-top: 3px; margin-right: 4px; min-width: 18px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus { margin-top: 12px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField { margin: 6px 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField, .mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails @@ -12821,27 +16909,32 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-align: center; align-items: center; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_UserInfo_roleDescription { margin: 11px 0 12px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField .mx_Field { margin: 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_field { cursor: pointer; color: #0dbd8b; line-height: 1.6rem; margin: 8px 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive { color: #ff4b55; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage { font-size: 1.1rem; opacity: 0.5; @@ -12849,38 +16942,45 @@ span.mx_MVideoBody video.mx_MVideoBody { white-space: nowrap; text-overflow: clip; } + .mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar { -webkit-box-flex: 1; -ms-flex: 1 1 0px; flex: 1 1 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) { padding-top: 16px; padding-bottom: 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) > :not(h3) { margin-left: 8px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device { display: -webkit-box; display: -ms-flexbox; display: flex; margin: 8px 0; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_verified .mx_UserInfo_device_trusted { color: #0dbd8b; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device.mx_UserInfo_device_unverified .mx_UserInfo_device_trusted { color: #ff4b55; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device @@ -12891,6 +16991,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-right: 5px; word-break: break-word; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -12899,49 +17000,47 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 12px; height: 12px; } + .mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 11px; } + .mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind { padding: 8px 18px; } -.mx_UserInfo.mx_BaseCard - .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary { - color: #0dbd8b; - background-color: rgba(3, 179, 129, 0.16); -} -.mx_UserInfo.mx_BaseCard - .mx_AccessibleButton.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger { - color: #ff4b55; - background-color: rgba(255, 75, 85, 0.16); -} + .mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton, .mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton { display: block; margin: 16px 0 8px; } + .mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton + .mx_AccessibleButton { margin: 8px 0; } + .mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar > div { max-width: 72px; margin: 0 auto; } + .mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar .mx_BaseAvatar_initial { font-size: 40px !important; } + .mx_VerificationPanel_reciprocate_section .mx_E2EIcon, .mx_VerificationPanel_verified_section .mx_E2EIcon { margin: 20px auto !important; } + .mx_UserInfo .mx_EncryptionPanel_cancel { -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); mask: url(../../img/feather-customised/cancel.23c2689.svg); @@ -12960,6 +17059,7 @@ span.mx_MVideoBody video.mx_MVideoBody { top: 14px; right: 14px; } + .mx_UserInfo .mx_VerificationPanel_qrCode { padding: 4px 4px 0; background: #fff; @@ -12970,12 +17070,14 @@ span.mx_MVideoBody video.mx_MVideoBody { max-width: 100%; margin: 0 auto !important; } + .mx_UserInfo .mx_VerificationPanel_qrCode canvas { height: auto !important; width: 100% !important; max-width: 240px; } -.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_FormButton { + +.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton { width: 100%; -webkit-box-sizing: border-box; box-sizing: border-box; @@ -12983,6 +17085,7 @@ span.mx_MVideoBody video.mx_MVideoBody { display: block; margin: 10px 0; } + .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions, .mx_Dialog .mx_VerificationPanel_QRPhase_startOptions { display: -webkit-box; @@ -12997,6 +17100,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: center; justify-content: center; } + .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions > .mx_VerificationPanel_QRPhase_betweenText, @@ -13016,6 +17120,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: center; justify-content: center; } + .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption, @@ -13044,6 +17149,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: justify; justify-content: space-between; } + .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption @@ -13068,6 +17174,7 @@ span.mx_MVideoBody video.mx_MVideoBody { text-align: center; padding: 10px; } + .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption @@ -13079,6 +17186,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-top: 0; font-weight: 700; } + .mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions .mx_VerificationPanel_QRPhase_startOption @@ -13091,12 +17199,14 @@ span.mx_MVideoBody video.mx_MVideoBody { margin: 30px 0; text-align: center; } + .mx_CompleteSecurity_body .mx_VerificationPanel_verified_section .mx_AccessibleButton, .mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton { float: right; } + .mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton, @@ -13104,6 +17214,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-left: 10px; padding: 7px 40px; } + .mx_CompleteSecurity_body .mx_VerificationPanel_reciprocate_section .mx_VerificationPanel_reciprocateButtons, @@ -13121,26 +17232,31 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: end; justify-content: flex-end; } + .mx_WidgetCard { height: 100%; display: contents; } + .mx_WidgetCard .mx_AppTileFullWidth { max-width: unset; height: 100%; border: 0; } + .mx_WidgetCard .mx_BaseCard_header { display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } + .mx_WidgetCard .mx_BaseCard_header > h2 { margin-right: 0; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } + .mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton { position: relative; margin-right: 44px; @@ -13149,6 +17265,7 @@ span.mx_MVideoBody video.mx_MVideoBody { min-width: 20px; padding: 0; } + .mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before { content: ""; position: absolute; @@ -13166,34 +17283,41 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); background-color: #737d8c; } + .mx_WidgetCard_maxPinnedTooltip { background-color: #ff4b55; color: #fff; } + .mx_AliasSettings_editable { border: 0; border-bottom: 1px solid #c7c7c7; padding: 0; min-width: 240px; } + .mx_AliasSettings_editable:focus { border-bottom: 1px solid #0dbd8b; outline: none; -webkit-box-shadow: none; box-shadow: none; } + .mx_AliasSettings summary { cursor: pointer; color: #0dbd8b; font-weight: 600; list-style: none; } + .mx_AliasSettings summary::-webkit-details-marker { display: none; } + .mx_AliasSettings .mx_AliasSettings_localAliasHeader { margin-top: 35px; } + .mx_AppsDrawer { margin: 5px 5px 5px 18px; position: relative; @@ -13206,6 +17330,7 @@ span.mx_MVideoBody video.mx_MVideoBody { flex-direction: column; overflow: hidden; } + .mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer { width: 100%; height: 10px; @@ -13213,6 +17338,7 @@ span.mx_MVideoBody video.mx_MVideoBody { display: block; position: relative; } + .mx_AppsDrawer .mx_AppsContainer_resizerHandle { cursor: ns-resize; width: 100% !important; @@ -13220,6 +17346,7 @@ span.mx_MVideoBody video.mx_MVideoBody { position: absolute; bottom: 0 !important; } + .mx_AppsDrawer .mx_AppsContainer_resizerHandle:after { content: ""; position: absolute; @@ -13229,10 +17356,12 @@ span.mx_MVideoBody video.mx_MVideoBody { left: calc(50% - 32px); right: calc(50% - 32px); } + .mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after { opacity: 0.8; background: #2e2f32; } + .mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before { position: absolute; left: 3px; @@ -13246,9 +17375,11 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: #2e2f32; opacity: 0.8; } + .mx_AppsContainer_resizer { margin-bottom: 8px; } + .mx_AppsContainer { display: -webkit-box; display: -ms-flexbox; @@ -13270,23 +17401,29 @@ span.mx_MVideoBody video.mx_MVideoBody { flex: 1; min-height: 0; } + .mx_AppsContainer .mx_AppTile:first-of-type { border-left-width: 8px; border-radius: 10px 0 0 10px; } + .mx_AppsContainer .mx_AppTile:last-of-type { border-right-width: 8px; border-radius: 0 10px 10px 0; } + .mx_AppsContainer .mx_ResizeHandle_horizontal { position: relative; } + .mx_AppsContainer .mx_ResizeHandle_horizontal > div { width: 0; } + .mx_AppsDrawer_2apps .mx_AppTile { width: 50%; } + .mx_AppsDrawer_2apps .mx_AppTile:nth-child(3) { -webkit-box-flex: 1; -ms-flex-positive: 1; @@ -13294,9 +17431,11 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 0 !important; min-width: 240px !important; } + .mx_AppsDrawer_3apps .mx_AppTile { width: 33%; } + .mx_AppsDrawer_3apps .mx_AppTile:nth-child(3) { -webkit-box-flex: 1; -ms-flex-positive: 1; @@ -13304,6 +17443,7 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 0 !important; min-width: 240px !important; } + .mx_AppTile { width: 50%; min-width: 240px; @@ -13321,12 +17461,14 @@ span.mx_MVideoBody video.mx_MVideoBody { box-sizing: border-box; background-color: #f2f5f8; } + .mx_AppTileFullWidth { width: 100% !important; border: 5px solid #f2f5f8; border-radius: 8px; background-color: #f2f5f8; } + .mx_AppTile_mini, .mx_AppTileFullWidth { margin: 0; @@ -13339,10 +17481,12 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-direction: column; flex-direction: column; } + .mx_AppTile_mini { width: 100%; height: 200px; } + .mx_AppTile .mx_AppTile_persistedWrapper, .mx_AppTile_mini .mx_AppTile_persistedWrapper, .mx_AppTileFullWidth .mx_AppTile_persistedWrapper { @@ -13350,10 +17494,12 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 1; flex: 1; } + .mx_AppTile_persistedWrapper div { width: 100%; height: 100%; } + .mx_AppTileMenuBar { margin: 0; font-size: 1.2rem; @@ -13375,18 +17521,22 @@ span.mx_MVideoBody video.mx_MVideoBody { padding-top: 2px; padding-bottom: 8px; } + .mx_AppTileMenuBarTitle { line-height: 20px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .mx_AppTileMenuBarTitle .mx_WidgetAvatar { margin-right: 12px; } + .mx_AppTileMenuBarTitle > :last-child { margin-left: 9px; } + .mx_AppTileMenuBarWidgets { float: right; display: -webkit-box; @@ -13400,6 +17550,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-align: center; align-items: center; } + .mx_AppTileMenuBar_iconButton { width: 12px; height: 12px; @@ -13412,27 +17563,33 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: #212121; margin: 0 3px; } + .mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout { -webkit-mask-image: url(../../img/feather-customised/widget/external-link.7ab6751.svg); mask-image: url(../../img/feather-customised/widget/external-link.7ab6751.svg); } + .mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu { -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); } + .mx_AppTileBody { height: 100%; background-color: #fff; } + .mx_AppTileBody, .mx_AppTileBody_mini { width: 100%; overflow: hidden; border-radius: 8px; } + .mx_AppTileBody_mini { height: 200px; } + .mx_AppTile .mx_AppTileBody, .mx_AppTile_mini .mx_AppTileBody_mini, .mx_AppTileFullWidth .mx_AppTileBody { @@ -13441,18 +17598,21 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 1; flex: 1; } + .mx_AppTileBody_mini iframe, .mx_AppTileBody iframe { border: none; width: 100%; height: 100%; } + .mx_AppTileBody iframe { overflow: hidden; padding: 0; margin: 0; display: block; } + .mx_AppPermissionWarning { text-align: center; display: -webkit-box; @@ -13471,19 +17631,24 @@ span.mx_MVideoBody video.mx_MVideoBody { align-items: center; font-size: 1.6rem; } + .mx_AppPermissionWarning_row { margin-bottom: 12px; } + .mx_AppPermissionWarning_smallText { font-size: 1.2rem; } + .mx_AppPermissionWarning_bolder { font-weight: 600; } + .mx_AppPermissionWarning h4 { margin: 0; padding: 0; } + .mx_AppPermissionWarning_helpIcon { margin-top: 1px; margin-right: 2px; @@ -13491,6 +17656,7 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 10px; display: inline-block; } + .mx_AppPermissionWarning_helpIcon:before { display: inline-block; background-color: #0dbd8b; @@ -13507,6 +17673,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-image: url(../../img/feather-customised/help-circle.03fb6cf.svg); mask-image: url(../../img/feather-customised/help-circle.03fb6cf.svg); } + .mx_AppPermissionWarning_tooltip { -webkit-box-shadow: none; box-shadow: none; @@ -13516,11 +17683,13 @@ span.mx_MVideoBody video.mx_MVideoBody { border-radius: 3px; padding: 6px 8px; } + .mx_AppPermissionWarning_tooltip ul { list-style-position: inside; padding-left: 2px; margin-left: 0; } + .mx_AppLoading { display: -webkit-box; display: -ms-flexbox; @@ -13541,6 +17710,7 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: #fff !important; border-radius: 8px; } + .mx_AppLoading .mx_Spinner { position: absolute; top: 0; @@ -13548,6 +17718,7 @@ span.mx_MVideoBody video.mx_MVideoBody { left: 0; right: 0; } + .mx_AppLoading_spinner_fadeIn { -webkit-animation-fill-mode: backwards; animation-fill-mode: backwards; @@ -13558,6 +17729,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; animation-name: mx_AppLoading_spinner_fadeIn_animation; } + @-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { 0% { opacity: 0; @@ -13566,6 +17738,7 @@ span.mx_MVideoBody video.mx_MVideoBody { opacity: 1; } } + @keyframes mx_AppLoading_spinner_fadeIn_animation { 0% { opacity: 0; @@ -13574,12 +17747,15 @@ span.mx_MVideoBody video.mx_MVideoBody { opacity: 1; } } + .mx_AppLoading iframe { display: none; } + .mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper { z-index: 1; } + .mx_Autocomplete { position: absolute; bottom: 0; @@ -13594,9 +17770,11 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); } + .mx_Autocomplete_ProviderSection { border-bottom: 1px solid transparent; } + .mx_Autocomplete_Completion_block { height: 34px; display: -webkit-box; @@ -13613,9 +17791,11 @@ span.mx_MVideoBody video.mx_MVideoBody { align-items: center; color: #2e2f32; } + .mx_Autocomplete_Completion_block * { margin: 0 3px; } + .mx_Autocomplete_Completion_pill { -webkit-box-sizing: border-box; box-sizing: border-box; @@ -13635,18 +17815,22 @@ span.mx_MVideoBody video.mx_MVideoBody { align-items: center; color: #2e2f32; } + .mx_Autocomplete_Completion_pill > * { margin-right: 0.3rem; } + .mx_Autocomplete_Completion_subtitle { font-style: italic; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } + .mx_Autocomplete_Completion_description { color: grey; } + .mx_Autocomplete_Completion_container_pill { margin: 12px; display: -webkit-box; @@ -13655,6 +17839,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-flow: wrap; flex-flow: wrap; } + .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description, .mx_Autocomplete_Completion_container_truncate @@ -13666,47 +17851,58 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow: hidden; text-overflow: ellipsis; } + .mx_Autocomplete_Completion.selected, .mx_Autocomplete_Completion:hover { background: #f2f5f8; outline: none; } + .mx_Autocomplete_provider_name { margin: 12px; color: #2e2f32; font-weight: 400; opacity: 0.4; } + .m_RoomView_auxPanel_stateViews { padding: 5px 5px 5px 19px; border-bottom: 1px solid transparent; } + .m_RoomView_auxPanel_stateViews_span a { text-decoration: none; color: inherit; } + .m_RoomView_auxPanel_stateViews_span[data-severity="warning"] { font-weight: 700; color: orange; } + .m_RoomView_auxPanel_stateViews_span[data-severity="alert"] { font-weight: 700; color: red; } + .m_RoomView_auxPanel_stateViews_span[data-severity="normal"] { font-weight: 400; } + .m_RoomView_auxPanel_stateViews_span[data-severity="notice"] { font-weight: 400; color: #a2a2a2; } + .m_RoomView_auxPanel_stateViews_delim { padding: 0 5px; color: #a2a2a2; } + .mx_BasicMessageComposer { position: relative; } + .mx_BasicMessageComposer .mx_BasicMessageComposer_inputEmpty > :first-child:before { @@ -13719,6 +17915,7 @@ span.mx_MVideoBody video.mx_MVideoBody { pointer-events: none; white-space: nowrap; } + @-webkit-keyframes visualbell { 0% { background-color: #faa; @@ -13727,16 +17924,19 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: #fff; } } + .mx_BasicMessageComposer.mx_BasicMessageComposer_input_error { -webkit-animation: visualbell 0.2s; animation: visualbell 0.2s; } + .mx_BasicMessageComposer .mx_BasicMessageComposer_input { white-space: pre-wrap; word-wrap: break-word; outline: none; overflow-x: hidden; } + .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill, @@ -13745,6 +17945,7 @@ span.mx_MVideoBody video.mx_MVideoBody { span.mx_UserPill { position: relative; } + .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar span.mx_RoomPill:before, @@ -13765,14 +17966,17 @@ span.mx_MVideoBody video.mx_MVideoBody { line-height: 1.6rem; font-size: 1.04rem; } + .mx_BasicMessageComposer .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled { pointer-events: none; } + .mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper { position: relative; height: 0; } + .mx_E2EIcon { width: 16px; height: 16px; @@ -13780,6 +17984,7 @@ span.mx_MVideoBody video.mx_MVideoBody { position: relative; display: block; } + .mx_E2EIcon_normal:after, .mx_E2EIcon_normal:before, .mx_E2EIcon_verified:after, @@ -13800,51 +18005,61 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-size: contain; mask-size: contain; } + .mx_E2EIcon:before { background-color: #fff; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: center; mask-position: center; - -webkit-mask-size: 90%; - mask-size: 90%; + -webkit-mask-size: 80%; + mask-size: 80%; } + .mx_E2EIcon:before, .mx_E2EIcon_bordered { -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); } + .mx_E2EIcon_bordered { background-color: #f3f8fd; } + .mx_E2EIcon_bordered:after { -webkit-mask-size: 75%; mask-size: 75%; } + .mx_E2EIcon_bordered:before { - -webkit-mask-size: 65%; - mask-size: 65%; + -webkit-mask-size: 60%; + mask-size: 60%; } + .mx_E2EIcon_warning:after { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); background-color: #ff4b55; } + .mx_E2EIcon_normal:after { -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); background-color: #91a1c0; } + .mx_E2EIcon_verified:after { -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); mask-image: url(../../img/e2e/verified.5be6c9f.svg); background-color: #0dbd8b; } + .mx_EditMessageComposer { padding: 3px; margin: -7px -10px -5px; overflow: visible !important; } + .mx_EditMessageComposer .mx_BasicMessageComposer_input { border-radius: 4px; border: 1px solid transparent; @@ -13852,9 +18067,11 @@ span.mx_MVideoBody video.mx_MVideoBody { max-height: 200px; padding: 3px 6px; } + .mx_EditMessageComposer .mx_BasicMessageComposer_input:focus { border-color: rgba(13, 189, 139, 0.5); } + .mx_EditMessageComposer .mx_EditMessageComposer_buttons { display: -webkit-box; display: -ms-flexbox; @@ -13874,14 +18091,17 @@ span.mx_MVideoBody video.mx_MVideoBody { margin: 0 -110px 0 0; padding: 5px 147px 5px 5px; } + .mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton { margin-left: 5px; padding: 5px 40px; } + .mx_EventTile_last .mx_EditMessageComposer_buttons { position: static; margin-right: -147px; } + .mx_EntityTile { display: -webkit-box; display: -ms-flexbox; @@ -13892,16 +18112,19 @@ span.mx_MVideoBody video.mx_MVideoBody { color: #2e2f32; cursor: pointer; } + .mx_EntityTile .mx_E2EIcon { margin: 0; position: absolute; bottom: 2px; right: 7px; } + .mx_EntityTile:hover { padding-right: 30px; position: relative; } + .mx_EntityTile:hover:before { content: ""; position: absolute; @@ -13915,23 +18138,28 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 16px; background-color: #91a1c0; } + .mx_EntityTile .mx_PresenceLabel { display: none; } + .mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel { display: block; } + .mx_EntityTile_invite { display: table-cell; vertical-align: middle; margin-left: 10px; width: 26px; } + .mx_EntityTile_avatar, .mx_GroupRoomTile_avatar { padding: 4px 12px 4px 3px; position: relative; } + .mx_EntityTile_name, .mx_GroupRoomTile_name { -webkit-box-flex: 1; @@ -13942,29 +18170,34 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; white-space: nowrap; } + .mx_EntityTile_details { overflow: hidden; -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } + .mx_EntityTile_ellipsis .mx_EntityTile_name, .mx_EntityTile_invitePlaceholder .mx_EntityTile_name { font-style: italic; color: #2e2f32; } + .mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, .mx_EntityTile_offline_beenactive .mx_EntityTile_name, .mx_EntityTile_unavailable .mx_EntityTile_avatar, .mx_EntityTile_unavailable .mx_EntityTile_name { opacity: 0.5; } + .mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, .mx_EntityTile_offline_neveractive .mx_EntityTile_name, .mx_EntityTile_unknown .mx_EntityTile_avatar, .mx_EntityTile_unknown .mx_EntityTile_name { opacity: 0.25; } + .mx_EntityTile_subtext { font-size: 1.1rem; opacity: 0.5; @@ -13972,6 +18205,7 @@ span.mx_MVideoBody video.mx_MVideoBody { white-space: nowrap; text-overflow: clip; } + .mx_EntityTile_power { -webkit-padding-start: 6px; padding-inline-start: 6px; @@ -13982,20 +18216,420 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; white-space: nowrap; } + .mx_EntityTile:hover .mx_EntityTile_power { display: none; } -.mx_EventTile { + +.mx_EventTile[data-layout="bubble"], +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary { + --avatarSize: 32px; + --gutterSize: 11px; + --cornerRadius: 12px; + --maxWidth: 70%; +} + +.mx_EventTile[data-layout="bubble"] { + position: relative; + margin-top: var(--gutterSize); + margin-left: 50px; + margin-right: 100px; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation { + margin-top: 2px; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile { + padding-top: 0; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_selected:before, +.mx_EventTile[data-layout="bubble"]:hover:before { + content: ""; + position: absolute; + top: -1px; + bottom: -1px; + left: -60px; + right: -60px; + z-index: -1; + background: #fefcf5; + border-radius: 4px; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_selected + .mx_EventTile_avatar + img, +.mx_EventTile[data-layout="bubble"]:hover .mx_EventTile_avatar img { + -webkit-box-shadow: 0 0 0 3px #fefcf5; + box-shadow: 0 0 0 3px #fefcf5; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile_line, +.mx_EventTile[data-layout="bubble"] .mx_SenderProfile { + width: -webkit-fit-content; + width: -moz-fit-content; + width: fit-content; + max-width: 70%; +} + +.mx_EventTile[data-layout="bubble"] .mx_SenderProfile { + position: relative; + top: -2px; + left: 2px; +} + +.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line { + border-bottom-right-radius: var(--cornerRadius); +} + +.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_avatar { + left: -34px; +} + +.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_MessageActionBar { + right: 0; + -webkit-transform: translate3d(90%, 50%, 0); + transform: translate3d(90%, 50%, 0); +} + +.mx_EventTile[data-layout="bubble"][data-self="false"] { + --backgroundColor: #f7f8f9; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line { + border-bottom-left-radius: var(--cornerRadius); + float: right; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line > a { + left: auto; + right: -68px; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_SenderProfile { + display: none; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] + .mx_ReplyTile + .mx_SenderProfile { + display: block; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_ReactionsRow { + float: right; + clear: right; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] + .mx_ReactionsRow + > :last-child { + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_avatar { + top: -19px; + right: -35px; +} + +.mx_EventTile[data-layout="bubble"][data-self="true"] { + --backgroundColor: #f8fdfc; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile_line { + position: relative; + padding: var(--gutterSize); + border-top-left-radius: var(--cornerRadius); + border-top-right-radius: var(--cornerRadius); + background: var(--backgroundColor); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + grid-gap: 5px; + gap: 5px; + margin: 0 -12px 0 -9px; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile_line > a { + position: absolute; + padding: 10px 20px; + top: 0; + left: -68px; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] + .mx_EventTile_line { + border-top-left-radius: 0; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] + .mx_EventTile_line { + border-bottom-left-radius: var(--cornerRadius); +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] + .mx_EventTile_line { + border-top-right-radius: 0; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] + .mx_EventTile_line { + border-bottom-right-radius: var(--cornerRadius); +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar { + position: absolute; + top: 0; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar img { + -webkit-box-shadow: 0 0 0 3px #fff; + box-shadow: 0 0 0 3px #fff; + border-radius: 50%; +} + +.mx_EventTile[data-layout="bubble"] .mx_BaseAvatar, +.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar { + line-height: 1; +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + > .mx_EventTile_line { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + .mx_ReplyThread_show { + -webkit-box-ordinal-group: 100000; + -ms-flex-order: 99999; + order: 99999; +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyThread { + margin: 0 calc(var(--gutterSize) * -1); +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + .mx_ReplyThread + .mx_EventTile_reply { + max-width: 90%; + padding: 0; +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + .mx_ReplyThread + .mx_EventTile_reply + > a { + display: none !important; +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + .mx_ReplyThread + .mx_EventTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + grid-gap: var(--gutterSize); + gap: var(--gutterSize); +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + .mx_ReplyThread + .mx_EventTile + .mx_EventTile_avatar { + position: static; +} + +.mx_EventTile[data-layout="bubble"][data-has-reply="true"] + .mx_ReplyThread + .mx_EventTile + .mx_SenderProfile { + display: none; +} + +.mx_EventTile[data-layout="bubble"] .mx_EditMessageComposer_buttons { + position: static; + padding: 0; + margin: 0; + background: transparent; +} + +.mx_EventTile[data-layout="bubble"] .mx_ReactionsRow { + margin-right: -18px; + margin-left: -9px; +} + +.mx_EventTile[data-layout="bubble"] .mx_ReplyThread { + border-left-width: 2px; + border-left-color: #c1c6cd; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bubbleContainer, +.mx_EventTile[data-layout="bubble"].mx_EventTile_info, +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary[data-expanded="false"] { + --backgroundColor: transparent; + --gutterSize: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding: 5px 0; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bubbleContainer + .mx_EventTile_avatar, +.mx_EventTile[data-layout="bubble"].mx_EventTile_info .mx_EventTile_avatar, +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary[data-expanded="false"] + .mx_EventTile_avatar { + position: static; + -webkit-box-ordinal-group: 0; + -ms-flex-order: -1; + order: -1; + margin-right: 5px; +} + +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary { + --maxWidth: 80%; + margin-left: calc(var(--avatarSize) + var(--gutterSize)); + margin-right: calc(var(--gutterSize) + var(--avatarSize)); +} + +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary + .mx_EventListSummary_toggle { + float: none; + -webkit-box-ordinal-group: 10; + -ms-flex-order: 9; + order: 9; + margin: 0 0 0 5px; +} + +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary + .mx_EventListSummary_avatars { + padding-top: 0; +} + +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary:after { + content: ""; + clear: both; +} + +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary .mx_EventTile { + margin: 0 6px; +} + +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary .mx_EventTile_line { + margin: 0 5px; +} + +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary + .mx_EventTile_line + > a { + left: auto; + right: 0; + -webkit-transform: translateX(calc(100% + 5px)); + transform: translateX(calc(100% + 5px)); +} + +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary + .mx_MessageActionBar { + -webkit-transform: translate3d(90%, 0, 0); + transform: translate3d(90%, 0, 0); +} + +.mx_EventTile[data-layout="bubble"] + ~ .mx_EventListSummary[data-expanded="false"] { + padding: 0 34px; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line, +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad:hover:before, +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary .mx_EventTile_line, +.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary:hover:before { + background: transparent; +} + +.mx_EventTile[data-layout="bubble"] + .mx_EventListSummary .mx_EventTile { + margin-top: 0; + padding: 2px 0; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventListSummary_toggle { + margin-right: 55px; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad > .mx_EventTile_line { + display: grid; + grid-template: "reply reply" auto "shield body" auto "shield link" auto/auto 1fr; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad + > .mx_EventTile_line + .mx_EventTile_e2eIcon { + grid-area: shield; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad + > .mx_EventTile_line + .mx_UnknownBody { + grid-area: body; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad + > .mx_EventTile_line + .mx_EventTile_keyRequestInfo { + grid-area: link; +} + +.mx_EventTile[data-layout="bubble"].mx_EventTile_bad + > .mx_EventTile_line + .mx_ReplyThread_wrapper { + grid-area: reply; +} + +.mx_EventTile[data-layout="bubble"] .mx_EventTile_readAvatars { + position: absolute; + right: -110px; + bottom: 0; + top: auto; +} + +.mx_EventTile[data-layout="bubble"] .mx_MTextBody { + max-width: 100%; +} + +.mx_EventTile:not([data-layout="bubble"]) { max-width: 100%; clear: both; padding-top: 18px; font-size: 1.4rem; position: relative; } -.mx_EventTile.mx_EventTile_info { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_info { padding-top: 1px; } -.mx_EventTile_avatar { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_avatar { top: 14px; left: 8px; cursor: pointer; @@ -14004,21 +18638,27 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-user-select: none; user-select: none; } -.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_info + .mx_EventTile_avatar { top: 0.6rem; left: 64px; } -.mx_EventTile_continuation { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_continuation { padding-top: 0 !important; } -.mx_EventTile_continuation.mx_EventTile_isEditing { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_continuation.mx_EventTile_isEditing { padding-top: 5px !important; margin-top: -5px; } -.mx_EventTile_isEditing { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_isEditing { background-color: #f3f8fd; } -.mx_EventTile .mx_SenderProfile { + +.mx_EventTile:not([data-layout="bubble"]) .mx_SenderProfile { color: #2e2f32; font-size: 1.4rem; display: inline-block; @@ -14031,7 +18671,8 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; max-width: calc(100% - 64px); } -.mx_EventTile .mx_SenderProfile .mx_Flair { + +.mx_EventTile:not([data-layout="bubble"]) .mx_SenderProfile .mx_Flair { opacity: 0.7; margin-left: 5px; display: inline-block; @@ -14042,17 +18683,20 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-user-select: none; user-select: none; } -.mx_EventTile .mx_SenderProfile .mx_Flair img { + +.mx_EventTile:not([data-layout="bubble"]) .mx_SenderProfile .mx_Flair img { vertical-align: -2px; margin-right: 2px; border-radius: 8px; } -.mx_EventTile_isEditing .mx_MessageTimestamp { - visibility: hidden !important; -} -.mx_EventTile .mx_MessageTimestamp { - display: block; + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_isEditing + .mx_MessageTimestamp { visibility: hidden; +} + +.mx_EventTile:not([data-layout="bubble"]) .mx_MessageTimestamp { + display: block; white-space: nowrap; left: 0; text-align: center; @@ -14061,102 +18705,95 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-user-select: none; user-select: none; } -.mx_EventTile_continuation .mx_EventTile_line { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_continuation + .mx_EventTile_line { clear: both; } -.mx_EventTile_line, -.mx_EventTile_reply { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_reply { position: relative; padding-left: 64px; - border-radius: 4px; + border-radius: 8px; } -.mx_EventListSummary .mx_EventTile_line, -.mx_RoomView_timeline_rr_enabled .mx_EventTile_line { - margin-right: 110px; -} -.mx_EventTile_bubbleContainer { - display: grid; - grid-template-columns: 1fr 100px; -} -.mx_EventTile_bubbleContainer .mx_EventTile_line { - margin-right: 0; - grid-column: 1/3; - padding: 0 !important; -} -.mx_EventTile_bubbleContainer .mx_EventTile_msgOption { - grid-column: 2; -} -.mx_EventTile_reply { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_reply { margin-right: 10px; } -.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { - font-size: 48px !important; - line-height: 57px !important; -} -.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { - visibility: visible; -} -.mx_EventTile_selected > div > a > .mx_MessageTimestamp { - left: 3px; - width: auto; -} -.mx_EventTile.focus-visible:focus-within > div > a > .mx_MessageTimestamp, -.mx_EventTile.mx_EventTile_actionBarFocused > div > a > .mx_MessageTimestamp, -.mx_EventTile:hover > div > a > .mx_MessageTimestamp, -.mx_EventTile_last > div > a > .mx_MessageTimestamp, -.mx_IRCLayout - .mx_EventTile.focus-visible:focus-within + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_selected + > div > a - > .mx_MessageTimestamp, -.mx_IRCLayout - .mx_EventTile.mx_EventTile_actionBarFocused - > a - > .mx_MessageTimestamp, -.mx_IRCLayout .mx_EventTile:hover > a > .mx_MessageTimestamp, -.mx_IRCLayout .mx_EventTile_last > a > .mx_MessageTimestamp, -.mx_IRCLayout .mx_ReplyThread .mx_EventTile > a > .mx_MessageTimestamp { - visibility: visible; + > .mx_MessageTimestamp { + left: -4px; } -.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar, -.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar, -.mx_EventTile:hover .mx_MessageActionBar, -[data-whatinput="keyboard"] .mx_EventTile:focus-within .mx_MessageActionBar { - visibility: visible; -} -.mx_EventTile_selected > .mx_EventTile_line { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_selected + > .mx_EventTile_line { border-left: 4px solid #0dbd8b; padding-left: 60px; background-color: #f6f7f8; } -.mx_EventTile_highlight, -.mx_EventTile_highlight .markdown-body { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight, +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight + .markdown-body { color: #ff4b55; } -.mx_EventTile_highlight .markdown-body .mx_EventTile_line, -.mx_EventTile_highlight .mx_EventTile_line { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight + .markdown-body + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight + .mx_EventTile_line { background-color: #fff8e3; } -.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_info .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]) + ~ .mx_EventListSummary + .mx_EventTile_avatar + ~ .mx_EventTile_line { + padding-left: 82px; +} + +.mx_EventTile:not([data-layout="bubble"]) + ~ .mx_EventListSummary + .mx_EventTile_line { + padding-left: 64px; +} + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_selected.mx_EventTile_info + .mx_EventTile_line { padding-left: 78px; } -.mx_EventTile.focus-visible:focus-within .mx_EventTile_line, -.mx_EventTile.mx_EventTile_actionBarFocused .mx_EventTile_line, -.mx_EventTile:hover .mx_EventTile_line { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile.focus-visible:focus-within + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile.mx_EventTile_actionBarFocused + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile:hover + .mx_EventTile_line { background-color: #f6f7f8; } -.mx_EventTile_searchHighlight { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_searchHighlight { + background-color: #0dbd8b; + color: #fff; border-radius: 5px; padding-left: 2px; padding-right: 2px; cursor: pointer; } -.mx_EventTile_searchHighlight, -.mx_EventTile_searchHighlight a { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_searchHighlight a { background-color: #0dbd8b; color: #fff; } -.mx_EventTile_receiptSending:before, -.mx_EventTile_receiptSent:before { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSending:before, +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSent:before { background-color: #8d99a5; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @@ -14172,18 +18809,22 @@ span.mx_MVideoBody video.mx_MVideoBody { left: 0; right: 0; } -.mx_EventTile_receiptSent:before { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSent:before { -webkit-mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); } -.mx_EventTile_receiptSending:before { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSending:before { -webkit-mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); } -.mx_EventTile_contextual { + +.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_contextual { opacity: 0.4; } -.mx_EventTile_msgOption { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_msgOption { float: right; text-align: right; position: relative; @@ -14191,9 +18832,146 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 1px; margin-right: 10px; } -.mx_EventTile_msgOption a { + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_msgOption a { text-decoration: none; } + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_body { + overflow-y: hidden; +} + +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified + .mx_EventTile_line { + padding-left: 60px; +} + +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified + .mx_EventTile_line { + border-left: 4px solid #76cfa5; +} + +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified + .mx_EventTile_line { + border-left: 4px solid #e8bf37; +} + +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown.mx_EventTile_info + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified.mx_EventTile_info + .mx_EventTile_line, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified.mx_EventTile_info + .mx_EventTile_line { + padding-left: 78px; +} + +.mx_EventTile:not([data-layout="bubble"]):hover .mx_EventTile_e2eIcon { + opacity: 1; +} + +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown + .mx_EventTile_line + > a + > .mx_MessageTimestamp, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified + .mx_EventTile_line + > a + > .mx_MessageTimestamp, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified + .mx_EventTile_line + > a + > .mx_MessageTimestamp { + left: -4px; +} + +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown + .mx_EventTile_line + > .mx_EventTile_e2eIcon, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified + .mx_EventTile_line + > .mx_EventTile_e2eIcon, +.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified + .mx_EventTile_line + > .mx_EventTile_e2eIcon { + display: block; + left: 41px; +} + +.mx_EventTile:not([data-layout="bubble"]) .mx_MImageBody { + margin-right: 34px; +} + +.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_e2eIcon { + position: absolute; + top: 6px; + left: 44px; + bottom: 0; + right: 0; +} + +.mx_EventTile:not([data-layout="bubble"]) .mx_ReactionsRow { + margin: 0; + padding: 6px 60px; +} + +.mx_EventTile_content { + overflow-y: hidden; + overflow-x: hidden; + margin-right: 34px; +} + +.mx_EventTile_spoiler { + cursor: pointer; +} + +.mx_EventTile_spoiler_reason { + color: #acacac; + font-size: 1.1rem; +} + +.mx_EventTile_spoiler_content { + -webkit-filter: blur(5px) saturate(0.1) sepia(1); + filter: blur(5px) saturate(0.1) sepia(1); + -webkit-transition-duration: 0.5s; + transition-duration: 0.5s; +} + +.mx_EventTile_spoiler.visible > .mx_EventTile_spoiler_content { + -webkit-filter: none; + filter: none; +} + +.mx_RoomView_timeline_rr_enabled + .mx_EventTile:not([data-layout="bubble"]) + .mx_EventTile_line { + margin-right: 110px; +} + +.mx_EventTile_bubbleContainer { + display: grid; + grid-template-columns: 1fr 100px; +} + +.mx_EventTile_bubbleContainer .mx_EventTile_line { + margin-right: 0; + grid-column: 1/3; + padding: 0 !important; +} + +.mx_EventTile_bubbleContainer .mx_EventTile_msgOption { + grid-column: 2; +} + +.mx_EventTile_bubbleContainer:hover .mx_EventTile_line { + background-color: inherit !important; +} + .mx_EventTile_readAvatars { position: relative; display: inline-block; @@ -14206,11 +18984,13 @@ span.mx_MVideoBody video.mx_MVideoBody { user-select: none; z-index: 1; } + .mx_EventTile_readAvatars .mx_BaseAvatar { position: absolute; display: inline-block; height: 1.4rem; width: 1.4rem; + will-change: left, top; -webkit-transition: left 0.1s ease-out, top 0.3s ease-out; transition: left 0.1s ease-out, top 0.3s ease-out; -webkit-transition: left var(--transition-short) ease-out, @@ -14218,50 +18998,40 @@ span.mx_MVideoBody video.mx_MVideoBody { transition: left var(--transition-short) ease-out, top var(--transition-standard) ease-out; } + .mx_EventTile_readAvatarRemainder { color: #acacac; font-size: 1.1rem; position: absolute; } -.mx_EventTile_content { - display: block; - overflow-y: hidden; - overflow-x: hidden; - margin-right: 34px; + +.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { + font-size: 48px !important; + line-height: 57px !important; } -.mx_EventTile_body { - overflow-y: hidden; -} -.mx_EventTile_spoiler { + +.mx_EventTile_content .mx_EventTile_edited { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-size: 1.2rem; + color: #9e9e9e; + display: inline-block; + margin-left: 9px; cursor: pointer; } -.mx_EventTile_spoiler_reason { - color: #acacac; - font-size: 1.1rem; -} -.mx_EventTile_spoiler_content { - -webkit-filter: blur(5px) saturate(0.1) sepia(1); - filter: blur(5px) saturate(0.1) sepia(1); - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} -.mx_EventTile_spoiler.visible > .mx_EventTile_spoiler_content { - -webkit-filter: none; - filter: none; -} + .mx_EventTile_e2eIcon { - position: absolute; - top: 6px; - left: 44px; + position: relative; width: 14px; height: 14px; display: block; - bottom: 0; - right: 0; opacity: 0.2; background-repeat: no-repeat; background-size: contain; } + .mx_EventTile_e2eIcon:after, .mx_EventTile_e2eIcon:before { content: ""; @@ -14274,6 +19044,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-size: contain; mask-size: contain; } + .mx_EventTile_e2eIcon:after, .mx_EventTile_e2eIcon:before { -webkit-mask-repeat: no-repeat; @@ -14281,130 +19052,61 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-position: center; mask-position: center; } + .mx_EventTile_e2eIcon:before { background-color: #fff; -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); - -webkit-mask-size: 90%; - mask-size: 90%; + -webkit-mask-size: 80%; + mask-size: 80%; } + .mx_EventTile_e2eIcon_undecryptable:after, .mx_EventTile_e2eIcon_unverified:after { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); background-color: #ff4b55; } + .mx_EventTile_e2eIcon_undecryptable, .mx_EventTile_e2eIcon_unverified { opacity: 1; } + .mx_EventTile_e2eIcon_unknown:after { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); background-color: #ff4b55; } + .mx_EventTile_e2eIcon_unknown { opacity: 1; } + .mx_EventTile_e2eIcon_unencrypted:after { -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); mask-image: url(../../img/e2e/warning.78bb264.svg); background-color: #ff4b55; } + .mx_EventTile_e2eIcon_unencrypted { opacity: 1; } + .mx_EventTile_e2eIcon_unauthenticated:after { -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); mask-image: url(../../img/e2e/normal.76f0c09.svg); background-color: #91a1c0; } + .mx_EventTile_e2eIcon_unauthenticated { opacity: 1; } -.mx_EventTile_keyRequestInfo { - font-size: 1.2rem; -} -.mx_EventTile_keyRequestInfo_text { - opacity: 0.5; -} -.mx_EventTile_keyRequestInfo_text a { - color: #2e2f32; - text-decoration: underline; - cursor: pointer; -} -.mx_EventTile_keyRequestInfo_tooltip_contents p { - text-align: auto; - margin-left: 3px; - margin-right: 3px; -} -.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { - margin-top: 0; -} -.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { - margin-bottom: 0; -} -.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { - padding-left: 60px; -} -.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { - border-left: 4px solid #76cfa5; -} -.mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { - border-left: 4px solid #e8bf37; -} -.mx_EventTile:hover.mx_EventTile_unknown.mx_EventTile_info .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info - .mx_EventTile_line, -.mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line { - padding-left: 78px; -} -.mx_EventTile:hover .mx_EventTile_e2eIcon { - opacity: 1; -} -.mx_EventTile:hover.mx_EventTile_unknown - .mx_EventTile_line - > a - > .mx_MessageTimestamp, -.mx_EventTile:hover.mx_EventTile_unverified - .mx_EventTile_line - > a - > .mx_MessageTimestamp, -.mx_EventTile:hover.mx_EventTile_verified - .mx_EventTile_line - > a - > .mx_MessageTimestamp { - width: 38px; -} -.mx_EventTile:hover.mx_EventTile_unknown - .mx_EventTile_line - > .mx_EventTile_e2eIcon, -.mx_EventTile:hover.mx_EventTile_unverified - .mx_EventTile_line - > .mx_EventTile_e2eIcon, -.mx_EventTile:hover.mx_EventTile_verified - .mx_EventTile_line - > .mx_EventTile_e2eIcon { - display: block; - left: 41px; -} -.mx_EventTile_content .mx_EventTile_edited { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: 1.2rem; - color: #9e9e9e; - display: inline-block; - margin-left: 9px; - cursor: pointer; -} + .mx_EventTile_body pre { border: 1px solid transparent; } + .mx_EventTile_content .markdown-body { font-family: inherit !important; white-space: normal !important; @@ -14412,38 +19114,47 @@ span.mx_MVideoBody video.mx_MVideoBody { color: inherit; font-size: 1.4rem; } + .mx_EventTile_content .markdown-body code, .mx_EventTile_content .markdown-body pre { - font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace; - color: #333; + font-family: Menlo, Consolas, Liberation Mono, Lucida Console, monospace !important; + background-color: #f3f8fd; } + +.mx_EventTile_content .markdown-body pre code > * { + display: inline-block; +} + .mx_EventTile_content .markdown-body pre { overflow-x: overlay; overflow-y: visible; } -.mx_EventTile_content .markdown-body code { - background-color: #f8f8f8; -} + .mx_EventTile_lineNumbers { float: left; margin: 0 0.5em 0 -1.5em; color: grey; } + .mx_EventTile_lineNumber { text-align: right; display: block; padding-left: 1em; } + .mx_EventTile_collapsedCodeBlock { max-height: 30vh; } + .mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre, .mx_EventTile:hover .mx_EventTile_body pre { border: 1px solid #e5e5e5; } + .mx_EventTile_pre_container { position: relative; } + .mx_EventTile_button { position: absolute; display: inline-block; @@ -14455,17 +19166,21 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 19px; background-color: #2e2f32; } + .mx_EventTile_buttonBottom { top: 33px; } + .mx_EventTile_copyButton { -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); } + .mx_EventTile_collapseButton { -webkit-mask-image: url(../../img/feather-customised/minimise.aec9142.svg); mask-image: url(../../img/feather-customised/minimise.aec9142.svg); } + .mx_EventTile_collapseButton, .mx_EventTile_expandButton { -webkit-mask-size: 75%; @@ -14475,10 +19190,12 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; } + .mx_EventTile_expandButton { -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); mask-image: url(../../img/feather-customised/maximise.dc32127.svg); } + .mx_EventTile_body .mx_EventTile_pre_container:focus-within .mx_EventTile_collapseButton, @@ -14497,6 +19214,7 @@ span.mx_MVideoBody video.mx_MVideoBody { .mx_EventTile_expandButton { visibility: visible; } + .mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2, .mx_EventTile_content .markdown-body h3, @@ -14506,32 +19224,75 @@ span.mx_MVideoBody video.mx_MVideoBody { font-family: inherit !important; color: inherit; } + .mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2 { font-size: 1.5em; border-bottom: none !important; } + .mx_EventTile_content .markdown-body a { color: #238cf5; } + .mx_EventTile_content .markdown-body .hljs { display: inline !important; } + +.mx_EventTile_keyRequestInfo { + font-size: 1.2rem; +} + +.mx_EventTile_keyRequestInfo_text { + opacity: 0.5; +} + +.mx_EventTile_keyRequestInfo_text a { + color: #2e2f32; + text-decoration: underline; + cursor: pointer; +} + +.mx_EventTile_keyRequestInfo_tooltip_contents p { + text-align: auto; + margin-left: 3px; + margin-right: 3px; +} + +.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { + margin-top: 0; +} + +.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { + margin-bottom: 0; +} + .mx_EventTile_tileError { color: red; text-align: center; margin-right: 0; } + .mx_EventTile_tileError .mx_EventTile_line { padding-left: 0; margin-right: 0; } + .mx_EventTile_tileError .mx_EventTile_line span { padding: 4px 8px; } + .mx_EventTile_tileError a { margin-left: 1em; } + +.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar, +.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar, +.mx_EventTile:hover .mx_MessageActionBar, +[data-whatinput="keyboard"] .mx_EventTile:focus-within .mx_MessageActionBar { + visibility: visible; +} + @media only screen and (max-width: 480px) { .mx_EventTile_line, .mx_EventTile_reply { @@ -14543,41 +19304,44 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-right: 0; } } + .mx_GroupLayout .mx_EventTile > .mx_SenderProfile { line-height: 2rem; margin-left: 64px; } -.mx_GroupLayout .mx_EventTile > .mx_EventTile_line { - padding-left: 64px; -} + .mx_GroupLayout .mx_EventTile > .mx_EventTile_avatar { position: absolute; + z-index: 9; } + .mx_GroupLayout .mx_EventTile .mx_MessageTimestamp { position: absolute; width: 46px; } + .mx_GroupLayout .mx_EventTile .mx_EventTile_line, .mx_GroupLayout .mx_EventTile .mx_EventTile_reply { padding-top: 1px; padding-bottom: 3px; line-height: 2.2rem; } -.mx_GroupLayout .mx_EventTile_info .mx_EventTile_line { - padding-left: 82px; -} + .mx_MatrixChat_useCompactLayout .mx_EventTile { padding-top: 4px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply { padding-top: 0; padding-bottom: 0; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info { padding-top: 0; font-size: 1.3rem; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line, @@ -14586,22 +19350,27 @@ span.mx_MVideoBody video.mx_MVideoBody { .mx_EventTile_reply { line-height: 2rem; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { top: 4px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile { font-size: 1.3rem; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote { padding-top: 8px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar { top: 2px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line, @@ -14611,10 +19380,12 @@ span.mx_MVideoBody video.mx_MVideoBody { padding-top: 0; padding-bottom: 1px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { padding-top: 0; } + .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line, @@ -14624,15 +19395,19 @@ span.mx_MVideoBody video.mx_MVideoBody { padding-top: 0; padding-bottom: 0; } + .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar { top: 2px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon { top: 3px; } + .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars { top: -2rem; } + .mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_content @@ -14670,16 +19445,21 @@ span.mx_MVideoBody video.mx_MVideoBody { ul { margin-bottom: 4px; } + .mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 { margin-top: 6px; } + .mx_IRCLayout { --name-width: 70px; line-height: 1.8rem !important; } + .mx_IRCLayout .mx_EventTile > a { text-decoration: none; + min-width: 45px; } + .mx_IRCLayout .mx_EventTile { display: -webkit-box; display: -ms-flexbox; @@ -14693,9 +19473,11 @@ span.mx_MVideoBody video.mx_MVideoBody { align-items: flex-start; padding-top: 0; } + .mx_IRCLayout .mx_EventTile > * { margin-right: 5px; } + .mx_IRCLayout .mx_EventTile > .mx_EventTile_msgOption { -webkit-box-ordinal-group: 6; -ms-flex-order: 5; @@ -14703,32 +19485,14 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-negative: 0; flex-shrink: 0; } + .mx_IRCLayout .mx_EventTile > .mx_EventTile_msgOption .mx_EventTile_readAvatars { top: 0.2rem; } -.mx_IRCLayout .mx_EventTile > .mx_SenderProfile { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -ms-flex-negative: 0; - flex-shrink: 0; - width: var(--name-width); - text-overflow: ellipsis; - text-align: left; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - overflow: visible; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; -} + .mx_IRCLayout .mx_EventTile .mx_EventTile_line, .mx_IRCLayout .mx_EventTile .mx_EventTile_reply { padding: 0; @@ -14749,6 +19513,7 @@ span.mx_MVideoBody video.mx_MVideoBody { flex-shrink: 1; min-width: 0; } + .mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar { -webkit-box-ordinal-group: 2; -ms-flex-order: 1; @@ -14766,6 +19531,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-align: center; align-items: center; } + .mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar > .mx_BaseAvatar, .mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar > .mx_BaseAvatar > * { height: 1.4rem !important; @@ -14773,11 +19539,13 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1rem !important; line-height: 1.5rem !important; } + .mx_IRCLayout .mx_EventTile .mx_MessageTimestamp { font-size: 1rem; width: 45px; text-align: right; } + .mx_IRCLayout .mx_EventTile > .mx_EventTile_e2eIcon { position: absolute; right: unset; @@ -14792,103 +19560,130 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 1.8rem; background-position: 50%; } + .mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon, .mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody, -.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_ReplyThread_wrapper_empty, .mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent { display: inline-block; } + .mx_IRCLayout .mx_EventTile .mx_EventTile_reply { -webkit-box-ordinal-group: 5; -ms-flex-order: 4; order: 4; } + .mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons { position: relative; } + .mx_IRCLayout .mx_EventTile_emote > .mx_EventTile_avatar { margin-left: calc(var(--name-width) + 19px); } + .mx_IRCLayout blockquote { margin: 0; } + .mx_IRCLayout .mx_EventListSummary > .mx_EventTile_line { padding-left: calc(var(--name-width) + 74px); } + .mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars { padding: 0; margin: 0 9px 0 0; } + .mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { left: calc(var(--name-width) + 24px); top: 0; } + .mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line { left: calc(var(--name-width) + 24px); } + .mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent { line-height: 1.8rem; } + .mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, .mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line, .mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { padding-left: 0; border-left: 0; } -.mx_IRCLayout .mx_SenderProfile_hover { - background-color: #fff; - overflow: hidden; -} -.mx_IRCLayout .mx_SenderProfile_hover > span { + +.mx_IRCLayout .mx_SenderProfile { + width: var(--name-width); display: -webkit-box; display: -ms-flexbox; display: flex; -} -.mx_IRCLayout .mx_SenderProfile_hover > span > .mx_SenderProfile_name { - overflow: hidden; - text-overflow: ellipsis; - min-width: var(--name-width); - text-align: end; -} -.mx_IRCLayout .mx_SenderProfile:hover { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -ms-flex-negative: 0; + flex-shrink: 0; -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } -.mx_IRCLayout .mx_SenderProfile_hover:hover { + +.mx_IRCLayout .mx_SenderProfile > .mx_SenderProfile_displayName { + width: 100%; + text-align: end; + overflow: hidden; + text-overflow: ellipsis; +} + +.mx_IRCLayout .mx_SenderProfile > .mx_SenderProfile_mxid { + visibility: collapse; +} + +.mx_IRCLayout .mx_SenderProfile:hover { overflow: visible; - width: max(auto, 100%); z-index: 10; } + +.mx_IRCLayout .mx_SenderProfile:hover > .mx_SenderProfile_displayName { + overflow: visible; +} + +.mx_IRCLayout .mx_SenderProfile:hover > .mx_SenderProfile_mxid { + visibility: visible; +} + .mx_IRCLayout .mx_ReplyThread { margin: 0; } + .mx_IRCLayout .mx_ReplyThread .mx_SenderProfile { + -webkit-box-ordinal-group: unset; + -ms-flex-order: unset; + order: unset; + max-width: unset; width: unset; - max-width: var(--name-width); -} -.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile_hover { background: transparent; } -.mx_IRCLayout - .mx_ReplyThread - .mx_SenderProfile_hover - > span - > .mx_SenderProfile_name { - min-width: inherit; -} + .mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote > .mx_EventTile_avatar { margin-left: 0; } + .mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp { width: auto; } + .mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon { position: relative; -webkit-box-ordinal-group: 0; -ms-flex-order: -1; order: -1; } + .mx_IRCLayout .mx_ProfileResizer { position: absolute; height: 100%; @@ -14897,10 +19692,12 @@ span.mx_MVideoBody video.mx_MVideoBody { cursor: col-resize; z-index: 100; } + .mx_IRCLayout .mx_Flair > img { height: 1.4rem !important; width: 1.4rem !important; } + .mx_JumpToBottomButton { z-index: 1000; position: absolute; @@ -14910,6 +19707,7 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 50px; text-align: center; } + .mx_JumpToBottomButton_badge { position: relative; top: -12px; @@ -14923,12 +19721,15 @@ span.mx_MVideoBody video.mx_MVideoBody { color: #fff; background-color: #61708b; } + .mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge { color: #f2f5f8; background-color: #ff4b55; } + .mx_JumpToBottomButton_scrollDown { position: relative; + display: block; height: 38px; border-radius: 19px; -webkit-box-sizing: border-box; @@ -14937,6 +19738,7 @@ span.mx_MVideoBody video.mx_MVideoBody { border: 1.3px solid #61708b; cursor: pointer; } + .mx_JumpToBottomButton_scrollDown:before { content: ""; position: absolute; @@ -14952,6 +19754,30 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-size: contain; background: #61708b; } + +.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide { + cursor: pointer; + width: 18px; + height: 18px; +} + +.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide img { + -webkit-box-flex: 0; + -ms-flex: 0 0 40px; + flex: 0 0 40px; + visibility: hidden; +} + +.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide.focus-visible:focus img, +.mx_LinkPreviewGroup:hover .mx_LinkPreviewGroup_hide img { + visibility: visible; +} + +.mx_LinkPreviewGroup > .mx_AccessibleButton { + color: #0dbd8b; + text-align: center; +} + .mx_LinkPreviewWidget { margin-top: 15px; margin-right: 15px; @@ -14959,9 +19785,11 @@ span.mx_MVideoBody video.mx_MVideoBody { display: -webkit-box; display: -ms-flexbox; display: flex; - border-left: 4px solid #ddd; + border-left: 2px solid #ddd; + border-radius: 2px; color: #888; } + .mx_LinkPreviewWidget_image { -webkit-box-flex: 0; -ms-flex: 0 0 100px; @@ -14970,44 +19798,42 @@ span.mx_MVideoBody video.mx_MVideoBody { text-align: center; cursor: pointer; } + .mx_LinkPreviewWidget_caption { margin-left: 15px; -webkit-box-flex: 1; -ms-flex: 1 1 auto; flex: 1 1 auto; + overflow: hidden; } + .mx_LinkPreviewWidget_title { - display: inline; font-weight: 700; white-space: normal; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; } -.mx_LinkPreviewWidget_siteName { - display: inline; + +.mx_LinkPreviewWidget_title .mx_LinkPreviewWidget_siteName { + font-weight: 400; } + .mx_LinkPreviewWidget_description { margin-top: 8px; white-space: normal; word-wrap: break-word; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; } -.mx_LinkPreviewWidget_cancel { - cursor: pointer; - width: 18px; - height: 18px; -} -.mx_LinkPreviewWidget_cancel img { - -webkit-box-flex: 0; - -ms-flex: 0 0 40px; - flex: 0 0 40px; - visibility: hidden; -} -.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel img, -.mx_LinkPreviewWidget_cancel.focus-visible:focus img { - visibility: visible; -} + .mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget { margin-top: 6px; margin-bottom: 6px; } + .mx_MemberInfo { -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -15019,20 +19845,24 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow-y: auto; margin-top: 8px; } + .mx_MemberInfo, .mx_MemberInfo_name { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_MemberInfo_name { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } + .mx_MemberInfo_name > .mx_E2EIcon { margin-right: 0; } + .mx_MemberInfo_cancel { height: 16px; width: 16px; @@ -15046,6 +19876,7 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-position: 16px center; background-color: #91a1c0; } + .mx_MemberInfo_name h2 { -webkit-box-flex: 1; -ms-flex: 1; @@ -15053,27 +19884,34 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow-x: auto; max-height: 50px; } + .mx_MemberInfo h2 { font-size: 1.8rem; font-weight: 600; margin: 16px 0 16px 15px; } + .mx_MemberInfo_container { margin: 0 16px 16px; } + .mx_MemberInfo .mx_RoomTile_nameContainer { width: 154px; } + .mx_MemberInfo .mx_RoomTile_badge { display: none; } + .mx_MemberInfo .mx_RoomTile_name { width: 160px; } + .mx_MemberInfo_avatar { background: hsla(0, 0%, 91%, 0.77); margin-bottom: 16px; } + .mx_MemberInfo_avatar > img { height: auto; width: 100%; @@ -15082,13 +19920,16 @@ span.mx_MVideoBody video.mx_MVideoBody { object-fit: contain; display: block; } + .mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { cursor: -webkit-zoom-in; cursor: zoom-in; } + .mx_MemberInfo_profile { margin-bottom: 16px; } + .mx_MemberInfo h3 { text-transform: uppercase; color: #9fa9ba; @@ -15096,13 +19937,16 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1.2rem; margin: 4px 0; } + .mx_MemberInfo_profileField { font-size: 1.5rem; position: relative; } + .mx_MemberInfo_buttons { margin-bottom: 16px; } + .mx_MemberInfo_field { cursor: pointer; font-size: 1.5rem; @@ -15110,6 +19954,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-left: 8px; line-height: 2.3rem; } + .mx_MemberInfo_createRoom { cursor: pointer; display: -webkit-box; @@ -15120,23 +19965,28 @@ span.mx_MVideoBody video.mx_MVideoBody { align-items: center; padding: 0 8px; } + .mx_MemberInfo_createRoom_label { width: auto !important; cursor: pointer; } + .mx_MemberInfo label { font-size: 1.3rem; } + .mx_MemberInfo label .mx_MemberInfo_label_text { display: inline-block; max-width: 180px; vertical-align: text-top; } + .mx_MemberInfo input[type="radio"] { vertical-align: -2px; margin-right: 5px; margin-left: 8px; } + .mx_MemberInfo_statusMessage { font-size: 1.1rem; opacity: 0.5; @@ -15144,11 +19994,13 @@ span.mx_MVideoBody video.mx_MVideoBody { white-space: nowrap; text-overflow: clip; } + .mx_MemberInfo .mx_MemberInfo_scrollContainer { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } + .mx_GroupMemberList, .mx_GroupRoomList, .mx_MemberList { @@ -15164,6 +20016,7 @@ span.mx_MVideoBody video.mx_MVideoBody { flex-direction: column; min-height: 0; } + .mx_GroupMemberList .mx_Spinner, .mx_GroupRoomList .mx_Spinner, .mx_MemberList .mx_Spinner { @@ -15171,11 +20024,13 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 1 0 auto; flex: 1 0 auto; } + .mx_GroupMemberList .mx_SearchBox, .mx_GroupRoomList .mx_SearchBox, .mx_MemberList .mx_SearchBox { margin-bottom: 5px; } + .mx_GroupMemberList h2, .mx_GroupRoomList h2, .mx_MemberList h2 { @@ -15188,6 +20043,7 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-top: 8px; margin-bottom: 4px; } + .mx_GroupMemberList .mx_AutoHideScrollbar, .mx_GroupRoomList .mx_AutoHideScrollbar, .mx_MemberList .mx_AutoHideScrollbar { @@ -15195,22 +20051,26 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 1 1 0px; flex: 1 1 0; } + .mx_GroupMemberList .mx_RightPanel_scopeHeader, .mx_GroupRoomList .mx_RightPanel_scopeHeader, .mx_MemberList .mx_RightPanel_scopeHeader { margin-top: -8px; } + .mx_GroupMemberList_query, .mx_GroupRoomList_query { -webkit-box-flex: 0; -ms-flex: 0 0 auto; flex: 0 0 auto; } + .mx_MemberList_chevron { position: absolute; right: 35px; margin-top: -15px; } + .mx_MemberList_border { overflow-y: auto; -webkit-box-ordinal-group: 2; @@ -15220,15 +20080,19 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 1 1 0px; flex: 1 1 0px; } + .mx_MemberList_query { height: 16px; } + .mx_MemberList_query[type="text"] { font-size: 1.2rem; } + .mx_MemberList_wrapper { padding: 10px; } + .mx_MemberList_invite { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -15246,16 +20110,19 @@ span.mx_MVideoBody video.mx_MVideoBody { color: #fff; font-weight: 600; } + .mx_MemberList_invite.mx_AccessibleButton_disabled { background-color: #888; cursor: not-allowed; } + .mx_MemberList_invite span { padding: 8px 0; display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; } + .mx_MemberList_invite span:before { content: ""; display: inline-block; @@ -15272,14 +20139,17 @@ span.mx_MVideoBody video.mx_MVideoBody { height: 20px; margin-right: 5px; } + .mx_MemberList_inviteCommunity span:before { -webkit-mask-image: url(../../img/icon-invite-people.d82f491.svg); mask-image: url(../../img/icon-invite-people.d82f491.svg); } + .mx_MemberList_addRoomToCommunity span:before { -webkit-mask-image: url(../../img/icons-room-add.bd36e26.svg); mask-image: url(../../img/icons-room-add.bd36e26.svg); } + .mx_MessageComposer_wrapper { vertical-align: middle; margin: auto; @@ -15288,15 +20158,18 @@ span.mx_MVideoBody video.mx_MVideoBody { padding-left: 82px; padding-right: 6px; } + .mx_MessageComposer_replaced_wrapper { margin-left: auto; margin-right: auto; } + .mx_MessageComposer_replaced_valign { height: 60px; display: table-cell; vertical-align: middle; } + .mx_MessageComposer_roomReplaced_icon { float: left; margin-right: 20px; @@ -15304,13 +20177,16 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 31px; height: 31px; } + .mx_MessageComposer_roomReplaced_header { font-weight: 700; } + .mx_MessageComposer_autocomplete_wrapper { position: relative; height: 0; } + .mx_MessageComposer_row { display: -webkit-box; display: -ms-flexbox; @@ -15324,16 +20200,20 @@ span.mx_MVideoBody video.mx_MVideoBody { align-items: center; width: 100%; } + .mx_MessageComposer .mx_MessageComposer_avatar { position: absolute; left: 26px; } + .mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { display: block; } + .mx_MessageComposer_composecontrols { width: 100%; } + .mx_MessageComposer_e2eIcon.mx_E2EIcon { position: absolute; left: 60px; @@ -15342,6 +20222,7 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 12px; height: 12px; } + .mx_MessageComposer_noperm_error { width: 100%; height: 60px; @@ -15357,9 +20238,11 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: center; justify-content: center; } + .mx_MessageComposer_input_wrapper { cursor: text; } + .mx_MessageComposer_input, .mx_MessageComposer_input_wrapper { -webkit-box-flex: 1; @@ -15373,6 +20256,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-direction: column; flex-direction: column; } + .mx_MessageComposer_input { vertical-align: middle; min-height: 60px; @@ -15385,6 +20269,7 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1.4rem; margin-right: 6px; } + .mx_MessageComposer_editor { width: 100%; max-height: 120px; @@ -15393,12 +20278,15 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow-x: hidden; word-break: break-word; } + .mx_MessageComposer_editor > :first-child { margin-top: 0 !important; } + .mx_MessageComposer_editor > :last-child { margin-bottom: 0 !important; } + @keyframes visualbell { 0% { background-color: #faa; @@ -15407,21 +20295,25 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: #fff; } } + .mx_MessageComposer_input_error { -webkit-animation: visualbell 0.2s; animation: visualbell 0.2s; } + .mx_MessageComposer_input blockquote { color: #777; margin: 0 0 16px; padding: 0 15px; border-left: 4px solid #ddd; } + .mx_MessageComposer_input pre { background-color: rgba(0, 0, 0, 0.04); border-radius: 3px; padding: 10px; } + .mx_MessageComposer_input textarea { display: block; width: 100%; @@ -15438,22 +20330,28 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1.4rem; max-height: 120px; overflow: auto; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; } + .mx_MessageComposer_input textarea::-moz-placeholder { line-height: 100%; color: #0dbd8b; opacity: 1; } + .mx_MessageComposer_input textarea::-webkit-input-placeholder { color: #0dbd8b; } + .mx_MessageComposer_button_highlight { background: rgba(13, 189, 139, 0.25); } + .mx_MessageComposer_button_highlight:before { background-color: #0dbd8b !important; } + .mx_MessageComposer_button { position: relative; margin-right: 6px; @@ -15462,6 +20360,7 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 26px; border-radius: 100%; } + .mx_MessageComposer_button:before { content: ""; position: absolute; @@ -15477,31 +20376,39 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-position: center; mask-position: center; } + .mx_MessageComposer_button:hover { background: rgba(13, 189, 139, 0.1); } + .mx_MessageComposer_button:hover:before { background-color: #0dbd8b; } + .mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before { background-color: #ff4b55; } + .mx_MessageComposer_upload:before { - -webkit-mask-image: url(../icons/attach.svg); - mask-image: url(../icons/attach.svg); + -webkit-mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); + mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); } + .mx_MessageComposer_voiceMessage:before { -webkit-mask-image: url(../../img/voip/mic-on-mask.97ec7a0.svg); mask-image: url(../../img/voip/mic-on-mask.97ec7a0.svg); } + .mx_MessageComposer_emoji:before { -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); } + .mx_MessageComposer_stickers:before { -webkit-mask-image: url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg); mask-image: url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg); } + .mx_MessageComposer_sendMessage { cursor: pointer; position: relative; @@ -15511,6 +20418,7 @@ span.mx_MVideoBody video.mx_MVideoBody { border-radius: 100%; background-color: #0dbd8b; } + .mx_MessageComposer_sendMessage:before { position: absolute; height: 16px; @@ -15528,18 +20436,21 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: #fff; content: ""; } + .mx_MessageComposer_formatting { cursor: pointer; margin: 0 11px; width: 24px; height: 18px; } + .mx_MessageComposer_formatbar_wrapper { width: 100%; background-color: #fff; -webkit-box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); } + .mx_MessageComposer_formatbar { margin: auto; display: -webkit-box; @@ -15559,27 +20470,33 @@ span.mx_MVideoBody video.mx_MVideoBody { font-size: 1rem; color: #888; } + .mx_MessageComposer_formatbar * { margin-right: 4px; } + .mx_MessageComposer_format_button, .mx_MessageComposer_formatbar_cancel, .mx_MessageComposer_formatbar_markdown { cursor: pointer; } + .mx_MessageComposer_formatbar_cancel { margin-right: 22px; } + .mx_MessageComposer_formatbar_markdown { height: 17px; width: 30px; margin-right: 64px; } + .mx_MessageComposer_input_markdownIndicator { height: 10px; width: 12px; padding: 4px 4px 4px 0; } + .mx_MessageComposer_formatbar_markdown, .mx_MessageComposer_input_markdownIndicator { cursor: pointer; @@ -15593,16 +20510,20 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-repeat: no-repeat; background-color: #c1c6cd; } + .mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled, .mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled { opacity: 0.2; } + .mx_MatrixChat_useCompactLayout .mx_MessageComposer_input { min-height: 50px; } + .mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error { height: 50px; } + .mx_MessageComposerFormatBar { display: none; width: 130px; @@ -15617,9 +20538,11 @@ span.mx_MVideoBody video.mx_MVideoBody { user-select: none; z-index: 1000; } + .mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown { display: block; } + .mx_MessageComposerFormatBar > * { white-space: nowrap; display: inline-block; @@ -15627,19 +20550,24 @@ span.mx_MVideoBody video.mx_MVideoBody { border: 1px solid #e9edf1; margin-left: -1px; } + .mx_MessageComposerFormatBar > :hover { border-color: #ddd; z-index: 1; } + .mx_MessageComposerFormatBar > :first-child { border-radius: 3px 0 0 3px; } + .mx_MessageComposerFormatBar > :last-child { border-radius: 0 3px 3px 0; } + .mx_MessageComposerFormatBar > :only-child { border-radius: 3px; } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button { width: 27px; height: 24px; @@ -15648,6 +20576,7 @@ span.mx_MVideoBody video.mx_MVideoBody { background: none; vertical-align: middle; } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after { content: ""; position: absolute; @@ -15661,29 +20590,35 @@ span.mx_MVideoBody video.mx_MVideoBody { mask-position: center; background-color: #2e2f32; } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after { -webkit-mask-image: url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg); mask-image: url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg); } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconItalic:after { -webkit-mask-image: url(../../img/element-icons/room/format-bar/italic.bf18054.svg); mask-image: url(../../img/element-icons/room/format-bar/italic.bf18054.svg); } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconStrikethrough:after { -webkit-mask-image: url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg); mask-image: url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg); } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconQuote:after { -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); } + .mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after { -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); } + .mx_MessageComposerFormatBar_buttonTooltip { white-space: nowrap; font-size: 1.3rem; @@ -15691,37 +20626,44 @@ span.mx_MVideoBody video.mx_MVideoBody { min-width: 54px; text-align: center; } + .mx_MessageComposerFormatBar_buttonTooltip .mx_MessageComposerFormatBar_tooltipShortcut { font-size: 0.9rem; opacity: 0.7; } + .mx_NewRoomIntro { margin: 40px 0 48px 64px; } + .mx_NewRoomIntro - .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):after, -.mx_NewRoomIntro - .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover):before { - content: unset; + .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover) + .mx_MiniAvatarUploader_indicator { + display: none; } + .mx_NewRoomIntro .mx_AccessibleButton_kind_link { padding: 0; font-size: inherit; } + .mx_NewRoomIntro .mx_NewRoomIntro_buttons { margin-top: 28px; } + .mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton { line-height: 2.4rem; display: inline-block; } + .mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton + .mx_AccessibleButton { margin-left: 12px; } + .mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before { @@ -15739,23 +20681,28 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-right: 5px; vertical-align: text-bottom; } + .mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_NewRoomIntro > h2 { margin-top: 24px; font-size: 2.4rem; font-weight: 600; } + .mx_NewRoomIntro > p { margin: 0; font-size: 1.5rem; color: #737d8c; } + .mx_NotificationBadge:not(.mx_NotificationBadge_visible) { display: none; } + .mx_NotificationBadge.mx_NotificationBadge_visible { background-color: #61708b; display: -webkit-box; @@ -15768,103 +20715,129 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-pack: center; justify-content: center; } + .mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted { background-color: #ff4b55; } + .mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot { background-color: #2e2f32; width: 6px; height: 6px; border-radius: 6px; } + .mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char { width: 1.6rem; height: 1.6rem; border-radius: 1.6rem; } + .mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char { width: 2.6rem; height: 1.6rem; border-radius: 1.6rem; } + .mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count { font-size: 1rem; line-height: 1.4rem; color: #fff; } + .mx_PinnedEventTile { min-height: 40px; - margin-bottom: 5px; width: 100%; - border-radius: 5px; + padding: 0 4px 12px; + display: grid; + grid-template-areas: "avatar name remove" "content content content" "footer footer footer"; + grid-template-rows: -webkit-max-content auto -webkit-max-content; + grid-template-rows: max-content auto max-content; + grid-template-columns: 24px auto 24px; + grid-row-gap: 12px; + grid-column-gap: 8px; } -.mx_PinnedEventTile:hover { - background-color: #f6f7f8; + +.mx_PinnedEventTile + .mx_PinnedEventTile { + padding: 12px 4px; + border-top: 1px solid #e7e7e7; } -.mx_PinnedEventTile .mx_PinnedEventTile_sender, -.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { - color: #868686; - font-size: 0.8em; - vertical-align: top; - display: inline-block; - padding-bottom: 3px; + +.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar { + grid-area: avatar; } -.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { - padding-left: 15px; - display: none; + +.mx_PinnedEventTile .mx_PinnedEventTile_sender { + grid-area: name; + font-weight: 600; + font-size: 1.5rem; + line-height: 2.4rem; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; } -.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar { - float: left; - margin-right: 10px; -} -.mx_PinnedEventTile_actions { - float: right; - margin-right: 10px; - display: none; -} -.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp { - display: inline-block; -} -.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions { - display: block; -} -.mx_PinnedEventTile_unpinButton { - display: inline-block; - cursor: pointer; - margin-left: 10px; -} -.mx_PinnedEventTile_gotoButton { - display: inline-block; - font-size: 0.7em; -} -.mx_PinnedEventTile_message { - margin-left: 50px; + +.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton { + visibility: hidden; + grid-area: remove; position: relative; - top: 0; - left: 0; + width: 24px; + height: 24px; + border-radius: 8px; } -.mx_PinnedEventsPanel { - border-top: 1px solid transparent; + +.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton:hover { + background-color: rgba(92, 100, 112, 0.2); } -.mx_PinnedEventsPanel_body { - max-height: 300px; - overflow-y: auto; - padding-bottom: 15px; + +.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton:before { + content: ""; + position: absolute; + height: inherit; + width: inherit; + background: #737d8c; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: 8px; + mask-size: 8px; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-image: url(../../img/image-view/close.97d1731.svg); + mask-image: url(../../img/image-view/close.97d1731.svg); } -.mx_PinnedEventsPanel_header { - margin: 0; - padding-top: 8px; - padding-bottom: 15px; + +.mx_PinnedEventTile .mx_PinnedEventTile_message { + grid-area: content; } -.mx_PinnedEventsPanel_cancel { - margin: 12px; - float: right; - display: inline-block; + +.mx_PinnedEventTile .mx_PinnedEventTile_footer { + grid-area: footer; + font-size: 10px; + line-height: 12px; } + +.mx_PinnedEventTile .mx_PinnedEventTile_footer .mx_PinnedEventTile_timestamp { + font-size: inherit; + line-height: inherit; + color: #737d8c; +} + +.mx_PinnedEventTile .mx_PinnedEventTile_footer .mx_AccessibleButton_kind_link { + padding: 0; + margin-left: 12px; + font-size: inherit; + line-height: inherit; +} + +.mx_PinnedEventTile:hover .mx_PinnedEventTile_unpinButton { + visibility: visible; +} + .mx_PresenceLabel { font-size: 1.1rem; opacity: 0.5; } + .mx_ReplyPreview { background: #fff; border: 1px solid transparent; @@ -15875,25 +20848,137 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); } -.mx_ReplyPreview_section { + +.mx_ReplyPreview .mx_ReplyPreview_section { border-bottom: 1px solid transparent; } -.mx_ReplyPreview_header { - margin: 12px; + +.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_header { + margin: 8px; color: #2e2f32; font-weight: 400; opacity: 0.4; } -.mx_ReplyPreview_title { + +.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_tile { + margin: 0 8px; +} + +.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_title { float: left; } -.mx_ReplyPreview_cancel { + +.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_cancel { float: right; cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; } -.mx_ReplyPreview_clear { + +.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_clear { clear: both; } + +.mx_ReplyTile { + position: relative; + padding: 2px 0; + font-size: 1.4rem; + line-height: 1.6rem; +} + +.mx_ReplyTile.mx_ReplyTile_audio .mx_MFileBody_info_icon:before { + -webkit-mask-image: url(../../img/element-icons/speaker.7124b41.svg); + mask-image: url(../../img/element-icons/speaker.7124b41.svg); +} + +.mx_ReplyTile.mx_ReplyTile_video .mx_MFileBody_info_icon:before { + -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); + mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); +} + +.mx_ReplyTile .mx_MFileBody .mx_MFileBody_info { + margin: 5px 0; +} + +.mx_ReplyTile .mx_MFileBody .mx_MFileBody_download { + display: none; +} + +.mx_ReplyTile > a { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + text-decoration: none; + color: #2e2f32; +} + +.mx_ReplyTile .mx_RedactedBody { + padding: 4px 0 2px 20px; +} + +.mx_ReplyTile .mx_RedactedBody:before { + height: 13px; + width: 13px; + top: 5px; +} + +.mx_ReplyTile .mx_EventTile_content { + pointer-events: none; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + line-height: 2.2rem; +} + +.mx_ReplyTile .mx_EventTile_content .mx_EventTile_body.mx_EventTile_bigEmoji { + line-height: 2.2rem !important; + font-size: 1.4rem !important; +} + +.mx_ReplyTile .mx_EventTile_content .mx_EventTile_lineNumbers { + display: none; +} + +.mx_ReplyTile .mx_EventTile_content .mx_EventTile_pre_container > pre { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + padding: 4px; +} + +.mx_ReplyTile .mx_EventTile_content .markdown-body blockquote, +.mx_ReplyTile .mx_EventTile_content .markdown-body dl, +.mx_ReplyTile .mx_EventTile_content .markdown-body ol, +.mx_ReplyTile .mx_EventTile_content .markdown-body p, +.mx_ReplyTile .mx_EventTile_content .markdown-body pre, +.mx_ReplyTile .mx_EventTile_content .markdown-body table, +.mx_ReplyTile .mx_EventTile_content .markdown-body ul { + margin-bottom: 4px; +} + +.mx_ReplyTile.mx_ReplyTile_info { + padding-top: 0; +} + +.mx_ReplyTile .mx_SenderProfile { + font-size: 1.4rem; + line-height: 1.7rem; + display: inline-block; + padding: 0; + margin: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + .mx_RoomBreadcrumbs { width: 100%; display: -webkit-box; @@ -15907,28 +20992,39 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-align: start; align-items: flex-start; } + .mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb { margin-right: 8px; width: 32px; } + .mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter { - margin-left: -40px; + -webkit-transform: translateX(-40px); + transform: translateX(-40px); } + .mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active { - margin-left: 0; - -webkit-transition: margin-left 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); - transition: margin-left 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); + -webkit-transform: translateX(0); + transform: translateX(0); + -webkit-transition: -webkit-transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); + transition: -webkit-transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); + transition: transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); + transition: transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1), + -webkit-transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); } + .mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder { font-weight: 600; font-size: 1.4rem; line-height: 32px; height: 32px; } + .mx_RoomBreadcrumbs_Tooltip { margin-left: -42px; margin-top: -42px; } + .mx_RoomHeader { -webkit-box-flex: 0; -ms-flex: 0 0 50px; @@ -15936,16 +21032,19 @@ span.mx_MVideoBody video.mx_MVideoBody { border-bottom: 1px solid transparent; background-color: #fff; } + .mx_RoomHeader .mx_RoomHeader_e2eIcon { height: 12px; width: 12px; } + .mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon { margin: 0; position: absolute; height: 12px; width: 12px; } + .mx_RoomHeader_wrapper { margin: auto; height: 50px; @@ -15958,9 +21057,11 @@ span.mx_MVideoBody video.mx_MVideoBody { min-width: 0; padding: 0 10px 0 18px; } + .mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large { margin: 0; } + .mx_RoomHeader_spinner { -webkit-box-flex: 1; -ms-flex: 1; @@ -15969,11 +21070,13 @@ span.mx_MVideoBody video.mx_MVideoBody { padding-left: 12px; padding-right: 12px; } + .mx_RoomHeader_textButton { vertical-align: middle; border: 0; border-radius: 8px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-size: 1.4rem; color: #fff; background-color: #0dbd8b; @@ -15985,23 +21088,28 @@ span.mx_MVideoBody video.mx_MVideoBody { margin-right: 8px; margin-top: -5px; } + .mx_RoomHeader_textButton_danger { background-color: #ff4b55; } + .mx_RoomHeader_cancelButton { cursor: pointer; padding-left: 12px; padding-right: 12px; } + .mx_RoomHeader_buttons { background-color: #fff; } + .mx_RoomHeader_buttons, .mx_RoomHeader_info { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_RoomHeader_info { -webkit-box-flex: 1; -ms-flex: 1; @@ -16010,6 +21118,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-align: center; align-items: center; } + .mx_RoomHeader_simpleHeader { line-height: 5.2rem; color: #45474a; @@ -16020,14 +21129,17 @@ span.mx_MVideoBody video.mx_MVideoBody { text-overflow: ellipsis; width: 100%; } + .mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { float: right; } + .mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { margin-left: 14px; margin-right: 24px; vertical-align: -4px; } + .mx_RoomHeader_name { -webkit-box-flex: 0; -ms-flex: 0 1 auto; @@ -16042,18 +21154,22 @@ span.mx_MVideoBody video.mx_MVideoBody { display: -ms-flexbox; display: flex; } + .mx_RoomHeader_nametext { white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } + .mx_RoomHeader_settingsHint { color: #a2a2a2 !important; } + .mx_RoomHeader_searchStatus { font-weight: 400; opacity: 0.6; } + .mx_RoomHeader_avatar, .mx_RoomHeader_avatarPicker, .mx_RoomHeader_avatarPicker_edit, @@ -16061,28 +21177,34 @@ span.mx_MVideoBody video.mx_MVideoBody { .mx_RoomHeader_name { cursor: pointer; } + .mx_RoomHeader_avatarPicker_remove { position: absolute; top: -11px; right: -9px; } + .mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { color: #0dbd8b; } + .mx_RoomHeader_placeholder { color: #a2a2a2 !important; } + .mx_RoomHeader_editable { border-bottom: 1px solid #c7c7c7 !important; min-width: 150px; cursor: text; } + .mx_RoomHeader_editable:focus { border-bottom: 1px solid #0dbd8b !important; outline: none; -webkit-box-shadow: none; box-shadow: none; } + .mx_RoomHeader_topic { -webkit-box-flex: 1; -ms-flex: 1; @@ -16097,6 +21219,7 @@ span.mx_MVideoBody video.mx_MVideoBody { line-height: 1.2em; max-height: 2.4em; } + .mx_RoomHeader_avatar { -webkit-box-flex: 0; -ms-flex: 0; @@ -16104,24 +21227,30 @@ span.mx_MVideoBody video.mx_MVideoBody { margin: 0 6px 0 7px; position: relative; } + .mx_RoomHeader_avatar .mx_BaseAvatar_image { -o-object-fit: cover; object-fit: cover; } + .mx_RoomHeader_avatarPicker { position: relative; } + .mx_RoomHeader_avatarPicker_edit { position: absolute; left: 16px; top: 18px; } + .mx_RoomHeader_avatarPicker_edit > label { cursor: pointer; } + .mx_RoomHeader_avatarPicker_edit > input { display: none; } + .mx_RoomHeader_button { position: relative; margin-left: 1px; @@ -16131,6 +21260,7 @@ span.mx_MVideoBody video.mx_MVideoBody { width: 32px; border-radius: 100%; } + .mx_RoomHeader_button:before { content: ""; position: absolute; @@ -16144,28 +21274,35 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-size: contain; mask-size: contain; } + .mx_RoomHeader_button:hover { background: rgba(13, 189, 139, 0.1); } + .mx_RoomHeader_button:hover:before { background-color: #0dbd8b; } + .mx_RoomHeader_forgetButton:before { -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); mask-image: url(../../img/element-icons/leave.bb917e7.svg); width: 26px; } + .mx_RoomHeader_appsButton:before { -webkit-mask-image: url(../../img/element-icons/room/apps.5ee9f78.svg); mask-image: url(../../img/element-icons/room/apps.5ee9f78.svg); } + .mx_RoomHeader_appsButton_highlight:before { background-color: #0dbd8b; } + .mx_RoomHeader_searchButton:before { -webkit-mask-image: url(../../img/element-icons/room/search-inset.db6314d.svg); mask-image: url(../../img/element-icons/room/search-inset.db6314d.svg); } + .mx_RoomHeader_voiceCallButton:before { -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); @@ -16174,35 +21311,24 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-position: center; mask-position: center; } + .mx_RoomHeader_videoCallButton:before { -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); } + .mx_RoomHeader_showPanel { height: 16px; } + .mx_RoomHeader_voipButton { display: table-cell; } + .mx_RoomHeader_voipButtons { margin-top: 18px; } -.mx_RoomHeader_pinnedButton:before { - -webkit-mask-image: url(../../img/element-icons/room/pin.6ab67ed.svg); - mask-image: url(../../img/element-icons/room/pin.6ab67ed.svg); -} -.mx_RoomHeader_pinsIndicator { - position: absolute; - right: 0; - bottom: 4px; - width: 8px; - height: 8px; - border-radius: 8px; - background-color: #8d99a5; -} -.mx_RoomHeader_pinsIndicatorUnread { - background-color: #ff4b55; -} + @media only screen and (max-width: 480px) { .mx_RoomHeader_wrapper { padding: 0; @@ -16211,40 +21337,49 @@ span.mx_MVideoBody video.mx_MVideoBody { overflow: hidden; } } + .mx_RoomList { padding-right: 7px; } + .mx_RoomList_iconPlus:before { -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); } + .mx_RoomList_iconHash:before { -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); } + .mx_RoomList_iconExplore:before { -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); } + .mx_RoomList_iconBrowse:before { -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); } + .mx_RoomList_iconDialpad:before { -webkit-mask-image: url(../../img/element-icons/roomlist/dialpad.37f876f.svg); mask-image: url(../../img/element-icons/roomlist/dialpad.37f876f.svg); } + .mx_RoomList_explorePrompt { margin: 4px 12px; padding-top: 12px; border-top: 1px solid #e7e7e7; font-size: 1.4rem; } + .mx_RoomList_explorePrompt div:first-child { font-weight: 600; line-height: 1.8rem; color: #2e2f32; } + .mx_RoomList_explorePrompt .mx_AccessibleButton { color: #2e2f32; position: relative; @@ -16256,6 +21391,7 @@ span.mx_MVideoBody video.mx_MVideoBody { background-color: rgba(141, 151, 165, 0.2); border-radius: 4px; } + .mx_RoomList_explorePrompt .mx_AccessibleButton:before { content: ""; width: 16px; @@ -16271,26 +21407,31 @@ span.mx_MVideoBody video.mx_MVideoBody { -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; } + .mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before { -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); mask-image: url(../../img/element-icons/feedback.a91241e.svg); } + .mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before { -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); } + .mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_RoomList_explorePrompt .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before { -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); } + .mx_RoomPreviewBar { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -16310,10 +21451,12 @@ span.mx_MVideoBody video.mx_MVideoBody { display: flex; -webkit-align-items: center; } + .mx_RoomPreviewBar h3 { font-size: 1.8rem; font-weight: 600; } + .mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle { display: -webkit-box; display: -ms-flexbox; @@ -16326,11 +21469,13 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-align: center; align-items: center; } + .mx_RoomPreviewBar .mx_RoomPreviewBar_message p, .mx_RoomPreviewBar h3 { word-break: break-all; word-break: break-word; } + .mx_RoomPreviewBar .mx_Spinner { width: auto; height: auto; @@ -16339,28 +21484,34 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex: 0 0 auto; flex: 0 0 auto; } + .mx_RoomPreviewBar .mx_RoomPreviewBar_footer { font-size: 1.2rem; line-height: 2rem; } + .mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner { vertical-align: middle; display: inline-block; } + .mx_RoomPreviewBar_actions, .mx_RoomPreviewBar_message { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_RoomPreviewBar_message { -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } + .mx_RoomPreviewBar_message p { overflow-wrap: break-word; } + .mx_RoomPreviewBar_panel { padding: 8px 8px 8px 20px; border-top: 1px solid transparent; @@ -16369,6 +21520,7 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-direction: row; flex-direction: row; } + .mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions { -webkit-box-flex: 0; -ms-flex: 0 0 auto; @@ -16379,9 +21531,11 @@ span.mx_MVideoBody video.mx_MVideoBody { flex-direction: row; padding: 3px 8px; } + .mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions > * { margin-left: 12px; } + .mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message { -webkit-box-flex: 1; -ms-flex: 1 0 0px; @@ -16395,9 +21549,11 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-direction: column; flex-direction: column; } + .mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message > * { margin: 4px; } + .mx_RoomPreviewBar_dialog { margin: auto; -webkit-box-sizing: content; @@ -16407,6 +21563,7 @@ span.mx_MVideoBody video.mx_MVideoBody { padding: 20px; text-align: center; } + .mx_RoomPreviewBar_dialog, .mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message { -webkit-box-orient: vertical; @@ -16414,40 +21571,50 @@ span.mx_MVideoBody video.mx_MVideoBody { -ms-flex-direction: column; flex-direction: column; } + .mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message > * { margin: 5px 0 20px; } + .mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } + .mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton { padding: 7px 50px; } + .mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions > * { margin-top: 12px; } + .mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton.mx_AccessibleButton_kind_primary { margin-bottom: 7px; } + .mx_RoomPreviewBar_inviter { font-weight: 600; } + a.mx_RoomPreviewBar_inviter { text-decoration: underline; cursor: pointer; } + .mx_RoomSublist { margin-left: 8px; margin-bottom: 4px; } + .mx_RoomSublist.mx_RoomSublist_hidden { display: none; } + .mx_RoomSublist .mx_RoomSublist_headerContainer { display: -webkit-box; display: -ms-flexbox; @@ -16459,6 +21626,7 @@ a.mx_RoomPreviewBar_inviter { max-height: 24px; color: #8d99a5; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable { -webkit-box-flex: 1; -ms-flex: 1; @@ -16471,13 +21639,15 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky { position: fixed; height: 32px; - width: calc(100% - 22px); + width: calc(100% - 15px); } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer { display: -webkit-box; display: -ms-flexbox; @@ -16489,17 +21659,20 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-pack: center; justify-content: center; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer .mx_NotificationBadge { margin-left: 8px; } + .mx_RoomSublist .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_NotificationBadge { margin-right: 4px; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton, .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton { margin-left: 8px; @@ -16508,6 +21681,7 @@ a.mx_RoomPreviewBar_inviter { height: 24px; border-radius: 8px; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before, @@ -16528,29 +21702,34 @@ a.mx_RoomPreviewBar_inviter { mask-repeat: no-repeat; background: #61708b; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover, .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:hover { background: rgba(141, 151, 165, 0.2); } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton { visibility: hidden; width: 0; margin: 0; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before { -webkit-mask-image: url(../../img/element-icons/roomlist/plus.daac9ba.svg); mask-image: url(../../img/element-icons/roomlist/plus.daac9ba.svg); } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton:before { -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText { -webkit-box-flex: 1; -ms-flex: 1; @@ -16563,6 +21742,7 @@ a.mx_RoomPreviewBar_inviter { overflow: hidden; white-space: nowrap; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText @@ -16573,6 +21753,7 @@ a.mx_RoomPreviewBar_inviter { height: 14px; margin-right: 6px; } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText @@ -16591,6 +21772,7 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText @@ -16598,15 +21780,18 @@ a.mx_RoomPreviewBar_inviter { -webkit-transform: rotate(-90deg); transform: rotate(-90deg); } + .mx_RoomSublist:first-child .mx_RoomSublist_headerContainer { height: 0; padding-bottom: 4px; } + .mx_RoomSublist .mx_RoomSublist_resizeBox { position: relative; -ms-flex-direction: column; flex-direction: column; } + .mx_RoomSublist .mx_RoomSublist_resizeBox, .mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles { display: -webkit-box; @@ -16616,15 +21801,19 @@ a.mx_RoomPreviewBar_inviter { -webkit-box-direction: normal; overflow: hidden; } + .mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles { -webkit-box-flex: 1; -ms-flex: 1 0 0px; flex: 1 0 0; -ms-flex-direction: column; flex-direction: column; + -ms-flex-item-align: stretch; + align-self: stretch; -webkit-mask-image: linear-gradient(0deg, transparent, #000 4px); mask-image: linear-gradient(0deg, transparent, #000 4px); } + .mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles_showNButton { @@ -16632,6 +21821,7 @@ a.mx_RoomPreviewBar_inviter { -ms-flex: 0 0 32px; flex: 0 0 32px; } + .mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles { -webkit-box-flex: 0; -ms-flex: 0 0 4px; @@ -16644,6 +21834,7 @@ a.mx_RoomPreviewBar_inviter { justify-content: center; width: 100%; } + .mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle { cursor: ns-resize; border-radius: 3px; @@ -16652,6 +21843,7 @@ a.mx_RoomPreviewBar_inviter { position: relative !important; bottom: 0 !important; } + .mx_RoomSublist .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_resizerHandle, @@ -16659,6 +21851,7 @@ a.mx_RoomPreviewBar_inviter { opacity: 0.8; background-color: #2e2f32; } + .mx_RoomSublist .mx_RoomSublist_showNButton { cursor: pointer; font-size: 1.3rem; @@ -16673,6 +21866,7 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron { position: relative; width: 18px; @@ -16688,6 +21882,7 @@ a.mx_RoomPreviewBar_inviter { background: #8d99a5; left: -1px; } + .mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron, @@ -16697,12 +21892,14 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showLessButtonChevron { -webkit-transform: rotate(180deg); transform: rotate(180deg); } + .mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton, .mx_RoomSublist:not(.mx_RoomSublist_minimized) > .mx_RoomSublist_headerContainer:focus-within @@ -16714,6 +21911,7 @@ a.mx_RoomPreviewBar_inviter { width: 24px; margin-left: 8px; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer { height: auto; -webkit-box-orient: vertical; @@ -16722,6 +21920,7 @@ a.mx_RoomPreviewBar_inviter { flex-direction: column; position: relative; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer { @@ -16732,6 +21931,7 @@ a.mx_RoomPreviewBar_inviter { align-self: flex-end; margin-right: 0; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable { @@ -16740,6 +21940,7 @@ a.mx_RoomPreviewBar_inviter { order: 1; max-width: 100%; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton { @@ -16753,31 +21954,37 @@ a.mx_RoomPreviewBar_inviter { background-color: rgba(141, 151, 165, 0.2); margin-top: 8px; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:before { top: 8px; left: 8px; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton { -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron { margin-right: 12px; } + .mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton { height: 16px; } + .mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton, .mx_RoomSublist.mx_RoomSublist_minimized @@ -16793,6 +22000,7 @@ a.mx_RoomPreviewBar_inviter { z-index: 1; background-color: hsla(0, 0%, 96.1%, 0.9); } + .mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton:before, .mx_RoomSublist.mx_RoomSublist_minimized @@ -16801,6 +22009,7 @@ a.mx_RoomPreviewBar_inviter { top: 0; left: 0; } + .mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) .mx_RoomSublist_menuButton, .mx_RoomSublist.mx_RoomSublist_minimized @@ -16808,10 +22017,12 @@ a.mx_RoomPreviewBar_inviter { .mx_RoomSublist_menuButton { bottom: 8px; } + .mx_RoomSublist_contextMenu { padding: 20px 16px; width: 250px; } + .mx_RoomSublist_contextMenu hr { margin-top: 16px; margin-bottom: 16px; @@ -16819,24 +22030,29 @@ a.mx_RoomPreviewBar_inviter { border: 1px solid #2e2f32; opacity: 0.1; } + .mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title { font-size: 1.5rem; line-height: 2rem; font-weight: 600; margin-bottom: 4px; } + .mx_RoomSublist_contextMenu .mx_Checkbox, .mx_RoomSublist_contextMenu .mx_RadioButton { margin-top: 8px; } + .mx_RoomSublist_addRoomTooltip { margin-top: -3px; } + .mx_RoomSublist_skeletonUI { position: relative; margin-left: 4px; height: 288px; } + .mx_RoomSublist_skeletonUI:before { background: -webkit-gradient( linear, @@ -16857,13 +22073,19 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg); mask-image: url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg); } + .mx_RoomTile { margin-bottom: 4px; padding: 4px; + contain: content; + height: 40px; + -webkit-box-sizing: border-box; + box-sizing: border-box; display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_RoomTile.mx_RoomTile_hasMenuOpen, .mx_RoomTile.mx_RoomTile_selected, .mx_RoomTile:focus-within, @@ -16871,10 +22093,12 @@ a.mx_RoomPreviewBar_inviter { background-color: #fff; border-radius: 8px; } + .mx_RoomTile .mx_DecoratedRoomAvatar, .mx_RoomTile .mx_RoomTile_avatarContainer { margin-right: 8px; } + .mx_RoomTile .mx_RoomTile_nameContainer { -webkit-box-flex: 1; -ms-flex-positive: 1; @@ -16892,6 +22116,7 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-pack: center; justify-content: center; } + .mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview, .mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name { margin: 0 2px; @@ -16900,26 +22125,32 @@ a.mx_RoomPreviewBar_inviter { overflow: hidden; white-space: nowrap; } + .mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name { font-size: 1.4rem; line-height: 1.8rem; } + .mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents { font-weight: 600; } + .mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview { font-size: 1.3rem; line-height: 1.8rem; color: #737d8c; } + .mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview { margin-top: -4px; } + .mx_RoomTile .mx_RoomTile_notificationsButton { margin-left: 4px; } + .mx_RoomTile .mx_RoomTile_badgeContainer { height: 16px; margin: auto 0; @@ -16930,13 +22161,16 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge { margin-right: 2px; } + .mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot { margin-left: 5px; margin-right: 7px; } + .mx_RoomTile .mx_RoomTile_menuButton, .mx_RoomTile .mx_RoomTile_notificationsButton { width: 20px; @@ -16947,6 +22181,7 @@ a.mx_RoomPreviewBar_inviter { position: relative; display: none; } + .mx_RoomTile .mx_RoomTile_menuButton:before, .mx_RoomTile .mx_RoomTile_notificationsButton:before { top: 2px; @@ -16963,14 +22198,17 @@ a.mx_RoomPreviewBar_inviter { mask-repeat: no-repeat; background: #2e2f32; } + .mx_RoomTile .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show { display: block; } + .mx_RoomTile .mx_RoomTile_menuButton:before { -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); } + .mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_badgeContainer, .mx_RoomTile:not(.mx_RoomTile_minimized):focus-within @@ -16980,6 +22218,7 @@ a.mx_RoomPreviewBar_inviter { height: 0; display: none; } + .mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen .mx_RoomTile_menuButton, .mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen @@ -16992,6 +22231,7 @@ a.mx_RoomPreviewBar_inviter { .mx_RoomTile_notificationsButton { display: block; } + .mx_RoomTile.mx_RoomTile_minimized { -webkit-box-orient: vertical; -webkit-box-direction: normal; @@ -17002,46 +22242,62 @@ a.mx_RoomPreviewBar_inviter { align-items: center; position: relative; } + .mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar, .mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer { margin-right: 0; } + .mx_RoomTile_iconBell:before { -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); mask-image: url(../../img/element-icons/notifications.d298b39.svg); } + .mx_RoomTile_iconBellDot:before { -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg); mask-image: url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg); } + .mx_RoomTile_iconBellCrossed:before { -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); } + .mx_RoomTile_iconBellMentions:before { -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg); mask-image: url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg); } + .mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before { -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.ff7609d.svg); mask-image: url(../../img/element-icons/roomlist/favorite.ff7609d.svg); } + .mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before { -webkit-mask-image: url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg); mask-image: url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg); } + .mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before { -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); mask-image: url(../../img/element-icons/settings.6b381af.svg); } + +.mx_RoomTile_contextMenu .mx_RoomTile_iconCopyLink:before { + -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); + mask-image: url(../../img/element-icons/link.8f4b1fc.svg); +} + .mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before { -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); mask-image: url(../../img/element-icons/leave.bb917e7.svg); } + .mx_RoomUpgradeWarningBar { max-height: 235px; background-color: #f7f7f7; @@ -17049,6 +22305,7 @@ a.mx_RoomPreviewBar_inviter { padding-right: 20px; overflow: scroll; } + .mx_RoomUpgradeWarningBar_wrapped { width: 100%; height: 100%; @@ -17068,21 +22325,26 @@ a.mx_RoomPreviewBar_inviter { justify-content: center; -webkit-align-items: center; } + .mx_RoomUpgradeWarningBar_header { color: #ff4b55; font-weight: 700; } + .mx_RoomUpgradeWarningBar_body { color: #ff4b55; } + .mx_RoomUpgradeWarningBar_upgradelink { color: #ff4b55; text-decoration: underline; } + .mx_RoomUpgradeWarningBar_small { color: #888; font-size: 70%; } + .mx_SearchBar { height: 56px; display: -webkit-box; @@ -17093,12 +22355,14 @@ a.mx_RoomPreviewBar_inviter { align-items: center; border-bottom: 1px solid transparent; } + .mx_SearchBar .mx_SearchBar_input { -webkit-box-flex: 1; -ms-flex: 1 1 0px; flex: 1 1 0; margin-left: 22px; } + .mx_SearchBar .mx_SearchBar_searchButton { cursor: pointer; width: 37px; @@ -17111,9 +22375,11 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-position: center; mask-position: center; } + .mx_SearchBar .mx_SearchBar_buttons { display: inherit; } + .mx_SearchBar .mx_SearchBar_button { border: 0; margin: 0 0 0 22px; @@ -17124,10 +22390,12 @@ a.mx_RoomPreviewBar_inviter { border-bottom: 2px solid #0dbd8b; font-weight: 600; } + .mx_SearchBar .mx_SearchBar_unselected { color: #9fa9ba; border-color: transparent; } + .mx_SearchBar .mx_SearchBar_cancel { background-color: #ff4b55; -webkit-mask: url(../../img/cancel.4b9715b.svg); @@ -17142,6 +22410,7 @@ a.mx_RoomPreviewBar_inviter { margin: 0 12px 0 3px; cursor: pointer; } + .mx_SendMessageComposer { -ms-flex: 1; flex: 1; @@ -17154,6 +22423,7 @@ a.mx_RoomPreviewBar_inviter { margin-right: 6px; min-width: 0; } + .mx_SendMessageComposer, .mx_SendMessageComposer .mx_BasicMessageComposer { -webkit-box-flex: 1; @@ -17163,13 +22433,15 @@ a.mx_RoomPreviewBar_inviter { -webkit-box-orient: vertical; -webkit-box-direction: normal; } + .mx_SendMessageComposer .mx_BasicMessageComposer { -ms-flex: 1; flex: 1; -ms-flex-direction: column; flex-direction: column; - min-height: 50px; + min-height: 55px; } + .mx_SendMessageComposer .mx_BasicMessageComposer .mx_BasicMessageComposer_input { @@ -17178,13 +22450,16 @@ a.mx_RoomPreviewBar_inviter { max-height: 140px; overflow-y: auto; } + .mx_Stickers_content { overflow: hidden; } + .mx_Stickers_content_container { overflow: hidden; height: 300px; } + #mx_persistedElement_stickerPicker .mx_AppTileFullWidth { height: unset; -webkit-box-sizing: border-box; @@ -17193,12 +22468,15 @@ a.mx_RoomPreviewBar_inviter { border-right: none; border-bottom: none; } + #mx_persistedElement_stickerPicker .mx_AppTileMenuBar { padding: 0; } + #mx_persistedElement_stickerPicker iframe { height: 283px; } + .mx_Stickers_contentPlaceholder { display: -webkit-box; display: -ms-flexbox; @@ -17218,17 +22496,21 @@ a.mx_RoomPreviewBar_inviter { justify-content: center; text-align: center; } + .mx_Stickers_contentPlaceholder p { max-width: 200px; } + .mx_Stickers_addLink { display: inline; cursor: pointer; color: #0dbd8b; } + .mx_Stickers_hideStickers { z-index: 2001; } + .mx_TopUnreadMessagesBar { z-index: 1000; position: absolute; @@ -17236,6 +22518,7 @@ a.mx_RoomPreviewBar_inviter { right: 24px; width: 38px; } + .mx_TopUnreadMessagesBar:after { content: ""; position: absolute; @@ -17248,6 +22531,7 @@ a.mx_RoomPreviewBar_inviter { border: 6px solid #0dbd8b; pointer-events: none; } + .mx_TopUnreadMessagesBar_scrollUp { height: 38px; border-radius: 19px; @@ -17257,6 +22541,7 @@ a.mx_RoomPreviewBar_inviter { border: 1.3px solid #61708b; cursor: pointer; } + .mx_TopUnreadMessagesBar_scrollUp:before { content: ""; position: absolute; @@ -17272,6 +22557,7 @@ a.mx_RoomPreviewBar_inviter { -webkit-transform: rotate(180deg); transform: rotate(180deg); } + .mx_TopUnreadMessagesBar_markAsRead { display: block; width: 18px; @@ -17281,6 +22567,7 @@ a.mx_RoomPreviewBar_inviter { border-radius: 10px; margin: 5px auto; } + .mx_TopUnreadMessagesBar_markAsRead:before { content: ""; position: absolute; @@ -17296,6 +22583,7 @@ a.mx_RoomPreviewBar_inviter { mask-position: 4px 4px; background: #61708b; } + .mx_VoiceRecordComposerTile_stop { width: 28px; height: 28px; @@ -17304,6 +22592,7 @@ a.mx_RoomPreviewBar_inviter { margin-right: 16px; position: relative; } + .mx_VoiceRecordComposerTile_stop:after { content: ""; width: 14px; @@ -17314,27 +22603,31 @@ a.mx_RoomPreviewBar_inviter { border-radius: 2px; background-color: #ff4b55; } + .mx_VoiceRecordComposerTile_delete { - width: 14px; - height: 18px; + width: 24px; + height: 24px; vertical-align: middle; - margin-right: 11px; + margin-right: 8px; background-color: #8d99a5; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-size: contain; mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); - mask-image: url(../../img/element-icons/trashcan.26f6c28.svg); + -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); + mask-image: url(../../img/element-icons/trashcan.3b626db.svg); } + .mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer { margin: 6px 12px 6px 6px; position: relative; } + .mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording { padding-left: 22px; } + .mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before { -webkit-animation: recording-pulse 2s infinite; @@ -17348,6 +22641,7 @@ a.mx_RoomPreviewBar_inviter { top: 18px; border-radius: 10px; } + @-webkit-keyframes recording-pulse { 0% { opacity: 1; @@ -17359,6 +22653,7 @@ a.mx_RoomPreviewBar_inviter { opacity: 1; } } + @keyframes recording-pulse { 0% { opacity: 1; @@ -17370,6 +22665,7 @@ a.mx_RoomPreviewBar_inviter { opacity: 1; } } + .mx_WhoIsTypingTile { margin-left: -18px; padding-top: 18px; @@ -17380,22 +22676,27 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_WhoIsTypingTile_avatars { -webkit-box-flex: 0; -ms-flex: 0 0 83px; flex: 0 0 83px; text-align: center; } + .mx_WhoIsTypingTile_avatars > :not(:first-child) { margin-left: -12px; } + .mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial { padding-top: 1px; } + .mx_WhoIsTypingTile_avatars .mx_BaseAvatar { border: 1px solid #fff; border-radius: 40px; } + .mx_WhoIsTypingTile_remainingAvatarPlaceholder { position: relative; display: inline-block; @@ -17410,6 +22711,7 @@ a.mx_RoomPreviewBar_inviter { vertical-align: top; text-align: center; } + .mx_WhoIsTypingTile_label { -webkit-box-flex: 1; -ms-flex: 1; @@ -17418,6 +22720,7 @@ a.mx_RoomPreviewBar_inviter { font-weight: 600; color: #9e9e9e; } + .mx_WhoIsTypingTile_label > span { background-image: url(../../img/typing-indicator-2x.0eb9f0e.gif); background-size: 25px; @@ -17426,9 +22729,11 @@ a.mx_RoomPreviewBar_inviter { padding-bottom: 15px; display: block; } + .mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile { padding-top: 4px; } + .mx_AvatarSetting_avatar { width: 90px; min-width: 90px; @@ -17436,6 +22741,7 @@ a.mx_RoomPreviewBar_inviter { margin-top: 8px; position: relative; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_hover { -webkit-transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); @@ -17448,11 +22754,13 @@ a.mx_RoomPreviewBar_inviter { line-height: 90px; text-align: center; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_hover > span { color: #fff; position: relative; font-weight: 500; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg { position: absolute; top: 0; @@ -17463,29 +22771,36 @@ a.mx_RoomPreviewBar_inviter { background-color: #2e2f32; border-radius: 90px; } + .mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering .mx_AvatarSetting_hover { opacity: 1; } + .mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) .mx_AvatarSetting_hover { opacity: 0; } + .mx_AvatarSetting_avatar > * { -webkit-box-sizing: border-box; box-sizing: border-box; } + .mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary { margin-top: 8px; } + .mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm { width: 100%; } + .mx_AvatarSetting_avatar > img { cursor: pointer; -o-object-fit: cover; object-fit: cover; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder, .mx_AvatarSetting_avatar > img { display: block; @@ -17494,6 +22809,7 @@ a.mx_RoomPreviewBar_inviter { border-radius: 90px; cursor: pointer; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before { background-color: #2e2f32; -webkit-mask: url(../../img/feather-customised/user.7a4d23d.svg); @@ -17511,6 +22827,7 @@ a.mx_RoomPreviewBar_inviter { left: 0; right: 0; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton { width: 32px; height: 32px; @@ -17520,6 +22837,7 @@ a.mx_RoomPreviewBar_inviter { bottom: 0; right: 0; } + .mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before { content: ""; display: block; @@ -17535,64 +22853,82 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/feather-customised/edit.fd55ec2.svg); mask-image: url(../../img/feather-customised/edit.fd55ec2.svg); } + .mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder { background-color: #f4f6fa; } + .mx_CrossSigningPanel_statusList { border-spacing: 0; } + .mx_CrossSigningPanel_statusList td { padding: 0; } + .mx_CrossSigningPanel_statusList td:first-of-type { -webkit-padding-end: 1em; padding-inline-end: 1em; } + .mx_CrossSigningPanel_buttonRow { margin: 1em 0; } + .mx_CrossSigningPanel_buttonRow :nth-child(n + 1) { -webkit-margin-end: 10px; margin-inline-end: 10px; } + .mx_DevicesPanel { display: table; table-layout: fixed; width: 880px; border-spacing: 10px; } + .mx_DevicesPanel_header { display: table-header-group; font-weight: 700; } + .mx_DevicesPanel_header > .mx_DevicesPanel_deviceButtons { height: 48px; } + .mx_DevicesPanel_header > div { display: table-cell; vertical-align: middle; } + .mx_DevicesPanel_header .mx_DevicesPanel_deviceName { width: 50%; } + .mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { width: 30%; } + .mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { width: 20%; } + .mx_DevicesPanel_device { display: table-row; } + .mx_DevicesPanel_device > div { display: table-cell; } + .mx_DevicesPanel_myDevice { font-weight: 700; } + .mx_E2eAdvancedPanel_settingLongDescription { margin-right: 150px; } + .mx_ExistingEmailAddress { display: -webkit-box; display: -ms-flexbox; @@ -17602,11 +22938,13 @@ a.mx_RoomPreviewBar_inviter { align-items: center; margin-bottom: 5px; } + .mx_ExistingEmailAddress_delete { margin-right: 5px; cursor: pointer; vertical-align: middle; } + .mx_ExistingEmailAddress_email, .mx_ExistingEmailAddress_promptText { -webkit-box-flex: 1; @@ -17614,9 +22952,11 @@ a.mx_RoomPreviewBar_inviter { flex: 1; margin-right: 10px; } + .mx_ExistingEmailAddress_confirmBtn { margin-left: 5px; } + .mx_IntegrationManager .mx_Dialog { width: 60%; height: 70%; @@ -17625,86 +22965,117 @@ a.mx_RoomPreviewBar_inviter { max-width: none; max-height: none; } + .mx_IntegrationManager iframe { background-color: #fff; border: 0; width: 100%; height: 100%; } + .mx_IntegrationManager_loading h3 { text-align: center; } + .mx_IntegrationManager_error { text-align: center; padding-top: 20px; } + .mx_IntegrationManager_error h3 { color: #ff4b55; } -.mx_UserNotifSettings_tableRow { - display: table-row; + +.mx_UserNotifSettings { + color: #2e2f32; } -.mx_UserNotifSettings_inputCell { - display: table-cell; - padding-bottom: 8px; - padding-right: 8px; - width: 16px; -} -.mx_UserNotifSettings_labelCell { - padding-bottom: 8px; - width: 400px; - display: table-cell; -} -.mx_UserNotifSettings_pushRulesTableWrapper { - padding-bottom: 8px; -} -.mx_UserNotifSettings_pushRulesTable { - width: 100%; + +.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable { + width: calc(100% + 12px); table-layout: fixed; + border-collapse: collapse; + border-spacing: 0; + margin-top: 40px; } -.mx_UserNotifSettings_pushRulesTable thead { - font-weight: 700; + +.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable tr > th { + font-weight: 600; } -.mx_UserNotifSettings_pushRulesTable tbody th { - font-weight: 400; -} -.mx_UserNotifSettings_pushRulesTable tbody th:first-child { + +.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable tr > th:first-child { text-align: left; + font-size: 1.8rem; } -.mx_UserNotifSettings_keywords { - cursor: pointer; - color: #0dbd8b; + +.mx_UserNotifSettings + .mx_UserNotifSettings_pushRulesTable + tr + > th:nth-child(n + 2) { + color: #737d8c; + font-size: 1.2rem; + vertical-align: middle; + width: 66px; } -.mx_UserNotifSettings_devicesTable td { - padding-left: 20px; - padding-right: 20px; + +.mx_UserNotifSettings + .mx_UserNotifSettings_pushRulesTable + tr + > td:nth-child(n + 2) { + text-align: center; } -.mx_UserNotifSettings_notifTable { - display: table; - position: relative; + +.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable tr > td { + padding-top: 8px; } -.mx_UserNotifSettings_notifTable .mx_Spinner { - position: absolute; + +.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable .mx_RadioButton { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } -.mx_NotificationSound_soundUpload { + +.mx_UserNotifSettings + .mx_UserNotifSettings_pushRulesTable + .mx_RadioButton + .mx_RadioButton_content, +.mx_UserNotifSettings + .mx_UserNotifSettings_pushRulesTable + .mx_RadioButton + .mx_RadioButton_spacer { display: none; } -.mx_NotificationSound_browse { - color: #0dbd8b; - border: 1px solid #0dbd8b; - background-color: transparent; + +.mx_UserNotifSettings .mx_UserNotifSettings_floatingSection { + margin-top: 40px; } -.mx_NotificationSound_save { - margin-left: 5px; - color: #fff; - background-color: #0dbd8b; + +.mx_UserNotifSettings .mx_UserNotifSettings_floatingSection > div:first-child { + font-size: 1.8rem; + font-weight: 600; } -.mx_NotificationSound_resetSound { - margin-top: 5px; - color: #fff; - border: #ff4b55; - background-color: #ff4b55; + +.mx_UserNotifSettings .mx_UserNotifSettings_floatingSection > table { + border-collapse: collapse; + border-spacing: 0; + margin-top: 8px; } + +.mx_UserNotifSettings + .mx_UserNotifSettings_floatingSection + > table + tr + > td:first-child { + padding-right: 8px; +} + +.mx_UserNotifSettings .mx_UserNotifSettings_clearNotifsButton { + margin-top: 8px; +} + +.mx_UserNotifSettings .mx_TagComposer { + margin-top: 35px; +} + .mx_ExistingPhoneNumber { display: -webkit-box; display: -ms-flexbox; @@ -17714,11 +23085,13 @@ a.mx_RoomPreviewBar_inviter { align-items: center; margin-bottom: 5px; } + .mx_ExistingPhoneNumber_delete { margin-right: 5px; cursor: pointer; vertical-align: middle; } + .mx_ExistingPhoneNumber_address, .mx_ExistingPhoneNumber_promptText { -webkit-box-flex: 1; @@ -17726,9 +23099,11 @@ a.mx_RoomPreviewBar_inviter { flex: 1; margin-right: 10px; } + .mx_ExistingPhoneNumber_confirmBtn { margin-left: 5px; } + .mx_ExistingPhoneNumber_verification { display: -webkit-inline-box; display: -ms-inline-flexbox; @@ -17737,9 +23112,11 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_ExistingPhoneNumber_verification .mx_Field { margin: 0 0 0 1em; } + .mx_PhoneNumbers_input { display: -webkit-box; display: -ms-flexbox; @@ -17748,116 +23125,146 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_PhoneNumbers_input > .mx_Field { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; } + .mx_PhoneNumbers_country { width: 80px; } + .mx_ProfileSettings_controls_topic > textarea { resize: vertical; } + .mx_ProfileSettings_profile { display: -webkit-box; display: -ms-flexbox; display: flex; } + .mx_ProfileSettings_controls { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; margin-right: 54px; } + .mx_ProfileSettings_controls .mx_SettingsTab_subheading { margin-top: 0; } + .mx_ProfileSettings_controls .mx_Field #profileTopic { height: 4em; } + .mx_ProfileSettings_controls .mx_Field:first-child { margin-top: 0; } + .mx_ProfileSettings_hostingSignup { margin-left: 20px; } + .mx_ProfileSettings_hostingSignup img { margin-left: 5px; } + .mx_ProfileSettings_avatarUpload { display: none; } + .mx_ProfileSettings_profileForm { margin-right: 100px; border-bottom: 1px solid #e7e7e7; } + .mx_ProfileSettings_buttons { margin-top: 10px; margin-bottom: 28px; } + .mx_ProfileSettings_buttons > .mx_AccessibleButton_kind_link { padding-left: 0; } + .mx_SecureBackupPanel_deviceNotVerified, .mx_SecureBackupPanel_deviceVerified, .mx_SecureBackupPanel_sigInvalid, .mx_SecureBackupPanel_sigValid { font-weight: 700; } + .mx_SecureBackupPanel_deviceVerified, .mx_SecureBackupPanel_sigValid { color: #76cfa5; } + .mx_SecureBackupPanel_deviceNotVerified, .mx_SecureBackupPanel_sigInvalid { color: #ba6363; } + .mx_SecureBackupPanel_deviceName { font-style: italic; } + .mx_SecureBackupPanel_buttonRow { margin: 1em 0; } + .mx_SecureBackupPanel_buttonRow :nth-child(n + 1) { -webkit-margin-end: 10px; margin-inline-end: 10px; } + .mx_SecureBackupPanel_statusList { border-spacing: 0; } + .mx_SecureBackupPanel_statusList td { padding: 0; } + .mx_SecureBackupPanel_statusList td:first-of-type { -webkit-padding-end: 1em; padding-inline-end: 1em; } + .mx_SetIdServer .mx_Field_input { margin-right: 100px; } + .mx_SetIdServer_tooltip { max-width: 120px; } + .mx_SetIntegrationManager { margin-top: 10px; margin-bottom: 10px; } + .mx_SetIntegrationManager > .mx_SettingsTab_heading { margin-bottom: 10px; } + .mx_SetIntegrationManager > .mx_SettingsTab_heading > .mx_SettingsTab_subheading { display: inline-block; padding-left: 5px; } + .mx_SetIntegrationManager .mx_ToggleSwitch { display: inline-block; float: right; top: 9px; margin-right: 100px; } + .mx_ExistingSpellCheckLanguage { display: -webkit-box; display: -ms-flexbox; @@ -17867,65 +23274,81 @@ a.mx_RoomPreviewBar_inviter { align-items: center; margin-bottom: 5px; } + .mx_ExistingSpellCheckLanguage_language { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; margin-right: 10px; } + .mx_GeneralUserSettingsTab_spellCheckLanguageInput { margin-top: 1em; margin-bottom: 1em; } + .mx_SpellCheckLanguages { margin-right: 100px; } + .mx_UpdateCheckButton_summary { margin-left: 16px; } + .mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link { padding: 0; } + .mx_SettingsTab { color: #61708b; } + .mx_SettingsTab_warningText { color: #ff4b55; } + .mx_SettingsTab_heading { font-size: 2rem; font-weight: 600; color: #2e2f32; margin-bottom: 10px; } + .mx_SettingsTab_heading:nth-child(n + 2) { margin-top: 30px; } + .mx_SettingsTab_subheading { font-size: 1.6rem; display: block; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, + Helvetica, Sans-Serif, Noto Color Emoji; font-weight: 600; color: #2e2f32; margin-bottom: 10px; margin-top: 12px; } + .mx_SettingsTab_subsectionText { color: #61708b; font-size: 1.4rem; display: block; - margin: 10px 100px 10px 0; + margin: 10px 80px 10px 0; } + .mx_SettingsTab_section { margin-bottom: 24px; } + .mx_SettingsTab_section .mx_SettingsFlag { - margin-right: 100px; + margin-right: 80px; margin-bottom: 10px; } + .mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag { margin-right: 0 !important; } + .mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label { vertical-align: middle; display: inline-block; @@ -17936,50 +23359,155 @@ a.mx_RoomPreviewBar_inviter { box-sizing: border-box; padding-right: 10px; } + .mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch { float: right; } + .mx_SettingsTab_linkBtn { cursor: pointer; color: #0dbd8b; word-break: break-all; } + .mx_SettingsTab a { color: #238cf5; } + .mx_GeneralRoomSettingsTab_profileSection { margin-top: 10px; } + .mx_RolesRoomSettingsTab ul { margin-bottom: 0; } + .mx_RolesRoomSettingsTab_unbanBtn { margin-right: 10px; margin-bottom: 5px; } + +.mx_SecurityRoomSettingsTab .mx_SettingsTab_showAdvanced { + padding: 0; + margin-bottom: 16px; +} + +.mx_SecurityRoomSettingsTab .mx_SecurityRoomSettingsTab_spacesWithAccess > h4 { + color: #737d8c; + font-weight: 600; + font-size: 1.2rem; + line-height: 1.5rem; + text-transform: uppercase; +} + +.mx_SecurityRoomSettingsTab + .mx_SecurityRoomSettingsTab_spacesWithAccess + > span { + font-weight: 500; + font-size: 1.4rem; + line-height: 32px; + color: #737d8c; + display: inline-block; +} + +.mx_SecurityRoomSettingsTab + .mx_SecurityRoomSettingsTab_spacesWithAccess + > span + .mx_RoomAvatar_isSpaceRoom + img, +.mx_SecurityRoomSettingsTab + .mx_SecurityRoomSettingsTab_spacesWithAccess + > span + img.mx_RoomAvatar_isSpaceRoom { + border-radius: 8px; +} + +.mx_SecurityRoomSettingsTab + .mx_SecurityRoomSettingsTab_spacesWithAccess + > span + .mx_BaseAvatar { + margin-right: 8px; +} + +.mx_SecurityRoomSettingsTab + .mx_SecurityRoomSettingsTab_spacesWithAccess + > span + + span { + margin-left: 16px; +} + .mx_SecurityRoomSettingsTab_warning { display: block; } + .mx_SecurityRoomSettingsTab_warning img { vertical-align: middle; margin-right: 5px; margin-left: 3px; margin-bottom: 5px; } + .mx_SecurityRoomSettingsTab_encryptionSection { - margin-bottom: 25px; + padding-bottom: 24px; + border-bottom: 1px solid #e7e7e7; + margin-bottom: 32px; } + +.mx_SecurityRoomSettingsTab_upgradeRequired { + margin-left: 16px; + padding: 4px 16px; + border: 1px solid #0dbd8b; + border-radius: 8px; + color: #0dbd8b; + font-size: 1.2rem; + line-height: 1.5rem; +} + +.mx_SecurityRoomSettingsTab_joinRule .mx_RadioButton { + padding-top: 16px; + margin-bottom: 8px; +} + +.mx_SecurityRoomSettingsTab_joinRule .mx_RadioButton .mx_RadioButton_content { + margin-left: 14px; + font-weight: 600; + font-size: 1.5rem; + line-height: 2.4rem; + color: #2e2f32; + display: block; +} + +.mx_SecurityRoomSettingsTab_joinRule > span { + display: inline-block; + margin-left: 34px; + margin-bottom: 16px; + font-size: 1.5rem; + line-height: 2.4rem; + color: #737d8c; +} + +.mx_SecurityRoomSettingsTab_joinRule > span + .mx_RadioButton { + border-top: 1px solid #e7e7e7; +} + +.mx_SecurityRoomSettingsTab_joinRule .mx_AccessibleButton_kind_link { + padding: 0; + font-size: inherit; +} + .mx_AppearanceUserSettingsTab_fontSlider, -.mx_AppearanceUserSettingsTab_fontSlider_preview, -.mx_AppearanceUserSettingsTab_Layout { +.mx_AppearanceUserSettingsTab_fontSlider_preview { margin-right: 100px; } + .mx_AppearanceUserSettingsTab .mx_Field { width: 256px; } + .mx_AppearanceUserSettingsTab_fontScaling { color: #2e2f32; } + .mx_AppearanceUserSettingsTab_fontSlider { display: -webkit-box; display: -ms-flexbox; @@ -17998,36 +23526,50 @@ a.mx_RoomPreviewBar_inviter { margin-top: 24px; margin-bottom: 24px; } + .mx_AppearanceUserSettingsTab_fontSlider_preview { border: 1px solid #e3e8f0; border-radius: 10px; padding: 0 16px 9px; pointer-events: none; + display: flow-root; } + +.mx_AppearanceUserSettingsTab_fontSlider_preview + .mx_EventTile[data-layout="bubble"] { + margin-top: 30px; +} + .mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption { display: none; } + .mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout { padding-top: 9px; } + .mx_AppearanceUserSettingsTab_fontSlider_smallText { font-size: 15px; padding-right: 20px; padding-left: 5px; font-weight: 500; } + .mx_AppearanceUserSettingsTab_fontSlider_largeText { font-size: 18px; padding-left: 20px; padding-right: 5px; font-weight: 500; } + .mx_AppearanceUserSettingsTab > .mx_SettingsTab_SubHeading { margin-bottom: 32px; } + .mx_AppearanceUserSettingsTab_themeSection { color: #2e2f32; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors { display: -webkit-box; display: -ms-flexbox; @@ -18041,6 +23583,7 @@ a.mx_RoomPreviewBar_inviter { margin-top: 4px; margin-bottom: 30px; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton { @@ -18061,6 +23604,7 @@ a.mx_RoomPreviewBar_inviter { font-weight: 600; color: #61708b; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton @@ -18069,23 +23613,27 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-pack: center; justify-content: center; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton_enabled { opacity: 1; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton_enabled.mx_ThemeSelector_light { background-color: #f3f8fd; color: #2e2f32; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton_enabled.mx_ThemeSelector_dark { background-color: #25282e; color: #f3f8fd; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton_enabled.mx_ThemeSelector_dark @@ -18099,12 +23647,14 @@ a.mx_RoomPreviewBar_inviter { > div { border-color: #e3e8f0; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton_enabled.mx_ThemeSelector_black { background-color: #000; color: #f3f8fd; } + .mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors > .mx_RadioButton_enabled.mx_ThemeSelector_black @@ -18118,9 +23668,11 @@ a.mx_RoomPreviewBar_inviter { > div { border-color: #e3e8f0; } + .mx_SettingsTab_customFontSizeField { margin-left: calc(1.6rem + 10px); } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons { display: -webkit-box; display: -ms-flexbox; @@ -18129,12 +23681,11 @@ a.mx_RoomPreviewBar_inviter { -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; + grid-gap: 24px; + gap: 24px; color: #2e2f32; } -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - .mx_AppearanceUserSettingsTab_spacer { - width: 24px; -} + .mx_AppearanceUserSettingsTab_Layout_RadioButtons > .mx_AppearanceUserSettingsTab_Layout_RadioButton { -webkit-box-flex: 0; @@ -18153,6 +23704,7 @@ a.mx_RoomPreviewBar_inviter { border: 1px solid #e3e8f0; border-radius: 10px; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons > .mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_msgOption, @@ -18161,6 +23713,7 @@ a.mx_RoomPreviewBar_inviter { .mx_MessageActionBar { display: none; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons > .mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview { @@ -18176,6 +23729,7 @@ a.mx_RoomPreviewBar_inviter { padding: 10px; pointer-events: none; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons > .mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_RadioButton { @@ -18184,48 +23738,81 @@ a.mx_RoomPreviewBar_inviter { flex-grow: 0; padding: 10px; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons > .mx_AppearanceUserSettingsTab_Layout_RadioButton .mx_EventTile_content { margin-right: 0; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons > .mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected { border-color: #0dbd8b; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton { border-top: 1px solid #e3e8f0; } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton > input + div { border-color: rgba(97, 112, 139, 0.2); } + .mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked { background-color: rgba(13, 189, 139, 0.08); } + +.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_EventTile { + margin: 0; +} + +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + .mx_EventTile[data-layout="bubble"] { + margin-right: 40px; +} + +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + .mx_EventTile[data-layout="irc"] + > a { + display: none; +} + +.mx_AppearanceUserSettingsTab_Layout_RadioButtons + .mx_EventTile + .mx_EventTile_line { + max-width: 90%; +} + .mx_AppearanceUserSettingsTab_Advanced { color: #2e2f32; } + .mx_AppearanceUserSettingsTab_Advanced > * { margin-bottom: 16px; } + .mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_AdvancedToggle { color: #0dbd8b; cursor: pointer; } + .mx_AppearanceUserSettingsTab_Advanced .mx_AppearanceUserSettingsTab_systemFont { margin-left: calc(1.6rem + 10px); } + .mx_GeneralUserSettingsTab_changePassword .mx_Field { margin-right: 100px; } + .mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child { margin-top: 0; } + .mx_GeneralUserSettingsTab_accountSection .mx_SettingsTab_subheading:nth-child(n + 1), .mx_GeneralUserSettingsTab_discovery @@ -18233,12 +23820,14 @@ a.mx_RoomPreviewBar_inviter { .mx_SetIdServer .mx_SettingsTab_subheading { margin-top: 24px; } + .mx_GeneralUserSettingsTab_accountSection .mx_Spinner, .mx_GeneralUserSettingsTab_discovery .mx_Spinner { -webkit-box-pack: left; -ms-flex-pack: left; justify-content: left; } + .mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses, .mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers, .mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress, @@ -18246,16 +23835,20 @@ a.mx_RoomPreviewBar_inviter { .mx_GeneralUserSettingsTab_languageInput { margin-right: 100px; } + .mx_GeneralUserSettingsTab_warningIcon { vertical-align: middle; } + .mx_HelpUserSettingsTab_debugButton { margin-bottom: 5px; margin-top: 5px; } + .mx_HelpUserSettingsTab span.mx_AccessibleButton { word-break: break-word; } + .mx_HelpUserSettingsTab code { word-break: break-all; -webkit-user-select: all; @@ -18263,6 +23856,7 @@ a.mx_RoomPreviewBar_inviter { -ms-user-select: all; user-select: all; } + .mx_HelpUserSettingsTab_accessToken { display: -webkit-box; display: -ms-flexbox; @@ -18276,6 +23870,7 @@ a.mx_RoomPreviewBar_inviter { margin-top: 10px; padding: 10px; } + .mx_HelpUserSettingsTab_accessToken_copy { -ms-flex-negative: 0; flex-shrink: 0; @@ -18283,6 +23878,7 @@ a.mx_RoomPreviewBar_inviter { margin-left: 20px; display: inherit; } + .mx_HelpUserSettingsTab_accessToken_copy > div { -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); @@ -18292,68 +23888,86 @@ a.mx_RoomPreviewBar_inviter { height: 20px; background-repeat: no-repeat; } + .mx_LabsUserSettingsTab .mx_SettingsTab_section { margin-top: 32px; } + .mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag { margin-right: 0; } + .mx_MjolnirUserSettingsTab .mx_Field { margin-right: 100px; } + .mx_MjolnirUserSettingsTab_listItem { margin-bottom: 2px; } + .mx_NotificationUserSettingsTab .mx_SettingsTab_heading { margin-bottom: 10px; } + .mx_PreferencesUserSettingsTab .mx_Field { margin-right: 100px; } + .mx_PreferencesUserSettingsTab .mx_SettingsTab_section { margin-bottom: 30px; } + .mx_SecurityUserSettingsTab .mx_DevicesPanel { width: auto; max-width: 880px; } + .mx_SecurityUserSettingsTab_deviceInfo { display: table; padding-left: 0; } + .mx_SecurityUserSettingsTab_deviceInfo > li { display: table-row; } + .mx_SecurityUserSettingsTab_deviceInfo > li > label, .mx_SecurityUserSettingsTab_deviceInfo > li > span { display: table-cell; padding-right: 1em; } + .mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton, .mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton { margin-right: 10px; } + .mx_SecurityUserSettingsTab_importExportButtons { margin-bottom: 15px; } + .mx_SecurityUserSettingsTab_ignoredUser { margin-bottom: 5px; } + .mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton { margin-right: 10px; } + .mx_SecurityUserSettingsTab .mx_SettingsTab_section .mx_AccessibleButton_kind_link { padding: 0; font-size: inherit; } + .mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning { color: #ff4b55; position: relative; padding-left: 40px; margin-top: 30px; } + .mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before { -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; @@ -18371,21 +23985,26 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/feather-customised/alert-triangle.38aca3a.svg); mask-image: url(../../img/feather-customised/alert-triangle.38aca3a.svg); } + .mx_VoiceUserSettingsTab .mx_Field { margin-right: 100px; } + .mx_VoiceUserSettingsTab_missingMediaPermissions { margin-bottom: 15px; } + .mx_SpaceBasicSettings .mx_Field { - margin: 32px 0; + margin: 24px 0; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer { display: -webkit-box; display: -ms-flexbox; display: flex; margin-top: 24px; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer .mx_SpaceBasicSettings_avatar { @@ -18395,6 +24014,7 @@ a.mx_RoomPreviewBar_inviter { background-color: #8d99a5; border-radius: 16px; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer img.mx_SpaceBasicSettings_avatar { @@ -18404,11 +24024,13 @@ a.mx_RoomPreviewBar_inviter { object-fit: cover; border-radius: 16px; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar { cursor: pointer; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer div.mx_SpaceBasicSettings_avatar:before { @@ -18428,11 +24050,13 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/element-icons/camera.a81a395.svg); mask-image: url(../../img/element-icons/camera.a81a395.svg); } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer > input[type="file"] { display: none; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer > .mx_AccessibleButton_kind_link { @@ -18441,12 +24065,14 @@ a.mx_RoomPreviewBar_inviter { margin: auto 16px; color: #368bd6; } + .mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer > .mx_SpaceBasicSettings_avatar_remove { color: #ff4b55; } -.mx_SpaceBasicSettings .mx_FormButton { + +.mx_SpaceBasicSettings .mx_AccessibleButton_hasKind { padding: 8px 22px; margin-left: auto; display: block; @@ -18454,14 +24080,17 @@ a.mx_RoomPreviewBar_inviter { width: -moz-min-content; width: min-content; } + .mx_SpaceBasicSettings .mx_AccessibleButton_disabled { cursor: not-allowed; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background { background-color: rgba(46, 48, 51, 0.38); opacity: 0.6; left: 71px; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu { padding: 24px; width: 480px; @@ -18470,21 +24099,25 @@ a.mx_RoomPreviewBar_inviter { background-color: #fff; position: relative; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > h2 { font-weight: 600; font-size: 1.8rem; margin-top: 4px; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > p { font-size: 1.5rem; color: #737d8c; margin: 0; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill { position: absolute; top: 24px; right: 24px; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType { position: relative; padding: 16px 32px 16px 72px; @@ -18496,13 +24129,16 @@ a.mx_RoomPreviewBar_inviter { font-size: 1.5rem; margin: 20px 0; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > h3 { font-weight: 600; margin: 0 0 4px; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > span { color: #737d8c; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before { position: absolute; content: ""; @@ -18518,32 +24154,38 @@ a.mx_RoomPreviewBar_inviter { mask-size: 24px; background-color: #8d99a5; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover { border-color: #0dbd8b; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover:before { background-color: #0dbd8b; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover > span { color: #2e2f32; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_public:before { -webkit-mask-image: url(../../img/globe.8201f08.svg); mask-image: url(../../img/globe.8201f08.svg); } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType_private:before { -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); mask-image: url(../../img/element-icons/lock.1f264bd.svg); } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back { width: 28px; height: 28px; @@ -18552,6 +24194,7 @@ a.mx_RoomPreviewBar_inviter { border-radius: 14px; margin-bottom: 12px; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before { content: ""; position: absolute; @@ -18571,6 +24214,7 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_kind_primary { @@ -18581,9 +24225,11 @@ a.mx_RoomPreviewBar_inviter { width: -moz-min-content; width: min-content; } + .mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled { cursor: not-allowed; } + .mx_SpacePublicShare .mx_AccessibleButton { position: relative; padding: 16px 32px 16px 72px; @@ -18595,13 +24241,16 @@ a.mx_RoomPreviewBar_inviter { font-size: 1.5rem; margin: 20px 0; } + .mx_SpacePublicShare .mx_AccessibleButton > h3 { font-weight: 600; margin: 0 0 4px; } + .mx_SpacePublicShare .mx_AccessibleButton > span { color: #737d8c; } + .mx_SpacePublicShare .mx_AccessibleButton:before { position: absolute; content: ""; @@ -18617,39 +24266,49 @@ a.mx_RoomPreviewBar_inviter { mask-size: 24px; background-color: #8d99a5; } + .mx_SpacePublicShare .mx_AccessibleButton:hover { border-color: #0dbd8b; } + .mx_SpacePublicShare .mx_AccessibleButton:hover:before { background-color: #0dbd8b; } + .mx_SpacePublicShare .mx_AccessibleButton:hover > span { color: #2e2f32; } + .mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before { -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); mask-image: url(../../img/element-icons/link.8f4b1fc.svg); } + .mx_SpacePublicShare .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before { -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); mask-image: url(../../img/element-icons/room/invite.946a71b.svg); } + .mx_InlineTermsAgreement_cbContainer { margin-bottom: 10px; font-size: 1.4rem; } + .mx_InlineTermsAgreement_cbContainer a { color: #0dbd8b; text-decoration: none; } + .mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox { margin-top: 10px; } + .mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input { vertical-align: text-bottom; } + .mx_InlineTermsAgreement_link { display: inline-block; -webkit-mask-image: url(../../img/external-link.a8d3e9b.svg); @@ -18664,14 +24323,17 @@ a.mx_RoomPreviewBar_inviter { margin-left: 3px; vertical-align: middle; } + .mx_AnalyticsToast .mx_AccessibleButton_kind_danger { background: none; color: #0dbd8b; } + .mx_AnalyticsToast .mx_AccessibleButton_kind_primary { background: #0dbd8b; color: #fff; } + .mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon { display: inline-block; width: 1.8rem; @@ -18687,22 +24349,27 @@ a.mx_RoomPreviewBar_inviter { mask-image: url(../../img/element-icons/cloud-off.33cd28e.svg); margin-right: 8px; } + .mx_NonUrgentEchoFailureToast span { vertical-align: middle; } + .mx_NonUrgentEchoFailureToast .mx_AccessibleButton { padding: 0; } + .mx_VerificationShowSas_decimalSas { text-align: center; font-weight: 700; padding-left: 3px; padding-right: 3px; } + .mx_VerificationShowSas_decimalSas span { margin-left: 5px; margin-right: 5px; } + .mx_VerificationShowSas_emojiSas { text-align: center; display: -webkit-box; @@ -18715,29 +24382,35 @@ a.mx_RoomPreviewBar_inviter { justify-content: center; margin: 25px 0; } + .mx_VerificationShowSas_emojiSas_block { display: inline-block; margin-bottom: 16px; position: relative; width: 52px; } + .mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block, .mx_Dialog .mx_VerificationShowSas_emojiSas_block { width: 60px; } + .mx_VerificationShowSas_emojiSas_emoji { font-size: 3.2rem; } + .mx_VerificationShowSas_emojiSas_label { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 1.2rem; } + .mx_VerificationShowSas_emojiSas_break { -ms-flex-preferred-size: 100%; flex-basis: 100%; } + .mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_matchButton { @@ -18745,6 +24418,7 @@ a.mx_RoomPreviewBar_inviter { background-color: rgba(3, 179, 129, 0.16); border: none; } + .mx_VerificationShowSas .mx_Dialog_buttons button.mx_VerificationShowSas_noMatchButton { @@ -18752,91 +24426,7 @@ a.mx_RoomPreviewBar_inviter { background-color: rgba(255, 75, 85, 0.16); border: none; } -.mx_PlayPauseButton { - position: relative; - width: 32px; - height: 32px; - border-radius: 32px; - background-color: #fff; -} -.mx_PlayPauseButton:before { - content: ""; - position: absolute; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} -.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before { - opacity: 0.5; -} -.mx_PlayPauseButton.mx_PlayPauseButton_play:before { - width: 13px; - height: 16px; - top: 8px; - left: 12px; - -webkit-mask-image: url(../../img/element-icons/play.a72552b.svg); - mask-image: url(../../img/element-icons/play.a72552b.svg); -} -.mx_PlayPauseButton.mx_PlayPauseButton_pause:before { - width: 10px; - height: 12px; - top: 10px; - left: 11px; - -webkit-mask-image: url(../../img/element-icons/pause.c4c0886.svg); - mask-image: url(../../img/element-icons/pause.c4c0886.svg); -} -.mx_VoiceMessagePrimaryContainer { - padding: 7px 12px 7px 11px; - background-color: #e3e8f0; - border-radius: 12px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #737d8c; - font-size: 1.4rem; - line-height: 2.4rem; -} -.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar { - background-color: #c1c6cd; -} -.mx_VoiceMessagePrimaryContainer - .mx_Waveform - .mx_Waveform_bar.mx_Waveform_bar_100pct { - -webkit-transition: background-color 0.25s ease; - transition: background-color 0.25s ease; - background-color: #737d8c; -} -.mx_VoiceMessagePrimaryContainer .mx_Clock { - width: 4.2rem; - padding-right: 6px; - padding-left: 8px; -} -.mx_Waveform { - position: relative; - height: 30px; - top: 1px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - overflow: hidden; -} -.mx_Waveform .mx_Waveform_bar { - width: 0; - border: 1px solid transparent; - border-radius: 2px; - min-height: 0; - max-height: 100%; - margin-left: 1px; - margin-right: 1px; -} + .mx_CallContainer { position: absolute; right: 20px; @@ -18844,20 +24434,25 @@ a.mx_RoomPreviewBar_inviter { z-index: 100; pointer-events: none; } + .mx_CallContainer .mx_CallPreview { pointer-events: auto; cursor: pointer; } -.mx_CallContainer .mx_CallPreview .mx_CallView_video { - width: 350px; + +.mx_CallContainer .mx_CallPreview .mx_VideoFeed_remote.mx_VideoFeed_voice { + min-height: 150px; } + .mx_CallContainer .mx_CallPreview .mx_VideoFeed_local { border-radius: 8px; overflow: hidden; } + .mx_CallContainer .mx_AppTile_persistedWrapper div { min-width: 350px; } + .mx_CallContainer .mx_IncomingCallBox { min-width: 250px; background-color: #f4f6fa; @@ -18868,12 +24463,14 @@ a.mx_RoomPreviewBar_inviter { pointer-events: auto; cursor: pointer; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo { display: -webkit-box; display: -ms-flexbox; display: flex; direction: row; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo @@ -18881,6 +24478,7 @@ a.mx_RoomPreviewBar_inviter { .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img { margin: 8px; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo > div { display: -webkit-box; display: -ms-flexbox; @@ -18893,6 +24491,7 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-pack: center; justify-content: center; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1, .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p { margin: 0; @@ -18900,9 +24499,11 @@ a.mx_RoomPreviewBar_inviter { font-size: 1.4rem; line-height: 1.6rem; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1 { font-weight: 700; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons { padding: 8px; display: -webkit-box; @@ -18913,12 +24514,14 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-direction: row; flex-direction: row; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons > .mx_IncomingCallBox_spacer { width: 8px; } + .mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons > * { -ms-flex-negative: 0; flex-shrink: 0; @@ -18929,6 +24532,41 @@ a.mx_RoomPreviewBar_inviter { font-size: 1.5rem; line-height: 2.4rem; } + +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_iconButton { + position: absolute; + right: 8px; +} + +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_iconButton:before { + content: ""; + height: 20px; + width: 20px; + background-color: #c1c6cd; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-position: center; + mask-position: center; +} + +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_silence:before { + -webkit-mask-image: url(../../img/voip/silence.08cd2d6.svg); + mask-image: url(../../img/voip/silence.08cd2d6.svg); +} + +.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_unSilence:before { + -webkit-mask-image: url(../../img/voip/un-silence.cebdd12.svg); + mask-image: url(../../img/voip/un-silence.cebdd12.svg); +} + +.mx_CallPreview { + position: fixed; + left: 0; + top: 0; +} + .mx_CallView { border-radius: 8px; background-color: #f2f5f8; @@ -18936,6 +24574,7 @@ a.mx_RoomPreviewBar_inviter { padding-right: 8px; pointer-events: auto; } + .mx_CallView_large { padding-bottom: 10px; margin: 5px 5px 5px 18px; @@ -18947,35 +24586,41 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-direction: column; flex-direction: column; } + .mx_CallView_large, .mx_CallView_large .mx_CallView_voice { -webkit-box-flex: 1; -ms-flex: 1; flex: 1; } + .mx_CallView_pip { width: 320px; padding-bottom: 8px; - margin-top: 10px; background-color: #f4f6fa; -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); border-radius: 8px; } + .mx_CallView_pip .mx_CallView_voice { height: 180px; } + .mx_CallView_pip .mx_CallView_callControls { bottom: 0; } + .mx_CallView_pip .mx_CallView_callControls_button:before { width: 36px; height: 36px; } + .mx_CallView_pip .mx_CallView_holdTransferContent { padding-top: 10px; padding-bottom: 25px; } + .mx_CallView_content { position: relative; display: -webkit-box; @@ -18983,12 +24628,14 @@ a.mx_RoomPreviewBar_inviter { display: flex; border-radius: 8px; } + .mx_CallView_voice { -webkit-box-orient: vertical; -ms-flex-direction: column; flex-direction: column; background-color: #27303a; } + .mx_CallView_voice, .mx_CallView_voice_avatarsContainer { -webkit-box-align: center; @@ -18999,6 +24646,7 @@ a.mx_RoomPreviewBar_inviter { justify-content: center; -webkit-box-direction: normal; } + .mx_CallView_voice_avatarsContainer { display: -webkit-box; display: -ms-flexbox; @@ -19007,10 +24655,12 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-direction: row; flex-direction: row; } + .mx_CallView_voice_avatarsContainer div { margin-left: 12px; margin-right: 12px; } + .mx_CallView_voice .mx_CallView_holdTransferContent .mx_CallView_voice_avatarContainer { @@ -19018,28 +24668,34 @@ a.mx_RoomPreviewBar_inviter { overflow: hidden; position: relative; } + .mx_CallView_holdTransferContent { height: 20px; padding-top: 20px; padding-bottom: 15px; color: #fff; } + .mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind { padding: 0; font-weight: 700; } + .mx_CallView_video { width: 100%; height: 100%; z-index: 30; overflow: hidden; } + .mx_CallView_video_hold { overflow: hidden; } + .mx_CallView_video_hold .mx_VideoFeed { visibility: hidden; } + .mx_CallView_video_holdBackground { position: absolute; width: 100%; @@ -19052,6 +24708,7 @@ a.mx_RoomPreviewBar_inviter { -webkit-filter: blur(20px); filter: blur(20px); } + .mx_CallView_video_holdBackground:after { content: ""; display: block; @@ -19062,6 +24719,7 @@ a.mx_RoomPreviewBar_inviter { right: 0; background-color: rgba(0, 0, 0, 0.6); } + .mx_CallView_video .mx_CallView_holdTransferContent { position: absolute; top: 50%; @@ -19072,6 +24730,7 @@ a.mx_RoomPreviewBar_inviter { color: #fff; text-align: center; } + .mx_CallView_video .mx_CallView_holdTransferContent:before { display: block; margin-left: auto; @@ -19083,15 +24742,18 @@ a.mx_RoomPreviewBar_inviter { background-position: 50%; background-size: cover; } + .mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before { width: 30px; height: 30px; } + .mx_CallView_video .mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind { padding: 0; } + .mx_CallView_header { height: 44px; display: -webkit-box; @@ -19110,24 +24772,29 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-negative: 0; flex-shrink: 0; } + .mx_CallView_header_callType { font-size: 1.2rem; font-weight: 700; vertical-align: middle; } + .mx_CallView_header_secondaryCallInfo:before { content: "·"; margin-left: 6px; margin-right: 6px; } + .mx_CallView_header_controls { margin-left: auto; } + .mx_CallView_header_button { display: inline-block; vertical-align: middle; cursor: pointer; } + .mx_CallView_header_button:before { content: ""; display: inline-block; @@ -19142,27 +24809,33 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-position: center; mask-position: center; } + .mx_CallView_header_button_fullscreen:before { -webkit-mask-image: url(../../img/element-icons/call/fullscreen.43be138.svg); mask-image: url(../../img/element-icons/call/fullscreen.43be138.svg); } + .mx_CallView_header_button_expand:before { -webkit-mask-image: url(../../img/element-icons/call/expand.7ef9f56.svg); mask-image: url(../../img/element-icons/call/expand.7ef9f56.svg); } + .mx_CallView_header_callInfo { margin-left: 12px; margin-right: 16px; } + .mx_CallView_header_roomName { font-weight: 700; font-size: 12px; line-height: normal; height: 15px; } + .mx_CallView_secondaryCall_roomName { margin-left: 4px; } + .mx_CallView_header_callTypeSmall { font-size: 12px; color: #737d8c; @@ -19173,6 +24846,7 @@ a.mx_RoomPreviewBar_inviter { text-overflow: ellipsis; max-width: 240px; } + .mx_CallView_header_phoneIcon { display: inline-block; margin-right: 6px; @@ -19180,6 +24854,7 @@ a.mx_RoomPreviewBar_inviter { width: 16px; vertical-align: middle; } + .mx_CallView_header_phoneIcon:before { content: ""; display: inline-block; @@ -19196,6 +24871,7 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); } + .mx_CallView_callControls { position: absolute; display: -webkit-box; @@ -19210,15 +24886,18 @@ a.mx_RoomPreviewBar_inviter { -webkit-transition: opacity 0.5s; transition: opacity 0.5s; } + .mx_CallView_callControls_hidden { opacity: 0.001; pointer-events: none; } + .mx_CallView_callControls_button { cursor: pointer; margin-left: 8px; margin-right: 8px; } + .mx_CallView_callControls_button:before { content: ""; display: inline-block; @@ -19228,55 +24907,70 @@ a.mx_RoomPreviewBar_inviter { background-size: contain; background-position: 50%; } + .mx_CallView_callControls_dialpad { margin-right: auto; } + .mx_CallView_callControls_dialpad:before { background-image: url(../../img/voip/dialpad.fdda9a0.svg); } + .mx_CallView_callControls_button_dialpad_hidden { margin-right: auto; cursor: auto; } + .mx_CallView_callControls_button_micOn:before { background-image: url(../../img/voip/mic-on.2592c14.svg); } + .mx_CallView_callControls_button_micOff:before { background-image: url(../../img/voip/mic-off.774e42b.svg); } + .mx_CallView_callControls_button_vidOn:before { background-image: url(../../img/voip/vid-on.b9b8bbf.svg); } + .mx_CallView_callControls_button_vidOff:before { background-image: url(../../img/voip/vid-off.5552596.svg); } + .mx_CallView_callControls_button_hangup:before { background-image: url(../../img/voip/hangup.9c3adeb.svg); } + .mx_CallView_callControls_button_more { margin-left: auto; } + .mx_CallView_callControls_button_more:before { background-image: url(../../img/voip/more.5e8055e.svg); } + .mx_CallView_callControls_button_more_hidden { margin-left: auto; cursor: auto; } + .mx_CallView_callControls_button_invisible { visibility: hidden; pointer-events: none; position: absolute; } + .mx_CallViewForRoom { overflow: hidden; } + .mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper { display: -webkit-box; display: -ms-flexbox; display: flex; margin-bottom: 8px; } + .mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle { @@ -19288,6 +24982,7 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-pack: center; justify-content: center; } + .mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper:hover .mx_CallViewForRoom_ResizeHandle:after { @@ -19299,13 +24994,36 @@ a.mx_RoomPreviewBar_inviter { max-width: 64px; background-color: #2e2f32; } + .mx_DialPad { display: grid; + grid-row-gap: 16px; + row-gap: 16px; + grid-column-gap: 0; + -webkit-column-gap: 0; + -moz-column-gap: 0; + column-gap: 0; + margin-top: 24px; grid-template-columns: repeat(3, 1fr); - grid-gap: 16px; - gap: 16px; } + +.mx_DialPad, .mx_DialPad_button { + margin-left: auto; + margin-right: auto; +} + +.mx_DialPad_button { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; width: 40px; height: 40px; background-color: #e3e8f0; @@ -19314,9 +25032,17 @@ a.mx_RoomPreviewBar_inviter { font-weight: 600; text-align: center; vertical-align: middle; - line-height: 40px; } -.mx_DialPad_deleteButton:before, + +.mx_DialPad_button .mx_DialPad_buttonSubText { + font-size: 8px; +} + +.mx_DialPad_dialButton { + grid-column: 2; + background-color: #0dbd8b; +} + .mx_DialPad_dialButton:before { content: ""; display: inline-block; @@ -19330,68 +25056,34 @@ a.mx_RoomPreviewBar_inviter { -webkit-mask-position: center; mask-position: center; background-color: #fff; -} -.mx_DialPad_deleteButton { - background-color: #ff4b55; -} -.mx_DialPad_deleteButton:before { - -webkit-mask-image: url(../../img/element-icons/call/delete.833d785.svg); - mask-image: url(../../img/element-icons/call/delete.833d785.svg); - -webkit-mask-position: 9px; - mask-position: 9px; -} -.mx_DialPad_dialButton { - background-color: #0dbd8b; -} -.mx_DialPad_dialButton:before { -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); } + +.mx_DialPadContextMenu_dialPad .mx_DialPad { + grid-row-gap: 16px; + row-gap: 16px; + grid-column-gap: 32px; + -webkit-column-gap: 32px; + -moz-column-gap: 32px; + column-gap: 32px; +} + +.mx_DialPadContextMenuWrapper { + padding: 15px; +} + .mx_DialPadContextMenu_header { - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; + margin-top: 32px; + margin-left: 20px; + margin-right: 20px; + border: none; + border-bottom: 1px solid #c1c6cd; + -webkit-transition: border-bottom 0.25s; + transition: border-bottom 0.25s; } -.mx_DialPadContextMenu_title { - color: #61708b; - font-size: 12px; - font-weight: 600; -} -.mx_DialPadContextMenu_dialled { - height: 1em; - font-size: 18px; - font-weight: 600; -} -.mx_DialPadContextMenu_dialPad { - margin: 16px; -} -.mx_DialPadContextMenu_horizSep { - position: relative; -} -.mx_DialPadContextMenu_horizSep:before { - content: ""; - position: absolute; - width: 100%; - border-bottom: 1px solid #e3e8f0; -} -.mx_Dialog_dialPadWrapper .mx_Dialog { - padding: 0; -} -.mx_DialPadModal { - width: 192px; - height: 368px; -} -.mx_DialPadModal_header { - margin-top: 12px; - margin-left: 12px; - margin-right: 12px; -} -.mx_DialPadModal_title { - color: #61708b; - font-size: 12px; - font-weight: 600; -} -.mx_DialPadModal_cancel { + +.mx_DialPadContextMenu_cancel { float: right; -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); mask: url(../../img/feather-customised/cancel.23c2689.svg); @@ -19406,32 +25098,111 @@ a.mx_RoomPreviewBar_inviter { background-color: #c1c1c1; cursor: pointer; } -.mx_DialPadModal_field { + +.mx_DialPadContextMenu_header:focus-within { + border-bottom: 1px solid #0dbd8b; +} + +.mx_DialPadContextMenu_title { + color: #61708b; + font-size: 12px; + font-weight: 600; +} + +.mx_DialPadContextMenu_dialled { + height: 1.5em; + font-size: 18px; + font-weight: 600; border: none; margin: 0; } + +.mx_DialPadContextMenu_dialled input { + font-size: 18px; + font-weight: 600; + overflow: hidden; + max-width: 185px; + text-align: left; + direction: rtl; + padding: 8px 0; + background-color: transparent; +} + +.mx_DialPadContextMenu_dialPad { + margin: 16px; +} + +.mx_Dialog_dialPadWrapper .mx_Dialog { + padding: 0; +} + +.mx_DialPadModal { + width: 292px; + height: 370px; + padding: 16px 0 0; +} + +.mx_DialPadModal_header { + margin-top: 32px; + margin-left: 40px; + margin-right: 40px; + border-bottom: 1px solid #c1c6cd; + -webkit-transition: border-bottom 0.25s; + transition: border-bottom 0.25s; +} + +.mx_DialPadModal_header:focus-within { + border-bottom: 1px solid #0dbd8b; +} + +.mx_DialPadModal_title { + color: #61708b; + font-size: 12px; + font-weight: 600; +} + +.mx_DialPadModal_cancel { + float: right; + -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); + mask: url(../../img/feather-customised/cancel.23c2689.svg); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: cover; + mask-size: cover; + width: 14px; + height: 14px; + background-color: #c1c1c1; + cursor: pointer; + margin-right: 16px; +} + +.mx_DialPadModal_field { + border: none; + margin: 0; + height: 30px; +} + +.mx_DialPadModal_field .mx_Field_postfix { + border-left: none; +} + .mx_DialPadModal_field input { font-size: 18px; font-weight: 600; } + .mx_DialPadModal_dialPad { margin-left: 16px; margin-right: 16px; margin-top: 16px; } -.mx_DialPadModal_horizSep { - position: relative; -} -.mx_DialPadModal_horizSep:before { - content: ""; - position: absolute; - width: 100%; - border-bottom: 1px solid #e3e8f0; -} + .mx_VideoFeed_voice { - padding-bottom: 52px; background-color: #27303a; } + .mx_VideoFeed_remote { width: 100%; height: 100%; @@ -19445,9 +25216,11 @@ a.mx_RoomPreviewBar_inviter { -ms-flex-align: center; align-items: center; } + .mx_VideoFeed_remote.mx_VideoFeed_video { background-color: #000; } + .mx_VideoFeed_local { max-width: 25%; max-height: 25%; @@ -19457,14 +25230,94 @@ a.mx_RoomPreviewBar_inviter { z-index: 100; border-radius: 4px; } + .mx_VideoFeed_local.mx_VideoFeed_video { background-color: transparent; } + .mx_VideoFeed_mirror { -webkit-transform: scaleX(-1); transform: scaleX(-1); } + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-formula, +.hljs-keyword { + color: #a626a4; +} + +.hljs-deletion, +.hljs-name, +.hljs-section, +.hljs-selector-tag, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-addition, +.hljs-attribute, +.hljs-meta-string, +.hljs-regexp, +.hljs-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-number, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-selector-pseudo, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #986801; +} + +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-symbol, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: 700; +} + +.hljs-link { + text-decoration: underline; +} `; + const customCSS = ` #snackbar { display: flex; @@ -19566,7 +25419,6 @@ img { white-space: nowrap; overflow: hidden; } - `; const markdownCSS = `.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}`; From 41bc2b6481c85a476167fb7ccb2eaee1e1f8e950 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 22:15:05 +0530 Subject: [PATCH 139/176] Move away from streamsaver(for now) --- package.json | 4 +- src/utils/exportUtils/Exporter.ts | 63 ++----- src/utils/exportUtils/ZipStream.ts | 279 ----------------------------- yarn.lock | 49 +++-- 4 files changed, 51 insertions(+), 344 deletions(-) delete mode 100644 src/utils/exportUtils/ZipStream.ts diff --git a/package.json b/package.json index 15c310c2ce..30254ed78d 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "highlight.js": "^10.5.0", "html-entities": "^1.4.0", "is-ip": "^3.1.0", + "jszip": "^3.7.0", "katex": "^0.12.0", "linkifyjs": "^2.1.9", "lodash": "^4.17.20", @@ -99,10 +100,8 @@ "resize-observer-polyfill": "^1.5.1", "rfc4648": "^1.4.0", "sanitize-html": "^2.3.2", - "streamsaver": "^2.0.5", "tar-js": "^0.3.0", "url": "^0.11.0", - "web-streams-polyfill": "^3.0.3", "what-input": "^5.2.10", "zxcvbn": "^4.4.2" }, @@ -131,6 +130,7 @@ "@types/counterpart": "^0.18.1", "@types/css-font-loading-module": "^0.0.6", "@types/diff-match-patch": "^1.0.32", + "@types/file-saver": "^2.0.3", "@types/flux": "^3.1.9", "@types/jest": "^26.0.20", "@types/linkifyjs": "^2.1.3", diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index d43f937c7b..c840731d47 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,4 +1,3 @@ -import streamSaver from "streamsaver"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; @@ -7,21 +6,18 @@ import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; import { Direction, MatrixClient } from "matrix-js-sdk"; -import streamToZIP from "./ZipStream"; -import * as ponyfill from "web-streams-polyfill/ponyfill"; -import "web-streams-polyfill/ponyfill"; // to support streams API for older browsers import { MutableRefObject } from "react"; +import JSZip from "jszip"; +import { saveAs } from "file-saver"; -type FileStream = { +type BlobFile = { name: string; - stream(): ReadableStream; + blob: Blob; }; export default abstract class Exporter { - protected files: FileStream[]; + protected files: BlobFile[]; protected client: MatrixClient; - protected writer: WritableStreamDefaultWriter<any>; - protected fileStream: WritableStream<any>; protected cancelled: boolean; protected constructor( @@ -34,7 +30,6 @@ export default abstract class Exporter { this.files = []; this.client = MatrixClientPeg.get(); window.addEventListener("beforeunload", this.onBeforeUnload); - window.addEventListener("onunload", this.abortWriter); } protected onBeforeUnload(e: BeforeUnloadEvent): string { @@ -50,7 +45,7 @@ export default abstract class Exporter { protected addFile(filePath: string, blob: Blob): void { const file = { name: filePath, - stream: () => blob.stream(), + blob, }; this.files.push(file); } @@ -58,67 +53,31 @@ export default abstract class Exporter { protected async downloadZIP(): Promise<any> { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; - // Support for older browsers - streamSaver.WritableStream = ponyfill.WritableStream; - + const zip = new JSZip(); // Create a writable stream to the directory - this.fileStream = streamSaver.createWriteStream(filename); - if (!this.cancelled) this.updateProgress("Generating a ZIP"); else return this.cleanUp(); - this.writer = this.fileStream.getWriter(); - const files = this.files; + for (const file of this.files) zip.file(file.name, file.blob); - const readableZipStream = streamToZIP({ - start(ctrl) { - for (const file of files) ctrl.enqueue(file); - ctrl.close(); - }, - }); + const content = await zip.generateAsync({ type: "blob" }); - if (this.cancelled) return this.cleanUp(); - - this.updateProgress("Writing to the file system"); - - const reader = readableZipStream.getReader(); - await this.pumpToFileStream(reader); + await saveAs(content, filename); } protected cleanUp(): string { console.log("Cleaning up..."); window.removeEventListener("beforeunload", this.onBeforeUnload); - window.removeEventListener("onunload", this.abortWriter); return ""; } public async cancelExport(): Promise<void> { console.log("Cancelling export..."); this.cancelled = true; - await this.abortWriter(); } protected async downloadPlainText(fileName: string, text: string): Promise<any> { - this.fileStream = streamSaver.createWriteStream(fileName); - this.writer = this.fileStream.getWriter(); - const data = new TextEncoder().encode(text); - if (this.cancelled) return this.cleanUp(); - await this.writer.write(data); - await this.writer.close(); - } - - protected async abortWriter(): Promise<void> { - await this.fileStream?.abort(); - await this.writer?.abort(); - } - - protected async pumpToFileStream(reader: ReadableStreamDefaultReader): Promise<void> { - const res = await reader.read(); - if (res.done) await this.writer.close(); - else { - await this.writer.write(res.value); - await this.pumpToFileStream(reader); - } + await saveAs(new Blob[text], fileName); } protected setEventMetadata(event: MatrixEvent): MatrixEvent { diff --git a/src/utils/exportUtils/ZipStream.ts b/src/utils/exportUtils/ZipStream.ts deleted file mode 100644 index 2ee355f09c..0000000000 --- a/src/utils/exportUtils/ZipStream.ts +++ /dev/null @@ -1,279 +0,0 @@ -// Based on https://github.com/jimmywarting/StreamSaver.js/blob/master/examples/zip-stream.js - -/* global ReadableStream */ - -type TypedArray = - | Int8Array - | Uint8Array - | Int16Array - | Uint16Array - | Int32Array - | Uint32Array - | Uint8ClampedArray - | Float32Array - | Float64Array; - -/** - * 32-bit cyclic redundancy check, or CRC-32 - checksum - */ -class Crc32 { - crc: number; - table: any; - constructor() { - this.crc = -1; - this.table = (() => { - let i; - let j; - let t; - const table = []; - - for (i = 0; i < 256; i++) { - t = i; - for (j = 0; j < 8; j++) { - t = (t & 1) - ? (t >>> 1) ^ 0xEDB88320 - : t >>> 1; - } - table[i] = t; - } - return table; - })(); - } - - append(data: TypedArray) { - let crc = this.crc | 0; - const table = this.table; - for (let offset = 0, len = data.length | 0; offset < len; offset++) { - crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF]; - } - this.crc = crc; - } - - get() { - return ~this.crc; - } -} - -type DataHelper = { - array: Uint8Array; - view: DataView; -}; - -const getDataHelper = (byteLength: number): DataHelper => { - const uint8 = new Uint8Array(byteLength); - return { - array: uint8, - view: new DataView(uint8.buffer), - }; -}; - -type FileLike = File & { - directory: string; - comment: string; - stream(): ReadableStream; -}; - -type ZipObj = { - crc?: Crc32; - uncompressedLength: number; - compressedLength: number; - ctrl: ReadableStreamDefaultController; - writeFooter: Function; - writeHeader: Function; - reader?: ReadableStreamDefaultReader; - offset: number; - header?: DataHelper; - fileLike: FileLike; - level: number; - directory: boolean; -}; - -const pump = (zipObj: ZipObj) => zipObj.reader ? zipObj.reader.read().then(chunk => { - if (zipObj.crc) { - if (chunk.done) return zipObj.writeFooter(); - const outputData = chunk.value; - zipObj.crc.append(outputData); - zipObj.uncompressedLength += outputData.length; - zipObj.compressedLength += outputData.length; - zipObj.ctrl.enqueue(outputData); - } else { - throw new Error('Missing zipObj.crc'); - } -}) : undefined; - -export default function streamToZIP(underlyingSource: UnderlyingSource) { - const files = Object.create(null); - const filenames: string[] = []; - const encoder = new TextEncoder(); - let offset = 0; - let activeZipIndex = 0; - let ctrl: ReadableStreamDefaultController; - let activeZipObject: ZipObj; - let closed: boolean; - - function next() { - activeZipIndex++; - activeZipObject = files[filenames[activeZipIndex]]; - if (activeZipObject) processNextChunk(); - else if (closed) closeZip(); - } - - const zipWriter: ReadableStreamDefaultController = { - desiredSize: null, - - error(err) { - console.error(err); - }, - - enqueue(fileLike: FileLike) { - if (closed) { - throw new TypeError( - "Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed", - ); - } - - let name = fileLike.name.trim(); - const date = new Date(typeof fileLike.lastModified === 'undefined' ? Date.now() : fileLike.lastModified); - - if (fileLike.directory && !name.endsWith('/')) name += '/'; - // if file already exists, do not enqueue - if (files[name]) return; - - const nameBuf = encoder.encode(name); - filenames.push(name); - - const zipObject: ZipObj = files[name] = { - level: 0, - ctrl, - directory: !!fileLike.directory, - nameBuf, - comment: encoder.encode(fileLike.comment || ''), - compressedLength: 0, - uncompressedLength: 0, - offset, - - writeHeader() { - const header = getDataHelper(26); - const data = getDataHelper(30 + nameBuf.length); - - zipObject.offset = offset; - zipObject.header = header; - - if (zipObject.level !== 0 && !zipObject.directory) { - header.view.setUint16(4, 0x0800); - } - - header.view.setUint32(0, 0x14000808); - header.view.setUint16( - 6, - (((date.getHours() << 6) | date.getMinutes()) << 5) | (date.getSeconds() / 2), - true, - ); - header.view.setUint16( - 8, - ((((date.getFullYear() - 1980) << 4) | (date.getMonth() + 1)) << 5) | - date.getDate(), - true, - ); - header.view.setUint16(22, nameBuf.length, true); - data.view.setUint32(0, 0x504b0304); - data.array.set(header.array, 4); - data.array.set(nameBuf, 30); - offset += data.array.length; - ctrl.enqueue(data.array); - }, - - writeFooter() { - const footer = getDataHelper(16); - footer.view.setUint32(0, 0x504b0708); - - if (zipObject.crc && zipObject.header) { - zipObject.header.view.setUint32(10, zipObject.crc.get(), true); - zipObject.header.view.setUint32(14, zipObject.compressedLength, true); - zipObject.header.view.setUint32(18, zipObject.uncompressedLength, true); - footer.view.setUint32(4, zipObject.crc.get(), true); - footer.view.setUint32(8, zipObject.compressedLength, true); - footer.view.setUint32(12, zipObject.uncompressedLength, true); - } - - ctrl.enqueue(footer.array); - offset += zipObject.compressedLength + 16; - next(); - }, - fileLike, - }; - - if (!activeZipObject) { - activeZipObject = zipObject; - processNextChunk(); - } - }, - - close() { - if (closed) { - throw new TypeError( - "Cannot close a readable stream that has already been requested to be closed", - ); - } - if (!activeZipObject) closeZip(); - closed = true; - }, - }; - - function closeZip() { - let length = 0; - let index = 0; - let indexFilename: number; - let file: any; - - for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { - file = files[filenames[indexFilename]]; - length += 46 + file.nameBuf.length + file.comment.length; - } - const data = getDataHelper(length + 22); - for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) { - file = files[filenames[indexFilename]]; - data.view.setUint32(index, 0x504b0102); - data.view.setUint16(index + 4, 0x1400); - data.array.set(file.header.array, index + 6); - data.view.setUint16(index + 32, file.comment.length, true); - if (file.directory) { - data.view.setUint8(index + 38, 0x10); - } - data.view.setUint32(index + 42, file.offset, true); - data.array.set(file.nameBuf, index + 46); - data.array.set(file.comment, index + 46 + file.nameBuf.length); - index += 46 + file.nameBuf.length + file.comment.length; - } - data.view.setUint32(index, 0x504b0506); - data.view.setUint16(index + 8, filenames.length, true); - data.view.setUint16(index + 10, filenames.length, true); - data.view.setUint32(index + 12, length, true); - data.view.setUint32(index + 16, offset, true); - ctrl.enqueue(data.array); - ctrl.close(); - } - - function processNextChunk() { - if (!activeZipObject) return; - if (activeZipObject.reader) return pump(activeZipObject); - if (activeZipObject.fileLike.stream) { - activeZipObject.crc = new Crc32(); - activeZipObject.reader = activeZipObject.fileLike.stream().getReader(); - activeZipObject.writeHeader(); - } else next(); - } - - return new ReadableStream({ - start: c => { - ctrl = c; - underlyingSource.start && Promise.resolve(underlyingSource.start(zipWriter)); - }, - pull() { - return processNextChunk() || ( - underlyingSource.pull && - Promise.resolve(underlyingSource.pull(zipWriter)) - ); - }, - }); -} diff --git a/yarn.lock b/yarn.lock index 8801940a35..dc3bc2ca7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1468,6 +1468,11 @@ resolved "https://registry.yarnpkg.com/@types/fbemitter/-/fbemitter-2.0.32.tgz#8ed204da0f54e9c8eaec31b1eec91e25132d082c" integrity sha1-jtIE2g9U6cjq7DGx7skeJRMtCCw= +"@types/file-saver@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/file-saver/-/file-saver-2.0.3.tgz#b734c4f5a04d20615eaed3dc106e2ab321082009" + integrity sha512-MBIou8pd/41jkff7s97B47bc9+p0BszqqDJsO51yDm49uUxeKzrfuNl5fSLC6BpLEWKA8zlwyqALVmXrFwoBHQ== + "@types/flux@^3.1.9": version "3.1.10" resolved "https://registry.yarnpkg.com/@types/flux/-/flux-3.1.10.tgz#7c6306e86ecb434d00f38cb82f092640c7bd4098" @@ -4141,6 +4146,11 @@ ignore@^5.1.4, ignore@^5.1.8: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= + immutable@^3.7.4: version "3.8.2" resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" @@ -5235,6 +5245,16 @@ jsprim@^1.2.2: array-includes "^3.1.2" object.assign "^4.1.2" +jszip@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.0.tgz#9b8b995a4e7c9024653ce743e902076a82fdf4e6" + integrity sha512-Y2OlFIzrDOPWUnpU0LORIcDn2xN7rC9yKffFM/7pGhQuhO+SUhfm2trkJ/S5amjFvem0Y+1EALz/MEPkvHXVNw== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + set-immediate-shim "~1.0.1" + katex@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/katex/-/katex-0.12.0.tgz#2fb1c665dbd2b043edcf8a1f5c555f46beaa0cb9" @@ -5302,6 +5322,13 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6015,6 +6042,11 @@ pako@^2.0.3: resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.3.tgz#cdf475e31b678565251406de9e759196a0ea7a43" integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -6552,7 +6584,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.2: +readable-stream@^2.0.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6953,6 +6985,11 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-immediate-shim@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -7206,11 +7243,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -streamsaver@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/streamsaver/-/streamsaver-2.0.5.tgz#3212f0e908fcece5b3a65591094475cf87850d00" - integrity sha512-KIWtBvi8A6FiFZGNSyuIZRZM6C8AvnWTiCx/TYa7so420vC5sQwcBKkdqInuGWoWMfeWy/P+/cRqMtWVf4RW9w== - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -7916,11 +7948,6 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -web-streams-polyfill@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.0.3.tgz#f49e487eedeca47a207c1aee41ee5578f884b42f" - integrity sha512-d2H/t0eqRNM4w2WvmTdoeIvzAUSpK7JmATB8Nr2lb7nQ9BTIJVjbQ/TRFVEh2gUH1HwclPdoPtfMoFfetXaZnA== - webcrypto-core@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.2.0.tgz#44fda3f9315ed6effe9a1e47466e0935327733b5" From b91309be82e0550edebe8d6d25f087b3478ba116 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 26 Jul 2021 23:40:27 +0530 Subject: [PATCH 140/176] Apply suggestions from review --- res/css/views/dialogs/_ExportDialog.scss | 54 ++++++++----------- src/components/views/avatars/MemberAvatar.tsx | 6 +-- src/components/views/dialogs/ExportDialog.tsx | 28 ++++++---- .../views/elements/EventListSummary.tsx | 4 +- src/components/views/elements/ReplyThread.tsx | 10 +++- .../views/messages/RedactedBody.tsx | 2 +- src/i18n/strings/en_EN.json | 3 ++ src/utils/exportUtils/Exporter.ts | 24 +++++++-- src/utils/exportUtils/HtmlExport.tsx | 20 ++++++- src/utils/exportUtils/JSONExport.ts | 20 ++++++- src/utils/exportUtils/PlainTextExport.ts | 20 ++++++- src/utils/exportUtils/exportCSS.ts | 21 ++++++++ src/utils/exportUtils/exportUtils.ts | 18 ++++++- 13 files changed, 169 insertions(+), 61 deletions(-) diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index 4255768447..b4bc2b84b2 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + .mx_ExportDialog { .mx_ExportDialog_subheading { font-size: $font-16px; @@ -46,19 +62,14 @@ margin-top: unset; margin-left: 18px; } - .mx_ExportDialog_spinner { - animation: mx_rotate 2s linear infinite; - z-index: 2; - position: relative; + + .mx_Spinner { + width: unset; + height: unset; + flex: unset; margin-right: 10px; - width: 24px; - height: 24px; - & .mx_ExportDialog_spinner_path { - stroke: $accent-color; - stroke-linecap: round; - animation: mx_dash 1.5s ease-in-out infinite; - } } + display: flex; flex-direction: row; justify-content: flex-end; @@ -78,24 +89,3 @@ padding: 9px 10px; } } - -@keyframes mx_rotate { - 100% { - transform: rotate(360deg); - } -} - -@keyframes mx_dash { - 0% { - stroke-dasharray: 1, 150; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 90, 150; - stroke-dashoffset: -35; - } - 100% { - stroke-dasharray: 90, 150; - stroke-dashoffset: -124; - } -} diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index f2f6920231..9554a50684 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -18,7 +18,6 @@ limitations under the License. import React from 'react'; import { RoomMember } from "matrix-js-sdk/src/models/room-member"; import { ResizeMethod } from 'matrix-js-sdk/src/@types/partials'; -import { omit } from "lodash"; import dis from "../../../dispatcher/dispatcher"; import { Action } from "../../../dispatcher/actions"; @@ -91,11 +90,10 @@ export default class MemberAvatar extends React.Component<IProps, IState> { } render() { - let { member, fallbackUserId, onClick, viewUserOnClick, ...otherProps } = this.props; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + let { member, fallbackUserId, onClick, viewUserOnClick, forExport, ...otherProps } = this.props; const userId = member ? member.userId : fallbackUserId; - otherProps = omit(otherProps, "forExport"); - if (viewUserOnClick) { onClick = () => { dis.dispatch({ diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 82c38763c3..76f0074573 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import React, { useRef, useState } from "react"; import { Room } from "matrix-js-sdk/src"; import { _t } from "../../../languageHandler"; @@ -19,6 +35,7 @@ import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; import Exporter from "../../../utils/exportUtils/Exporter"; +import Spinner from "../elements/Spinner"; interface IProps extends IDialogProps { room: Room; @@ -352,16 +369,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { </div> { isExporting ? ( <div className="mx_ExportDialog_progress"> - <svg className="mx_ExportDialog_spinner" viewBox="0 0 50 50"> - <circle - className="mx_ExportDialog_spinner_path" - cx="25" - cy="25" - r="20" - fill="none" - stroke-width="5" - /> - </svg> + <Spinner w={24} h={24} /> <p ref={exportProgressRef}> { _t("Processing...") } </p> diff --git a/src/components/views/elements/EventListSummary.tsx b/src/components/views/elements/EventListSummary.tsx index 1b29b0ed3f..99349a236e 100644 --- a/src/components/views/elements/EventListSummary.tsx +++ b/src/components/views/elements/EventListSummary.tsx @@ -76,8 +76,8 @@ const EventListSummary: React.FC<IProps> = ({ { children } </React.Fragment>; } else { - const avatars = summaryMembers.map((m, idx) => - <MemberAvatar key={m.userId} member={m} width={14} height={14} />); + const avatars = summaryMembers.map((m) => <MemberAvatar key={m.userId} member={m} width={14} height={14} />); + body = ( <div className="mx_EventTile_line"> <div className="mx_EventTile_info"> diff --git a/src/components/views/elements/ReplyThread.tsx b/src/components/views/elements/ReplyThread.tsx index 29b3d1b7f5..2144cc602c 100644 --- a/src/components/views/elements/ReplyThread.tsx +++ b/src/components/views/elements/ReplyThread.tsx @@ -354,8 +354,14 @@ export default class ReplyThread extends React.Component<IProps, IState> { </blockquote>; } else if (this.props.forExport) { const eventId = ReplyThread.getParentEventId(this.props.parentEv); - header = <p style={{ marginTop: -5, marginBottom: 5 }}> - In reply to <a className="mx_reply_anchor" href={`#${eventId}`} scroll-to={eventId}>this message</a> + header = <p className="mx_ReplyThread_Export"> + { _t("In reply to <messageLink/>", + {}, + { messageLink: () => ( + <a className="mx_reply_anchor" href={`#${eventId}`} scroll-to={eventId}> { _t("this message") } </a> + ), + }) + } </p>; } else if (this.state.loading) { header = <Spinner w={16} h={16} />; diff --git a/src/components/views/messages/RedactedBody.tsx b/src/components/views/messages/RedactedBody.tsx index e326fa7b50..65933cb801 100644 --- a/src/components/views/messages/RedactedBody.tsx +++ b/src/components/views/messages/RedactedBody.tsx @@ -39,7 +39,7 @@ const RedactedBody = React.forwardRef<any, IBodyProps>(({ mxEvent, forExport }, return ( <span className="mx_RedactedBody" ref={ref} title={titleText}> - { forExport ? <img alt="Redacted" className="mx_export_trash_icon" src="icons/trash.svg" /> : null } + { forExport ? <img alt={_t("Redacted")} className="mx_export_trash_icon" src="icons/trash.svg" /> : null } { text } </span> ); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index a55576921c..7197879983 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1951,6 +1951,7 @@ "<reactors/><reactedWith> reacted with %(content)s</reactedWith>": "<reactors/><reactedWith> reacted with %(content)s</reactedWith>", "<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>": "<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>", "Message deleted on %(date)s": "Message deleted on %(date)s", + "Redacted": "Redacted", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", "%(senderDisplayName)s changed the room avatar to <img/>": "%(senderDisplayName)s changed the room avatar to <img/>", @@ -2098,6 +2099,8 @@ "QR Code": "QR Code", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.", "<a>In reply to</a> <pill>": "<a>In reply to</a> <pill>", + "In reply to <messageLink/>": "In reply to <messageLink/>", + "this message": "this message", "Room address": "Room address", "e.g. my-room": "e.g. my-room", "Some characters not allowed": "Some characters not allowed", diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index c840731d47..8574a5ed67 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -1,7 +1,23 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { exportOptions, exportTypes } from "./exportUtils"; +import { IExportOptions, exportTypes } from "./exportUtils"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; @@ -23,7 +39,7 @@ export default abstract class Exporter { protected constructor( protected room: Room, protected exportType: exportTypes, - protected exportOptions: exportOptions, + protected exportOptions: IExportOptions, protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { this.cancelled = false; @@ -53,6 +69,8 @@ export default abstract class Exporter { protected async downloadZIP(): Promise<any> { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; + console.log(this.files, this.files.length); + const zip = new JSZip(); // Create a writable stream to the directory if (!this.cancelled) this.updateProgress("Generating a ZIP"); @@ -62,7 +80,7 @@ export default abstract class Exporter { const content = await zip.generateAsync({ type: "blob" }); - await saveAs(content, filename); + saveAs(content, filename); } protected cleanUp(): string { diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 3f98b4c92a..ee5e395fe7 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import React, { MutableRefObject } from "react"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; @@ -18,7 +34,7 @@ import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import exportIcons from "./exportIcons"; import { exportTypes } from "./exportUtils"; -import { exportOptions } from "./exportUtils"; +import { IExportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; export default class HTMLExporter extends Exporter { @@ -30,7 +46,7 @@ export default class HTMLExporter extends Exporter { constructor( room: Room, exportType: exportTypes, - exportOptions: exportOptions, + exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { super(room, exportType, exportOptions, exportProgressRef); diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 417a7a40f4..5e07f4ae45 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -1,10 +1,26 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import Exporter from "./Exporter"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay, formatFullDateNoDayNoTime } from "../../DateUtils"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; -import { exportOptions } from "./exportUtils"; +import { IExportOptions } from "./exportUtils"; import { EventType } from "matrix-js-sdk/src/@types/event"; import { MutableRefObject } from "react"; @@ -15,7 +31,7 @@ export default class JSONExporter extends Exporter { constructor( room: Room, exportType: exportTypes, - exportOptions: exportOptions, + exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { super(room, exportType, exportOptions, exportProgressRef); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index feb4afe618..dc5df022a2 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import Exporter from "./Exporter"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; @@ -5,7 +21,7 @@ import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { exportTypes } from "./exportUtils"; -import { exportOptions } from "./exportUtils"; +import { IExportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; import { MutableRefObject } from "react"; @@ -16,7 +32,7 @@ export default class PlainTextExporter extends Exporter { constructor( room: Room, exportType: exportTypes, - exportOptions: exportOptions, + exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { super(room, exportType, exportOptions, exportProgressRef); diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 49f3bf3bb7..ff5c714079 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + /* eslint-disable max-len */ const lightCSS = `@charset "utf-8"; .hljs-addition { @@ -25405,6 +25421,11 @@ a.mx_reply_anchor:hover{ } } +.mx_ReplyThread_Export { + margin-top: -5px; + margin-bottom: 5px; +} + .mx_RedactedBody img.mx_export_trash_icon { height: 14px; width: 14px; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 3e281269bf..e170bb2433 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,3 +1,19 @@ +/* +Copyright 2018-2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import { _t } from "../../languageHandler"; export enum exportFormats { @@ -37,7 +53,7 @@ export const textForType = (type: string): string => { } }; -export interface exportOptions { +export interface IExportOptions { startDate?: number; numberOfMessages?: number; attachmentsIncluded: boolean; From 9771f4d6c48230751ad8e914e97d7c38a6061c45 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 27 Jul 2021 00:00:52 +0530 Subject: [PATCH 141/176] PascalCasing for enums --- src/components/views/dialogs/ExportDialog.tsx | 32 +++++++++---------- src/utils/exportUtils/Exporter.ts | 10 +++--- src/utils/exportUtils/HtmlExport.tsx | 4 +-- src/utils/exportUtils/JSONExport.ts | 4 +-- src/utils/exportUtils/PlainTextExport.ts | 4 +-- src/utils/exportUtils/exportUtils.ts | 18 +++++------ 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 76f0074573..b98f375971 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -24,8 +24,8 @@ import Field from "../elements/Field"; import StyledRadioGroup from "../elements/StyledRadioGroup"; import StyledCheckbox from "../elements/StyledCheckbox"; import { - exportFormats, - exportTypes, + ExportFormats, + ExportTypes, textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; @@ -42,8 +42,8 @@ interface IProps extends IDialogProps { } const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { - const [exportFormat, setExportFormat] = useState(exportFormats.HTML); - const [exportType, setExportType] = useState(exportTypes.TIMELINE); + const [exportFormat, setExportFormat] = useState(ExportFormats.HTML); + const [exportType, setExportType] = useState(ExportTypes.TIMELINE); const [includeAttachments, setAttachments] = useState(false); const [isExporting, setExporting] = useState(false); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); @@ -70,31 +70,31 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { maxSize: sizeLimit * 1024 * 1024, }; switch (exportFormat) { - case exportFormats.HTML: + case ExportFormats.HTML: setExporter( new HTMLExporter( room, - exportTypes[exportType], + ExportTypes[exportType], exportOptions, exportProgressRef, ), ); break; - case exportFormats.JSON: + case ExportFormats.JSON: setExporter( new JSONExporter( room, - exportTypes[exportType], + ExportTypes[exportType], exportOptions, exportProgressRef, ), ); break; - case exportFormats.PLAIN_TEXT: + case ExportFormats.PLAIN_TEXT: setExporter( new PlainTextExporter( room, - exportTypes[exportType], + ExportTypes[exportType], exportOptions, exportProgressRef, ), @@ -114,7 +114,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { sizeLimitRef.current.validate({ focused: true }); return; } - if (exportType === exportTypes.LAST_N_MESSAGES) { + if (exportType === ExportTypes.LAST_N_MESSAGES) { const isValidNumberOfMessages = await messageCountRef.current.validate({ focused: false }); if (!isValidNumberOfMessages) { @@ -202,12 +202,12 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }); }; - const exportFormatOptions = Object.keys(exportFormats).map((format) => ({ + const exportFormatOptions = Object.keys(ExportFormats).map((format) => ({ value: format, label: textForFormat(format), })); - const exportTypeOptions = Object.keys(exportTypes).map((type) => { + const exportTypeOptions = Object.keys(ExportTypes).map((type) => { return ( <option key={type} value={type}> { textForType(type) } @@ -216,7 +216,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }); let messageCount = null; - if (exportType === exportTypes.LAST_N_MESSAGES) { + if (exportType === ExportTypes.LAST_N_MESSAGES) { messageCount = ( <Field element="input" @@ -322,7 +322,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <StyledRadioGroup name="exportFormat" value={exportFormat} - onChange={(key) => setExportFormat(exportFormats[key])} + onChange={(key) => setExportFormat(ExportFormats[key])} definitions={exportFormatOptions} /> @@ -334,7 +334,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { element="select" value={exportType} onChange={(e) => { - setExportType(exportTypes[e.target.value]); + setExportType(ExportTypes[e.target.value]); }} > { exportTypeOptions } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 8574a5ed67..0786641f44 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -17,7 +17,7 @@ limitations under the License. import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { IExportOptions, exportTypes } from "./exportUtils"; +import { IExportOptions, ExportTypes } from "./exportUtils"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; @@ -38,7 +38,7 @@ export default abstract class Exporter { protected constructor( protected room: Room, - protected exportType: exportTypes, + protected exportType: ExportTypes, protected exportOptions: IExportOptions, protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { @@ -114,10 +114,10 @@ export default abstract class Exporter { protected getLimit(): number { let limit: number; switch (this.exportType) { - case exportTypes.LAST_N_MESSAGES: + case ExportTypes.LAST_N_MESSAGES: limit = this.exportOptions.numberOfMessages; break; - case exportTypes.TIMELINE: + case ExportTypes.TIMELINE: limit = 40; break; default: @@ -162,7 +162,7 @@ export default abstract class Exporter { events.push(mxEv); } this.updateProgress( - ("Fetched " + events.length + " events ") + (this.exportType === exportTypes.LAST_N_MESSAGES + ("Fetched " + events.length + " events ") + (this.exportType === ExportTypes.LAST_N_MESSAGES ? `out of ${this.exportOptions.numberOfMessages}` : "so far"), ); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index ee5e395fe7..05ce8570da 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -33,7 +33,7 @@ import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportCSS from "./exportCSS"; import exportJS from "./exportJS"; import exportIcons from "./exportIcons"; -import { exportTypes } from "./exportUtils"; +import { ExportTypes } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; @@ -45,7 +45,7 @@ export default class HTMLExporter extends Exporter { constructor( room: Room, - exportType: exportTypes, + exportType: ExportTypes, exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 5e07f4ae45..3a9b923b08 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -19,7 +19,7 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay, formatFullDateNoDayNoTime } from "../../DateUtils"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; -import { exportTypes } from "./exportUtils"; +import { ExportTypes } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import { EventType } from "matrix-js-sdk/src/@types/event"; import { MutableRefObject } from "react"; @@ -30,7 +30,7 @@ export default class JSONExporter extends Exporter { constructor( room: Room, - exportType: exportTypes, + exportType: ExportTypes, exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index dc5df022a2..4f00a3aa06 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -20,7 +20,7 @@ import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; -import { exportTypes } from "./exportUtils"; +import { ExportTypes } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; import { MutableRefObject } from "react"; @@ -31,7 +31,7 @@ export default class PlainTextExporter extends Exporter { constructor( room: Room, - exportType: exportTypes, + exportType: ExportTypes, exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index e170bb2433..6b356c3ed2 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -16,37 +16,37 @@ limitations under the License. import { _t } from "../../languageHandler"; -export enum exportFormats { +export enum ExportFormats { HTML = "HTML", PLAIN_TEXT = "PLAIN_TEXT", JSON = "JSON", } -export enum exportTypes { +export enum ExportTypes { TIMELINE = "TIMELINE", BEGINNING = "BEGINNING", - // START_DATE = "START_DATE", LAST_N_MESSAGES = "LAST_N_MESSAGES", + // START_DATE = "START_DATE", } export const textForFormat = (format: string): string => { switch (format) { - case exportFormats.HTML: + case ExportFormats.HTML: return _t("HTML"); - case exportFormats.JSON: + case ExportFormats.JSON: return _t("JSON"); - case exportFormats.PLAIN_TEXT: + case ExportFormats.PLAIN_TEXT: return _t("Plain Text"); } }; export const textForType = (type: string): string => { switch (type) { - case exportTypes.BEGINNING: + case ExportTypes.BEGINNING: return _t("From the beginning"); - case exportTypes.LAST_N_MESSAGES: + case ExportTypes.LAST_N_MESSAGES: return _t("Specify a number of messages"); - case exportTypes.TIMELINE: + case ExportTypes.TIMELINE: return _t("Current Timeline"); // case exportTypes.START_DATE: // return _t("From a specific date"); From 57590b9a8aa0d52200a8ee5013b7b58ed61a9ef2 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 27 Jul 2021 11:37:47 +0530 Subject: [PATCH 142/176] Use raw-loaders to import svgs and exportJS --- package.json | 1 + src/@types/raw-loader.d.ts | 20 +++++++++++++ src/utils/exportUtils/HtmlExport.tsx | 2 +- src/utils/exportUtils/exportIcons.ts | 18 ++++------- src/utils/exportUtils/exportJS.js | 25 ++++++++++++++++ src/utils/exportUtils/exportJS.ts | 27 ----------------- yarn.lock | 45 ++++++++++++++++++++++++++-- 7 files changed, 95 insertions(+), 43 deletions(-) create mode 100644 src/@types/raw-loader.d.ts create mode 100644 src/utils/exportUtils/exportJS.js delete mode 100644 src/utils/exportUtils/exportJS.ts diff --git a/package.json b/package.json index 30254ed78d..086a1006cf 100644 --- a/package.json +++ b/package.json @@ -167,6 +167,7 @@ "matrix-mock-request": "^1.2.3", "matrix-react-test-utils": "^0.2.3", "matrix-web-i18n": "github:matrix-org/matrix-web-i18n", + "raw-loader": "^4.0.2", "react-test-renderer": "^17.0.2", "rimraf": "^3.0.2", "stylelint": "^13.9.0", diff --git a/src/@types/raw-loader.d.ts b/src/@types/raw-loader.d.ts new file mode 100644 index 0000000000..ee9277c662 --- /dev/null +++ b/src/@types/raw-loader.d.ts @@ -0,0 +1,20 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +declare module '!!raw-loader!*' { + const contents: string; + export = contents; +} diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 05ce8570da..c27f5b7d12 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -31,7 +31,7 @@ import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventT import DateSeparator from "../../components/views/messages/DateSeparator"; import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportCSS from "./exportCSS"; -import exportJS from "./exportJS"; +import exportJS from "!!raw-loader!./exportJS"; import exportIcons from "./exportIcons"; import { ExportTypes } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; diff --git a/src/utils/exportUtils/exportIcons.ts b/src/utils/exportUtils/exportIcons.ts index 2a19e9c4d1..865fb08a06 100644 --- a/src/utils/exportUtils/exportIcons.ts +++ b/src/utils/exportUtils/exportIcons.ts @@ -1,15 +1,7 @@ -/* eslint-disable max-len */ +import Trash from "!!raw-loader!../../../res/img/element-icons/trashcan.svg"; +import Attach from "!!raw-loader!../../../res/img/element-icons/room/composer/attach.svg"; + export default { - "trash.svg": `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M2.25 5.5H5.16667H21.75" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M16.5 5.5L15 1H9L7.5 5.5" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M5.25 9.25V20.75C5.25 21.8546 6.14543 22.75 7.25 22.75H16.75C17.8546 22.75 18.75 21.8546 18.75 20.75V9.25" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M9.75 9.25V18.25" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> - <path d="M14.25 9.25V18.25" stroke="#2E2F32" stroke-linecap="round" stroke-linejoin="round"/> - </svg> - `, - "attach.svg": `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M15.8155 13.0336L11.2282 17.4193C9.08205 19.45 5.53015 19.6024 3.45617 17.4193C1.4888 15.3484 1.48412 12.0136 3.63032 9.98294L11.8691 2.10597C13.2999 0.752226 15.5435 0.535035 16.984 2.05147C18.5968 3.7491 18.1298 5.99061 16.699 7.34435L8.6284 14.9682C7.913 15.645 6.7551 15.7233 6.03771 14.9682C5.34842 14.2426 5.45967 13.0625 6.17507 12.3856L10.9045 7.86398" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/> - </svg> - `, + "trash.svg": Trash, + "attach.svg": Attach, }; diff --git a/src/utils/exportUtils/exportJS.js b/src/utils/exportUtils/exportJS.js new file mode 100644 index 0000000000..9e58c8b99c --- /dev/null +++ b/src/utils/exportUtils/exportJS.js @@ -0,0 +1,25 @@ +function showToastIfNeeded(replyId) { + const el = document.getElementById(replyId); + if (!el) { + showToast("The message you're looking for wasn't exported"); + return; + } +} + +function showToast(text) { + const el = document.getElementById("snackbar"); + el.innerHTML = text; + el.className = "mx_show"; + setTimeout(() => { + el.className = el.className.replace("mx_show", ""); + }, 2000); +} + +window.onload = () => { + document.querySelectorAll('.mx_reply_anchor').forEach(element => { + element.addEventListener('click', event => { + showToastIfNeeded(event.target.getAttribute("scroll-to")); + }); + }); +}; + diff --git a/src/utils/exportUtils/exportJS.ts b/src/utils/exportUtils/exportJS.ts deleted file mode 100644 index 21b10b50d5..0000000000 --- a/src/utils/exportUtils/exportJS.ts +++ /dev/null @@ -1,27 +0,0 @@ -export default ` -function showToastIfNeeded(replyId){ - let el = document.getElementById(replyId); - if(!el) { - showToast("The message you're looking for wasn't exported"); - return; - }; -} - -function showToast(text) { - let el = document.getElementById("snackbar"); - el.innerHTML = text; - el.className = "mx_show"; - setTimeout(() => { - el.className = el.className.replace("mx_show", ""); - }, 2000); -} - -window.onload = () => { -document.querySelectorAll('.mx_reply_anchor').forEach(element => { - element.addEventListener('click', event => { - showToastIfNeeded(event.target.getAttribute("scroll-to")); - }) -}) -} - -`; diff --git a/yarn.lock b/yarn.lock index dc3bc2ca7b..ea64ed5180 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1531,7 +1531,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@^7.0.7": +"@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": version "7.0.8" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== @@ -1840,7 +1840,12 @@ agent-base@6: dependencies: debug "4" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2216,6 +2221,11 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -3072,6 +3082,11 @@ emojibase-regex@^5.1.3: resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-5.1.3.tgz#f0ef621ed6ec624becd2326f999fd4ea01b94554" integrity sha512-gT8T9LxLA8VJdI+8KQtyykB9qKzd7WuUL3M2yw6y9tplFeufOUANg3UKVaKUvkMcRNvZsSElWhxcJrx8WPE12g== +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encoding@^0.1.11: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -5339,6 +5354,15 @@ linkifyjs@^2.1.9: resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-2.1.9.tgz#af06e45a2866ff06c4766582590d098a4d584702" integrity sha512-74ivurkK6WHvHFozVaGtQWV38FzBwSTGNmJolEgFp7QgR2bl6ArUWlvT4GcHKbPe1z3nWYi+VUdDZk16zDOVug== +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -6445,6 +6469,14 @@ randexp@0.4.6: discontinuous-range "1.0.0" ret "~0.1.10" +raw-loader@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" + integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + re-resizable@^6.9.0: version "6.9.0" resolved "https://registry.yarnpkg.com/re-resizable/-/re-resizable-6.9.0.tgz#9c3059b389ced6ade602234cc5bb1e12d231cd47" @@ -6958,6 +6990,15 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +schema-utils@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" From 6f922769a34d7db2b2c85c6efa82eb31a52d84d4 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 27 Jul 2021 11:45:10 +0530 Subject: [PATCH 143/176] Reduce max size to 2000 MB --- src/components/views/dialogs/ExportDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index b98f375971..5ebe6ed7c5 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -131,7 +131,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }: Pick<IFieldState, "value">): Promise<IValidationResult> => { const parsedSize = parseFloat(value); const min = 1; - const max = 4000; + const max = 2000; if (isNaN(parsedSize)) { return { valid: false, feedback: _t("Size must be a number") }; From 371d1026fad0900f5017f958e146bf3679594b8b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 27 Jul 2021 12:11:08 +0530 Subject: [PATCH 144/176] Add jest-raw-loader --- package.json | 4 +++- src/@types/raw-loader.d.ts | 2 +- src/utils/exportUtils/Exporter.ts | 2 -- yarn.lock | 5 +++++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 086a1006cf..775c297c21 100644 --- a/package.json +++ b/package.json @@ -164,6 +164,7 @@ "jest-canvas-mock": "^2.3.0", "jest-environment-jsdom-sixteen": "^1.0.3", "jest-fetch-mock": "^3.0.3", + "jest-raw-loader": "^1.0.1", "matrix-mock-request": "^1.2.3", "matrix-react-test-utils": "^0.2.3", "matrix-web-i18n": "github:matrix-org/matrix-web-i18n", @@ -193,7 +194,8 @@ "decoderWorker\\.min\\.js": "<rootDir>/__mocks__/empty.js", "decoderWorker\\.min\\.wasm": "<rootDir>/__mocks__/empty.js", "waveWorker\\.min\\.js": "<rootDir>/__mocks__/empty.js", - "workers/(.+)\\.worker\\.ts": "<rootDir>/__mocks__/workerMock.js" + "workers/(.+)\\.worker\\.ts": "<rootDir>/__mocks__/workerMock.js", + "^!!raw-loader!.*": "jest-raw-loader" }, "transformIgnorePatterns": [ "/node_modules/(?!matrix-js-sdk).+$" diff --git a/src/@types/raw-loader.d.ts b/src/@types/raw-loader.d.ts index ee9277c662..efd825204e 100644 --- a/src/@types/raw-loader.d.ts +++ b/src/@types/raw-loader.d.ts @@ -16,5 +16,5 @@ limitations under the License. declare module '!!raw-loader!*' { const contents: string; - export = contents; + export default contents; } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 0786641f44..fd0f603cb5 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -69,8 +69,6 @@ export default abstract class Exporter { protected async downloadZIP(): Promise<any> { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; - console.log(this.files, this.files.length); - const zip = new JSZip(); // Create a writable stream to the directory if (!this.cancelled) this.updateProgress("Generating a ZIP"); diff --git a/yarn.lock b/yarn.lock index ea64ed5180..e0e3e830c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4956,6 +4956,11 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== +jest-raw-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/jest-raw-loader/-/jest-raw-loader-1.0.1.tgz#ce9f56d54650f157c4a7d16d224ba5d613bcd626" + integrity sha1-zp9W1UZQ8VfEp9FtIkul1hO81iY= + jest-regex-util@^26.0.0: version "26.0.0" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" From 6f8f0e831408b1896755666e169edb2e7d3655b9 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 27 Jul 2021 19:29:22 +0530 Subject: [PATCH 145/176] Change copyright year --- src/utils/exportUtils/exportCSS.ts | 4 ++-- src/utils/exportUtils/exportIcons.ts | 8 ++++---- src/utils/exportUtils/exportUtils.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index ff5c714079..36dcea76bb 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -5,7 +5,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 +http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -13,8 +13,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - /* eslint-disable max-len */ + const lightCSS = `@charset "utf-8"; .hljs-addition { background: #dfd; diff --git a/src/utils/exportUtils/exportIcons.ts b/src/utils/exportUtils/exportIcons.ts index 865fb08a06..181a62848e 100644 --- a/src/utils/exportUtils/exportIcons.ts +++ b/src/utils/exportUtils/exportIcons.ts @@ -1,7 +1,7 @@ -import Trash from "!!raw-loader!../../../res/img/element-icons/trashcan.svg"; -import Attach from "!!raw-loader!../../../res/img/element-icons/room/composer/attach.svg"; +import trashSVG from "!!raw-loader!../../../res/img/element-icons/trashcan.svg"; +import attachSVG from "!!raw-loader!../../../res/img/element-icons/room/composer/attach.svg"; export default { - "trash.svg": Trash, - "attach.svg": Attach, + "trash.svg": trashSVG, + "attach.svg": attachSVG, }; diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 6b356c3ed2..9b360fb3f1 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -1,5 +1,5 @@ /* -Copyright 2018-2021 The Matrix.org Foundation C.I.C. +Copyright 2021 The Matrix.org Foundation C.I.C. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. From 04edf4103f1f78463b96551f01f1e191339d98da Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 30 Jul 2021 11:46:55 +0530 Subject: [PATCH 146/176] Remove unnecessary awaits --- src/utils/exportUtils/Exporter.ts | 4 ++-- src/utils/exportUtils/JSONExport.ts | 2 +- src/utils/exportUtils/PlainTextExport.ts | 2 +- test/utils/export-test.ts | 15 +++++++++++++++ 4 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 test/utils/export-test.ts diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index fd0f603cb5..b521b77aaa 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -92,8 +92,8 @@ export default abstract class Exporter { this.cancelled = true; } - protected async downloadPlainText(fileName: string, text: string): Promise<any> { - await saveAs(new Blob[text], fileName); + protected downloadPlainText(fileName: string, text: string) { + saveAs(new Blob[text], fileName); } protected setEventMetadata(event: MatrixEvent): MatrixEvent { diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 3a9b923b08..356f4282db 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -107,7 +107,7 @@ export default class JSONExporter extends Exporter { await this.downloadZIP(); } else { const fileName = `matrix-export-${formatFullDateNoDay(new Date())}.json`; - await this.downloadPlainText(fileName, text); + this.downloadPlainText(fileName, text); } const exportEnd = performance.now(); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 4f00a3aa06..1c946bb048 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -134,7 +134,7 @@ export default class PlainTextExporter extends Exporter { await this.downloadZIP(); } else { const fileName = `matrix-export-${formatFullDateNoDay(new Date())}.txt`; - await this.downloadPlainText(fileName, text); + this.downloadPlainText(fileName, text); } const exportEnd = performance.now(); diff --git a/test/utils/export-test.ts b/test/utils/export-test.ts new file mode 100644 index 0000000000..42c4e33b5b --- /dev/null +++ b/test/utils/export-test.ts @@ -0,0 +1,15 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ From 4824c937070b853ac58082634c3eaa660aea4cc2 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 3 Aug 2021 14:36:21 +0530 Subject: [PATCH 147/176] Add a test file --- src/utils/exportUtils/Exporter.ts | 19 +++--- src/utils/exportUtils/exportUtils.ts | 6 +- test/test-utils.js | 3 +- test/utils/export-test.ts | 15 ----- test/utils/export-test.tsx | 94 ++++++++++++++++++++++++++++ 5 files changed, 112 insertions(+), 25 deletions(-) delete mode 100644 test/utils/export-test.ts create mode 100644 test/utils/export-test.tsx diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index b521b77aaa..47db141830 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -42,6 +42,9 @@ export default abstract class Exporter { protected exportOptions: IExportOptions, protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { + if (exportOptions.maxSize < 1 || exportOptions.maxSize > 2000 || exportOptions.numberOfMessages > 10**8) { + throw new Error("Invalid export options"); + } this.cancelled = false; this.files = []; this.client = MatrixClientPeg.get(); @@ -109,7 +112,7 @@ export default abstract class Exporter { return event; } - protected getLimit(): number { + public getLimit(): number { let limit: number; switch (this.exportType) { case ExportTypes.LAST_N_MESSAGES: @@ -152,11 +155,11 @@ export default abstract class Exporter { const matrixEvents: MatrixEvent[] = res.chunk.map(eventMapper); for (const mxEv of matrixEvents) { - if (this.exportOptions.startDate && mxEv.getTs() < this.exportOptions.startDate) { - // Once the last message received is older than the start date, we break out of both the loops - limit = 0; - break; - } + // if (this.exportOptions.startDate && mxEv.getTs() < this.exportOptions.startDate) { + // // Once the last message received is older than the start date, we break out of both the loops + // limit = 0; + // break; + // } events.push(mxEv); } this.updateProgress( @@ -208,7 +211,7 @@ export default abstract class Exporter { return blob; } - protected splitFileName(file: string): string[] { + public splitFileName(file: string): string[] { const lastDot = file.lastIndexOf('.'); if (lastDot === -1) return [file, ""]; const fileName = file.slice(0, lastDot); @@ -216,7 +219,7 @@ export default abstract class Exporter { return [fileName, '.' + ext]; } - protected getFilePath(event: MatrixEvent): string { + public getFilePath(event: MatrixEvent): string { const mediaType = event.getContent().msgtype; let fileDirectory: string; switch (mediaType) { diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 9b360fb3f1..8410b747ea 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -37,6 +37,8 @@ export const textForFormat = (format: string): string => { return _t("JSON"); case ExportFormats.PLAIN_TEXT: return _t("Plain Text"); + default: + throw new Error("Unknown format"); } }; @@ -48,13 +50,15 @@ export const textForType = (type: string): string => { return _t("Specify a number of messages"); case ExportTypes.TIMELINE: return _t("Current Timeline"); + default: + throw new Error("Unknown type: " + type); // case exportTypes.START_DATE: // return _t("From a specific date"); } }; export interface IExportOptions { - startDate?: number; + // startDate?: number; numberOfMessages?: number; attachmentsIncluded: boolean; maxSize: number; diff --git a/test/test-utils.js b/test/test-utils.js index 5e29fd242e..4ce0c7f3ce 100644 --- a/test/test-utils.js +++ b/test/test-utils.js @@ -202,8 +202,9 @@ export function mkMembership(opts) { * @param {Object} opts Values for the message * @param {string} opts.room The room ID for the event. * @param {string} opts.user The user ID for the event. - * @param {string} opts.msg Optional. The content.body for the event. + * @param {number} opts.ts The timestamp for the event. * @param {boolean} opts.event True to make a MatrixEvent. + * @param {string=} opts.msg Optional. The content.body for the event. * @return {Object|MatrixEvent} The event */ export function mkMessage(opts) { diff --git a/test/utils/export-test.ts b/test/utils/export-test.ts deleted file mode 100644 index 42c4e33b5b..0000000000 --- a/test/utils/export-test.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright 2021 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx new file mode 100644 index 0000000000..3bcbadecd8 --- /dev/null +++ b/test/utils/export-test.tsx @@ -0,0 +1,94 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +import { MatrixClient, Room } from "matrix-js-sdk"; +import { MatrixClientPeg } from "../../src/MatrixClientPeg"; +import { textForFormat } from "../../src/utils/exportUtils/exportUtils"; +// import HTMLExporter from "../../src/utils/exportUtils/HtmlExport"; +// import PlainTextExporter from "../../src/utils/exportUtils/PlainTextExport"; +import * as TestUtilsMatrix from '../test-utils'; +import { stubClient } from '../test-utils'; + +let client: MatrixClient; + +const MY_USER_ID = "@me:here"; + +function generateRoomId() { + return '!' + Math.random().toString().slice(2, 10) + ':domain'; +} + +describe('export', function() { + stubClient(); + client = MatrixClientPeg.get(); + client.getUserId = () => { + return MY_USER_ID; + }; + + // const invalidExportOptions: IExportOptions[] = [ + // { + // numberOfMessages: 10**9, + // maxSize: 1024, + // attachmentsIncluded: false, + // }, + // { + // numberOfMessages: -1, + // maxSize: 4096, + // attachmentsIncluded: false, + // }, + // { + // numberOfMessages: 0, + // maxSize: 1024, + // attachmentsIncluded: false, + // }, + // ]; + + const events = mkEvents(); + const room = createRoom(); + console.log(events, room); + function createRoom() { + const room = new Room(generateRoomId(), null, client.getUserId()); + return room; + } + + function mkEvents() { + const events = []; + const ts0 = Date.now(); + for (let i = 0; i < 10; i++) { + events.push(TestUtilsMatrix.mkMessage({ + event: true, room: "!room:id", user: "@user:id", + ts: ts0 + i * 1000, + })); + } + return events; + } + + it('checks if the export format is valid', function() { + expect(textForFormat('HTML')).toBeTruthy(); + expect(textForFormat('JSON')).toBeTruthy(); + expect(textForFormat('PLAIN_TEXT')).toBeTruthy(); + try { + textForFormat('PDF'); + throw new Error("Expected to throw an error"); + } catch (e) { + expect(e.message).toBe("Unknown format"); + } + }); + + it('checks if the export options are valid', function() { + // const html = new PlainTextExporter(room, ExportTypes.BEGINNING, invalidExportOptions[0], null); + }); +}); + From b333612deab879160da92f8b4409d88ae6d4b398 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 3 Aug 2021 14:53:23 +0530 Subject: [PATCH 148/176] Fix comparing MB -> bytes --- src/utils/exportUtils/Exporter.ts | 4 ++- test/utils/export-test.tsx | 49 ++++++++++++++++++------------- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 47db141830..f975e76ddd 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -42,7 +42,9 @@ export default abstract class Exporter { protected exportOptions: IExportOptions, protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { - if (exportOptions.maxSize < 1 || exportOptions.maxSize > 2000 || exportOptions.numberOfMessages > 10**8) { + if (exportOptions.maxSize < 1 * 1024 * 1024|| + exportOptions.maxSize > 2000 * 1024 * 1024|| + exportOptions.numberOfMessages > 10**8) { throw new Error("Invalid export options"); } this.cancelled = false; diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index 3bcbadecd8..279ebcff59 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -16,9 +16,9 @@ limitations under the License. import { MatrixClient, Room } from "matrix-js-sdk"; import { MatrixClientPeg } from "../../src/MatrixClientPeg"; -import { textForFormat } from "../../src/utils/exportUtils/exportUtils"; -// import HTMLExporter from "../../src/utils/exportUtils/HtmlExport"; -// import PlainTextExporter from "../../src/utils/exportUtils/PlainTextExport"; +import { textForFormat, IExportOptions, ExportTypes } from "../../src/utils/exportUtils/exportUtils"; +import '../skinned-sdk'; +import PlainTextExporter from "../../src/utils/exportUtils/PlainTextExport"; import * as TestUtilsMatrix from '../test-utils'; import { stubClient } from '../test-utils'; @@ -37,23 +37,23 @@ describe('export', function() { return MY_USER_ID; }; - // const invalidExportOptions: IExportOptions[] = [ - // { - // numberOfMessages: 10**9, - // maxSize: 1024, - // attachmentsIncluded: false, - // }, - // { - // numberOfMessages: -1, - // maxSize: 4096, - // attachmentsIncluded: false, - // }, - // { - // numberOfMessages: 0, - // maxSize: 1024, - // attachmentsIncluded: false, - // }, - // ]; + const invalidExportOptions: IExportOptions[] = [ + { + numberOfMessages: 10**9, + maxSize: 1024 * 1024 * 1024, + attachmentsIncluded: false, + }, + { + numberOfMessages: -1, + maxSize: 4096 * 1024 * 1024, + attachmentsIncluded: false, + }, + { + numberOfMessages: 0, + maxSize: 0, + attachmentsIncluded: false, + }, + ]; const events = mkEvents(); const room = createRoom(); @@ -88,7 +88,14 @@ describe('export', function() { }); it('checks if the export options are valid', function() { - // const html = new PlainTextExporter(room, ExportTypes.BEGINNING, invalidExportOptions[0], null); + for (const exportOption of invalidExportOptions) { + try { + new PlainTextExporter(room, ExportTypes.BEGINNING, exportOption, null); + throw new Error("Expected to throw an error"); + } catch (e) { + expect(e.message).toBe("Invalid export options"); + } + } }); }); From e29d9db2e753dadd2729d9227d764416d5dc15fc Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 4 Aug 2021 12:37:13 +0530 Subject: [PATCH 149/176] Fetch exportCSS during export --- src/utils/exportUtils/HtmlExport.tsx | 76 +- src/utils/exportUtils/PlainTextExport.ts | 2 +- src/utils/exportUtils/exportCSS.ts | 25530 +-------------------- 3 files changed, 160 insertions(+), 25448 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index c27f5b7d12..54e21fdf14 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -30,12 +30,12 @@ import * as Avatar from "../../Avatar"; import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventTile"; import DateSeparator from "../../components/views/messages/DateSeparator"; import BaseAvatar from "../../components/views/avatars/BaseAvatar"; -import exportCSS from "./exportCSS"; import exportJS from "!!raw-loader!./exportJS"; import exportIcons from "./exportIcons"; import { ExportTypes } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; +import getExportCSS from "./exportCSS"; export default class HTMLExporter extends Exporter { protected avatars: Map<string, boolean>; @@ -253,38 +253,40 @@ export default class HTMLExporter extends Exporter { return wantsDateSeparator(prevEvent.getDate(), event.getDate()); } - protected async getEventTile(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { + public getEventTile(mxEv: MatrixEvent, continuation: boolean) { + return <div className="mx_Export_EventWrapper" id={mxEv.getId()}> + <MatrixClientContext.Provider value={this.client}> + <EventTile + mxEvent={mxEv} + continuation={continuation} + isRedacted={mxEv.isRedacted()} + replacingEventId={mxEv.replacingEventId()} + forExport={true} + readReceipts={null} + readReceiptMap={null} + showUrlPreview={false} + checkUnmounting={() => false} + isTwelveHour={false} + last={false} + lastInSection={false} + permalinkCreator={this.permalinkCreator} + lastSuccessful={false} + isSelectedEvent={false} + getRelationsForEvent={null} + showReactions={false} + layout={Layout.Group} + enableFlair={false} + showReadReceipts={false} + /> + </MatrixClientContext.Provider> + </div>; + } + + protected async getEventTileMarkup(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { const hasAvatar = !!this.getAvatarURL(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); - const eventTile = ( - <div className="mx_Export_EventWrapper" id={mxEv.getId()}> - <MatrixClientContext.Provider value={this.client}> - <EventTile - mxEvent={mxEv} - continuation={continuation} - isRedacted={mxEv.isRedacted()} - replacingEventId={mxEv.replacingEventId()} - forExport={true} - readReceipts={null} - readReceiptMap={null} - showUrlPreview={false} - checkUnmounting={() => false} - isTwelveHour={false} - last={false} - lastInSection={false} - permalinkCreator={this.permalinkCreator} - lastSuccessful={false} - isSelectedEvent={false} - getRelationsForEvent={null} - showReactions={false} - layout={Layout.Group} - enableFlair={false} - showReadReceipts={false} - /> - </MatrixClientContext.Provider> - </div> - ); + const eventTile = this.getEventTile(mxEv, continuation); let eventTileMarkup = renderToStaticMarkup(eventTile); if (filePath) { @@ -323,14 +325,14 @@ export default class HTMLExporter extends Exporter { try { const blob = await this.getMediaBlob(mxEv); if (this.totalSize + blob.size > this.exportOptions.maxSize) { - eventTile = await this.getEventTile( + eventTile = await this.getEventTileMarkup( this.createModifiedEvent(this.mediaOmitText, mxEv), joined, ); } else { this.totalSize += blob.size; const filePath = this.getFilePath(mxEv); - eventTile = await this.getEventTile(mxEv, joined, filePath); + eventTile = await this.getEventTileMarkup(mxEv, joined, filePath); if (this.totalSize == this.exportOptions.maxSize) { this.exportOptions.attachmentsIncluded = false; } @@ -338,19 +340,19 @@ export default class HTMLExporter extends Exporter { } } catch (e) { console.log("Error while fetching file" + e); - eventTile = await this.getEventTile( + eventTile = await this.getEventTileMarkup( this.createModifiedEvent(_t("Error fetching file"), mxEv), joined, ); } } else { - eventTile = await this.getEventTile(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); + eventTile = await this.getEventTileMarkup(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); } - } else eventTile = await this.getEventTile(mxEv, joined); + } else eventTile = await this.getEventTileMarkup(mxEv, joined); } catch (e) { // TODO: Handle callEvent errors console.error(e); - eventTile = await this.getEventTile(this.createModifiedEvent("Error parsing HTML", mxEv), joined); + eventTile = await this.getEventTileMarkup(this.createModifiedEvent("Error parsing HTML", mxEv), joined); } return eventTile; @@ -388,7 +390,7 @@ export default class HTMLExporter extends Exporter { this.updateProgress("Creating HTML..."); const html = await this.createHTML(res); - + const exportCSS = await getExportCSS(); this.addFile("index.html", new Blob([html])); this.addFile("css/style.css", new Blob([exportCSS])); this.addFile("js/script.js", new Blob([exportJS])); diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 1c946bb048..7ab4748848 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -42,7 +42,7 @@ export default class PlainTextExporter extends Exporter { : _t("Media omitted - file size limit exceeded"); } - protected textForReplyEvent = (ev: MatrixEvent) => { + public textForReplyEvent = (ev: MatrixEvent) => { const REPLY_REGEX = /> <(.*?)>(.*?)\n\n(.*)/; const REPLY_SOURCE_MAX_LENGTH = 32; const content = ev.getContent(); diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 36dcea76bb..7079967d93 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -13,25435 +13,145 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -/* eslint-disable max-len */ -const lightCSS = `@charset "utf-8"; -.hljs-addition { - background: #dfd; -} - -.hljs-deletion { - background: #fdd; -} - -@supports ((-webkit-backdrop-filter: none) or (backdrop-filter: none)) { - .mx_LeftPanel { - background-image: unset; - background-image: var(--avatar-url, unset); - background-repeat: no-repeat; - background-size: cover; - background-position: 0 0; - } - .mx_GroupFilterPanel, - .mx_SpacePanel { - -webkit-backdrop-filter: blur(20px); - backdrop-filter: blur(20px); - } - .mx_LeftPanel .mx_LeftPanel_roomListContainer { - -webkit-backdrop-filter: blur(40px); - backdrop-filter: blur(40px); - } -} - -.mx_RoomSublist_showNButton { - background-color: transparent !important; -} - -a:hover, -a:link, -a:visited { - text-decoration: none; -} - -:root { - font-size: 10px; - --transition-short: 0.1s; - --transition-standard: 0.3s; -} - -@media (prefers-reduced-motion) { - :root { - --transition-short: 0; - --transition-standard: 0; - } -} - -html { - height: 100%; - overflow: hidden; - -ms-scroll-chaining: none; - overscroll-behavior: none; -} - -body { - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.5rem; - background-color: #fff; - color: #2e2f32; - border: 0; - margin: 0; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -code, -pre { - font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, - monospace; - font-size: 100% !important; -} - -.error, -.text-error, -.text-warning, -.warning { - color: #ff4b55; -} - -.text-success { - color: #0dbd8b; -} - -.text-muted { - color: #61708b; -} - -b { - font-weight: 700; -} - -h2 { - color: #2e2f32; - font-weight: 400; - font-size: 1.8rem; - margin-top: 16px; - margin-bottom: 16px; -} - -a:hover, -a:link, -a:visited { - color: #238cf5; -} - -input[type="password"], -input[type="search"], -input[type="text"] { - padding: 9px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - font-weight: 600; - min-width: 0; -} - -input[type="search"].mx_textinput_icon, -input[type="text"].mx_textinput_icon { - padding-left: 36px; - background-repeat: no-repeat; - background-position: 10px; -} - -input[type="search"].mx_textinput_icon.mx_textinput_search, -input[type="text"].mx_textinput_icon.mx_textinput_search { - background-image: url(../../img/feather-customised/search-input.044bfa7.svg); -} - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration, -input[type="search"]::-webkit-search-results-button, -input[type="search"]::-webkit-search-results-decoration { - display: none; -} - -input::-webkit-input-placeholder, -textarea::-webkit-input-placeholder { - opacity: 1; -} - -input::-moz-placeholder, -textarea::-moz-placeholder { - opacity: 1; -} - -input:-ms-input-placeholder, -textarea:-ms-input-placeholder { - opacity: 1; -} - -input::-ms-input-placeholder, -textarea::-ms-input-placeholder { - opacity: 1; -} - -input::placeholder, -textarea::placeholder { - opacity: 1; -} - -input[type="password"], -input[type="text"], -textarea { - background-color: transparent; - color: #2e2f32; -} - -textarea { - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - color: #2e2f32; -} - -input[type="password"]:focus, -input[type="text"]:focus, -textarea:focus { - outline: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -:focus:not(.focus-visible) { - outline: none; -} - -.mx_Dialog .mx_textinput > input[type="search"], -.mx_Dialog .mx_textinput > input[type="text"], -.mx_MatrixChat .mx_textinput > input[type="search"], -.mx_MatrixChat .mx_textinput > input[type="text"] { - border: none; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - color: #2e2f32; -} - -.mx_Dialog .mx_textinput, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"], -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"], -.mx_MatrixChat .mx_textinput, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"], -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"] { - display: block; - -webkit-box-sizing: border-box; - box-sizing: border-box; - background-color: transparent; - color: #9fa9ba; - border-radius: 4px; - border: 1px solid rgba(46, 47, 50, 0.1); - margin: 9px; -} - -.mx_Dialog .mx_textinput, -.mx_MatrixChat .mx_textinput { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_Dialog .mx_textinput input::-webkit-input-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::-webkit-input-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::-webkit-input-placeholder, -.mx_MatrixChat .mx_textinput input::-webkit-input-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::-webkit-input-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::-webkit-input-placeholder { - color: rgba(159, 169, 186, 0.75); -} - -.mx_Dialog .mx_textinput input::-moz-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::-moz-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::-moz-placeholder, -.mx_MatrixChat .mx_textinput input::-moz-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::-moz-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::-moz-placeholder { - color: rgba(159, 169, 186, 0.75); -} - -.mx_Dialog .mx_textinput input:-ms-input-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]:-ms-input-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]:-ms-input-placeholder, -.mx_MatrixChat .mx_textinput input:-ms-input-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]:-ms-input-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]:-ms-input-placeholder { - color: rgba(159, 169, 186, 0.75); -} - -.mx_Dialog .mx_textinput input::-ms-input-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::-ms-input-placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::-ms-input-placeholder, -.mx_MatrixChat .mx_textinput input::-ms-input-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::-ms-input-placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::-ms-input-placeholder { - color: rgba(159, 169, 186, 0.75); -} - -.mx_Dialog .mx_textinput input::placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::placeholder, -.mx_Dialog - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::placeholder, -.mx_MatrixChat .mx_textinput input::placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"]::placeholder, -.mx_MatrixChat - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"]::placeholder { - color: rgba(159, 169, 186, 0.75); -} - -.dark-panel { - background-color: #f2f5f8; -} - -.dark-panel .mx_textinput, -.dark-panel - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"], -.dark-panel - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"] { - color: #9fa9ba; - background-color: #fff; - border: none; -} - -.light-panel .mx_textinput, -.light-panel - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="search"], -.light-panel - :not(.mx_textinput):not(.mx_Field):not(.mx_no_textinput) - > input[type="text"] { - color: #9fa9ba; - background-color: #f2f5f8; - border: none; -} - -::-moz-focus-inner { - border: 0; -} - -#mx_theme_accentColor { - color: #0dbd8b; -} - -#mx_theme_secondaryAccentColor { - color: #f2f5f8; -} - -#mx_theme_tertiaryAccentColor { - color: #d3efe1; -} - -.mx_Dialog_wrapper { - position: fixed; - z-index: 4000; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_Dialog { - background-color: #fff; - color: #747474; - z-index: 4012; - font-weight: 300; - font-size: 1.5rem; - position: relative; - padding: 24px; - max-height: 80%; - -webkit-box-shadow: 2px 15px 30px 0 rgba(0, 0, 0, 0.48); - box-shadow: 2px 15px 30px 0 rgba(0, 0, 0, 0.48); - border-radius: 8px; - overflow-y: auto; -} - -.mx_Dialog_fixedWidth { - width: 60vw; - max-width: 704px; -} - -.mx_Dialog_staticWrapper .mx_Dialog { - z-index: 4010; - contain: content; -} - -.mx_Dialog_background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(46, 48, 51, 0.38); - opacity: 0.8; - z-index: 4011; -} - -.mx_Dialog_background.mx_Dialog_staticBackground { - z-index: 4009; -} - -.mx_Dialog_wrapperWithStaticUnder .mx_Dialog_background { - opacity: 0.4; -} - -.mx_Dialog_lightbox .mx_Dialog_background { - opacity: 0.95; - background-color: #000; -} - -.mx_Dialog_lightbox .mx_Dialog { - border-radius: 0; - background-color: transparent; - width: 100%; - height: 100%; - max-width: 100%; - max-height: 100%; - pointer-events: none; - padding: 0; -} - -.mx_Dialog_header { - position: relative; - margin-bottom: 10px; -} - -.mx_Dialog_titleImage { - vertical-align: sub; - width: 25px; - height: 25px; - margin-left: -2px; - margin-right: 4px; -} - -.mx_Dialog_title { - font-size: 2.2rem; - font-weight: 600; - line-height: 3.6rem; - color: #45474a; -} - -.mx_Dialog_header.mx_Dialog_headerWithButton > .mx_Dialog_title { - text-align: center; -} - -.mx_Dialog_header.mx_Dialog_headerWithCancel > .mx_Dialog_title { - margin-right: 20px; -} - -.mx_Dialog_title.danger { - color: #ff4b55; -} - -.mx_Dialog_cancelButton { - -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); - mask: url(../../img/feather-customised/cancel.23c2689.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - width: 14px; - height: 14px; - background-color: #c1c1c1; - cursor: pointer; - position: absolute; - top: 10px; - right: 0; -} - -.mx_Dialog_content { - margin: 24px 0 68px; - font-size: 1.4rem; - color: #2e2f32; - word-wrap: break-word; -} - -.mx_Dialog_buttons { - margin-top: 20px; - text-align: right; -} - -.mx_Dialog_buttons .mx_Dialog_buttons_additive { - float: left; -} - -.mx_Dialog_buttons button, -.mx_Dialog_buttons input[type="submit"], -.mx_Dialog button, -.mx_Dialog input[type="submit"] { - vertical-align: middle; - border-radius: 8px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #fff; - background-color: #0dbd8b; - width: auto; - padding: 7px 1.5em; - cursor: pointer; - display: inline-block; - outline: none; - margin-left: 0; - margin-right: 8px; - font-weight: 600; - border: 1px solid #0dbd8b; - color: #0dbd8b; - background-color: #fff; - font-family: inherit; -} - -.mx_Dialog button:last-child { - margin-right: 0; -} - -.mx_Dialog_buttons button:focus, -.mx_Dialog_buttons input[type="submit"]:focus, -.mx_Dialog button:focus, -.mx_Dialog input[type="submit"]:focus { - -webkit-filter: brightness(105%); - filter: brightness(105%); -} - -.mx_Dialog_buttons button.mx_Dialog_primary, -.mx_Dialog_buttons input[type="submit"].mx_Dialog_primary, -.mx_Dialog button.mx_Dialog_primary, -.mx_Dialog input[type="submit"].mx_Dialog_primary { - color: #fff; - background-color: #0dbd8b; - min-width: 156px; -} - -.mx_Dialog_buttons button.danger, -.mx_Dialog_buttons input[type="submit"].danger, -.mx_Dialog button.danger, -.mx_Dialog input[type="submit"].danger { - background-color: #ff4b55; - border: 1px solid #ff4b55; - color: #fff; -} - -.mx_Dialog button.warning, -.mx_Dialog input[type="submit"].warning { - border: 1px solid #ff4b55; - color: #ff4b55; -} - -.mx_Dialog_buttons button:disabled, -.mx_Dialog_buttons input[type="submit"]:disabled, -.mx_Dialog button:disabled, -.mx_Dialog input[type="submit"]:disabled { - background-color: #747474; - border: 1px solid #747474; - opacity: 0.7; -} - -.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { - width: auto; - border-radius: 8px; - padding: 0; - -webkit-box-shadow: none; - box-shadow: none; - overflow-x: hidden; - overflow-y: hidden; -} - -.mx_GeneralButton { - vertical-align: middle; - border: 0; - border-radius: 8px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #fff; - background-color: #0dbd8b; - width: auto; - padding: 7px 1.5em; - cursor: pointer; - display: inline-block; - outline: none; - display: inline; - margin: auto; -} - -.mx_linkButton { - cursor: pointer; - color: #0dbd8b; -} - -.mx_TextInputDialog_label { - text-align: left; - padding-bottom: 12px; -} - -.mx_TextInputDialog_input { - font-size: 1.5rem; - border-radius: 3px; - border: 1px solid #e7e7e7; - padding: 9px; - color: #2e2f32; - background-color: #fff; -} - -.mx_textButton { - vertical-align: middle; - border: 0; - border-radius: 8px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #fff; - background-color: #0dbd8b; - width: auto; - cursor: pointer; - display: inline-block; - outline: none; - font-size: 1.5rem; - padding: 0 1.5em; -} - -.mx_button_row { - margin-top: 69px; -} - -.mx_Username_color1 { - color: #368bd6; -} - -.mx_Username_color2 { - color: #ac3ba8; -} - -.mx_Username_color3 { - color: #0dbd8b; -} - -.mx_Username_color4 { - color: #e64f7a; -} - -.mx_Username_color5 { - color: #ff812d; -} - -.mx_Username_color6 { - color: #2dc2c5; -} - -.mx_Username_color7 { - color: #5c56f5; -} - -.mx_Username_color8 { - color: #74d12c; -} - -.mx_Tooltip_dark .mx_Tooltip_chevron:after { - border-right-color: #27303a; -} - -html { - scrollbar-color: rgba(0, 0, 0, 0.2) transparent; -} - -* { - scrollbar-width: thin; -} - -::-webkit-scrollbar { - width: 6px; - height: 6px; - background-color: transparent; -} - -::-webkit-scrollbar-thumb { - border-radius: 3px; - background-color: rgba(0, 0, 0, 0.2); -} - -.mx_AutoHideScrollbar:hover { - scrollbar-color: rgba(0, 0, 0, 0.2) transparent; -} - -.mx_AutoHideScrollbar:hover::-webkit-scrollbar { - background-color: transparent; -} - -.mx_AutoHideScrollbar:hover::-webkit-scrollbar-thumb { - background-color: rgba(0, 0, 0, 0.2); -} - -.mx_AutoHideScrollbar { - overflow-x: hidden; - overflow-y: auto; - overflow-y: overlay; - -ms-overflow-style: -ms-autohiding-scrollbar; -} - -.mx_AutoHideScrollbar::-webkit-scrollbar, -.mx_AutoHideScrollbar::-webkit-scrollbar-thumb { - background-color: transparent; -} - -.mx_AutoHideScrollbar { - scrollbar-color: transparent transparent; -} - -.mx_CompatibilityPage { - width: 100%; - height: 100%; - background-color: #e55; -} - -.mx_CompatibilityPage_box { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; - width: 500px; - height: 300px; - border: 1px solid; - padding: 10px; - background-color: #fcc; -} - -.mx_ContextualMenu_wrapper { - position: fixed; - z-index: 5000; -} - -.mx_ContextualMenu_background { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - opacity: 1; - z-index: 5000; -} - -.mx_ContextualMenu { - border-radius: 8px; - -webkit-box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); - box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); - background-color: #fff; - color: #2e2f32; - position: absolute; - font-size: 1.4rem; - z-index: 5001; - contain: content; -} - -.mx_ContextualMenu_right { - right: 0; -} - -.mx_ContextualMenu.mx_ContextualMenu_withChevron_right { - right: 8px; -} - -.mx_ContextualMenu_chevron_right { - position: absolute; - right: -8px; - top: 0; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-left: 8px solid #fff; - border-bottom: 8px solid transparent; -} - -.mx_ContextualMenu_left { - left: 0; -} - -.mx_ContextualMenu.mx_ContextualMenu_withChevron_left { - left: 8px; -} - -.mx_ContextualMenu_chevron_left { - position: absolute; - left: -8px; - top: 0; - width: 0; - height: 0; - border-top: 8px solid transparent; - border-right: 8px solid #fff; - border-bottom: 8px solid transparent; -} - -.mx_ContextualMenu_top { - top: 0; -} - -.mx_ContextualMenu.mx_ContextualMenu_withChevron_top { - top: 8px; -} - -.mx_ContextualMenu_chevron_top { - position: absolute; - left: 0; - top: -8px; - width: 0; - height: 0; - border-left: 8px solid transparent; - border-bottom: 8px solid #fff; - border-right: 8px solid transparent; -} - -.mx_ContextualMenu_bottom { - bottom: 0; -} - -.mx_ContextualMenu.mx_ContextualMenu_withChevron_bottom { - bottom: 8px; -} - -.mx_ContextualMenu_chevron_bottom { - position: absolute; - left: 0; - bottom: -8px; - width: 0; - height: 0; - border-left: 8px solid transparent; - border-top: 8px solid #fff; - border-right: 8px solid transparent; -} - -.mx_CreateRoom { - width: 960px; - margin-left: auto; - margin-right: auto; - color: #2e2f32; -} - -.mx_CreateRoom input, -.mx_CreateRoom textarea { - border-radius: 3px; - border: 1px solid #c7c7c7; - font-weight: 300; - font-size: 1.3rem; - padding: 9px; - margin-top: 6px; -} - -.mx_CreateRoom_description { - width: 330px; -} - -.mx_CustomRoomTagPanel { - background-color: hsla(0, 0%, 91%, 0.77); - max-height: 40vh; -} - -.mx_CustomRoomTagPanel_scroller { - max-height: inherit; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CustomRoomTagPanel .mx_AccessibleButton { - margin: 0 auto; - width: 40px; - padding: 10px 0 9px; - position: relative; -} - -.mx_CustomRoomTagPanel .mx_BaseAvatar_image { - -webkit-box-sizing: border-box; - box-sizing: border-box; - width: 40px; - height: 40px; -} - -.mx_CustomRoomTagPanel - .mx_AccessibleButton.CustomRoomTagPanel_tileSelected:before { - content: ""; - height: 56px; - background-color: #238cf5; - width: 5px; - position: absolute; - left: -9px; - border-radius: 0 3px 3px 0; - top: 5px; -} - -.mx_FilePanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - overflow-y: auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_FilePanel .mx_RoomView_messageListWrapper { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_FilePanel .mx_RoomView_MessageList { - width: 100%; -} - -.mx_FilePanel .mx_EventTile_avatar, -.mx_FilePanel .mx_RoomView_MessageList h2 { - display: none; -} - -.mx_FilePanel .mx_EventTile:not([data-layout="bubble"]) { - word-break: break-word; - margin-top: 10px; - padding-top: 0; -} - -.mx_FilePanel .mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_line { - padding-left: 0; -} - -.mx_FilePanel .mx_EventTile .mx_MImageBody { - margin-right: 0; -} - -.mx_FilePanel .mx_EventTile .mx_MFileBody { - line-height: 2.4rem; -} - -.mx_FilePanel .mx_EventTile .mx_MFileBody_download { - padding-top: 8px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-size: 1.4rem; - color: #acacac; -} - -.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - color: #747474; -} - -.mx_FilePanel .mx_EventTile .mx_MImageBody_size { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - font-size: 1.4rem; - text-align: right; - white-space: nowrap; -} - -.mx_FilePanel .mx_EventTile_senderDetails { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: -2px; -} - -.mx_FilePanel .mx_EventTile_senderDetailsLink { - text-decoration: none; -} - -.mx_FilePanel .mx_EventTile .mx_SenderProfile { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - line-height: normal; - padding: 0; - font-size: 1.4rem; - opacity: 1; - color: #acacac; -} - -.mx_FilePanel .mx_EventTile .mx_MessageTimestamp { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - text-align: right; - visibility: visible; - position: static; - font-size: 1.4rem; - opacity: 1; - color: #acacac; -} - -.mx_FilePanel .mx_EventTile_line { - margin-right: 0; - padding-left: 0; -} - -.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { - padding-left: 0; -} - -.mx_FilePanel_empty:before { - -webkit-mask-image: url(../../img/element-icons/room/files.5709c0c.svg); - mask-image: url(../../img/element-icons/room/files.5709c0c.svg); -} - -.mx_GenericErrorPage { - width: 100%; - height: 100%; - background-color: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_GenericErrorPage_box { - display: inline; - width: 500px; - min-height: 125px; - border: 1px solid #f22; - padding: 10px 10px 20px; - background-color: #fcc; -} - -.mx_GroupFilterPanel { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - background-color: hsla(0, 0%, 91%, 0.77); - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - min-height: 0; -} - -.mx_GroupFilterPanel_items_selected { - cursor: pointer; -} - -.mx_GroupFilterPanel .mx_GroupFilterPanel_divider { - height: 0; - width: 90%; - border: none; - border-bottom: 1px solid #8d99a5; -} - -.mx_GroupFilterPanel .mx_GroupFilterPanel_scroller { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: 100%; -} - -.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding-top: 6px; -} - -.mx_GroupFilterPanel .mx_GroupFilterPanel_tagTileContainer > div { - margin: 6px 0; -} - -.mx_GroupFilterPanel .mx_TagTile { - position: relative; -} - -.mx_GroupFilterPanel .mx_TagTile .mx_BetaDot { - position: absolute; - right: -13px; - top: -11px; -} - -.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_prototype { - padding: 3px; -} - -.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected_prototype { - background-color: #fff; - border-radius: 6px; -} - -.mx_TagTile_selected_prototype .mx_TagTile_homeIcon:before { - background-color: #2e2f32; -} - -.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon { - background-color: rgba(92, 100, 112, 0.2); - border-radius: 48px; -} - -.mx_TagTile:not(.mx_TagTile_selected_prototype) .mx_TagTile_homeIcon:before { - background-color: #5c6470; -} - -.mx_TagTile_homeIcon { - width: 32px; - height: 32px; - position: relative; -} - -.mx_TagTile_homeIcon:before { - -webkit-mask-image: url(../../img/element-icons/home.b706c0e.svg); - mask-image: url(../../img/element-icons/home.b706c0e.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 21px; - mask-size: 21px; - content: ""; - display: inline-block; - width: 32px; - height: 32px; - position: absolute; - top: calc(50% - 16px); - left: calc(50% - 16px); -} - -.mx_GroupFilterPanel .mx_TagTile_plus { - margin-bottom: 12px; - height: 32px; - width: 32px; - border-radius: 20px; - background-color: rgba(92, 100, 112, 0.2); - position: relative; - display: block !important; -} - -.mx_GroupFilterPanel .mx_TagTile_plus:before { - background-color: #5c6470; - -webkit-mask-image: url(../../img/feather-customised/plus.38ae979.svg); - mask-image: url(../../img/feather-customised/plus.38ae979.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.mx_GroupFilterPanel .mx_TagTile.mx_TagTile_selected:before { - content: ""; - height: 100%; - background-color: #0dbd8b; - width: 4px; - position: absolute; - left: -12px; - border-radius: 0 3px 3px 0; -} - -.mx_GroupFilterPanel .mx_TagTile.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; -} - -.mx_TagTile_tooltip { - position: relative; - top: -30px; - left: 5px; -} - -.mx_TagTile_context_button { - min-width: 15px; - height: 15px; - position: absolute; - right: -5px; - top: -8px; - border-radius: 8px; - background-color: #dbdbdb; - color: #000; - font-weight: 600; - font-size: 1rem; - text-align: center; - padding-top: 1px; - padding-left: 4px; - padding-right: 4px; -} - -.mx_TagTile_avatar { - position: relative; -} - -.mx_TagTile_badge { - position: absolute; - right: -4px; - top: -2px; - border-radius: 8px; - color: #fff; - font-weight: 600; - font-size: 1.4rem; - padding: 0 5px; - background-color: #61708b; -} - -.mx_TagTile_badgeHighlight { - background-color: #ff4b55; -} - -.mx_GroupView { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - overflow: hidden; -} - -.mx_GroupView_error { - margin: auto; -} - -.mx_GroupView_header { - min-height: 52px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-bottom: 10px; - padding-left: 19px; -} - -.mx_GroupView_header_view { - border-bottom: 1px solid transparent; - padding-bottom: 0; - padding-right: 8px; -} - -.mx_GroupView_header_avatar, -.mx_GroupView_header_info { - display: table-cell; - vertical-align: middle; -} - -.mx_GroupHeader_button { - position: relative; - margin-left: 5px; - margin-right: 5px; - cursor: pointer; - height: 20px; - width: 20px; -} - -.mx_GroupHeader_button:before { - content: ""; - position: absolute; - height: 20px; - width: 20px; - background-color: #91a1c0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_GroupHeader_editButton:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_GroupHeader_shareButton:before { - -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); - mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); -} - -.mx_GroupView_hostingSignup img { - margin-left: 5px; -} - -.mx_GroupView_editable { - border-bottom: 1px solid #c7c7c7 !important; - min-width: 150px; - cursor: text; -} - -.mx_GroupView_editable:focus { - border-bottom: 1px solid #0dbd8b !important; - outline: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -.mx_GroupView_header_isUserMember - .mx_GroupView_header_name:hover - div:not(.mx_GroupView_editable) { - color: #0dbd8b; - cursor: pointer; -} - -.mx_GroupView_avatarPicker { - position: relative; -} - -.mx_GroupView_avatarPicker_edit { - position: absolute; - top: 50px; - left: 15px; -} - -.mx_GroupView_avatarPicker .mx_Spinner { - width: 48px; - height: 48px !important; -} - -.mx_GroupView_header_leftCol { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow: hidden; -} - -.mx_GroupView_header_rightCol { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_GroupView_textButton { - display: inline-block; -} - -.mx_GroupView_header_groupid { - font-weight: 400; - font-size: medium; - padding-left: 10px; -} - -.mx_GroupView_header_name { - vertical-align: middle; - width: 100%; - height: 31px; - color: #2e2f32; - font-weight: 700; - font-size: 2.2rem; - padding-right: 16px; -} - -.mx_GroupView_header_name, -.mx_GroupView_header_shortDesc { - overflow: hidden; - padding-left: 19px; - text-overflow: ellipsis; - border-bottom: 1px solid transparent; -} - -.mx_GroupView_header_shortDesc { - vertical-align: bottom; - float: left; - max-height: 42px; - color: #a2a2a2; - font-weight: 300; - font-size: 1.3rem; - margin-right: 16px; -} - -.mx_GroupView_avatarPicker_label { - cursor: pointer; -} - -.mx_GroupView_cancelButton { - padding-left: 8px; -} - -.mx_GroupView_cancelButton img { - position: relative; - top: 5px; -} - -.mx_GroupView input[type="radio"] { - margin: 10px 10px 0; -} - -.mx_GroupView_label_text { - display: inline-block; - max-width: 80%; - vertical-align: 0.1em; - line-height: 2em; -} - -.mx_GroupView_body { - margin: 0 24px; -} - -.mx_GroupView_body, -.mx_GroupView_rooms { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_GroupView_rooms { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - min-height: 200px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_GroupView h3 { - text-transform: uppercase; - color: #3d3b39; - font-weight: 600; - font-size: 1.3rem; - margin-bottom: 10px; -} - -.mx_GroupView_rooms_header .mx_AccessibleButton { - padding-left: 14px; - margin-bottom: 14px; - height: 24px; -} - -.mx_GroupView_group { - border-top: 1px solid transparent; -} - -.mx_GroupView_group_disabled { - opacity: 0.3; - pointer-events: none; -} - -.mx_GroupView_rooms_header_addRow_button { - display: inline-block; -} - -.mx_GroupView_rooms_header_addRow_button object { - pointer-events: none; -} - -.mx_GroupView_rooms_header_addRow_label { - display: inline-block; - vertical-align: top; - line-height: 2.4rem; - padding-left: 28px; - color: #0dbd8b; -} - -.mx_GroupView_rooms .mx_RoomDetailList { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - border-top: 1px solid transparent; - padding-top: 10px; - word-break: break-word; -} - -.mx_GroupView .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.mx_GroupView_membershipSection { - color: #888; - margin-top: 10px; -} - -.mx_GroupView_membershipSubSection { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-bottom: 8px; -} - -.mx_GroupView_membershipSubSection .mx_Spinner { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; -} - -.mx_GroupView_membershipSection_description { - line-height: 3.4rem; -} - -.mx_GroupView_membershipSection_description .mx_BaseAvatar { - margin-right: 10px; -} - -.mx_GroupView_membershipSection .mx_GroupView_textButton { - margin-right: 0; - margin-top: 0; - margin-left: 8px; -} - -.mx_GroupView_memberSettings_toggle label { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_GroupView_memberSettings input { - margin-right: 6px; -} - -.mx_GroupView_featuredThings { - margin-top: 20px; -} - -.mx_GroupView_featuredThings_header { - font-weight: 700; - font-size: 120%; - margin-bottom: 20px; -} - -.mx_GroupView_featuredThings_category { - font-weight: 700; - font-size: 110%; - margin-top: 10px; -} - -.mx_GroupView_featuredThings_container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_GroupView_featuredThing, -.mx_GroupView_featuredThings_addButton { - display: table-cell; - text-align: center; - width: 100px; - margin: 0 20px; -} - -.mx_GroupView_featuredThing { - position: relative; -} - -.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { - position: absolute; - top: -7px; - right: 11px; - opacity: 0.4; -} - -.mx_GroupView_featuredThing .mx_BaseAvatar { - vertical-align: baseline; - vertical-align: initial; -} - -.mx_GroupView_featuredThings_addButton object { - pointer-events: none; -} - -.mx_GroupView_featuredThing_name { - word-wrap: break-word; -} - -.mx_GroupView_uploadInput { - display: none; -} - -.mx_GroupView_body .mx_AutoHideScrollbar > * { - margin: 11px 50px 50px 68px; -} - -.mx_GroupView_groupDesc textarea { - width: 100%; - max-width: 100%; - height: 150px; -} - -.mx_GroupView_changeDelayWarning, -.mx_GroupView_groupDesc_placeholder { - background-color: #f7f7f7; - color: #888; - border-radius: 10px; - text-align: center; - margin: 20px 0; -} - -.mx_GroupView_groupDesc_placeholder { - padding: 100px 20px; - cursor: pointer; -} - -.mx_GroupView_changeDelayWarning { - padding: 40px 20px; -} - -.mx_GroupView - .mx_MemberInfo - .mx_AutoHideScrollbar - > :not(.mx_MemberInfo_avatar) { - padding-left: 16px; - padding-right: 16px; -} - -.mx_HeaderButtons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_RoomHeader_buttons + .mx_HeaderButtons:before { - content: unset; -} - -.mx_HeaderButtons:before { - content: ""; - background-color: #91a1c0; - opacity: 0.5; - margin: 6px 8px; - border-radius: 1px; - width: 1px; -} - -.mx_HomePage { - max-width: 960px; - width: 100%; - height: 100%; - margin-left: auto; - margin-right: auto; -} - -.mx_HomePage_default { - text-align: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_HomePage_default .mx_HomePage_default_wrapper { - margin: auto; -} - -.mx_HomePage_default img { - height: 48px; -} - -.mx_HomePage_default h1 { - font-weight: 600; - font-size: 3.2rem; - line-height: 4.4rem; - margin-bottom: 4px; -} - -.mx_HomePage_default h4 { - margin-top: 4px; - font-weight: 600; - font-size: 1.8rem; - line-height: 2.5rem; - color: #61708b; -} - -.mx_HomePage_default .mx_MiniAvatarUploader { - margin: 0 auto; -} - -.mx_HomePage_default .mx_HomePage_default_buttons { - margin: 60px auto 0; - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; -} - -.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton { - padding: 73px 8px 15px; - width: 160px; - height: 132px; - margin: 20px; - position: relative; - display: inline-block; - border-radius: 8px; - vertical-align: top; - word-break: break-word; - -webkit-box-sizing: border-box; - box-sizing: border-box; - font-weight: 600; - font-size: 1.5rem; - line-height: 2rem; - color: #fff; - background-color: #0dbd8b; -} - -.mx_HomePage_default .mx_HomePage_default_buttons .mx_AccessibleButton:before { - top: 20px; - left: 60px; - width: 40px; - height: 40px; - content: ""; - position: absolute; - background-color: #fff; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_HomePage_default - .mx_HomePage_default_buttons - .mx_AccessibleButton.mx_HomePage_button_sendDm:before { - -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); - mask-image: url(../../img/element-icons/feedback.a91241e.svg); -} - -.mx_HomePage_default - .mx_HomePage_default_buttons - .mx_AccessibleButton.mx_HomePage_button_explore:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); - mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); -} - -.mx_HomePage_default - .mx_HomePage_default_buttons - .mx_AccessibleButton.mx_HomePage_button_createGroup:before { - -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); - mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); -} - -.mx_LeftPanel { - background-color: hsla(0, 0%, 96.1%, 0.9); - min-width: 206px; - max-width: 50%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - contain: content; -} - -.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer { - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - -ms-flex-negative: 0; - flex-shrink: 0; - -ms-flex-preferred-size: 56px; - flex-basis: 56px; - height: 100%; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_LeftPanel .mx_LeftPanel_GroupFilterPanelContainer, -.mx_LeftPanel .mx_LeftPanel_roomListContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; -} - -.mx_LeftPanel .mx_LeftPanel_roomListContainer { - background-color: hsla(0, 0%, 96.1%, 0.9); - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - min-width: 0; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_userHeader { - padding: 12px; - -ms-flex-negative: 0; - flex-shrink: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_breadcrumbsContainer { - overflow-y: hidden; - overflow-x: scroll; - margin: 12px 12px 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - contain: content; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_leftOverflow { - -webkit-mask-image: -webkit-gradient( - linear, - left top, - right top, - from(transparent), - color-stop(5%, #000) - ); - -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%); - mask-image: -webkit-gradient( - linear, - left top, - right top, - from(transparent), - color-stop(5%, #000) - ); - mask-image: linear-gradient(90deg, transparent, #000 5%); -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow { - -webkit-mask-image: -webkit-gradient( - linear, - left top, - right top, - from(#000), - color-stop(95%, #000), - to(transparent) - ); - -webkit-mask-image: linear-gradient(90deg, #000, #000 95%, transparent); - mask-image: -webkit-gradient( - linear, - left top, - right top, - from(#000), - color-stop(95%, #000), - to(transparent) - ); - mask-image: linear-gradient(90deg, #000, #000 95%, transparent); -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_breadcrumbsContainer.mx_IndicatorScrollbar_rightOverflow.mx_IndicatorScrollbar_leftOverflow { - -webkit-mask-image: -webkit-gradient( - linear, - left top, - right top, - from(transparent), - color-stop(5%, #000), - color-stop(95%, #000), - to(transparent) - ); - -webkit-mask-image: linear-gradient( - 90deg, - transparent, - #000 5%, - #000 95%, - transparent - ); - mask-image: -webkit-gradient( - linear, - left top, - right top, - from(transparent), - color-stop(5%, #000), - color-stop(95%, #000), - to(transparent) - ); - mask-image: linear-gradient( - 90deg, - transparent, - #000 5%, - #000 95%, - transparent - ); -} - -.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_filterContainer { - margin-left: 12px; - margin-right: 12px; - -ms-flex-negative: 0; - flex-shrink: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_RoomSearch_focused - + .mx_LeftPanel_exploreButton, -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_RoomSearch_hasQuery - + .mx_LeftPanel_exploreButton { - -ms-flex-preferred-size: 0; - flex-basis: 0; - margin: 0; - width: 0; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_RoomSearch_focused - + .mx_LeftPanel_exploreButton:before, -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_RoomSearch_hasQuery - + .mx_LeftPanel_exploreButton:before { - content: none; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_dialPadButton { - width: 32px; - height: 32px; - border-radius: 8px; - background-color: rgba(141, 151, 165, 0.2); - position: relative; - margin-left: 8px; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_dialPadButton:before { - content: ""; - position: absolute; - top: 8px; - left: 8px; - width: 16px; - height: 16px; - -webkit-mask-image: url(../../img/element-icons/call/dialpad.3be6cbc.svg); - mask-image: url(../../img/element-icons/call/dialpad.3be6cbc.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #737d8c; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_exploreButton { - width: 32px; - height: 32px; - border-radius: 8px; - background-color: rgba(141, 151, 165, 0.2); - position: relative; - margin-left: 8px; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_exploreButton:before { - content: ""; - position: absolute; - top: 8px; - left: 8px; - width: 16px; - height: 16px; - -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); - mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #737d8c; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_exploreButton.mx_LeftPanel_exploreButton_space:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); - mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_roomListFilterCount { - font-size: 1.3rem; - font-weight: 600; - margin-left: 12px; - margin-top: 14px; - margin-bottom: -4px; -} - -.mx_LeftPanel .mx_LeftPanel_roomListContainer .mx_LeftPanel_roomListWrapper { - overflow: hidden; - margin-top: 10px; - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyBottom { - padding-bottom: 32px; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_roomListWrapper.mx_LeftPanel_roomListWrapper_stickyTop { - padding-top: 32px; -} - -.mx_LeftPanel - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_actualRoomListContainer { - position: relative; - height: 100%; -} - -.mx_LeftPanel.mx_LeftPanel_minimized { - min-width: unset; - width: unset !important; -} - -.mx_LeftPanel.mx_LeftPanel_minimized .mx_LeftPanel_roomListContainer { - width: 68px; -} - -.mx_LeftPanel.mx_LeftPanel_minimized - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_userHeader { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_LeftPanel.mx_LeftPanel_minimized - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_LeftPanel.mx_LeftPanel_minimized - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_dialPadButton, -.mx_LeftPanel.mx_LeftPanel_minimized - .mx_LeftPanel_roomListContainer - .mx_LeftPanel_filterContainer - .mx_LeftPanel_exploreButton { - margin-left: 0; - margin-top: 8px; - background-color: transparent; -} - -.mx_LeftPanelWidget { - margin-left: 8px; - margin-bottom: 4px; -} - -.mx_LeftPanelWidget .mx_LeftPanelWidget_headerContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - height: 24px; - color: #8d99a5; - margin-top: 4px; -} - -.mx_LeftPanelWidget - .mx_LeftPanelWidget_headerContainer - .mx_LeftPanelWidget_stickable { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - max-width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_LeftPanelWidget - .mx_LeftPanelWidget_headerContainer - .mx_LeftPanelWidget_headerText { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - max-width: calc(100% - 16px); - line-height: 1.6rem; - font-size: 1.3rem; - font-weight: 600; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_LeftPanelWidget - .mx_LeftPanelWidget_headerContainer - .mx_LeftPanelWidget_headerText - .mx_LeftPanelWidget_collapseBtn { - display: inline-block; - position: relative; - width: 14px; - height: 14px; - margin-right: 6px; -} - -.mx_LeftPanelWidget - .mx_LeftPanelWidget_headerContainer - .mx_LeftPanelWidget_headerText - .mx_LeftPanelWidget_collapseBtn:before { - content: ""; - width: 18px; - height: 18px; - position: absolute; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #8d99a5; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_LeftPanelWidget - .mx_LeftPanelWidget_headerContainer - .mx_LeftPanelWidget_headerText - .mx_LeftPanelWidget_collapseBtn.mx_LeftPanelWidget_collapseBtn_collapsed:before { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} - -.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox { - position: relative; - -ms-flex-direction: column; - flex-direction: column; - overflow: visible; -} - -.mx_LeftPanelWidget .mx_AppTileFullWidth, -.mx_LeftPanelWidget .mx_LeftPanelWidget_resizeBox { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; -} - -.mx_LeftPanelWidget .mx_AppTileFullWidth { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - overflow: hidden; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-sizing: border-box; - box-sizing: border-box; - -webkit-mask-image: linear-gradient(0deg, transparent, #000 4px); - mask-image: linear-gradient(0deg, transparent, #000 4px); -} - -.mx_LeftPanelWidget .mx_LeftPanelWidget_resizerHandle { - cursor: ns-resize; - border-radius: 3px; - width: unset !important; - height: 4px !important; - position: absolute; - top: -24px !important; - left: calc(50% - 32px) !important; - right: calc(50% - 32px) !important; -} - -.mx_LeftPanelWidget:hover .mx_LeftPanelWidget_resizerHandle { - opacity: 0.8; - background-color: #2e2f32; -} - -.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton { - margin-left: 8px; - margin-right: 7px; - position: relative; - width: 24px; - height: 24px; - border-radius: 32px; -} - -.mx_LeftPanelWidget .mx_LeftPanelWidget_maximizeButton:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - top: 4px; - left: 4px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); - mask-image: url(../../img/feather-customised/maximise.dc32127.svg); - background: #61708b; -} - -.mx_LeftPanelWidget_maximizeButtonTooltip { - margin-top: -3px; -} - -.mx_MainSplit { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - min-width: 0; - min-height: 0; - height: 100%; -} - -.mx_MainSplit > .mx_RightPanel_ResizeWrapper { - padding: 5px; - margin-left: 8px; - height: calc(100vh - 51px); -} - -.mx_MainSplit > .mx_RightPanel_ResizeWrapper:hover .mx_RightPanel_ResizeHandle { - top: 50% !important; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - height: 64px !important; - width: 4px !important; - border-radius: 4px !important; - background-color: #2e2f32; - opacity: 0.8; -} - -.mx_MatrixChat_splash { - position: relative; - height: 100%; -} - -.mx_MatrixChat_splashButtons { - text-align: center; - width: 100%; - position: absolute; - bottom: 30px; -} - -.mx_MatrixChat_wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 100%; - height: 100%; -} - -.mx_MatrixToolbar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - height: 40px; -} - -.mx_MatrixChat { - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-height: 0; -} - -.mx_MatrixChat_syncError { - color: #fff; - background-color: #df2a8b; - border-radius: 5px; - display: table; - padding: 30px; - position: absolute; - top: 100px; - left: 50%; - -webkit-transform: translateX(-50%); - transform: translateX(-50%); -} - -.mx_MatrixChat > :not(.mx_LeftPanel):not(.mx_SpacePanel):not(.mx_ResizeHandle) { - background-color: #fff; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - min-width: 0; - height: 100%; -} - -.mx_MatrixChat > .mx_ResizeHandle_horizontal:hover { - position: relative; -} - -.mx_MatrixChat > .mx_ResizeHandle_horizontal:hover:before { - position: absolute; - left: 6px; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - height: 64px; - width: 4px; - border-radius: 4px; - content: " "; - background-color: #2e2f32; - opacity: 0.8; -} - -.mx_MyGroups { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_MyGroups .mx_BetaCard { - margin: 0 72px; - max-width: 760px; -} - -.mx_MyGroups .mx_RoomHeader_simpleHeader { - margin-left: 0; -} - -.mx_MyGroups_header { - margin-left: 2px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} - -.mx_MyGroups > :not(.mx_RoomHeader):not(.mx_BetaCard) { - max-width: 960px; - margin: 40px; -} - -.mx_MyGroups_headerCard { - -webkit-box-flex: 1; - -ms-flex: 1 0 50%; - flex: 1 0 50%; - margin-bottom: 30px; - min-width: 400px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-right: 13px; - height: 40px; - width: 40px; - border-radius: 20px; - background-color: rgba(92, 100, 112, 0.2); - position: relative; -} - -.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button:before { - background-color: #5c6470; - -webkit-mask: url(../../img/icons-create-room.817ede2.svg); - mask: url(../../img/icons-create-room.817ede2.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 80%; - mask-size: 80%; - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.mx_MyGroups_headerCard_header { - font-weight: 700; - margin-bottom: 10px; -} - -.mx_MyGroups_headerCard_content { - padding-right: 15px; -} - -.mx_MyGroups_joinBox { - visibility: hidden; - height: 0; - margin: 0; -} - -.mx_MyGroups_content { - margin-left: 2px; - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - overflow-y: auto; -} - -.mx_MyGroups_scrollable { - overflow-y: inherit; -} - -.mx_MyGroups_placeholder { - background-color: #f7f7f7; - color: #888; - line-height: 40rem; - border-radius: 10px; - text-align: center; -} - -.mx_MyGroups_joinedGroups { - border-top: 1px solid transparent; - overflow-x: hidden; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-flow: row wrap; - flex-flow: row wrap; - -ms-flex-line-pack: start; - align-content: flex-start; -} - -.mx_MyGroups_joinedGroups .mx_GroupTile { - min-width: 300px; - max-width: 33%; - -webkit-box-flex: 1; - -ms-flex: 1 0 300px; - flex: 1 0 300px; - height: 75px; - margin: 10px 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - cursor: pointer; -} - -.mx_GroupTile_avatar { - cursor: -webkit-grab, -webkit-grab; - cursor: grab, -webkit-grab; -} - -.mx_GroupTile_profile { - margin-left: 10px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_GroupTile_profile .mx_GroupTile_desc, -.mx_GroupTile_profile .mx_GroupTile_groupId, -.mx_GroupTile_profile .mx_GroupTile_name { - padding-right: 10px; -} - -.mx_GroupTile_profile .mx_GroupTile_name { - margin: 0; - font-size: 1.5rem; -} - -.mx_GroupTile_profile .mx_GroupTile_groupId { - font-size: 1.3rem; - opacity: 0.7; -} - -.mx_GroupTile_profile .mx_GroupTile_desc { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - font-size: 1.3rem; - max-height: 36px; - overflow: hidden; -} - -.mx_NonUrgentToastContainer { - position: absolute; - bottom: 30px; - left: 28px; - z-index: 101; -} - -.mx_NonUrgentToastContainer .mx_NonUrgentToastContainer_toast { - padding: 10px 12px; - border-radius: 8px; - width: 320px; - font-size: 1.3rem; - margin-top: 8px; - background-color: #17191c; - color: #fff; -} - -.mx_NotificationPanel { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - overflow-y: auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_NotificationPanel .mx_RoomView_messageListWrapper { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_NotificationPanel .mx_RoomView_MessageList { - width: 100%; -} - -.mx_NotificationPanel .mx_RoomView_MessageList h2 { - margin-left: 0; -} - -.mx_NotificationPanel .mx_EventTile { - word-break: break-word; - position: relative; - padding-bottom: 18px; -} - -.mx_NotificationPanel - .mx_EventTile:not(.mx_EventTile_last):not(.mx_EventTile_lastInSection):after { - position: absolute; - bottom: 0; - left: 0; - right: 0; - background-color: #8d99a5; - height: 1px; - opacity: 0.4; - content: ""; -} - -.mx_NotificationPanel .mx_EventTile_roomName { - font-weight: 700; - font-size: 1.4rem; -} - -.mx_NotificationPanel .mx_EventTile_roomName > * { - vertical-align: middle; -} - -.mx_NotificationPanel .mx_EventTile_roomName > .mx_BaseAvatar { - margin-right: 8px; -} - -.mx_NotificationPanel .mx_EventTile_roomName a { - color: #2e2f32; -} - -.mx_NotificationPanel .mx_EventTile_avatar { - display: none; -} - -.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp, -.mx_NotificationPanel .mx_EventTile .mx_SenderProfile { - color: #2e2f32; - font-size: 1.2rem; - display: inline; -} - -.mx_NotificationPanel - .mx_EventTile:not([data-layout="bubble"]) - .mx_EventTile_senderDetails { - padding-left: 36px; - position: relative; -} - -.mx_NotificationPanel - .mx_EventTile:not([data-layout="bubble"]) - .mx_EventTile_senderDetails - a { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_NotificationPanel .mx_EventTile_roomName a, -.mx_NotificationPanel .mx_EventTile_senderDetails a { - text-decoration: none !important; -} - -.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { - visibility: visible; - position: static; - display: inline; - padding-left: 5px; -} - -.mx_NotificationPanel - .mx_EventTile:not([data-layout="bubble"]) - .mx_EventTile_line { - margin-right: 0; - padding: 0 0 0 36px; -} - -.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { - padding-left: 0; -} - -.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { - background-color: #fff; -} - -.mx_NotificationPanel .mx_EventTile_content { - margin-right: 0; -} - -.mx_NotificationPanel_empty:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); -} - -.mx_RightPanel { - overflow-x: hidden; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - border-radius: 8px; - padding: 4px 0; - -webkit-box-sizing: border-box; - box-sizing: border-box; - height: 100%; - contain: strict; -} - -.mx_RightPanel .mx_RoomView_MessageList { - padding: 14px 18px; -} - -.mx_RightPanel_header { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - border-bottom: 1px solid transparent; - -webkit-box-flex: 0; - -ms-flex: 0 0 52px; - flex: 0 0 52px; -} - -.mx_RightPanel_headerButtonGroup { - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - background-color: #fff; - padding: 0 9px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RightPanel_headerButton { - cursor: pointer; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-left: 1px; - margin-right: 1px; - height: 32px; - width: 32px; - position: relative; - border-radius: 100%; -} - -.mx_RightPanel_headerButton:before { - content: ""; - position: absolute; - top: 4px; - left: 4px; - height: 24px; - width: 24px; - background-color: #c1c6cd; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_RightPanel_headerButton:hover { - background: rgba(13, 189, 139, 0.1); -} - -.mx_RightPanel_headerButton:hover:before { - background-color: #0dbd8b; -} - -.mx_RightPanel_notifsButton:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RightPanel_roomSummaryButton:before { - -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RightPanel_groupMembersButton:before { - -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); - mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RightPanel_roomsButton:before { - -webkit-mask-image: url(../../img/element-icons/community-rooms.8f0b6c9.svg); - mask-image: url(../../img/element-icons/community-rooms.8f0b6c9.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RightPanel_pinnedMessagesButton:before { - -webkit-mask-image: url(../../img/element-icons/room/pin.a996417.svg); - mask-image: url(../../img/element-icons/room/pin.a996417.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RightPanel_pinnedMessagesButton - .mx_RightPanel_pinnedMessagesButton_unreadIndicator { - position: absolute; - right: 0; - top: 0; - margin: 4px; - width: 8px; - height: 8px; - border-radius: 50%; - -webkit-transform: scale(1); - transform: scale(1); - background: #ff4b55; - -webkit-box-shadow: 0 0 0 0 #ff4b55; - box-shadow: 0 0 0 0 #ff4b55; - -webkit-animation: mx_RightPanel_indicator_pulse 2s infinite; - animation: mx_RightPanel_indicator_pulse 2s infinite; - -webkit-animation-iteration-count: 1; - animation-iteration-count: 1; -} - -.mx_RightPanel_pinnedMessagesButton - .mx_RightPanel_pinnedMessagesButton_unreadIndicator:after { - content: ""; - position: absolute; - width: inherit; - height: inherit; - top: 0; - left: 0; - -webkit-transform: scale(1); - transform: scale(1); - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-animation-name: mx_RightPanel_indicator_pulse_shadow; - animation-name: mx_RightPanel_indicator_pulse_shadow; - -webkit-animation-duration: inherit; - animation-duration: inherit; - -webkit-animation-iteration-count: inherit; - animation-iteration-count: inherit; - border-radius: 50%; - background: #ff4b55; -} - -@-webkit-keyframes mx_RightPanel_indicator_pulse { - 0% { - -webkit-transform: scale(0.95); - transform: scale(0.95); - } - 70% { - -webkit-transform: scale(1); - transform: scale(1); - } - to { - -webkit-transform: scale(0.95); - transform: scale(0.95); - } -} - -@keyframes mx_RightPanel_indicator_pulse { - 0% { - -webkit-transform: scale(0.95); - transform: scale(0.95); - } - 70% { - -webkit-transform: scale(1); - transform: scale(1); - } - to { - -webkit-transform: scale(0.95); - transform: scale(0.95); - } -} - -@-webkit-keyframes mx_RightPanel_indicator_pulse_shadow { - 0% { - opacity: 0.7; - } - 70% { - -webkit-transform: scale(2.2); - transform: scale(2.2); - opacity: 0; - } - to { - opacity: 0; - } -} - -@keyframes mx_RightPanel_indicator_pulse_shadow { - 0% { - opacity: 0.7; - } - 70% { - -webkit-transform: scale(2.2); - transform: scale(2.2); - opacity: 0; - } - to { - opacity: 0; - } -} - -.mx_RightPanel_headerButton_highlight:before { - background-color: #0dbd8b !important; -} - -.mx_RightPanel_headerButton_badge { - font-size: 0.8rem; - border-radius: 8px; - color: #fff; - background-color: #0dbd8b; - font-weight: 700; - position: absolute; - top: -4px; - left: 20px; - padding: 2px 4px; -} - -.mx_RightPanel_collapsebutton { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - text-align: right; - height: 16px; - border: none; -} - -.mx_RightPanel .mx_GroupRoomList, -.mx_RightPanel .mx_MemberInfo, -.mx_RightPanel .mx_MemberList, -.mx_RightPanel_blank { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; -} - -.mx_RightPanel .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - margin: auto; -} - -.mx_RightPanel_empty { - margin-right: -28px; -} - -.mx_RightPanel_empty h2 { - font-weight: 700; - margin: 16px 0; -} - -.mx_RightPanel_empty h2, -.mx_RightPanel_empty p { - font-size: 1.4rem; -} - -.mx_RightPanel_empty:before { - content: ""; - display: block; - margin: 11px auto 29px; - height: 42px; - width: 42px; - background-color: #91a1c0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RightPanel_scopeHeader { - margin: 24px; - text-align: center; - font-weight: 600; - font-size: 1.8rem; - line-height: 2.2rem; -} - -.mx_RightPanel_scopeHeader .mx_BaseAvatar { - margin-right: 8px; - vertical-align: middle; -} - -.mx_RightPanel_scopeHeader .mx_BaseAvatar_image { - border-radius: 8px; -} - -.mx_RoomDirectory_dialogWrapper > .mx_Dialog { - max-width: 960px; - height: 100%; -} - -.mx_RoomDirectory_dialog { - height: 100%; - flex-direction: column; -} - -.mx_RoomDirectory, -.mx_RoomDirectory_dialog { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; -} - -.mx_RoomDirectory { - margin-bottom: 12px; - color: #2e2f32; - word-break: break-word; -} - -.mx_RoomDirectory, -.mx_RoomDirectory_list { - flex-direction: column; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_RoomDirectory_list { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; -} - -.mx_RoomDirectory_list .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.mx_RoomDirectory_listheader { - display: block; - margin-top: 13px; -} - -.mx_RoomDirectory_searchbox { - -webkit-box-flex: 1 !important; - -ms-flex: 1 !important; - flex: 1 !important; -} - -.mx_RoomDirectory_listheader .mx_NetworkDropdown { - -webkit-box-flex: 0; - -ms-flex: 0 0 200px; - flex: 0 0 200px; -} - -.mx_RoomDirectory_tableWrapper { - overflow-y: auto; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; -} - -.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer { - margin-top: 24px; - text-align: center; -} - -.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer > h5 { - margin: 0; - font-weight: 600; - font-size: 1.5rem; - line-height: 1.8rem; - color: #2e2f32; -} - -.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer > p { - margin: 40px auto 60px; - font-size: 1.4rem; - line-height: 2rem; - color: #737d8c; - max-width: 464px; -} - -.mx_RoomDirectory_tableWrapper .mx_RoomDirectory_footer > hr { - margin: 0; - border: none; - height: 1px; - background-color: #f3f8fd; -} - -.mx_RoomDirectory_tableWrapper - .mx_RoomDirectory_footer - .mx_RoomDirectory_newRoom { - margin: 24px auto 0; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; -} - -.mx_RoomDirectory_table { - color: #2e2f32; - display: grid; - font-size: 1.2rem; - grid-template-columns: -webkit-max-content auto -webkit-max-content -webkit-max-content -webkit-max-content; - grid-template-columns: max-content auto max-content max-content max-content; - grid-row-gap: 24px; - row-gap: 24px; - text-align: left; - width: 100%; -} - -.mx_RoomDirectory_roomAvatar { - padding: 2px 14px 0 0; -} - -.mx_RoomDirectory_roomMemberCount { - -ms-flex-item-align: center; - align-self: center; - color: #747474; - padding: 3px 10px 0; -} - -.mx_RoomDirectory_roomMemberCount:before { - background-color: #747474; - display: inline-block; - vertical-align: text-top; - margin-right: 2px; - content: ""; - -webkit-mask: url(../../img/feather-customised/user.7a4d23d.svg); - mask: url(../../img/feather-customised/user.7a4d23d.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 80%; - mask-size: 80%; - width: 16px; - height: 16px; -} - -.mx_RoomDirectory_join, -.mx_RoomDirectory_preview { - -ms-flex-item-align: center; - align-self: center; - white-space: nowrap; -} - -.mx_RoomDirectory_name { - display: inline-block; - font-size: 1.8rem; - font-weight: 600; -} - -.mx_RoomDirectory_perms { - display: inline-block; -} - -.mx_RoomDirectory_perm { - border-radius: 10px; - display: inline-block; - height: 20px; - line-height: 2rem; - padding: 0 5px; - color: #fff; - background-color: #aaa; -} - -.mx_RoomDirectory_topic { - cursor: auto; - color: #747474; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 3; - overflow: hidden; -} - -.mx_RoomDirectory_alias { - font-size: 1.2rem; - color: #a2a2a2; -} - -.mx_RoomDirectory .mx_RoomView_MessageList { - padding: 0; -} - -.mx_RoomDirectory > span { - font-size: 1.5rem; - margin-top: 0; -} - -.mx_RoomDirectory > span .mx_AccessibleButton { - padding: 0; -} - -.mx_RoomSearch { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - border-radius: 8px; - background-color: rgba(141, 151, 165, 0.2); - border: 1px solid transparent; - height: 28px; - padding: 1px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomSearch .mx_RoomSearch_icon { - width: 16px; - height: 16px; - -webkit-mask: url(../../img/element-icons/roomlist/search.3774248.svg); - mask: url(../../img/element-icons/roomlist/search.3774248.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #737d8c; - margin-left: 7px; -} - -.mx_RoomSearch .mx_RoomSearch_input { - border: none !important; - -webkit-box-flex: 1 !important; - -ms-flex: 1 !important; - flex: 1 !important; - color: #2e2f32 !important; - padding: 0; - height: 100%; - width: 100%; - font-size: 1.2rem; - line-height: 1.6rem; -} - -.mx_RoomSearch - .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-webkit-input-placeholder { - color: #8d99a5 !important; -} - -.mx_RoomSearch - .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-moz-placeholder { - color: #8d99a5 !important; -} - -.mx_RoomSearch - .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded):-ms-input-placeholder { - color: #8d99a5 !important; -} - -.mx_RoomSearch - .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::-ms-input-placeholder { - color: #8d99a5 !important; -} - -.mx_RoomSearch - .mx_RoomSearch_input:not(.mx_RoomSearch_inputExpanded)::placeholder { - color: #8d99a5 !important; -} - -.mx_RoomSearch.mx_RoomSearch_hasQuery { - border-color: #737d8c; -} - -.mx_RoomSearch.mx_RoomSearch_focused { - -webkit-box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); - box-shadow: 0 0 4px 4px rgba(0, 132, 255, 0.5); - border-color: transparent; -} - -.mx_RoomSearch.mx_RoomSearch_focused, -.mx_RoomSearch.mx_RoomSearch_hasQuery { - background-color: #fff; -} - -.mx_RoomSearch.mx_RoomSearch_focused .mx_RoomSearch_clearButton, -.mx_RoomSearch.mx_RoomSearch_hasQuery .mx_RoomSearch_clearButton { - width: 16px; - height: 16px; - -webkit-mask-image: url(../../img/element-icons/roomlist/search-clear.6164d97.svg); - mask-image: url(../../img/element-icons/roomlist/search-clear.6164d97.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #737d8c; - margin-right: 8px; -} - -.mx_RoomSearch .mx_RoomSearch_clearButton { - width: 0; - height: 0; -} - -.mx_RoomSearch.mx_RoomSearch_minimized { - border-radius: 32px; - height: auto; - width: auto; - padding: 8px; -} - -.mx_RoomSearch.mx_RoomSearch_minimized .mx_RoomSearch_icon { - margin-left: 0; -} - -.mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) { - margin-left: 65px; - min-height: 50px; -} - -.mx_RoomStatusBar_typingIndicatorAvatars { - width: 52px; - margin-top: -1px; - text-align: left; -} - -.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { - margin-right: -12px; - border: 1px solid #fff; -} - -.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { - padding-left: 1px; - padding-top: 1px; -} - -.mx_RoomStatusBar_typingIndicatorRemaining { - display: inline-block; - color: #acacac; - background-color: #ddd; - border: 1px solid #fff; - border-radius: 40px; - width: 24px; - height: 24px; - line-height: 2.4rem; - font-size: 0.8em; - vertical-align: top; - text-align: center; - position: absolute; -} - -.mx_RoomStatusBar_scrollDownIndicator { - cursor: pointer; - padding-left: 1px; -} - -.mx_RoomStatusBar_unreadMessagesBar { - padding-top: 10px; - color: #ff4b55; - cursor: pointer; -} - -.mx_RoomStatusBar_connectionLostBar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 19px; - min-height: 58px; -} - -.mx_RoomStatusBar_unsentMessages > div[role="alert"] { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-height: 70px; - margin: 12px; - padding-left: 16px; - background-color: #f3f8fd; - border-radius: 4px; -} - -.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentBadge { - margin-right: 12px; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentBadge - .mx_NotificationBadge { - width: 24px !important; - height: 24px !important; - border-radius: 24px !important; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentBadge - .mx_NotificationBadge - .mx_NotificationBadge_count { - font-size: 1.6rem !important; -} - -.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentTitle { - color: #ff4b55; - font-size: 1.5rem; -} - -.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentDescription { - font-size: 1.2rem; -} - -.mx_RoomStatusBar_unsentMessages .mx_RoomStatusBar_unsentButtonBar { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - text-align: right; - margin-right: 22px; - color: #61708b; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_AccessibleButton { - padding: 5px 10px 5px 30px; - display: inline-block; - position: relative; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_AccessibleButton:nth-child(2) { - border-left: 1px solid #e3e8f0; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_AccessibleButton:before { - content: ""; - position: absolute; - left: 10px; - background-color: #61708b; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - width: 18px; - height: 18px; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_AccessibleButton.mx_RoomStatusBar_unsentCancelAllBtn:before { - -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); - mask-image: url(../../img/element-icons/trashcan.3b626db.svg); -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn { - padding-left: 34px; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_AccessibleButton.mx_RoomStatusBar_unsentResendAllBtn:before { - -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); - mask-image: url(../../img/element-icons/retry.6cd23ad.svg); -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_InlineSpinner { - vertical-align: middle; - margin-right: 5px; - top: 1px; -} - -.mx_RoomStatusBar_unsentMessages - .mx_RoomStatusBar_unsentButtonBar - .mx_InlineSpinner - + span { - margin-right: 10px; -} - -.mx_RoomStatusBar_connectionLostBar img { - padding-left: 10px; - padding-right: 10px; - vertical-align: middle; - float: left; -} - -.mx_RoomStatusBar_connectionLostBar_title { - color: #ff4b55; -} - -.mx_RoomStatusBar_connectionLostBar_desc { - color: #2e2f32; - font-size: 1.3rem; - opacity: 0.5; - padding-bottom: 20px; -} - -.mx_RoomStatusBar_resend_link { - color: #2e2f32 !important; - text-decoration: underline !important; - cursor: pointer; -} - -.mx_RoomStatusBar_typingBar { - height: 50px; - line-height: 5rem; - color: #2e2f32; - opacity: 0.5; - overflow-y: hidden; - display: block; -} - -.mx_MatrixChat_useCompactLayout - .mx_RoomStatusBar:not(.mx_RoomStatusBar_unsentMessages) { - min-height: 40px; -} - -.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator { - margin-top: 10px; -} - -.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar { - height: 40px; - line-height: 4rem; -} - -.mx_RoomView { - word-wrap: break-word; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -@-webkit-keyframes mx_RoomView_fileDropTarget_animation { - 0% { - opacity: 0; - } - to { - opacity: 0.95; - } -} - -@keyframes mx_RoomView_fileDropTarget_animation { - 0% { - opacity: 0; - } - to { - opacity: 0.95; - } -} - -.mx_RoomView_fileDropTarget { - min-width: 0; - width: 100%; - height: 100%; - font-size: 1.8rem; - text-align: center; - pointer-events: none; - background-color: #fff; - opacity: 0.95; - position: absolute; - z-index: 3000; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-animation: mx_RoomView_fileDropTarget_animation; - animation: mx_RoomView_fileDropTarget_animation; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; -} - -@-webkit-keyframes mx_RoomView_fileDropTarget_image_animation { - 0% { - -webkit-transform: scaleX(0); - transform: scaleX(0); - } - to { - -webkit-transform: scaleX(1); - transform: scaleX(1); - } -} - -@keyframes mx_RoomView_fileDropTarget_image_animation { - 0% { - -webkit-transform: scaleX(0); - transform: scaleX(0); - } - to { - -webkit-transform: scaleX(1); - transform: scaleX(1); - } -} - -.mx_RoomView_fileDropTarget_image { - width: 32px; - -webkit-animation: mx_RoomView_fileDropTarget_image_animation; - animation: mx_RoomView_fileDropTarget_image_animation; - -webkit-animation-duration: 0.5s; - animation-duration: 0.5s; - margin-bottom: 16px; -} - -.mx_RoomView_auxPanel { - min-width: 0; - width: 100%; - margin: 0 auto; - overflow: auto; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; -} - -.mx_RoomView_auxPanel_fullHeight { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 3000; - background-color: #fff; -} - -.mx_RoomView_auxPanel_hiddenHighlights { - border-bottom: 1px solid transparent; - padding: 10px 26px; - color: #ff4b55; - cursor: pointer; -} - -.mx_RoomView_auxPanel_apps { - max-width: 1920px !important; -} - -.mx_RoomView .mx_MainSplit, -.mx_RoomView_messagePanel { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; -} - -.mx_RoomView_messagePanel { - width: 100%; - overflow-y: auto; - overflow-anchor: none; -} - -.mx_RoomView_messagePanelSearchSpinner { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - background-image: url(../../img/typing-indicator-2x.0eb9f0e.gif); - background-position: center 367px; - background-size: 25px; - background-repeat: no-repeat; - position: relative; -} - -.mx_RoomView_messagePanelSearchSpinner:before { - background-color: #888; - -webkit-mask: url(../../img/feather-customised/search-input.044bfa7.svg); - mask: url(../../img/feather-customised/search-input.044bfa7.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 50px; - mask-size: 50px; - content: ""; - position: absolute; - top: 286px; - left: 0; - right: 0; - height: 50px; -} - -.mx_RoomView_body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-width: 0; -} - -.mx_RoomView_body .mx_RoomView_messagePanel, -.mx_RoomView_body .mx_RoomView_messagePanelSearchSpinner, -.mx_RoomView_body .mx_RoomView_messagePanelSpinner { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; -} - -.mx_RoomView_body .mx_RoomView_timeline { - position: relative; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - contain: content; -} - -.mx_RoomView_statusArea { - width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - max-height: 0; - background-color: #fff; - z-index: 1000; - overflow: hidden; - -webkit-transition: all 0.2s ease-out; - transition: all 0.2s ease-out; -} - -.mx_RoomView_statusArea_expanded { - max-height: 100px; -} - -.mx_RoomView_statusAreaBox { - margin: auto; - min-height: 50px; -} - -.mx_RoomView_statusAreaBox_line { - margin-left: 65px; - border-top: 1px solid transparent; - height: 1px; -} - -.mx_RoomView_messageListWrapper { - min-height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; -} - -.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.mx_RoomView_searchResultsPanel a { - text-decoration: none; - color: inherit; -} - -.mx_RoomView_empty { - font-size: 1.3rem; - padding: 0 24px; - margin-right: 30px; - text-align: center; - margin-bottom: 80px; -} - -.mx_RoomView_MessageList { - list-style-type: none; - padding: 18px; - margin: 0; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_RoomView_MessageList li { - clear: both; -} - -li.mx_RoomView_myReadMarker_container { - height: 0; - margin: 0; - padding: 0; - border: 0; -} - -hr.mx_RoomView_myReadMarker { - border-top: 1px solid #0dbd8b; - border-bottom: 1px solid #0dbd8b; - margin-top: 0; - position: relative; - top: -1px; - z-index: 1; - will-change: width; - -webkit-transition: width easeinsine 0.4s 1s, opacity easeinsine 0.4s 1s; - transition: width easeinsine 0.4s 1s, opacity easeinsine 0.4s 1s; - width: 99%; - opacity: 1; -} - -.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { - background-color: #fff; -} - -.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { - color: #fff; - opacity: 1; -} - -.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { - margin-top: 2px; - border: none; - height: 0; -} - -.mx_RoomView_inCall .mx_MessageComposer_wrapper { - border-top: 2px hidden; - padding-top: 1px; -} - -.mx_RoomView_voipChevron { - position: absolute; - bottom: -11px; - right: 11px; -} - -.mx_RoomView_voipButton { - float: right; - margin-right: 13px; - margin-top: 13px; - cursor: pointer; -} - -.mx_RoomView_voipButton object { - pointer-events: none; -} - -.mx_RoomView .mx_MessageComposer { - width: 100%; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-right: 2px; -} - -.mx_RoomView_ongoingConfCallNotification { - width: 100%; - text-align: center; - background-color: #ff4b55; - color: #fff; - font-weight: 700; - padding: 6px 0; - cursor: pointer; -} - -.mx_RoomView_ongoingConfCallNotification a { - color: #fff !important; -} - -.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList { - margin-bottom: 4px; -} - -.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox { - min-height: 42px; -} - -.mx_ScrollPanel .mx_RoomView_MessageList { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - content-visibility: auto; - contain-intrinsic-size: 50px; -} - -.mx_SearchBox { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - min-width: 0; -} - -.mx_SearchBox.mx_SearchBox_blurred:not(:hover) { - background-color: transparent; -} - -.mx_SearchBox .mx_SearchBox_closeButton { - cursor: pointer; - background-image: url(../../img/icons-close.11ff07c.svg); - background-repeat: no-repeat; - width: 16px; - height: 16px; - background-position: 50%; - padding: 9px; -} - -.mx_SpacePanel { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - background-color: hsla(0, 0%, 91%, 0.77); - padding: 0; - margin: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_SpacePanel .mx_SpacePanel_spaceTreeWrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - padding: 8px 8px 16px 0; -} - -.mx_SpacePanel .mx_SpacePanel_toggleCollapse { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - width: 40px; - height: 40px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 32px; - mask-size: 32px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - margin-left: 16px; - margin-bottom: 12px; - background-color: #8d99a5; - -webkit-mask-image: url(../../img/element-icons/expand-space-panel.e6f74b9.svg); - mask-image: url(../../img/element-icons/expand-space-panel.e6f74b9.svg); -} - -.mx_SpacePanel .mx_SpacePanel_toggleCollapse.expanded { - -webkit-transform: scaleX(-1); - transform: scaleX(-1); -} - -.mx_SpacePanel ul { - margin: 0; - list-style: none; - padding: 0; -} - -.mx_SpacePanel ul > .mx_SpaceItem { - padding-left: 16px; -} - -.mx_SpacePanel .mx_SpaceButton_toggleCollapse { - cursor: pointer; -} - -.mx_SpacePanel .mx_SpaceItem_dragging .mx_SpaceButton_toggleCollapse { - visibility: hidden; -} - -.mx_SpacePanel .mx_SpaceTreeLevel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 250px; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_SpacePanel .mx_SpaceItem { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -ms-flex-flow: wrap; - flex-flow: wrap; -} - -.mx_SpacePanel .mx_SpaceItem.mx_SpaceItem_narrow { - -ms-flex-item-align: baseline; - align-self: baseline; -} - -.mx_SpacePanel - .mx_SpaceItem.collapsed - > .mx_SpaceButton - > .mx_SpaceButton_toggleCollapse { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} - -.mx_SpacePanel .mx_SpaceItem.collapsed > .mx_SpaceTreeLevel { - display: none; -} - -.mx_SpacePanel .mx_SpaceItem:not(.hasSubSpaces) > .mx_SpaceButton { - margin-left: 16px; - min-width: 40px; -} - -.mx_SpacePanel .mx_SpaceButton { - border-radius: 8px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 4px 4px 4px 0; - width: 100%; -} - -.mx_SpacePanel - .mx_SpaceButton.mx_SpaceButton_active:not(.mx_SpaceButton_narrow) - .mx_SpaceButton_selectionWrapper { - background-color: #fff; -} - -.mx_SpacePanel - .mx_SpaceButton.mx_SpaceButton_active.mx_SpaceButton_narrow - .mx_SpaceButton_selectionWrapper { - padding: 1px; - border: 3px solid #737d8c; -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_selectionWrapper { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-radius: 12px; - padding: 4px; -} - -.mx_SpacePanel - .mx_SpaceButton:not(.mx_SpaceButton_narrow) - .mx_SpaceButton_selectionWrapper { - width: 100%; - padding-right: 16px; - overflow: hidden; -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_name { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-left: 8px; - white-space: nowrap; - display: block; - text-overflow: ellipsis; - overflow: hidden; - padding-right: 8px; - font-size: 1.4rem; - line-height: 1.8rem; -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_toggleCollapse { - width: 16px; - height: 20px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #8d99a5; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon { - width: 32px; - min-width: 32px; - height: 32px; - border-radius: 8px; - position: relative; -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_icon:before { - position: absolute; - content: ""; - width: 32px; - height: 32px; - top: 0; - left: 0; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 18px; - mask-size: 18px; -} - -.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon { - background-color: #fff; -} - -.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_home .mx_SpaceButton_icon:before { - background-color: #3f3d3d; - -webkit-mask-image: url(../../img/element-icons/home.b706c0e.svg); - mask-image: url(../../img/element-icons/home.b706c0e.svg); -} - -.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon { - background-color: #0dbd8b; - -webkit-transition: all 0.1s ease-in-out; - transition: all 0.1s ease-in-out; -} - -.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_new .mx_SpaceButton_icon:before { - background-color: #fff; - -webkit-mask-image: url(../../img/element-icons/plus.62cc275.svg); - mask-image: url(../../img/element-icons/plus.62cc275.svg); - -webkit-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; -} - -.mx_SpacePanel .mx_SpaceButton.mx_SpaceButton_newCancel .mx_SpaceButton_icon { - background-color: #c1c6cd; -} - -.mx_SpacePanel - .mx_SpaceButton.mx_SpaceButton_newCancel - .mx_SpaceButton_icon:before { - -webkit-transform: rotate(45deg); - transform: rotate(45deg); -} - -.mx_SpacePanel .mx_SpaceButton .mx_BaseAvatar_image { - border-radius: 8px; -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton { - width: 20px; - min-width: 20px; - height: 20px; - margin-top: auto; - margin-bottom: auto; - display: none; - position: absolute; - right: 4px; -} - -.mx_SpacePanel .mx_SpaceButton .mx_SpaceButton_menuButton:before { - top: 2px; - left: 2px; - content: ""; - width: 16px; - height: 16px; - position: absolute; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); - mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); - background: #2e2f32; -} - -.mx_SpacePanel .mx_SpacePanel_badgeContainer { - position: absolute; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge { - margin: 0 2px; -} - -.mx_SpacePanel .mx_SpacePanel_badgeContainer .mx_NotificationBadge_dot { - margin: 0 7px; -} - -.mx_SpacePanel.collapsed .mx_SpaceButton .mx_SpacePanel_badgeContainer { - right: 0; - top: 0; -} - -.mx_SpacePanel.collapsed - .mx_SpaceButton - .mx_SpacePanel_badgeContainer - .mx_NotificationBadge { - background-clip: padding-box; -} - -.mx_SpacePanel.collapsed - .mx_SpaceButton - .mx_SpacePanel_badgeContainer - .mx_NotificationBadge_dot { - margin: 0 -1px 0 0; - border: 3px solid hsla(0, 0%, 91%, 0.77); -} - -.mx_SpacePanel.collapsed - .mx_SpaceButton - .mx_SpacePanel_badgeContainer - .mx_NotificationBadge_2char, -.mx_SpacePanel.collapsed - .mx_SpaceButton - .mx_SpacePanel_badgeContainer - .mx_NotificationBadge_3char { - margin: -5px -5px 0 0; - border: 2px solid hsla(0, 0%, 91%, 0.77); -} - -.mx_SpacePanel.collapsed - .mx_SpaceButton.mx_SpaceButton_active - .mx_SpacePanel_badgeContainer { - right: -3px; - top: -3px; -} - -.mx_SpacePanel:not(.collapsed) .mx_SpacePanel_badgeContainer { - position: absolute; - right: 4px; -} - -.mx_SpacePanel:not(.collapsed) - .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) - .mx_SpacePanel_badgeContainer, -.mx_SpacePanel:not(.collapsed) - .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) - .mx_SpacePanel_badgeContainer, -.mx_SpacePanel:not(.collapsed) - .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) - .mx_SpacePanel_badgeContainer { - width: 0; - height: 0; - display: none; -} - -.mx_SpacePanel:not(.collapsed) - .mx_SpaceButton:focus-within:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) - .mx_SpaceButton_menuButton, -.mx_SpacePanel:not(.collapsed) - .mx_SpaceButton:hover:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) - .mx_SpaceButton_menuButton, -.mx_SpacePanel:not(.collapsed) - .mx_SpaceButton_hasMenuOpen:not(.mx_SpaceButton_home):not(.mx_SpaceButton_invite) - .mx_SpaceButton_menuButton { - display: block; -} - -.mx_SpacePanel > .mx_AutoHideScrollbar > .mx_SpaceButton, -.mx_SpacePanel - > .mx_AutoHideScrollbar - > .mx_SpaceButton.mx_SpaceButton_active:before { - height: 32px; -} - -.mx_SpacePanel > .mx_AutoHideScrollbar > ul { - padding-left: 0; -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_contextMenu_header { - margin: 12px 16px; - font-weight: 600; - font-size: 1.5rem; - line-height: 1.8rem; -} - -.mx_SpacePanel_contextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton { - color: #0dbd8b; -} - -.mx_SpacePanel_contextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton.mx_SpacePanel_contextMenu_inviteButton - .mx_SpacePanel_iconInvite:before { - background-color: #0dbd8b; - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_iconSettings:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_iconLeave:before { - -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); - mask-image: url(../../img/element-icons/leave.bb917e7.svg); -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_iconMembers:before { - -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); - mask-image: url(../../img/element-icons/room/members.88c3e93.svg); -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_iconPlus:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); - mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_iconHash:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); - mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); -} - -.mx_SpacePanel_contextMenu .mx_SpacePanel_iconExplore:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); - mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); -} - -.mx_SpacePanel_sharePublicSpace { - margin: 0; -} - -.mx_SpaceRoomDirectory_dialogWrapper > .mx_Dialog { - max-width: 960px; - height: 100%; -} - -.mx_SpaceRoomDirectory { - height: 100%; - margin-bottom: 12px; - color: #2e2f32; - word-break: break-word; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_SpaceRoomDirectory, -.mx_SpaceRoomDirectory .mx_Dialog_title, -.mx_SpaceRoomView_landing .mx_Dialog_title { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar, -.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar { - margin-right: 12px; - -ms-flex-item-align: center; - align-self: center; -} - -.mx_SpaceRoomDirectory .mx_Dialog_title .mx_BaseAvatar_image, -.mx_SpaceRoomView_landing .mx_Dialog_title .mx_BaseAvatar_image { - border-radius: 8px; -} - -.mx_SpaceRoomDirectory .mx_Dialog_title > div > h1, -.mx_SpaceRoomView_landing .mx_Dialog_title > div > h1 { - font-weight: 600; - font-size: 1.8rem; - line-height: 2.2rem; - margin: 0; -} - -.mx_SpaceRoomDirectory .mx_Dialog_title > div > div, -.mx_SpaceRoomView_landing .mx_Dialog_title > div > div { - font-weight: 400; - color: #737d8c; - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_SpaceRoomDirectory .mx_AccessibleButton_kind_link, -.mx_SpaceRoomView_landing .mx_AccessibleButton_kind_link { - padding: 0; -} - -.mx_SpaceRoomDirectory .mx_SearchBox, -.mx_SpaceRoomView_landing .mx_SearchBox { - margin: 24px 0 16px; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults, -.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults { - text-align: center; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_noResults > div, -.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_noResults > div { - font-size: 1.5rem; - line-height: 2.4rem; - color: #737d8c; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader, -.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - min-height: 32px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 1.5rem; - line-height: 2.4rem; - color: #2e2f32; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader .mx_AccessibleButton, -.mx_SpaceRoomView_landing - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton { - padding: 4px 12px; - font-weight: 400; -} - -.mx_SpaceRoomDirectory - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton - + .mx_AccessibleButton, -.mx_SpaceRoomView_landing - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 16px; -} - -.mx_SpaceRoomDirectory - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton_kind_danger_outline, -.mx_SpaceRoomDirectory - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton_kind_primary_outline, -.mx_SpaceRoomView_landing - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton_kind_danger_outline, -.mx_SpaceRoomView_landing - .mx_SpaceRoomDirectory_listHeader - .mx_AccessibleButton_kind_primary_outline { - padding: 3px 12px; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_listHeader > span, -.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_listHeader > span { - margin-left: auto; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error, -.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error { - position: relative; - font-weight: 600; - color: #ff4b55; - font-size: 1.5rem; - line-height: 1.8rem; - margin: 20px auto 12px; - padding-left: 24px; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; -} - -.mx_SpaceRoomDirectory .mx_SpaceRoomDirectory_error:before, -.mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_error:before { - content: ""; - position: absolute; - height: 16px; - width: 16px; - left: 0; - background-image: url(../../img/element-icons/warning-badge.413c9a9.svg); -} - -.mx_SpaceRoomDirectory_list { - margin-top: 16px; - padding-bottom: 40px; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount > h3 { - display: inline; - font-weight: 600; - font-size: 1.8rem; - line-height: 2.2rem; - color: #2e2f32; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomCount > span { - margin-left: 8px; - font-size: 1.5rem; - line-height: 2.4rem; - color: #737d8c; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_subspace - .mx_BaseAvatar_image { - border-radius: 8px; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle { - position: absolute; - left: -1px; - top: 10px; - height: 16px; - width: 16px; - border-radius: 4px; - background-color: #fff; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_toggle:before { - content: ""; - position: absolute; - top: 0; - left: 0; - height: 16px; - width: 16px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #8d99a5; - -webkit-mask-size: 16px; - mask-size: 16px; - -webkit-transform: rotate(270deg); - transform: rotate(270deg); - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_subspace_toggle.mx_SpaceRoomDirectory_subspace_toggle_shown:before { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children { - position: relative; - padding-left: 12px; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile { - position: relative; - padding: 8px 16px; - border-radius: 8px; - min-height: 56px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - display: grid; - grid-template-columns: 20px auto -webkit-max-content; - grid-template-columns: 20px auto max-content; - grid-column-gap: 8px; - grid-row-gap: 6px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile .mx_BaseAvatar { - grid-row: 1; - grid-column: 1; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_roomTile_name { - font-weight: 600; - font-size: 1.5rem; - line-height: 1.8rem; - grid-row: 1; - grid-column: 2; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_roomTile_name - .mx_InfoTooltip { - display: inline; - margin-left: 12px; - color: #8d99a5; - font-size: 1.2rem; - line-height: 1.5rem; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_roomTile_name - .mx_InfoTooltip - .mx_InfoTooltip_icon { - margin-right: 4px; - position: relative; - vertical-align: text-top; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_roomTile_name - .mx_InfoTooltip - .mx_InfoTooltip_icon:before { - position: absolute; - top: 0; - left: 0; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_roomTile_info { - font-size: 1.4rem; - line-height: 1.8rem; - color: #737d8c; - grid-row: 2; - grid-column: 1/3; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_actions { - text-align: right; - margin-left: 20px; - grid-column: 3; - grid-row: 1/3; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_actions - .mx_AccessibleButton { - line-height: 2.4rem; - padding: 4px 16px; - display: inline-block; - visibility: hidden; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_actions - .mx_AccessibleButton_kind_danger_outline, -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_actions - .mx_AccessibleButton_kind_primary_outline { - padding: 3px 16px; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile - .mx_SpaceRoomDirectory_actions - .mx_Checkbox { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - vertical-align: middle; - margin-left: 12px; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:hover { - background-color: hsla(0, 0%, 91%, 0.77); -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_roomTile:hover - .mx_AccessibleButton { - visibility: visible; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_roomTile:before, -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_subspace_children:before { - content: ""; - position: absolute; - background-color: hsla(0, 0%, 91%, 0.77); - width: 1px; - height: 100%; - left: 6px; - top: 0; -} - -.mx_SpaceRoomDirectory_list - .mx_SpaceRoomDirectory_actions - .mx_SpaceRoomDirectory_actionsText { - font-weight: 400; - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; -} - -.mx_SpaceRoomDirectory_list > hr { - border: none; - height: 1px; - background-color: rgba(141, 151, 165, 0.2); - margin: 20px 0; -} - -.mx_SpaceRoomDirectory_list .mx_SpaceRoomDirectory_createRoom { - display: block; - margin: 16px auto 0; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child { - padding: 80px 60px; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - max-height: 100%; - overflow-y: auto; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child h1 { - margin: 0; - font-size: 2.4rem; - font-weight: 600; - color: #2e2f32; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; -} - -.mx_SpaceRoomView - .mx_MainSplit - > div:first-child - .mx_SpaceRoomView_description { - font-size: 1.5rem; - color: #737d8c; - margin-top: 12px; - margin-bottom: 24px; - max-width: 428px; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_AddExistingToSpace { - max-width: 428px; -} - -.mx_SpaceRoomView - .mx_MainSplit - > div:first-child - .mx_AddExistingToSpace - .mx_AddExistingToSpace_content { - height: calc(100vh - 360px); - max-height: 400px; -} - -.mx_SpaceRoomView - .mx_MainSplit - > div:first-child:not(.mx_SpaceRoomView_landing) - .mx_SpaceFeedbackPrompt { - width: 428px; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_buttons { - display: block; - margin-top: 44px; - width: 428px; - text-align: right; -} - -.mx_SpaceRoomView - .mx_MainSplit - > div:first-child - .mx_SpaceRoomView_buttons - .mx_AccessibleButton_hasKind { - padding: 8px 22px; - margin-left: 16px; -} - -.mx_SpaceRoomView - .mx_MainSplit - > div:first-child - .mx_SpaceRoomView_buttons - input.mx_AccessibleButton { - border: none; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field { - max-width: 428px; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_Field + .mx_Field { - margin-top: 28px; -} - -.mx_SpaceRoomView .mx_MainSplit > div:first-child .mx_SpaceRoomView_errorText { - font-weight: 600; - font-size: 1.2rem; - line-height: 1.5rem; - color: #ff4b55; - margin-bottom: 28px; -} - -.mx_SpaceRoomView - .mx_MainSplit - > div:first-child - .mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_preview { - padding: 32px 24px !important; - margin: auto; - max-width: 480px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - -webkit-box-shadow: 2px 15px 30px rgba(0, 0, 0, 0.48); - box-shadow: 2px 15px 30px rgba(0, 0, 0, 0.48); - border-radius: 8px; - position: relative; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_BetaCard_betaPill { - position: absolute; - right: 24px; - top: 32px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_spaceBetaPrompt { - font-weight: 600; - font-size: 1.4rem; - line-height: 2.4rem; - color: #2e2f32; - margin-top: 24px; - position: relative; - padding-left: 24px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_spaceBetaPrompt - .mx_AccessibleButton_kind_link { - display: inline; - padding: 0; - font-size: inherit; - line-height: inherit; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_spaceBetaPrompt:before { - content: ""; - position: absolute; - height: 2.4rem; - width: 20px; - left: 0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - background-color: #737d8c; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_inviter { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 20px; - font-size: 1.5rem; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_inviter - > div { - margin-left: 8px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_inviter - > div - .mx_SpaceRoomView_preview_inviter_name { - line-height: 1.8rem; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_inviter - > div - .mx_SpaceRoomView_preview_inviter_mxid { - line-height: 2.4rem; - color: #737d8c; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - > .mx_BaseAvatar - > .mx_BaseAvatar_image, -.mx_SpaceRoomView .mx_SpaceRoomView_preview > .mx_BaseAvatar_image { - border-radius: 12px; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_preview h1.mx_SpaceRoomView_preview_name { - margin: 20px 0 !important; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_preview .mx_SpaceRoomView_preview_topic { - font-size: 1.4rem; - line-height: 2.2rem; - color: #737d8c; - margin: 20px 0; - max-height: 160px; - overflow-y: auto; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_joinButtons { - margin-top: 20px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_joinButtons - .mx_AccessibleButton { - width: 200px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 14px 0; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_preview - .mx_SpaceRoomView_preview_joinButtons - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 20px; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - > .mx_BaseAvatar - > .mx_BaseAvatar_image, -.mx_SpaceRoomView .mx_SpaceRoomView_landing > .mx_BaseAvatar_image { - border-radius: 12px; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_name { - margin: 24px 0 16px; - font-size: 1.5rem; - color: #737d8c; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_name - > span { - display: inline-block; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_name - .mx_SpaceRoomView_landing_nameRow { - margin-top: 12px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_name - .mx_SpaceRoomView_landing_nameRow - > h1 { - display: inline-block; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_name - .mx_SpaceRoomView_landing_inviter - .mx_BaseAvatar { - margin-right: 4px; - vertical-align: middle; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_info { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_SpaceRoomView_info { - display: inline-block; - margin: 0 auto 0 0; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_FacePile { - display: inline-block; - margin-right: 12px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_FacePile - .mx_FacePile_faces { - cursor: pointer; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_SpaceRoomView_landing_inviteButton { - position: relative; - padding: 4px 18px 4px 40px; - line-height: 2.4rem; - height: -webkit-min-content; - height: -moz-min-content; - height: min-content; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_SpaceRoomView_landing_inviteButton:before { - position: absolute; - content: ""; - left: 8px; - height: 16px; - width: 16px; - background: #fff; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 16px; - mask-size: 16px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_SpaceRoomView_landing_settingsButton { - position: relative; - margin-left: 16px; - width: 24px; - height: 24px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_landing - .mx_SpaceRoomView_landing_info - .mx_SpaceRoomView_landing_settingsButton:before { - position: absolute; - content: ""; - left: 0; - top: 0; - height: 24px; - width: 24px; - background: #8d99a5; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomView_landing_topic { - font-size: 1.5rem; - margin-top: 12px; - margin-bottom: 16px; - white-space: pre-wrap; - word-wrap: break-word; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing > hr { - border: none; - height: 1px; - background-color: hsla(0, 0%, 91%, 0.77); -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SearchBox { - margin: 0 0 20px; - -webkit-box-flex: 0; - -ms-flex: 0; - flex: 0; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt { - margin-bottom: 16px; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceFeedbackPrompt + hr { - display: none; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_landing .mx_SpaceRoomDirectory_list { - display: contents; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton { - position: relative; - padding: 16px 32px 16px 72px; - width: 432px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 8px; - border: 1px solid #e7e7e7; - font-size: 1.5rem; - margin: 20px 0; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > h3 { - font-weight: 600; - margin: 0 0 4px; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton > span { - color: #737d8c; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:before { - position: absolute; - content: ""; - width: 32px; - height: 32px; - top: 24px; - left: 20px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 24px; - mask-size: 24px; - background-color: #8d99a5; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_privateScope > .mx_AccessibleButton:hover { - border-color: #0dbd8b; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_privateScope - > .mx_AccessibleButton:hover:before { - background-color: #0dbd8b; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_privateScope - > .mx_AccessibleButton:hover - > span { - color: #2e2f32; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_privateScope - .mx_SpaceRoomView_privateScope_justMeButton:before { - -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); - mask-image: url(../../img/element-icons/room/members.88c3e93.svg); -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_privateScope - .mx_SpaceRoomView_privateScope_meAndMyTeammatesButton:before { - -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); - mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); -} - -.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning { - padding: 12px 12px 12px 54px; - position: relative; - font-size: 1.5rem; - line-height: 2.4rem; - width: 432px; - border-radius: 8px; - background-color: #f7f7f7; - color: #737d8c; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning > h3 { - font-weight: 600; - font-size: inherit; - line-height: inherit; - margin: 0; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning > p { - font-size: inherit; - line-height: inherit; - margin: 0; -} - -.mx_SpaceRoomView .mx_SpaceRoomView_betaWarning:before { - -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - content: ""; - width: 20px; - height: 20px; - position: absolute; - top: 14px; - left: 14px; - background-color: #737d8c; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_betaDisclaimer { - padding: 58px 16px 16px; - position: relative; - border-radius: 8px; - background-color: #f3f8fd; - max-width: 428px; - margin: 20px 0 30px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_betaDisclaimer - .mx_BetaCard_betaPill { - position: absolute; - left: 16px; - top: 16px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_buttons { - color: #737d8c; - margin-top: 28px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_buttons - .mx_AccessibleButton { - position: relative; - display: inline-block; - padding-left: 32px; - line-height: 24px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_buttons - .mx_AccessibleButton:before { - content: ""; - position: absolute; - height: 24px; - width: 24px; - top: 0; - left: 0; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_buttons - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 32px; -} - -.mx_SpaceRoomView - .mx_SpaceRoomView_inviteTeammates - .mx_SpaceRoomView_inviteTeammates_buttons - .mx_SpaceRoomView_inviteTeammates_inviteDialogButton:before { - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_SpaceRoomView_info { - color: #737d8c; - font-size: 1.5rem; - line-height: 2.4rem; - margin: 20px 0; -} - -.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private, -.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public { - padding-left: 20px; - position: relative; -} - -.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before, -.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before { - position: absolute; - content: ""; - width: 20px; - height: 20px; - top: 0; - left: -2px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #8d99a5; -} - -.mx_SpaceRoomView_info .mx_SpaceRoomView_info_public:before { - -webkit-mask-size: 12px; - mask-size: 12px; - -webkit-mask-image: url(../../img/globe.8201f08.svg); - mask-image: url(../../img/globe.8201f08.svg); -} - -.mx_SpaceRoomView_info .mx_SpaceRoomView_info_private:before { - -webkit-mask-size: 14px; - mask-size: 14px; - -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); - mask-image: url(../../img/element-icons/lock.1f264bd.svg); -} - -.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link { - color: inherit; - position: relative; - padding-left: 16px; -} - -.mx_SpaceRoomView_info .mx_AccessibleButton_kind_link:before { - content: "·"; - position: absolute; - left: 6px; -} - -.mx_SpaceFeedbackPrompt { - margin-top: 18px; - margin-bottom: 12px; -} - -.mx_SpaceFeedbackPrompt > hr { - border: none; - border-top: 1px solid #e7e7e7; - margin-bottom: 12px; -} - -.mx_SpaceFeedbackPrompt > div { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_SpaceFeedbackPrompt > div > span { - color: #737d8c; - position: relative; - padding-left: 32px; - font-size: inherit; - line-height: inherit; - margin-right: auto; -} - -.mx_SpaceFeedbackPrompt > div > span:before { - content: ""; - position: absolute; - left: 0; - top: 2px; - height: 20px; - width: 20px; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_SpaceFeedbackPrompt > div .mx_AccessibleButton_kind_link { - color: #0dbd8b; - position: relative; - padding: 0 0 0 24px; - margin-left: 8px; - font-size: inherit; - line-height: inherit; -} - -.mx_SpaceFeedbackPrompt > div .mx_AccessibleButton_kind_link:before { - content: ""; - position: absolute; - left: 0; - height: 16px; - width: 16px; - background-color: #0dbd8b; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); - mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_TabbedView { - padding: 0 0 0 16px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: 8px 0 0; -} - -.mx_TabbedView, -.mx_TabbedView_tabsOnLeft { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_TabbedView_tabsOnLeft { - position: absolute; -} - -.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabels { - width: 170px; - max-width: 170px; - position: fixed; -} - -.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabPanel { - margin-left: 240px; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_TabbedView_tabsOnLeft .mx_TabbedView_tabLabel_active { - background-color: #0dbd8b; - color: #fff; -} - -.mx_TabbedView_tabsOnLeft - .mx_TabbedView_tabLabel_active - .mx_TabbedView_maskedIcon:before { - background-color: #fff; -} - -.mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon { - width: 16px; - height: 16px; - margin-left: 8px; - margin-right: 16px; -} - -.mx_TabbedView_tabsOnLeft .mx_TabbedView_maskedIcon:before { - -webkit-mask-size: 16px; - mask-size: 16px; - width: 16px; - height: 16px; -} - -.mx_TabbedView_tabsOnTop { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabels { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 8px; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel { - padding-left: 0; - padding-right: 52px; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel .mx_TabbedView_tabLabel_text { - font-size: 15px; - color: #8d99a5; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_tabPanel { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_tabLabel_active, -.mx_TabbedView_tabsOnTop - .mx_TabbedView_tabLabel_active - .mx_TabbedView_tabLabel_text { - color: #0dbd8b; -} - -.mx_TabbedView_tabsOnTop - .mx_TabbedView_tabLabel_active - .mx_TabbedView_maskedIcon:before { - background-color: #0dbd8b; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_maskedIcon { - width: 22px; - height: 22px; - margin-left: 0; - margin-right: 8px; -} - -.mx_TabbedView_tabsOnTop .mx_TabbedView_maskedIcon:before { - -webkit-mask-size: 22px; - mask-size: 22px; - width: inherit; - height: inherit; -} - -.mx_TabbedView_tabLabels { - color: #45474a; -} - -.mx_TabbedView_tabLabel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - vertical-align: text-top; - cursor: pointer; - padding: 8px 0; - border-radius: 8px; - font-size: 1.3rem; - position: relative; -} - -.mx_TabbedView_maskedIcon { - display: inline-block; -} - -.mx_TabbedView_maskedIcon:before { - display: inline-block; - background-color: #c1c6cd; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - content: ""; -} - -.mx_TabbedView_tabLabel_text { - vertical-align: middle; -} - -.mx_TabbedView_tabPanel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_TabbedView_tabPanel, -.mx_TabbedView_tabPanelContent { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - min-height: 0; -} - -.mx_TabbedView_tabPanelContent { - overflow: auto; -} - -.mx_ToastContainer { - position: absolute; - top: 0; - left: 70px; - z-index: 101; - padding: 4px; - display: grid; - grid-template-rows: 1fr 14px 6px; -} - -.mx_ToastContainer.mx_ToastContainer_stacked:before { - content: ""; - margin: 0 4px; - grid-row: 2/4; -} - -.mx_ToastContainer .mx_Toast_toast, -.mx_ToastContainer.mx_ToastContainer_stacked:before { - grid-column: 1; - background-color: #f2f5f8; - -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5); - border-radius: 8px; -} - -.mx_ToastContainer .mx_Toast_toast { - grid-row: 1/3; - color: #2e2f32; - overflow: hidden; - display: grid; - grid-template-columns: 22px 1fr; - grid-column-gap: 8px; - -webkit-column-gap: 8px; - -moz-column-gap: 8px; - column-gap: 8px; - grid-row-gap: 4px; - row-gap: 4px; - padding: 8px; -} - -.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:after, -.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon:before { - content: ""; - width: 22px; - height: 22px; - grid-column: 1; - grid-row: 1; - -webkit-mask-size: 100%; - mask-size: 100%; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-size: 100%; - background-repeat: no-repeat; -} - -.mx_ToastContainer - .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification:after { - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); - background-color: #2e2f32; -} - -.mx_ToastContainer - .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:before { - background-color: #fff; - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); - -webkit-mask-size: 80%; - mask-size: 80%; -} - -.mx_ToastContainer - .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_verification_warning:after { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); - background-color: #ff4b55; -} - -.mx_ToastContainer - .mx_Toast_toast.mx_Toast_hasIcon.mx_Toast_icon_secure_backup:after { - -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); - mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); - background-color: #2e2f32; -} - -.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_body, -.mx_ToastContainer .mx_Toast_toast.mx_Toast_hasIcon .mx_Toast_title { - grid-column: 2; -} - -.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) { - padding-left: 12px; -} - -.mx_ToastContainer .mx_Toast_toast:not(.mx_Toast_hasIcon) .mx_Toast_title { - grid-column: 1/-1; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_description, -.mx_ToastContainer .mx_Toast_toast .mx_Toast_title { - padding-right: 8px; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_title { - width: 100%; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_title h2 { - grid-column: 1/3; - grid-row: 1; - margin: 0; - font-size: 1.5rem; - font-weight: 600; - display: inline; - width: auto; - vertical-align: middle; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_title span { - padding-left: 8px; - float: right; - font-size: 1.2rem; - line-height: 2.2rem; - color: #61708b; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_body { - grid-column: 1/3; - grid-row: 2; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons { - float: right; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_buttons .mx_AccessibleButton { - min-width: 96px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_ToastContainer - .mx_Toast_toast - .mx_Toast_buttons - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 5px; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_description { - max-width: 272px; - overflow: hidden; - text-overflow: ellipsis; - margin: 4px 0 11px; - font-size: 1.2rem; -} - -.mx_ToastContainer - .mx_Toast_toast - .mx_Toast_description - .mx_AccessibleButton_kind_link { - font-size: inherit; - padding: 0; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_description a { - text-decoration: none; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_detail { - color: #737d8c; -} - -.mx_ToastContainer .mx_Toast_toast .mx_Toast_deviceID { - font-size: 1rem; -} - -.mx_UploadBar { - padding-left: 65px; - position: relative; -} - -.mx_UploadBar .mx_ProgressBar { - width: calc(100% - 40px); -} - -.mx_UploadBar_filename { - margin-top: 5px; - color: #61708b; - position: relative; - padding-left: 22px; - font-size: 1.5rem; - vertical-align: middle; -} - -.mx_UploadBar_filename:before { - content: ""; - height: 18px; - width: 18px; - left: 0; - -webkit-mask-image: url(../../img/element-icons/upload.e2a53e0.svg); - mask-image: url(../../img/element-icons/upload.e2a53e0.svg); -} - -.mx_UploadBar_cancel, -.mx_UploadBar_filename:before { - position: absolute; - top: 0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #61708b; -} - -.mx_UploadBar_cancel { - right: 0; - height: 16px; - width: 16px; - margin-right: 16px; - -webkit-mask-image: url(../../img/icons-close.11ff07c.svg); - mask-image: url(../../img/icons-close.11ff07c.svg); -} - -.mx_UserMenu { - padding-right: 6px; -} - -.mx_UserMenu.mx_UserMenu_prototype { - margin-bottom: 6px; - padding-right: 0; -} - -.mx_UserMenu.mx_UserMenu_prototype .mx_UserMenu_headerButtons { - margin-right: 2px; -} - -.mx_UserMenu.mx_UserMenu_prototype:after { - content: ""; - border-bottom: 1px solid #2e2f32; - opacity: 0.2; - display: block; - padding-top: 8px; -} - -.mx_UserMenu .mx_UserMenu_headerButtons { - width: 16px; - height: 16px; - position: relative; - display: block; -} - -.mx_UserMenu .mx_UserMenu_headerButtons:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - top: 0; - left: 0; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #8d99a5; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_UserMenu .mx_UserMenu_row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userAvatarContainer { - position: relative; - margin-right: 8px; - height: 32px; - padding: 3px 0; -} - -.mx_UserMenu - .mx_UserMenu_row - .mx_UserMenu_userAvatarContainer - .mx_UserMenu_userAvatar { - border-radius: 32px; - -o-object-fit: cover; - object-fit: cover; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-width: 0; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName, -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_userName { - display: block; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_doubleName .mx_UserMenu_subUserName { - color: #61708b; - font-size: 1.3rem; - line-height: 1.8rem; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_userName { - font-weight: 600; - font-size: 1.5rem; - line-height: 2rem; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd { - width: 24px; - height: 24px; - margin-right: 8px; - position: relative; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd:before { - content: ""; - position: absolute; - width: 24px; - height: 24px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #61708b; -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_noisy:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); -} - -.mx_UserMenu .mx_UserMenu_row .mx_UserMenu_dnd.mx_UserMenu_dnd_muted:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); - mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); -} - -.mx_UserMenu.mx_UserMenu_minimized { - padding-right: 0; -} - -.mx_UserMenu.mx_UserMenu_minimized .mx_UserMenu_userAvatarContainer { - margin-right: 0; -} - -.mx_UserMenu_contextMenu { - width: 258px; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype { - padding-bottom: 16px; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype - .mx_UserMenu_contextMenu_header { - padding-bottom: 0; - padding-top: 16px; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype - .mx_UserMenu_contextMenu_header:nth-child(n + 2) { - padding-top: 8px; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype hr { - width: 85%; - opacity: 0.2; - border: none; - border-bottom: 1px solid #2e2f32; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu - > .mx_IconizedContextMenu_optionList { - margin-top: 4px; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu - > .mx_IconizedContextMenu_optionList:before { - border: none; -} - -.mx_UserMenu_contextMenu.mx_UserMenu_contextMenu_prototype.mx_IconizedContextMenu - > .mx_IconizedContextMenu_optionList - > .mx_AccessibleButton { - padding-top: 2px; - padding-bottom: 2px; -} - -.mx_UserMenu_contextMenu.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList_red - .mx_AccessibleButton { - padding-top: 16px; - padding-bottom: 16px; -} - -.mx_UserMenu_contextMenu .mx_UserMenu_contextMenu_header { - padding: 20px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header - .mx_UserMenu_contextMenu_name { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: calc(100% - 40px); -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header - .mx_UserMenu_contextMenu_name - * { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header - .mx_UserMenu_contextMenu_name - .mx_UserMenu_contextMenu_displayName { - font-weight: 700; - font-size: 1.5rem; - line-height: 2rem; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header - .mx_UserMenu_contextMenu_name - .mx_UserMenu_contextMenu_userId { - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header - .mx_UserMenu_contextMenu_themeButton { - min-width: 32px; - max-width: 32px; - width: 32px; - height: 32px; - margin-left: 8px; - border-radius: 32px; - background-color: #e3e8f0; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts, -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_hostingLink { - padding-top: 0; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts { - display: inline-block; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts - > span { - font-weight: 600; - display: block; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts - > span - + span { - margin-top: 8px; -} - -.mx_UserMenu_contextMenu - .mx_UserMenu_contextMenu_header.mx_UserMenu_contextMenu_guestPrompts - .mx_AccessibleButton_kind_link { - font-weight: 400; - font-size: inherit; - padding: 0; -} - -.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon { - width: 16px; - height: 16px; - display: block; -} - -.mx_UserMenu_contextMenu .mx_IconizedContextMenu_icon:before { - content: ""; - width: 16px; - height: 16px; - display: block; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #2e2f32; -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconHome:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/home.1b4edd5.svg); - mask-image: url(../../img/element-icons/roomlist/home.1b4edd5.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconHosting:before { - -webkit-mask-image: url(../../img/element-icons/brands/element.182040d.svg); - mask-image: url(../../img/element-icons/brands/element.182040d.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconBell:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconLock:before { - -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); - mask-image: url(../../img/element-icons/security.66f2fa6.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconSettings:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconArchive:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/archived.226584d.svg); - mask-image: url(../../img/element-icons/roomlist/archived.226584d.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconMessage:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/feedback.b9a3f53.svg); - mask-image: url(../../img/element-icons/roomlist/feedback.b9a3f53.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconSignOut:before { - -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); - mask-image: url(../../img/element-icons/leave.bb917e7.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconMembers:before { - -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); - mask-image: url(../../img/element-icons/room/members.88c3e93.svg); -} - -.mx_UserMenu_contextMenu .mx_UserMenu_iconInvite:before { - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_ViewSource_separator { - clear: both; - border-bottom: 1px solid #e5e5e5; - padding-top: 0.7em; - padding-bottom: 0.7em; -} - -.mx_ViewSource_heading { - font-size: 1.7rem; - font-weight: 400; - color: #2e2f32; - margin-top: 0.7em; -} - -.mx_ViewSource pre { - text-align: left; - font-size: 1.2rem; - padding: 0.5em 1em; - word-wrap: break-word; - white-space: pre-wrap; -} - -.mx_ViewSource_details { - margin-top: 0.8em; -} - -.mx_CompleteSecurity_header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CompleteSecurity_headerIcon { - width: 24px; - height: 24px; - margin-right: 4px; - position: relative; -} - -.mx_CompleteSecurity_heroIcon { - width: 128px; - height: 128px; - position: relative; - margin: 0 auto; -} - -.mx_CompleteSecurity_body { - font-size: 1.5rem; -} - -.mx_CompleteSecurity_waiting { - color: #8d99a5; -} - -.mx_CompleteSecurity_actionRow { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - margin-top: 2.8rem; -} - -.mx_CompleteSecurity_actionRow .mx_AccessibleButton { - -webkit-margin-start: 18px; - margin-inline-start: 18px; -} - -.mx_CompleteSecurity_actionRow .mx_AccessibleButton.warning { - color: #ff4b55; -} - -.mx_Login_submit { - vertical-align: middle; - border: 0; - border-radius: 8px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #fff; - background-color: #0dbd8b; - width: auto; - padding: 7px 1.5em; - cursor: pointer; - display: inline-block; - outline: none; - width: 100%; - margin-top: 24px; - margin-bottom: 24px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - text-align: center; -} - -.mx_Login_submit:disabled { - opacity: 0.3; - cursor: default; -} - -.mx_Login_loader { - display: inline; - position: relative; - top: 2px; - left: 8px; -} - -.mx_Login_loader .mx_Spinner { - display: inline; -} - -.mx_Login_loader .mx_Spinner img { - width: 16px; - height: 16px; -} - -.mx_Login_error { - color: #ff4b55; - font-weight: 700; - text-align: center; - margin-top: 12px; - margin-bottom: 12px; -} - -.mx_Login_error.mx_Login_serverError { - text-align: left; - font-weight: 400; -} - -.mx_Login_error.mx_Login_serverError.mx_Login_serverErrorNonFatal { - color: #ff8d13; -} - -.mx_Login_type_container { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #232f32; -} - -.mx_Login_type_container .mx_Field { - margin: 0; -} - -.mx_Login_type_label { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_Login_underlinedServerName { - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; - border-bottom: 1px dashed #0dbd8b; -} - -div.mx_AccessibleButton_kind_link.mx_Login_forgot { - display: block; - margin: 0 auto; - font-size: inherit; - padding: 0; -} - -div.mx_AccessibleButton_kind_link.mx_Login_forgot.mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_MediaBody.mx_AudioPlayer_container { - padding: 16px 12px 12px; -} - -.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_primaryContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_MediaBody.mx_AudioPlayer_container - .mx_AudioPlayer_primaryContainer - .mx_PlayPauseButton { - margin-right: 8px; -} - -.mx_MediaBody.mx_AudioPlayer_container - .mx_AudioPlayer_primaryContainer - .mx_AudioPlayer_mediaInfo { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow: hidden; -} - -.mx_MediaBody.mx_AudioPlayer_container - .mx_AudioPlayer_primaryContainer - .mx_AudioPlayer_mediaInfo - > * { - display: block; -} - -.mx_MediaBody.mx_AudioPlayer_container - .mx_AudioPlayer_primaryContainer - .mx_AudioPlayer_mediaInfo - .mx_AudioPlayer_mediaName { - color: #2e2f32; - font-size: 1.5rem; - line-height: 1.5rem; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - padding-bottom: 4px; -} - -.mx_MediaBody.mx_AudioPlayer_container - .mx_AudioPlayer_primaryContainer - .mx_AudioPlayer_mediaInfo - .mx_AudioPlayer_byline { - font-size: 1.2rem; - line-height: 1.2rem; -} - -.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek .mx_SeekBar { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_MediaBody.mx_AudioPlayer_container .mx_AudioPlayer_seek .mx_Clock { - width: 4.2rem; - min-width: 4.2rem; - padding-left: 4px; - text-align: right; -} - -.mx_PlayPauseButton { - position: relative; - width: 32px; - height: 32px; - min-width: 32px; - min-height: 32px; - border-radius: 32px; - background-color: #f4f6fa; -} - -.mx_PlayPauseButton:before { - content: ""; - position: absolute; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_PlayPauseButton.mx_PlayPauseButton_disabled:before { - opacity: 0.5; -} - -.mx_PlayPauseButton.mx_PlayPauseButton_play:before { - width: 13px; - height: 16px; - top: 8px; - left: 12px; - -webkit-mask-image: url(../../img/element-icons/play.a72552b.svg); - mask-image: url(../../img/element-icons/play.a72552b.svg); -} - -.mx_PlayPauseButton.mx_PlayPauseButton_pause:before { - width: 10px; - height: 12px; - top: 10px; - left: 11px; - -webkit-mask-image: url(../../img/element-icons/pause.c4c0886.svg); - mask-image: url(../../img/element-icons/pause.c4c0886.svg); -} - -.mx_MediaBody.mx_VoiceMessagePrimaryContainer { - padding-right: 11px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - contain: content; -} - -.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Waveform .mx_Waveform_bar { - background-color: #c1c6cd; - height: 100%; - -webkit-transform: scaleY(max(0.05, var(--barHeight))); - transform: scaleY(max(0.05, var(--barHeight))); -} - -.mx_MediaBody.mx_VoiceMessagePrimaryContainer - .mx_Waveform - .mx_Waveform_bar.mx_Waveform_bar_100pct { - -webkit-transition: background-color 0.25s ease; - transition: background-color 0.25s ease; - background-color: #737d8c; -} - -.mx_MediaBody.mx_VoiceMessagePrimaryContainer .mx_Clock { - width: 4.2rem; - padding-right: 6px; - padding-left: 8px; -} - -.mx_MediaBody.mx_VoiceMessagePrimaryContainer.mx_VoiceMessagePrimaryContainer_noWaveform { - max-width: 162px; -} - -.mx_SeekBar { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - width: 100%; - height: 1px; - background: #c1c6cd; - outline: none; - position: relative; - cursor: pointer; -} - -.mx_SeekBar::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - width: 8px; - height: 8px; - border-radius: 8px; - background-color: #8d99a5; - cursor: pointer; -} - -.mx_SeekBar::-moz-range-thumb { - width: 8px; - height: 8px; - border-radius: 8px; - background-color: #8d99a5; - cursor: pointer; - border: none; -} - -.mx_SeekBar:before { - content: ""; - background-color: #8d99a5; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 1px; - -webkit-transform-origin: 0 100%; - transform-origin: 0 100%; - -webkit-transform: scaleX(var(--fillTo)); - transform: scaleX(var(--fillTo)); -} - -.mx_SeekBar::-moz-range-progress { - background-color: #8d99a5; - height: 1px; -} - -.mx_SeekBar:disabled { - opacity: 0.5; -} - -.mx_SeekBar:after { - content: ""; - position: absolute; - top: -6px; - bottom: -6px; - left: 0; - right: 0; -} - -.mx_Waveform { - position: relative; - height: 30px; - top: 1px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - overflow: hidden; -} - -.mx_Waveform .mx_Waveform_bar { - width: 0; - border: 1px solid transparent; - border-radius: 2px; - min-height: 0; - max-height: 100%; - margin-left: 1px; - margin-right: 1px; -} - -.mx_AuthBody { - width: 500px; - font-size: 1.2rem; - color: #61708b; - background-color: #fff; - border-radius: 0 4px 4px 0; - padding: 25px 60px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_AuthBody h2 { - font-size: 2.4rem; - font-weight: 600; - margin-top: 8px; - color: #232f32; -} - -.mx_AuthBody h3 { - font-size: 1.4rem; - font-weight: 600; - color: #61708b; -} - -.mx_AuthBody h3.mx_AuthBody_centered { - text-align: center; -} - -.mx_AuthBody a:hover, -.mx_AuthBody a:link, -.mx_AuthBody a:visited { - color: #0dbd8b; - text-decoration: none; -} - -.mx_AuthBody input[type="password"], -.mx_AuthBody input[type="text"] { - color: #232f32; -} - -.mx_AuthBody .mx_Field input, -.mx_AuthBody .mx_Field select { - color: #232f32; - background-color: #fff; -} - -.mx_AuthBody .mx_Field label { - color: #232f32; -} - -.mx_AuthBody .mx_Field input:not(:-moz-placeholder-shown) + label, -.mx_AuthBody .mx_Field textarea:not(:-moz-placeholder-shown) + label { - background-color: #fff; -} - -.mx_AuthBody .mx_Field input:not(:-ms-input-placeholder) + label, -.mx_AuthBody .mx_Field textarea:not(:-ms-input-placeholder) + label { - background-color: #fff; -} - -.mx_AuthBody .mx_Field_labelAlwaysTopLeft label, -.mx_AuthBody .mx_Field input:focus + label, -.mx_AuthBody .mx_Field input:not(:placeholder-shown) + label, -.mx_AuthBody .mx_Field select + label, -.mx_AuthBody .mx_Field textarea:focus + label, -.mx_AuthBody .mx_Field textarea:not(:placeholder-shown) + label { - background-color: #fff; -} - -.mx_AuthBody input.error { - color: #ff4b55; -} - -.mx_AuthBody .mx_Field input { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_AuthBody .mx_Field_select:before { - background-color: #232f32; -} - -.mx_AuthBody .mx_Dropdown { - color: #232f32; -} - -.mx_AuthBody .mx_Dropdown_arrow { - background: #232f32; -} - -.mx_AuthBody .mx_Dropdown_menu { - background-color: #fff; -} - -.mx_AuthBody .mx_Dropdown_menu .mx_Dropdown_option_highlight { - background-color: #ddd; -} - -.mx_AuthBody_fieldRow { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 10px; -} - -.mx_AuthBody_fieldRow > .mx_Field { - margin: 0 5px; -} - -.mx_AuthBody_fieldRow > .mx_Field:first-child { - margin-left: 0; -} - -.mx_AuthBody_fieldRow > .mx_Field:last-child { - margin-right: 0; -} - -.mx_AuthBody_paddedFooter { - height: 80px; - padding-top: 28px; - text-align: center; -} - -.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_title { - margin-top: 16px; - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_AuthBody_paddedFooter - .mx_AuthBody_paddedFooter_title - .mx_InlineSpinner - img { - vertical-align: sub; - margin-right: 5px; -} - -.mx_AuthBody_paddedFooter .mx_AuthBody_paddedFooter_subtitle { - margin-top: 8px; - font-size: 1rem; - line-height: 1.4rem; -} - -.mx_AuthBody_changeFlow { - display: block; - text-align: center; - width: 100%; -} - -.mx_AuthBody_changeFlow > a { - font-weight: 600; -} - -.mx_SSOButtons + .mx_AuthBody_changeFlow { - margin-top: 24px; -} - -.mx_AuthBody_spinner { - margin: 1em 0; -} - -@media only screen and (max-width: 480px) { - .mx_AuthBody { +/* global __webpack_hash__ */ + +import ThemeWatcher from "../../settings/watchers/ThemeWatcher"; + +const getExportCSS = async (): Promise<string> => { + const theme = new ThemeWatcher().getEffectiveTheme(); + const hash = __webpack_hash__; + const bundle = await fetch(`bundles/${hash}/bundle.css`); + const bundleCSS = await bundle.text(); + let themeCSS: string; + if (theme === 'light') { + const res = await fetch(`bundles/${hash}/theme-light.css`); + themeCSS = await res.text(); + } else { + const res = await fetch(`bundles/${hash}/theme-dark.css`); + themeCSS = await res.text(); + } + const fontFaceRegex = /@font-face {.*?}/sg; + themeCSS.replace(fontFaceRegex, ''); + themeCSS.replace( + /font-family: Inter/g, + `font-family: -apple-system, BlinkMacSystemFont, avenir next, + avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif`, + ); + themeCSS.replace( + /font-family: Inconsolata/g, + "font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace", + ); + + const customCSS = ` +#snackbar { + display: flex; + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + position: fixed; + z-index: 1; + left: 50%; + bottom: 30px; + font-size: 17px; + padding: 6px 16px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; + font-weight: 400; + line-height: 1.43; border-radius: 4px; - width: auto; - max-width: 500px; - padding: 10px; + letter-spacing: 0.01071em; } -} - -.mx_AuthButtons { - min-height: 24px; - height: unset !important; - padding-top: 13px !important; - padding-bottom: 14px !important; - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; -} - -.mx_AuthButtons_loginButton_wrapper { - text-align: center; - width: 100%; -} - -.mx_AuthButtons_loginButton, -.mx_AuthButtons_registerButton { - margin-top: 3px; - height: 40px; - border: 0; - border-radius: 40px; - margin-left: 4px; - margin-right: 4px; - min-width: 80px; - background-color: #0dbd8b; - color: #fff; - cursor: pointer; - font-size: 1.5rem; - padding: 0 11px; - word-break: break-word; -} - -.mx_AuthFooter { - text-align: center; - width: 100%; - font-size: 1.4rem; - opacity: 0.72; - padding: 20px 0; - background: -webkit-gradient( - linear, - left top, - left bottom, - from(transparent), - to(rgba(0, 0, 0, 0.8)) - ); - background: linear-gradient(transparent, rgba(0, 0, 0, 0.8)); -} - -.mx_AuthFooter a:hover, -.mx_AuthFooter a:link, -.mx_AuthFooter a:visited { - color: #fff; - margin: 0 22px; -} - -.mx_AuthHeader { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 206px; - padding: 25px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -@media only screen and (max-width: 480px) { - .mx_AuthHeader { - display: none; + + #snackbar.mx_show { + visibility: visible; + -webkit-animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; + animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; } -} - -.mx_AuthHeaderLogo { - margin-top: 15px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - padding: 0 25px; -} - -.mx_AuthHeaderLogo img { - width: 100%; -} - -@media only screen and (max-width: 480px) { - .mx_AuthHeaderLogo { - display: none; + + a.mx_reply_anchor{ + cursor: pointer; + color: #238cf5; } -} - -.mx_AuthPage { - width: 100%; - min-height: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - background-color: #2e3649; -} - -.mx_AuthPage, -.mx_AuthPage_modal { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_AuthPage_modal { - margin: 100px auto auto; - border-radius: 4px; - -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33); - box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.33); - background-color: hsla(0, 0%, 96.1%, 0.9); -} - -@media only screen and (max-width: 480px) { - .mx_AuthPage_modal { - margin-top: 0; + + a.mx_reply_anchor:hover{ + text-decoration: underline; } -} - -.mx_CompleteSecurityBody { - width: 600px; - color: #232f32; - background-color: #fff; - border-radius: 4px; - padding: 20px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_CompleteSecurityBody h2 { - font-size: 2.4rem; - font-weight: 600; - margin-top: 0; -} - -.mx_CompleteSecurityBody h3 { - font-size: 1.4rem; - font-weight: 600; -} - -.mx_CompleteSecurityBody a:hover, -.mx_CompleteSecurityBody a:link, -.mx_CompleteSecurityBody a:visited { - color: #0dbd8b; - text-decoration: none; -} - -.mx_CountryDropdown .mx_Dropdown_input .mx_Dropdown_option { - padding: 0 3px; -} - -.mx_CountryDropdown .mx_Dropdown_arrow { - padding-right: 3px; -} - -.mx_CountryDropdown_shortOption { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - height: 100%; -} - -.mx_CountryDropdown_option, -.mx_CountryDropdown_shortOption { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CountryDropdown_option { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_InteractiveAuthEntryComponents_emailWrapper { - padding-right: 100px; - position: relative; - margin-top: 32px; - margin-bottom: 32px; -} - -.mx_InteractiveAuthEntryComponents_emailWrapper:after, -.mx_InteractiveAuthEntryComponents_emailWrapper:before { - position: absolute; - width: 116px; - height: 116px; - content: ""; - right: -10px; -} - -.mx_InteractiveAuthEntryComponents_emailWrapper:before { - background-color: rgba(244, 246, 250, 0.91); - border-radius: 50%; - top: -20px; -} - -.mx_InteractiveAuthEntryComponents_emailWrapper:after { - background-image: url(../../img/element-icons/email-prompt.1d04dfe.svg); - background-repeat: no-repeat; - background-position: 50%; - background-size: contain; - top: -25px; -} - -.mx_InteractiveAuthEntryComponents_msisdnWrapper { - text-align: center; -} - -.mx_InteractiveAuthEntryComponents_msisdnEntry { - font-size: 200%; - font-weight: 700; - border: 1px solid #c7c7c7; - border-radius: 3px; - width: 6em; -} - -.mx_InteractiveAuthEntryComponents_msisdnEntry:focus { - border: 1px solid #0dbd8b; -} - -.mx_InteractiveAuthEntryComponents_msisdnSubmit { - margin-top: 4px; - margin-bottom: 5px; -} - -.mx_InteractiveAuthEntryComponents_termsSubmit { - margin-top: 20px; - margin-bottom: 5px; - display: block; - width: 100%; -} - -.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { - background-color: #747474; - cursor: default; -} - -.mx_InteractiveAuthEntryComponents_termsSubmit:disabled { - background-color: #92caad; - cursor: default; -} - -.mx_InteractiveAuthEntryComponents_termsPolicy { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_InteractiveAuthEntryComponents_passwordSection { - width: 300px; -} - -.mx_InteractiveAuthEntryComponents_sso_buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - margin-top: 20px; -} - -.mx_InteractiveAuthEntryComponents_sso_buttons .mx_AccessibleButton { - margin-left: 5px; -} - -.mx_AuthBody_language { - width: 100%; -} - -.mx_AuthBody_language .mx_Dropdown_input { - border: none; - font-size: 1.4rem; - font-weight: 600; - color: #4e5054; - width: auto; -} - -.mx_AuthBody_language .mx_Dropdown_arrow { - background: #4e5054; -} - -progress.mx_PassphraseField_progress { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - width: 100%; - border: 0; - height: 4px; - position: absolute; - top: -12px; - border-radius: "2px"; -} - -progress.mx_PassphraseField_progress::-moz-progress-bar { - border-radius: "2px"; -} - -progress.mx_PassphraseField_progress::-webkit-progress-bar, -progress.mx_PassphraseField_progress::-webkit-progress-value { - border-radius: "2px"; -} - -progress.mx_PassphraseField_progress { - color: #ff4b55; -} - -progress.mx_PassphraseField_progress::-moz-progress-bar { - background-color: #ff4b55; -} - -progress.mx_PassphraseField_progress::-webkit-progress-value { - background-color: #ff4b55; -} - -progress.mx_PassphraseField_progress[value="2"], -progress.mx_PassphraseField_progress[value="3"] { - color: #ff812d; -} - -progress.mx_PassphraseField_progress[value="2"]::-moz-progress-bar, -progress.mx_PassphraseField_progress[value="3"]::-moz-progress-bar { - background-color: #ff812d; -} - -progress.mx_PassphraseField_progress[value="2"]::-webkit-progress-value, -progress.mx_PassphraseField_progress[value="3"]::-webkit-progress-value { - background-color: #ff812d; -} - -progress.mx_PassphraseField_progress[value="4"] { - color: #0dbd8b; -} - -progress.mx_PassphraseField_progress[value="4"]::-moz-progress-bar { - background-color: #0dbd8b; -} - -progress.mx_PassphraseField_progress[value="4"]::-webkit-progress-value { - background-color: #0dbd8b; -} - -.mx_Welcome { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_Welcome.mx_WelcomePage_registrationDisabled .mx_ButtonCreateAccount { - display: none; -} - -.mx_Welcome .mx_AuthBody_language { - width: 160px; - margin-bottom: 10px; -} - -.mx_BaseAvatar { - position: relative; - display: inline-block; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_BaseAvatar_initial { - position: absolute; - left: 0; - color: #fff; - text-align: center; - speak: none; - pointer-events: none; - font-weight: 400; -} - -.mx_BaseAvatar_image { - -o-object-fit: cover; - object-fit: cover; - border-radius: 125px; - vertical-align: top; - background-color: #fff; -} - -.mx_DecoratedRoomAvatar, -.mx_ExtraTile { - position: relative; - contain: content; -} - -.mx_DecoratedRoomAvatar.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar, -.mx_ExtraTile.mx_DecoratedRoomAvatar_cutout .mx_BaseAvatar { - -webkit-mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg); - mask-image: url(../../img/element-icons/roomlist/decorated-avatar-mask.76c407f.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; -} - -.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon, -.mx_ExtraTile .mx_DecoratedRoomAvatar_icon { - position: absolute; - bottom: -2px; - right: -2px; - margin: 4px; - width: 8px; - height: 8px; - border-radius: 50%; -} - -.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon:before, -.mx_ExtraTile .mx_DecoratedRoomAvatar_icon:before { - content: ""; - width: 8px; - height: 8px; - position: absolute; - border-radius: 8px; -} - -.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_globe:before, -.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_globe:before { - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #737d8c; - -webkit-mask-image: url(../../img/globe.8201f08.svg); - mask-image: url(../../img/globe.8201f08.svg); -} - -.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_offline:before, -.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_offline:before { - background-color: #e3e8f0; -} - -.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_online:before, -.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_online:before { - background-color: #0dbd8b; -} - -.mx_DecoratedRoomAvatar .mx_DecoratedRoomAvatar_icon_away:before, -.mx_ExtraTile .mx_DecoratedRoomAvatar_icon_away:before { - background-color: #d9b072; -} - -.mx_DecoratedRoomAvatar .mx_NotificationBadge, -.mx_DecoratedRoomAvatar .mx_RoomTile_badgeContainer, -.mx_ExtraTile .mx_NotificationBadge, -.mx_ExtraTile .mx_RoomTile_badgeContainer { - position: absolute; - top: 0; - right: 0; - height: 18px; - width: 18px; -} - -.mx_MessageComposer_avatar .mx_BaseAvatar { - padding: 2px; - border: 1px solid transparent; - border-radius: 100%; -} - -.mx_MessageComposer_avatar .mx_BaseAvatar_initial { - left: 2px; -} - -.mx_MemberStatusMessageAvatar_hasStatus .mx_BaseAvatar { - border-color: #0dbd8b; -} - -.mx_WidgetAvatar { - border-radius: 4px; -} - -.mx_BetaCard { - margin-bottom: 20px; - padding: 24px; - background-color: #f4f6fa; - border-radius: 8px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_BetaCard .mx_BetaCard_columns { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_BetaCard .mx_BetaCard_columns > div .mx_BetaCard_title { - font-weight: 600; - font-size: 1.8rem; - line-height: 2.2rem; - color: #2e2f32; - margin: 4px 0 14px; -} - -.mx_BetaCard - .mx_BetaCard_columns - > div - .mx_BetaCard_title - .mx_BetaCard_betaPill { - margin-left: 12px; -} - -.mx_BetaCard .mx_BetaCard_columns > div .mx_BetaCard_caption { - font-size: 1.5rem; - line-height: 2rem; - color: #737d8c; - margin-bottom: 20px; -} - -.mx_BetaCard - .mx_BetaCard_columns - > div - .mx_BetaCard_buttons - .mx_AccessibleButton { - display: block; - margin: 12px 0; - padding: 7px 40px; - width: auto; -} - -.mx_BetaCard .mx_BetaCard_columns > div .mx_BetaCard_disclaimer { - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; - margin-top: 20px; -} - -.mx_BetaCard .mx_BetaCard_columns > img { - margin: auto 0 auto 20px; - width: 300px; - -o-object-fit: contain; - object-fit: contain; - height: 100%; -} - -.mx_BetaCard .mx_BetaCard_relatedSettings .mx_SettingsFlag { - margin: 16px 0 0; - font-size: 1.5rem; - line-height: 2.4rem; - color: #2e2f32; -} - -.mx_BetaCard - .mx_BetaCard_relatedSettings - .mx_SettingsFlag - .mx_SettingsFlag_microcopy { - margin-top: 4px; - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; -} - -.mx_BetaCard_betaPill { - background-color: #238cf5; - padding: 4px 10px; - border-radius: 8px; - text-transform: uppercase; - font-size: 12px; - line-height: 15px; - color: #fff; - display: inline-block; - vertical-align: text-bottom; -} - -.mx_BetaCard_betaPill.mx_BetaCard_betaPill_clickable { - cursor: pointer; -} - -.mx_BetaDot { - margin: 10px; - height: 12px; - width: 12px; - -webkit-animation: mx_Beta_bluePulse 2s infinite; - animation: mx_Beta_bluePulse 2s infinite; - -webkit-animation-iteration-count: 20; - animation-iteration-count: 20; - position: relative; -} - -.mx_BetaDot, -.mx_BetaDot:after { - border-radius: 50%; - -webkit-transform: scale(1); - transform: scale(1); - background: #238cf5; -} - -.mx_BetaDot:after { - content: ""; - position: absolute; - width: inherit; - height: inherit; - top: 0; - left: 0; - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-animation-name: mx_Beta_bluePulse_shadow; - animation-name: mx_Beta_bluePulse_shadow; - -webkit-animation-duration: inherit; - animation-duration: inherit; - -webkit-animation-iteration-count: inherit; - animation-iteration-count: inherit; -} - -@-webkit-keyframes mx_Beta_bluePulse { - 0% { - -webkit-transform: scale(0.95); - transform: scale(0.95); + + @-webkit-keyframes mx_snackbar_fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} } - 70% { - -webkit-transform: scale(1); - transform: scale(1); + + @keyframes mx_snackbar_fadein { + from {bottom: 0; opacity: 0;} + to {bottom: 30px; opacity: 1;} } - to { - -webkit-transform: scale(0.95); - transform: scale(0.95); + + @-webkit-keyframes mx_snackbar_fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} } -} - -@keyframes mx_Beta_bluePulse { - 0% { - -webkit-transform: scale(0.95); - transform: scale(0.95); + + @keyframes mx_snackbar_fadeout { + from {bottom: 30px; opacity: 1;} + to {bottom: 0; opacity: 0;} } - 70% { - -webkit-transform: scale(1); - transform: scale(1); + + .mx_MFileBody_info .mx_MFileBody_info_icon img.mx_export_attach_icon { + content: ''; + background-color: ${theme == 'light' ? "#ffffff": "inherit"}; + width: 13px; + height: 15px; + position: absolute; + top: 8px; + left: 9px; } - to { - -webkit-transform: scale(0.95); - transform: scale(0.95); + + * { + scroll-behavior: smooth !important; } -} - -@-webkit-keyframes mx_Beta_bluePulse_shadow { - 0% { - opacity: 0.7; + + + .mx_Export_EventWrapper:target { + background: ${theme == 'light' ? "white" : "#15191E"}; + animation: mx_event_highlight_animation 2s linear; } - 70% { - -webkit-transform: scale(2.2); - transform: scale(2.2); - opacity: 0; + + + @keyframes mx_event_highlight_animation { + 0%,100% { + background: ${theme == 'light' ? "white" : "#15191E"}; + } + 50% { + background: ${theme == 'light' ? "#e3e2df" : "#21262c"}; + } } - to { - opacity: 0; + + .mx_ReplyThread_Export { + margin-top: -5px; + margin-bottom: 5px; } -} - -@keyframes mx_Beta_bluePulse_shadow { - 0% { - opacity: 0.7; + + .mx_RedactedBody img.mx_export_trash_icon { + height: 14px; + width: 14px; + background-color: ${theme == 'light' ? "#ffffff": "inherit"}; + content: ''; + position: absolute; + top: 1px; + left: 0; } - 70% { - -webkit-transform: scale(2.2); - transform: scale(2.2); - opacity: 0; - } - to { - opacity: 0; - } -} - -.mx_CallContextMenu_item { - width: 205px; - height: 40px; - padding-left: 16px; - line-height: 40px; - vertical-align: center; -} - -.mx_IconizedContextMenu { - min-width: 146px; -} - -.mx_IconizedContextMenu .mx_IconizedContextMenu_optionList > * { - padding-left: 20px; - padding-right: 20px; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_IconizedContextMenu_optionList_notFirst:before, -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList:nth-child(n + 2):before { - border-top: 1px solid #2e2f32; - opacity: 0.1; - content: ""; - width: 100%; - position: absolute; - left: 0; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList:first-child - .mx_AccessibleButton:first-child { - border-radius: 8px 8px 0 0; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList:last-child - .mx_AccessibleButton:last-child { - border-radius: 0 0 8px 8px; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton { - padding-top: 12px; - padding-bottom: 12px; - text-decoration: none; - color: #2e2f32; - font-size: 1.5rem; - line-height: 2.4rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton:hover { - background-color: #f5f8fa; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton.mx_AccessibleButton_disabled { - opacity: 0.5; - cursor: not-allowed; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton - .mx_IconizedContextMenu_icon, -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton + img { - width: 16px; - min-width: 16px; - max-width: 16px; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton - span.mx_IconizedContextMenu_label { - width: 100%; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList - .mx_AccessibleButton - .mx_IconizedContextMenu_icon - + .mx_IconizedContextMenu_label { - padding-left: 14px; -} - -.mx_IconizedContextMenu .mx_IconizedContextMenu_icon { - position: relative; - width: 16px; - height: 16px; -} - -.mx_IconizedContextMenu .mx_IconizedContextMenu_icon:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #2e2f32; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList_red - .mx_AccessibleButton { - color: #ff4b55 !important; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_optionList_red - .mx_IconizedContextMenu_icon:before { - background-color: #ff4b55; -} - -.mx_IconizedContextMenu .mx_IconizedContextMenu_active.mx_AccessibleButton, -.mx_IconizedContextMenu .mx_IconizedContextMenu_active .mx_AccessibleButton { - color: #0dbd8b !important; -} - -.mx_IconizedContextMenu - .mx_IconizedContextMenu_active - .mx_IconizedContextMenu_icon:before { - background-color: #0dbd8b; -} - -.mx_IconizedContextMenu.mx_IconizedContextMenu_compact - .mx_IconizedContextMenu_optionList - > * { - padding: 8px 16px 8px 11px; -} - -.mx_IconizedContextMenu .mx_IconizedContextMenu_checked { - margin-left: 16px; - margin-right: -5px; -} - -.mx_IconizedContextMenu .mx_IconizedContextMenu_checked:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); - mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); -} - -.mx_MessageContextMenu .mx_IconizedContextMenu_icon { - width: 16px; - height: 16px; - display: block; -} - -.mx_MessageContextMenu .mx_IconizedContextMenu_icon:before { - content: ""; - width: 16px; - height: 16px; - display: block; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #2e2f32; -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconCollapse:before { - -webkit-mask-image: url(../../img/element-icons/message/chevron-up.90f4709.svg); - mask-image: url(../../img/element-icons/message/chevron-up.90f4709.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconReport:before { - -webkit-mask-image: url(../../img/element-icons/warning-badge.413c9a9.svg); - mask-image: url(../../img/element-icons/warning-badge.413c9a9.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconLink:before { - -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); - mask-image: url(../../img/element-icons/link.8f4b1fc.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconPermalink:before { - -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); - mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconUnhidePreview:before { - -webkit-mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); - mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconForward:before { - -webkit-mask-image: url(../../img/element-icons/message/fwd.d1f50ee.svg); - mask-image: url(../../img/element-icons/message/fwd.d1f50ee.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconRedact:before { - -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); - mask-image: url(../../img/element-icons/trashcan.3b626db.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconResend:before { - -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); - mask-image: url(../../img/element-icons/retry.6cd23ad.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconSource:before { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); - mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconQuote:before { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); - mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconPin:before { - -webkit-mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); - mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); -} - -.mx_MessageContextMenu .mx_MessageContextMenu_iconUnpin:before { - -webkit-mask-image: url(../../img/element-icons/room/pin.a996417.svg); - mask-image: url(../../img/element-icons/room/pin.a996417.svg); -} - -.mx_StatusMessageContextMenu { - padding: 10px; -} - -.mx_StatusMessageContextMenu_form { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -input.mx_StatusMessageContextMenu_message { - border-radius: 4px; - border: 1px solid #e7e7e7; - padding: 6.5px 11px; - background-color: #fff; - font-weight: 400; - margin: 0 0 10px; -} - -.mx_StatusMessageContextMenu_message::-webkit-input-placeholder { - color: #61708b; -} - -.mx_StatusMessageContextMenu_message::-moz-placeholder { - color: #61708b; -} - -.mx_StatusMessageContextMenu_message:-ms-input-placeholder { - color: #61708b; -} - -.mx_StatusMessageContextMenu_message::-ms-input-placeholder { - color: #61708b; -} - -.mx_StatusMessageContextMenu_message::placeholder { - color: #61708b; -} - -.mx_StatusMessageContextMenu_actionContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_StatusMessageContextMenu_clear, -.mx_StatusMessageContextMenu_submit { - vertical-align: middle; - border-radius: 8px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #fff; - background-color: #0dbd8b; - width: auto; - cursor: pointer; - display: inline-block; - outline: none; - -ms-flex-item-align: start; - align-self: start; - font-size: 1.2rem; - padding: 6px 1em; - border: 1px solid transparent; - margin-right: 10px; -} - -.mx_StatusMessageContextMenu_submit[disabled] { - opacity: 0.49; -} - -.mx_StatusMessageContextMenu_clear { - color: #ff4b55; - background-color: transparent; - border: 1px solid #ff4b55; -} - -.mx_StatusMessageContextMenu_actionContainer .mx_Spinner { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; -} - -.mx_TagTileContextMenu_item { - padding: 8px 20px 8px 8px; - cursor: pointer; - white-space: nowrap; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - line-height: 1.6rem; -} - -.mx_TagTileContextMenu_item:before { - content: ""; - height: 15px; - width: 15px; - background-color: currentColor; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - margin-right: 8px; -} - -.mx_TagTileContextMenu_viewCommunity:before { - -webkit-mask-image: url(../../img/element-icons/view-community.0cad1a5.svg); - mask-image: url(../../img/element-icons/view-community.0cad1a5.svg); -} - -.mx_TagTileContextMenu_moveUp:before { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -.mx_TagTileContextMenu_moveDown:before, -.mx_TagTileContextMenu_moveUp:before { - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_TagTileContextMenu_hideCommunity:before { - -webkit-mask-image: url(../../img/element-icons/hide.2b52315.svg); - mask-image: url(../../img/element-icons/hide.2b52315.svg); -} - -.mx_TagTileContextMenu_separator { - margin-top: 0; - margin-bottom: 0; - border-style: none; - border-top: 1px solid; - border-color: #e7e7e7; -} - -.mx_AddExistingToSpaceDialog_wrapper .mx_Dialog { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_AddExistingToSpace .mx_SearchBox { - margin: 0 0 15px; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_content { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_noResults { - display: block; - margin-top: 24px; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_section:not(:first-child) { - margin-top: 24px; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_section > h3 { - margin: 0; - color: #737d8c; - font-size: 1.2rem; - font-weight: 600; - line-height: 1.5rem; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_section - .mx_AddExistingToSpace_entry { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 12px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_section - .mx_AddExistingToSpace_entry - .mx_DecoratedRoomAvatar { - margin-right: 12px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_section - .mx_AddExistingToSpace_entry - .mx_AddExistingToSpace_entry_name { - font-size: 1.5rem; - line-height: 30px; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-right: 12px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_section - .mx_AddExistingToSpace_entry - .mx_Checkbox { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_section_spaces .mx_BaseAvatar { - margin-right: 12px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_section_spaces - .mx_BaseAvatar_image { - border-radius: 8px; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental { - position: relative; - border-radius: 8px; - margin: 12px 0; - padding: 8px 8px 8px 42px; - background-color: #f3f8fd; - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_section_experimental:before { - content: ""; - position: absolute; - left: 10px; - top: calc(50% - 8px); - height: 16px; - width: 16px; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 20px; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span .mx_ProgressBar { - height: 8px; - width: 100%; - border-radius: 8px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - > span - .mx_ProgressBar::-moz-progress-bar { - border-radius: 8px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - > span - .mx_ProgressBar::-webkit-progress-bar, -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - > span - .mx_ProgressBar::-webkit-progress-value { - border-radius: 8px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - > span - .mx_AddExistingToSpace_progressText { - margin-top: 8px; - font-size: 1.5rem; - line-height: 2.4rem; - color: #2e2f32; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_footer > span > * { - vertical-align: middle; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AddExistingToSpace_error { - padding-left: 12px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AddExistingToSpace_error - > img { - -ms-flex-item-align: center; - align-self: center; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AddExistingToSpace_error - .mx_AddExistingToSpace_errorHeading { - font-weight: 600; - font-size: 1.5rem; - line-height: 1.8rem; - color: #ff4b55; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AddExistingToSpace_error - .mx_AddExistingToSpace_errorCaption { - margin-top: 4px; - font-size: 1.2rem; - line-height: 1.5rem; - color: #2e2f32; -} - -.mx_AddExistingToSpace .mx_AddExistingToSpace_footer .mx_AccessibleButton { - display: inline-block; - -ms-flex-item-align: center; - align-self: center; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AccessibleButton_kind_primary { - padding: 8px 36px; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AddExistingToSpace_retryButton { - margin-left: 12px; - padding-left: 24px; - position: relative; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AddExistingToSpace_retryButton:before { - content: ""; - position: absolute; - background-color: #2e2f32; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); - mask-image: url(../../img/element-icons/retry.6cd23ad.svg); - width: 18px; - height: 18px; - left: 0; -} - -.mx_AddExistingToSpace - .mx_AddExistingToSpace_footer - .mx_AccessibleButton_kind_link { - padding: 0; -} - -.mx_AddExistingToSpaceDialog { - width: 480px; - color: #2e2f32; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - min-height: 0; - height: 80vh; -} - -.mx_AddExistingToSpaceDialog, -.mx_AddExistingToSpaceDialog .mx_Dialog_title { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar_image { - border-radius: 8px; - margin: 0; - vertical-align: unset; -} - -.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_BaseAvatar { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - margin: auto 16px auto 5px; - vertical-align: middle; -} - -.mx_AddExistingToSpaceDialog .mx_Dialog_title > div > h1 { - font-weight: 600; - font-size: 1.8rem; - line-height: 2.2rem; - margin: 0; -} - -.mx_AddExistingToSpaceDialog - .mx_Dialog_title - > div - .mx_AddExistingToSpaceDialog_onlySpace { - color: #737d8c; - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_AddExistingToSpaceDialog .mx_Dialog_title .mx_Dropdown_input { - border: none; -} - -.mx_AddExistingToSpaceDialog - .mx_Dialog_title - .mx_Dropdown_input - > .mx_Dropdown_option { - padding-left: 0; - -webkit-box-flex: unset; - -ms-flex: unset; - flex: unset; - height: unset; - color: #737d8c; - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_AddExistingToSpaceDialog - .mx_Dialog_title - .mx_Dropdown_input - > .mx_Dropdown_option - .mx_BaseAvatar { - display: none; -} - -.mx_AddExistingToSpaceDialog - .mx_Dialog_title - .mx_Dropdown_input - .mx_Dropdown_menu - .mx_AddExistingToSpaceDialog_dropdownOptionActive { - color: #0dbd8b; - padding-right: 32px; - position: relative; -} - -.mx_AddExistingToSpaceDialog - .mx_Dialog_title - .mx_Dropdown_input - .mx_Dropdown_menu - .mx_AddExistingToSpaceDialog_dropdownOptionActive:before { - content: ""; - width: 20px; - height: 20px; - top: 8px; - right: 0; - position: absolute; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #0dbd8b; - -webkit-mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); - mask-image: url(../../img/element-icons/roomlist/checkmark.a8c4d72.svg); -} - -.mx_AddExistingToSpaceDialog .mx_AddExistingToSpace { - display: contents; -} - -.mx_AddressPickerDialog a:hover, -.mx_AddressPickerDialog a:link, -.mx_AddressPickerDialog a:visited { - color: #0dbd8b; - text-decoration: none; -} - -.mx_AddressPickerDialog_input, -.mx_AddressPickerDialog_input:focus { - height: 26px; - font-size: 1.4rem; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - padding-left: 12px; - padding-right: 12px; - margin: 0 !important; - border: 0 !important; - outline: 0 !important; - width: 1000%; - resize: none; - overflow: hidden; - vertical-align: middle; - -webkit-box-sizing: border-box; - box-sizing: border-box; - word-wrap: nowrap; -} - -.mx_AddressPickerDialog .mx_Dialog_content { - min-height: 50px; -} - -.mx_AddressPickerDialog_inputContainer { - border-radius: 3px; - border: 1px solid #e7e7e7; - line-height: 3.6rem; - padding: 1px 4px; - max-height: 150px; - overflow-x: hidden; - overflow-y: auto; -} - -.mx_AddressPickerDialog_error { - margin-top: 10px; - color: #ff4b55; -} - -.mx_AddressPickerDialog_cancel { - position: absolute; - right: 11px; - top: 13px; - cursor: pointer; -} - -.mx_AddressPickerDialog_cancel object { - pointer-events: none; -} - -.mx_AddressPickerDialog_identityServer { - margin-top: 1em; -} - -.mx_AnalyticsModal table { - margin: 10px 0; -} - -.mx_BetaFeedbackDialog .mx_BetaFeedbackDialog_subheading { - color: #2e2f32; - font-size: 1.4rem; - line-height: 2rem; - margin-bottom: 24px; -} - -.mx_BetaFeedbackDialog .mx_AccessibleButton_kind_link { - padding: 0; - font-size: inherit; - line-height: inherit; -} - -.mx_BugReportDialog - .mx_BugReportDialog_download - .mx_AccessibleButton_kind_link { - padding-left: 0; -} - -.mx_ChangelogDialog_content { - max-height: 300px; - overflow: auto; -} - -.mx_ChangelogDialog_li { - padding: 0.2em; -} - -.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { - margin-top: 24px; -} - -.mx_ChatCreateOrReuseDialog .mx_Dialog_content { - margin-bottom: 24px; - min-height: 100px; -} - -.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { - display: none; -} - -.mx_ChatCreateOrReuseDialog_profile { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_ChatCreateOrReuseDialog_profile_name { - padding: 14px; -} - -.mx_CommunityPrototypeInviteDialog.mx_Dialog_fixedWidth { - width: 360px; -} - -.mx_CommunityPrototypeInviteDialog .mx_Dialog_content { - margin-bottom: 0; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_people { - position: relative; - margin-bottom: 4px; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_people - .mx_AccessibleButton { - display: inline-block; - background-color: #ddd; - border-radius: 4px; - padding: 3px 5px; - font-size: 1.2rem; - float: right; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_morePeople { - margin-top: 8px; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person { - position: relative; - margin-top: 4px; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person - > * { - vertical-align: middle; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person - .mx_Checkbox { - position: absolute; - right: 0; - top: calc(50% - 8px); - width: 16px; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person - .mx_CommunityPrototypeInviteDialog_personIdentifiers { - display: inline-block; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person - .mx_CommunityPrototypeInviteDialog_personIdentifiers - > * { - display: block; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person - .mx_CommunityPrototypeInviteDialog_personIdentifiers - .mx_CommunityPrototypeInviteDialog_personName { - font-weight: 600; - font-size: 1.4rem; - color: #2e2f32; - margin-left: 7px; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_person - .mx_CommunityPrototypeInviteDialog_personIdentifiers - .mx_CommunityPrototypeInviteDialog_personId { - font-size: 1.2rem; - color: #61708b; - margin-left: 7px; -} - -.mx_CommunityPrototypeInviteDialog - .mx_Dialog_content - .mx_CommunityPrototypeInviteDialog_primaryButton { - display: block; - font-size: 1.3rem; - line-height: 20px; - height: 20px; - margin-top: 24px; -} - -.mx_ConfirmUserActionDialog .mx_Dialog_content { - min-height: 48px; - margin-bottom: 24px; -} - -.mx_ConfirmUserActionDialog_avatar { - float: left; - margin-right: 20px; - margin-top: -2px; -} - -.mx_ConfirmUserActionDialog_name { - font-size: 1.8rem; -} - -.mx_ConfirmUserActionDialog_userId { - font-size: 1.3rem; -} - -.mx_ConfirmUserActionDialog_reasonField { - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #2e2f32; - background-color: #fff; - border-radius: 3px; - border: 1px solid #e7e7e7; - line-height: 3.6rem; - padding: 1px 16px; - margin-bottom: 24px; - width: 90%; -} - -.mx_CreateCommunityPrototypeDialog .mx_Dialog_content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - margin-bottom: 12px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName { - -ms-flex-preferred-size: 66.66%; - flex-basis: 66.66%; - padding-right: 100px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_Field - input { - font-size: 1.6rem; - line-height: 2rem; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_CreateCommunityPrototypeDialog_subtext { - display: block; - color: #61708b; - margin-bottom: 16px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_CreateCommunityPrototypeDialog_subtext:last-child { - margin-top: 16px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_CreateCommunityPrototypeDialog_subtext.mx_CreateCommunityPrototypeDialog_subtext_error { - color: #ff4b55; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_CreateCommunityPrototypeDialog_communityId { - position: relative; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_CreateCommunityPrototypeDialog_communityId - .mx_InfoTooltip { - float: right; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colName - .mx_AccessibleButton { - display: block; - height: 32px; - font-size: 1.6rem; - line-height: 32px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar { - -ms-flex-preferred-size: 33.33%; - flex-basis: 33.33%; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_avatarContainer { - margin-top: 12px; - margin-bottom: 20px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_avatarContainer - .mx_CreateCommunityPrototypeDialog_avatar, -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_avatarContainer - .mx_CreateCommunityPrototypeDialog_placeholderAvatar { - width: 96px; - height: 96px; - border-radius: 96px; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_avatarContainer - .mx_CreateCommunityPrototypeDialog_placeholderAvatar { - background-color: #368bd6; -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_avatarContainer - .mx_CreateCommunityPrototypeDialog_placeholderAvatar:before { - display: inline-block; - background-color: #fff; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 96px; - mask-size: 96px; - width: 96px; - height: 96px; - -webkit-mask-position: center; - mask-position: center; - content: ""; - vertical-align: middle; - -webkit-mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); - mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); -} - -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_tip - > b, -.mx_CreateCommunityPrototypeDialog - .mx_Dialog_content - .mx_CreateCommunityPrototypeDialog_colAvatar - .mx_CreateCommunityPrototypeDialog_tip - > span { - display: block; - color: #61708b; -} - -.mx_CreateGroupDialog_inputRow { - margin-top: 10px; - margin-bottom: 10px; -} - -.mx_CreateGroupDialog_label { - text-align: left; - padding-bottom: 12px; -} - -.mx_CreateGroupDialog_input { - font-size: 1.5rem; - border-radius: 3px; - border: 1px solid #e7e7e7; - padding: 9px; - color: #2e2f32; - background-color: #fff; -} - -.mx_CreateGroupDialog_input_hasPrefixAndSuffix { - border-radius: 0; -} - -.mx_CreateGroupDialog_input_group { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_CreateGroupDialog_prefix, -.mx_CreateGroupDialog_suffix { - padding: 0 5px; - line-height: 3.7rem; - background-color: #e3e8f0; - border: 1px solid #e7e7e7; - text-align: center; -} - -.mx_CreateGroupDialog_prefix { - border-right: 0; - border-radius: 3px 0 0 3px; -} - -.mx_CreateGroupDialog_suffix { - border-left: 0; - border-radius: 0 3px 3px 0; -} - -.mx_CreateRoomDialog_details { - margin-top: 15px; -} - -.mx_CreateRoomDialog_details .mx_CreateRoomDialog_details_summary { - outline: none; - list-style: none; - font-weight: 600; - cursor: pointer; - color: #0dbd8b; -} - -.mx_CreateRoomDialog_details - .mx_CreateRoomDialog_details_summary::-webkit-details-marker { - display: none; -} - -.mx_CreateRoomDialog_details > div { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - margin: 5px 0; -} - -.mx_CreateRoomDialog_details > div input[type="checkbox"] { - margin-right: 10px; -} - -.mx_CreateRoomDialog_label { - text-align: left; - padding-bottom: 12px; -} - -.mx_CreateRoomDialog_input_container { - padding-right: 20px; -} - -.mx_CreateRoomDialog_input { - font-size: 1.5rem; - border-radius: 3px; - border: 1px solid #e7e7e7; - padding: 9px; - color: #2e2f32; - background-color: #fff; - width: 100%; -} - -.mx_CreateRoomDialog_aliasContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: 24px 0 10px; -} - -.mx_CreateRoomDialog_aliasContainer .mx_RoomAliasField { - margin: 0; -} - -.mx_CreateRoomDialog.mx_Dialog_fixedWidth { - width: 450px; -} - -.mx_CreateRoomDialog .mx_Dialog_content { - margin-bottom: 40px; -} - -.mx_CreateRoomDialog .mx_Field_input label, -.mx_CreateRoomDialog p { - color: #61708b; -} - -.mx_CreateRoomDialog .mx_SettingsFlag { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_CreateRoomDialog .mx_SettingsFlag_label { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - min-width: 0; - font-weight: 600; -} - -.mx_CreateRoomDialog .mx_ToggleSwitch { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-left: 30px; -} - -.mx_CreateRoomDialog .mx_Dialog_content > .mx_SettingsFlag { - margin-top: 24px; -} - -.mx_CreateRoomDialog p { - margin: 0 85px 0 0; - font-size: 1.2rem; -} - -.mx_CreateRoomDialog .mx_Dropdown { - margin-bottom: 8px; - font-weight: 400; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #2e2f32; -} - -.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_input { - border: 1px solid #e7e7e7; -} - -.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_option { - font-size: 1.4rem; - line-height: 3.2rem; - height: 32px; - min-height: 32px; -} - -.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_option > div { - padding-left: 30px; - position: relative; -} - -.mx_CreateRoomDialog .mx_Dropdown .mx_Dropdown_option > div:before { - content: ""; - position: absolute; - height: 16px; - width: 16px; - left: 6px; - top: 8px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #737d8c; -} - -.mx_CreateRoomDialog .mx_Dropdown .mx_CreateRoomDialog_dropdown_invite:before { - -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); - mask-image: url(../../img/element-icons/lock.1f264bd.svg); - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_CreateRoomDialog .mx_Dropdown .mx_CreateRoomDialog_dropdown_public:before { - -webkit-mask-image: url(../../img/globe.8201f08.svg); - mask-image: url(../../img/globe.8201f08.svg); - -webkit-mask-size: 12px; - mask-size: 12px; -} - -.mx_CreateRoomDialog - .mx_Dropdown - .mx_CreateRoomDialog_dropdown_restricted:before { - -webkit-mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); - mask-image: url(../../img/element-icons/community-members.cbb31c1.svg); - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_DeactivateAccountDialog .mx_Dialog_content { - margin-bottom: 30px; -} - -.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { - margin-top: 60px; -} - -.mx_DeactivateAccountDialog - .mx_DeactivateAccountDialog_input_section - .mx_Field { - width: 300px; -} - -.mx_DevTools_content { - margin: 10px 0; -} - -.mx_DevTools_ServersInRoomList_button { - cursor: default !important; -} - -.mx_DevTools_RoomStateExplorer_query { - margin-bottom: 10px; -} - -.mx_DevTools_RoomStateExplorer_button, -.mx_DevTools_ServersInRoomList_button { - margin-bottom: 10px; - width: 100%; -} - -.mx_DevTools_label_left { - float: left; -} - -.mx_DevTools_label_right { - float: right; -} - -.mx_DevTools_label_bottom { - clear: both; - border-bottom: 1px solid #e5e5e5; -} - -.mx_DevTools_inputRow { - display: table-row; -} - -.mx_DevTools_inputLabelCell { - display: table-cell; - font-weight: 700; - padding-right: 24px; -} - -.mx_DevTools_inputCell { - display: table-cell; - width: 240px; -} - -.mx_DevTools_inputCell input { - display: inline-block; - border: 0; - border-bottom: 1px solid hsla(0, 0%, 59.2%, 0.5); - padding: 0; - width: 240px; - color: rgba(74, 74, 74, 0.9); - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.6rem; -} - -.mx_DevTools_textarea { - font-size: 1.2rem; - max-width: 684px; - min-height: 250px; - padding: 10px; -} - -.mx_DevTools_eventTypeStateKeyGroup { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} - -.mx_DevTools_content .mx_Field_input:first-of-type { - margin-right: 42px; -} - -.mx_DevTools_tgl { - display: none; -} - -.mx_DevTools_tgl, -.mx_DevTools_tgl *, -.mx_DevTools_tgl + .mx_DevTools_tgl-btn, -.mx_DevTools_tgl:after, -.mx_DevTools_tgl :after, -.mx_DevTools_tgl:before, -.mx_DevTools_tgl :before { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_DevTools_tgl + .mx_DevTools_tgl-btn::-moz-selection, -.mx_DevTools_tgl::-moz-selection, -.mx_DevTools_tgl ::-moz-selection, -.mx_DevTools_tgl:after::-moz-selection, -.mx_DevTools_tgl :after::-moz-selection, -.mx_DevTools_tgl:before::-moz-selection, -.mx_DevTools_tgl :before::-moz-selection { - background: none; -} - -.mx_DevTools_tgl + .mx_DevTools_tgl-btn::selection, -.mx_DevTools_tgl::selection, -.mx_DevTools_tgl ::selection, -.mx_DevTools_tgl:after::selection, -.mx_DevTools_tgl :after::selection, -.mx_DevTools_tgl:before::selection, -.mx_DevTools_tgl :before::selection { - background: none; -} - -.mx_DevTools_tgl + .mx_DevTools_tgl-btn { - outline: 0; - display: block; - width: 7em; - height: 2em; - position: relative; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after, -.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { - position: relative; - display: block; - content: ""; - width: 50%; - height: 100%; -} - -.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after { - left: 0; -} - -.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { - display: none; -} - -.mx_DevTools_tgl:checked + .mx_DevTools_tgl-btn:after { - left: 50%; -} - -.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn { - padding: 2px; - -webkit-transition: all 0.2s ease; - transition: all 0.2s ease; - font-family: sans-serif; - -webkit-perspective: 100px; - perspective: 100px; -} - -.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, -.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { - display: inline-block; - -webkit-transition: all 0.4s ease; - transition: all 0.4s ease; - width: 100%; - text-align: center; - position: absolute; - line-height: 2em; - font-weight: 700; - color: #fff; - top: 0; - left: 0; - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - border-radius: 4px; -} - -.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { - content: attr(data-tg-on); - background: #02c66f; - -webkit-transform: rotateY(-180deg); - transform: rotateY(-180deg); -} - -.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { - background: #ff3a19; - content: attr(data-tg-off); -} - -.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { - -webkit-transform: rotateY(-20deg); - transform: rotateY(-20deg); -} - -.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { - -webkit-transform: rotateY(180deg); - transform: rotateY(180deg); -} - -.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { - -webkit-transform: rotateY(0); - transform: rotateY(0); - left: 0; - background: #7fc6a6; -} - -.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { - -webkit-transform: rotateY(20deg); - transform: rotateY(20deg); -} - -.mx_DevTools_VerificationRequest { - border: 1px solid #ccc; - border-radius: 3px; - padding: 1px 5px; - margin-bottom: 6px; - font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, - monospace; -} - -.mx_DevTools_VerificationRequest dl { - display: grid; - grid-template-columns: -webkit-max-content auto; - grid-template-columns: max-content auto; - margin: 0; -} - -.mx_DevTools_VerificationRequest dd { - grid-column-start: 2; -} - -.mx_DevTools_VerificationRequest dd:empty { - color: #666; -} - -.mx_DevTools_VerificationRequest dd:empty:after { - content: "(empty)"; -} - -.mx_DevTools_VerificationRequest dt { - font-weight: 700; - grid-column-start: 1; -} - -.mx_DevTools_VerificationRequest dt:after { - content: ":"; -} - -.mx_DevTools_SettingsExplorer table { - width: 100%; - table-layout: fixed; - border-collapse: collapse; -} - -.mx_DevTools_SettingsExplorer table th { - border-bottom: 1px solid #0dbd8b; - text-align: left; -} - -.mx_DevTools_SettingsExplorer table td, -.mx_DevTools_SettingsExplorer table th { - width: 360px; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_DevTools_SettingsExplorer table td + td, -.mx_DevTools_SettingsExplorer table th + th { - width: auto; -} - -.mx_DevTools_SettingsExplorer table tr:hover { - background-color: rgba(13, 189, 139, 0.5); -} - -.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_mutable { - background-color: #0dbd8b; -} - -.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_immutable { - background-color: #ff4b55; -} - -.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_edit { - float: right; - margin-right: 16px; -} - -.mx_DevTools_SettingsExplorer .mx_DevTools_SettingsExplorer_warning { - border: 2px solid #ff4b55; - border-radius: 4px; - padding: 4px; - margin-bottom: 8px; -} - -.mx_EditCommunityPrototypeDialog.mx_Dialog_fixedWidth { - width: 360px; -} - -.mx_EditCommunityPrototypeDialog .mx_Dialog_content { - margin-bottom: 12px; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_AccessibleButton.mx_AccessibleButton_kind_primary { - display: block; - height: 32px; - font-size: 1.6rem; - line-height: 32px; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_rowAvatar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_avatarContainer { - margin-top: 20px; - margin-bottom: 20px; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_avatarContainer - .mx_EditCommunityPrototypeDialog_avatar, -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_avatarContainer - .mx_EditCommunityPrototypeDialog_placeholderAvatar { - width: 96px; - height: 96px; - border-radius: 96px; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_avatarContainer - .mx_EditCommunityPrototypeDialog_placeholderAvatar { - background-color: #368bd6; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_avatarContainer - .mx_EditCommunityPrototypeDialog_placeholderAvatar:before { - display: inline-block; - background-color: #fff; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 96px; - mask-size: 96px; - width: 96px; - height: 96px; - -webkit-mask-position: center; - mask-position: center; - content: ""; - vertical-align: middle; - -webkit-mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); - mask-image: url(../../img/element-icons/add-photo.c0b4c3b.svg); -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_tip { - margin-left: 20px; -} - -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_tip - > b, -.mx_EditCommunityPrototypeDialog - .mx_Dialog_content - .mx_EditCommunityPrototypeDialog_tip - > span { - display: block; - color: #61708b; -} - -.mx_ExportDialog .mx_ExportDialog_subheading { - font-size: 1.6rem; - display: block; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-weight: 600; - color: #2e2f32; - margin-top: 18px; - margin-bottom: 12px; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting .mx_ExportDialog_options { - pointer-events: none; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_select:before { - display: none; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting - .mx_RadioButton - input[type="radio"]:checked - + div - > div { - background: grey; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting - .mx_RadioButton - input[type="radio"]:checked - + div { - border-color: unset; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting - .mx_Field_valid.mx_Field:focus-within - label, -.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field label { - color: unset; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting .mx_Field_valid.mx_Field, -.mx_ExportDialog.mx_ExportDialog_Exporting - .mx_Field_valid.mx_Field:focus-within { - border-color: #e7e7e7; -} - -.mx_ExportDialog.mx_ExportDialog_Exporting - .mx_Checkbox - input[type="checkbox"]:checked - + label - > .mx_Checkbox_background { - background: grey; - border-color: grey; -} - -.mx_ExportDialog .mx_ExportDialog_progress .mx_Dialog_buttons { - margin-top: unset; - margin-left: 18px; -} - -.mx_ExportDialog .mx_ExportDialog_progress .mx_ExportDialog_spinner { - -webkit-animation: mx_rotate 2s linear infinite; - animation: mx_rotate 2s linear infinite; - z-index: 2; - position: relative; - margin-right: 10px; - width: 24px; - height: 24px; -} - -.mx_ExportDialog - .mx_ExportDialog_progress - .mx_ExportDialog_spinner - .mx_ExportDialog_spinner_path { - stroke: #0dbd8b; - stroke-linecap: round; - -webkit-animation: mx_dash 1.5s ease-in-out infinite; - animation: mx_dash 1.5s ease-in-out infinite; -} - -.mx_ExportDialog .mx_ExportDialog_progress { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_ExportDialog .mx_RadioButton > .mx_RadioButton_content { - margin-top: 5px; - margin-bottom: 5px; -} - -.mx_ExportDialog .mx_Field { - width: 256px; -} - -.mx_ExportDialog .mx_Field_postfix { - padding: 9px 10px; -} - -@-webkit-keyframes mx_rotate { - to { - -webkit-transform: rotate(1turn); - transform: rotate(1turn); - } -} - -@keyframes mx_rotate { - to { - -webkit-transform: rotate(1turn); - transform: rotate(1turn); - } -} - -@-webkit-keyframes mx_dash { - 0% { - stroke-dasharray: 1, 150; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 90, 150; - stroke-dashoffset: -35; - } - to { - stroke-dasharray: 90, 150; - stroke-dashoffset: -124; - } -} - -@keyframes mx_dash { - 0% { - stroke-dasharray: 1, 150; - stroke-dashoffset: 0; - } - 50% { - stroke-dasharray: 90, 150; - stroke-dashoffset: -35; - } - to { - stroke-dasharray: 90, 150; - stroke-dashoffset: -124; - } -} - -.mx_FeedbackDialog hr { - margin: 24px 0; - border-color: #e7e7e7; -} - -.mx_FeedbackDialog .mx_Dialog_content { - margin-bottom: 24px; -} - -.mx_FeedbackDialog .mx_Dialog_content > h2 { - margin-bottom: 32px; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section { - position: relative; - padding-left: 52px; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section > p { - color: #8d99a5; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link { - padding: 0; - font-size: inherit; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section .mx_AccessibleButton_kind_link, -.mx_FeedbackDialog .mx_FeedbackDialog_section a { - color: #0dbd8b; - text-decoration: underline; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section:after, -.mx_FeedbackDialog .mx_FeedbackDialog_section:before { - content: ""; - position: absolute; - width: 40px; - height: 40px; - left: 0; - top: 0; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section:before { - background-color: #c1c6cd; - border-radius: 20px; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_section:after { - background: #fff; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 24px; - mask-size: 24px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_reportBug:after { - -webkit-mask-image: url(../../img/feather-customised/bug.3dc7afa.svg); - mask-image: url(../../img/feather-customised/bug.3dc7afa.svg); -} - -.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - font-size: 20px; - -webkit-transition: font-size 1s, border 0.5s; - transition: font-size 1s, border 0.5s; - border-radius: 50%; - border: 2px solid transparent; - margin-top: 12px; - margin-bottom: 24px; - vertical-align: top; - cursor: pointer; -} - -.mx_FeedbackDialog - .mx_FeedbackDialog_rateApp - .mx_RadioButton - input[type="radio"] - + div { - display: none; -} - -.mx_FeedbackDialog - .mx_FeedbackDialog_rateApp - .mx_RadioButton - .mx_RadioButton_content { - background: #c1c6cd; - width: 40px; - height: 40px; - text-align: center; - line-height: 40px; - border-radius: 20px; - margin: 5px; -} - -.mx_FeedbackDialog - .mx_FeedbackDialog_rateApp - .mx_RadioButton - .mx_RadioButton_spacer { - display: none; -} - -.mx_FeedbackDialog - .mx_FeedbackDialog_rateApp - .mx_RadioButton - + .mx_RadioButton { - margin-left: 16px; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_rateApp .mx_RadioButton_checked { - font-size: 24px; - border-color: #0dbd8b; -} - -.mx_FeedbackDialog .mx_FeedbackDialog_rateApp:after { - -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); - mask-image: url(../../img/element-icons/feedback.a91241e.svg); -} - -.mx_ForwardDialog { - width: 520px; - color: #2e2f32; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - min-height: 0; - height: 80vh; -} - -.mx_ForwardDialog > h3 { - margin: 0 0 6px; - color: #737d8c; - font-size: 1.2rem; - font-weight: 600; - line-height: 1.5rem; -} - -.mx_ForwardDialog > .mx_ForwardDialog_preview { - max-height: 30%; - -ms-flex-negative: 0; - flex-shrink: 0; - overflow-y: auto; -} - -.mx_ForwardDialog - > .mx_ForwardDialog_preview - .mx_EventTile[data-layout="bubble"] { - margin-top: 20px; -} - -.mx_ForwardDialog > .mx_ForwardDialog_preview div { - pointer-events: none; -} - -.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_e2eIcon_unencrypted, -.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_EventTile_msgOption, -.mx_ForwardDialog > .mx_ForwardDialog_preview .mx_MFileBody_download { - display: none; -} - -.mx_ForwardDialog > hr { - width: 100%; - border: none; - border-top: 1px solid #e7e7e7; - margin: 12px 0; -} - -.mx_ForwardDialog > .mx_ForwardList { - display: contents; -} - -.mx_ForwardDialog > .mx_ForwardList .mx_SearchBox { - margin: 0 0 15px; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; -} - -.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_content { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_noResults { - display: block; - margin-top: 24px; -} - -.mx_ForwardDialog > .mx_ForwardList .mx_ForwardList_results:not(:first-child) { - margin-top: 24px; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - height: 32px; - padding: 6px; - border-radius: 8px; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry:hover { - background-color: hsla(0, 0%, 91%, 0.77); -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_roomButton { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-right: 12px; - min-width: 0; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_roomButton - .mx_DecoratedRoomAvatar { - margin-right: 12px; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_roomButton - .mx_ForwardList_entry_name { - font-size: 1.5rem; - line-height: 30px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - margin-right: 12px; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton { - position: relative; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton:not(.mx_ForwardList_canSend) - .mx_ForwardList_sendLabel { - visibility: hidden; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton - .mx_ForwardList_sendIcon, -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton - .mx_NotificationBadge { - position: absolute; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton - .mx_NotificationBadge { - background-color: #fff; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton.mx_ForwardList_sending - .mx_ForwardList_sendIcon { - background-color: #0dbd8b; - -webkit-mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); - mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 14px; - mask-size: 14px; - width: 14px; - height: 14px; -} - -.mx_ForwardDialog - > .mx_ForwardList - .mx_ForwardList_results - .mx_ForwardList_entry - .mx_ForwardList_sendButton.mx_ForwardList_sent - .mx_ForwardList_sendIcon { - background-color: #0dbd8b; - -webkit-mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); - mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 14px; - mask-size: 14px; - width: 14px; - height: 14px; -} - -.mx_GroupAddressPicker_checkboxContainer { - margin-top: 10px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_HostSignupDialog { - width: 90vw; - max-width: 580px; - height: 80vh; - max-height: 600px; - background-color: #fff; -} - -.mx_HostSignupDialog .mx_HostSignupDialog_info { - text-align: center; -} - -.mx_HostSignupDialog - .mx_HostSignupDialog_info - .mx_HostSignupDialog_content_top { - margin-bottom: 24px; -} - -.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_paragraphs { - text-align: left; - padding-left: 25%; - padding-right: 25%; -} - -.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_buttons { - margin-bottom: 24px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_HostSignupDialog - .mx_HostSignupDialog_info - .mx_HostSignupDialog_buttons - button { - padding: 12px; - margin: 0 16px; -} - -.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; -} - -.mx_HostSignupDialog .mx_HostSignupDialog_info .mx_HostSignupDialog_footer img { - padding-right: 5px; -} - -.mx_HostSignupDialog iframe { - width: 100%; - height: 100%; - border: none; - background-color: #fff; - min-height: 540px; -} - -.mx_HostSignupDialog_text_dark { - color: #2e2f32; -} - -.mx_HostSignupDialog_text_light { - color: #737d8c; -} - -.mx_HostSignup_maximize_button { - -webkit-mask: url(../../img/feather-customised/maximise.dc32127.svg); - mask: url(../../img/feather-customised/maximise.dc32127.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - right: 10px; -} - -.mx_HostSignup_maximize_button, -.mx_HostSignup_minimize_button { - width: 14px; - height: 14px; - background-color: #c1c1c1; - cursor: pointer; - position: absolute; - top: 10px; -} - -.mx_HostSignup_minimize_button { - -webkit-mask: url(../../img/feather-customised/minimise.aec9142.svg); - mask: url(../../img/feather-customised/minimise.aec9142.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - right: 25px; -} - -.mx_HostSignup_persisted { - width: 90vw; - max-width: 580px; - height: 80vh; - max-height: 600px; - top: 0; - left: 0; - position: fixed; - display: none; -} - -.mx_HostSignupDialog_minimized { - position: fixed; - bottom: 80px; - right: 26px; - width: 314px; - height: 217px; - overflow: hidden; -} - -.mx_HostSignupDialog_minimized.mx_Dialog { - padding: 12px; -} - -.mx_HostSignupDialog_minimized .mx_Dialog_title { - text-align: left !important; - padding-left: 20px; - font-size: 1.5rem; -} - -.mx_HostSignupDialog_minimized iframe { - width: 100%; - height: 100%; - border: none; - background-color: #fff; -} - -.mx_IncomingSasDialog_opponentProfile_image { - position: relative; -} - -.mx_IncomingSasDialog_opponentProfile h2 { - display: inline-block; - margin-left: 10px; -} - -.mx_InviteDialog_transferWrapper .mx_Dialog { - padding-bottom: 16px; -} - -.mx_InviteDialog_addressBar { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - margin: 8px 45px 0 0; -} - -.mx_InviteDialog_addressBar .mx_InviteDialog_editor { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - width: 100%; - background-color: #f3f8fd; - border-radius: 4px; - min-height: 25px; - padding-left: 8px; - overflow-x: hidden; - overflow-y: auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} - -.mx_InviteDialog_addressBar .mx_InviteDialog_editor .mx_InviteDialog_userTile { - margin: 6px 6px 0 0; - display: inline-block; - min-width: -webkit-max-content; - min-width: -moz-max-content; - min-width: max-content; -} - -.mx_InviteDialog_addressBar .mx_InviteDialog_editor > input[type="text"] { - margin: 6px 0 !important; - height: 24px; - line-height: 2.4rem; - font-size: 1.4rem; - padding-left: 12px; - border: 0 !important; - outline: 0 !important; - resize: none; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-width: 40%; - -webkit-box-flex: 1 !important; - -ms-flex: 1 !important; - flex: 1 !important; - color: #2e2f32 !important; -} - -.mx_InviteDialog_addressBar .mx_InviteDialog_goButton { - min-width: 48px; - margin-left: 10px; - height: 25px; - line-height: 2.5rem; -} - -.mx_InviteDialog_addressBar .mx_InviteDialog_buttonAndSpinner .mx_Spinner { - width: 20px; - height: 20px; - margin-left: 5px; - display: inline-block; - vertical-align: middle; -} - -.mx_InviteDialog_section { - padding-bottom: 4px; -} - -.mx_InviteDialog_section h3 { - font-size: 1.2rem; - color: #61708b; - font-weight: 700; - text-transform: uppercase; -} - -.mx_InviteDialog_section > p { - margin: 0; -} - -.mx_InviteDialog_section > span { - color: #2e2f32; -} - -.mx_InviteDialog_section .mx_InviteDialog_subname { - margin-bottom: 10px; - margin-top: -10px; - font-size: 1.2rem; - color: #61708b; -} - -.mx_InviteDialog_section_hidden_suggestions_disclaimer { - padding: 8px 0 16px; - font-size: 1.4rem; -} - -.mx_InviteDialog_section_hidden_suggestions_disclaimer > span { - color: #2e2f32; - font-weight: 600; -} - -.mx_InviteDialog_section_hidden_suggestions_disclaimer > p { - margin: 0; -} - -.mx_InviteDialog_footer { - border-top: 1px solid #e7e7e7; -} - -.mx_InviteDialog_footer > h3 { - margin: 12px 0; - font-size: 1.2rem; - color: #61708b; - font-weight: 700; - text-transform: uppercase; -} - -.mx_InviteDialog_footer .mx_InviteDialog_footer_link { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - border-radius: 4px; - border: 1px solid #747474; - padding: 8px; -} - -.mx_InviteDialog_footer .mx_InviteDialog_footer_link > a { - text-decoration: none; - -ms-flex-negative: 1; - flex-shrink: 1; - overflow: hidden; - text-overflow: ellipsis; -} - -.mx_InviteDialog_footer .mx_InviteDialog_footer_link_copy { - -ms-flex-negative: 0; - flex-shrink: 0; - cursor: pointer; - margin-left: 20px; - display: inherit; -} - -.mx_InviteDialog_footer .mx_InviteDialog_footer_link_copy > div { - -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - background-color: #2e2f32; - margin-left: 5px; - width: 20px; - height: 20px; - background-repeat: no-repeat; -} - -.mx_InviteDialog_roomTile { - cursor: pointer; - padding: 5px 10px; -} - -.mx_InviteDialog_roomTile:hover { - background-color: #f3f8fd; - border-radius: 4px; -} - -.mx_InviteDialog_roomTile * { - vertical-align: middle; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack { - display: inline-block; - position: relative; - width: 36px; - height: 36px; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_avatarStack > * { - position: absolute; - top: 0; - left: 0; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected { - width: 36px; - height: 36px; - border-radius: 36px; - background-color: #368bd6; - display: inline-block; - position: relative; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_selected:before { - content: ""; - width: 24px; - height: 24px; - grid-column: 1; - grid-row: 1; - -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); - mask-image: url(../../img/feather-customised/check.5745b4e.svg); - -webkit-mask-size: 100%; - mask-size: 100%; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - position: absolute; - top: 6px; - left: 6px; - background-color: #fff; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_nameStack { - display: inline-block; - overflow: hidden; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name { - font-weight: 600; - font-size: 1.4rem; - color: #2e2f32; - margin-left: 7px; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId { - font-size: 1.2rem; - color: #61708b; - margin-left: 7px; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_name, -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_userId { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_time { - text-align: right; - font-size: 1.2rem; - color: #61708b; - float: right; - line-height: 3.6rem; -} - -.mx_InviteDialog_roomTile .mx_InviteDialog_roomTile_highlight { - font-weight: 900; -} - -.mx_InviteDialog_userTile { - margin-right: 8px; -} - -.mx_InviteDialog_userTile .mx_InviteDialog_userTile_pill { - background-color: #368bd6; - border-radius: 12px; - display: inline-block; - height: 24px; - line-height: 2.4rem; - padding-left: 8px; - padding-right: 8px; - color: #fff; -} - -.mx_InviteDialog_userTile - .mx_InviteDialog_userTile_pill - .mx_InviteDialog_userTile_avatar { - border-radius: 20px; - position: relative; - left: -5px; - top: 2px; -} - -.mx_InviteDialog_userTile - .mx_InviteDialog_userTile_pill - .mx_InviteDialog_userTile_name, -.mx_InviteDialog_userTile - .mx_InviteDialog_userTile_pill - img.mx_InviteDialog_userTile_avatar { - vertical-align: top; -} - -.mx_InviteDialog_userTile - .mx_InviteDialog_userTile_pill - .mx_InviteDialog_userTile_threepidAvatar { - background-color: #fff; -} - -.mx_InviteDialog_userTile .mx_InviteDialog_userTile_remove { - display: inline-block; - margin-left: 4px; -} - -.mx_InviteDialog_other { - height: 600px; - padding-left: 20px; -} - -.mx_InviteDialog_other .mx_InviteDialog_userSections { - height: calc(100% - 115px); -} - -.mx_InviteDialog_content { - height: calc(100% - 36px); - overflow: hidden; -} - -.mx_InviteDialog_transfer { - width: 496px; - height: 466px; -} - -.mx_InviteDialog_transfer, -.mx_InviteDialog_transfer .mx_InviteDialog_content { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_InviteDialog_transfer .mx_InviteDialog_content .mx_TabbedView { - height: calc(100% - 60px); -} - -.mx_InviteDialog_transfer .mx_InviteDialog_content { - overflow: visible; -} - -.mx_InviteDialog_transfer .mx_InviteDialog_addressBar { - margin-top: 8px; -} - -.mx_InviteDialog_transfer input[type="checkbox"] { - margin-right: 8px; -} - -.mx_InviteDialog_userSections { - margin-top: 4px; - overflow-y: auto; - padding: 0 45px 4px 0; -} - -.mx_InviteDialog_hasFooter .mx_InviteDialog_userSections { - height: calc(100% - 175px); -} - -.mx_InviteDialog_helpText { - margin: 0; -} - -.mx_InviteDialog_helpText .mx_AccessibleButton_kind_link { - padding: 0; -} - -.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField { - border-top: 0; - border-left: 0; - border-right: 0; - border-radius: 0; - margin-top: 0; - border-color: #c1c6cd; -} - -.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField input { - font-size: 18px; - font-weight: 600; - padding-top: 0; -} - -.mx_InviteDialog_dialPad .mx_InviteDialog_dialPadField:focus-within { - border-color: #0dbd8b; -} - -.mx_InviteDialog_dialPadField .mx_Field_postfix { - border-left: none; -} - -.mx_InviteDialog_dialPad { - width: 224px; - margin-top: 16px; - margin-left: auto; - margin-right: auto; -} - -.mx_InviteDialog_dialPad .mx_DialPad { - grid-row-gap: 16px; - row-gap: 16px; - grid-column-gap: 48px; - -webkit-column-gap: 48px; - -moz-column-gap: 48px; - column-gap: 48px; - margin-left: auto; - margin-right: auto; -} - -.mx_InviteDialog_transferConsultConnect { - padding-top: 16px; - position: relative; - width: 496px; - left: -24px; - padding-left: 24px; - padding-right: 24px; - border-top: 1px solid #e3e8f0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_InviteDialog_transferConsultConnect_pushRight { - margin-left: auto; -} - -.mx_InviteDialog_userDirectoryIcon:before { - -webkit-mask-image: url(../../img/voip/tab-userdirectory.cc3ed9a.svg); - mask-image: url(../../img/voip/tab-userdirectory.cc3ed9a.svg); -} - -.mx_InviteDialog_dialPadIcon:before { - -webkit-mask-image: url(../../img/voip/tab-dialpad.a4a190e.svg); - mask-image: url(../../img/voip/tab-dialpad.a4a190e.svg); -} - -.mx_InviteDialog_multiInviterError > h4 { - font-size: 1.5rem; - line-height: 2.4rem; - color: #737d8c; - font-weight: 400; -} - -.mx_InviteDialog_multiInviterError - > div - .mx_InviteDialog_multiInviterError_entry { - margin-bottom: 24px; -} - -.mx_InviteDialog_multiInviterError - > div - .mx_InviteDialog_multiInviterError_entry - .mx_InviteDialog_multiInviterError_entry_userProfile - .mx_InviteDialog_multiInviterError_entry_name { - margin-left: 6px; - font-size: 1.5rem; - line-height: 2.4rem; - font-weight: 600; - color: #2e2f32; -} - -.mx_InviteDialog_multiInviterError - > div - .mx_InviteDialog_multiInviterError_entry - .mx_InviteDialog_multiInviterError_entry_userProfile - .mx_InviteDialog_multiInviterError_entry_userId { - margin-left: 6px; - font-size: 1.2rem; - line-height: 1.5rem; - color: #8d99a5; -} - -.mx_InviteDialog_multiInviterError - > div - .mx_InviteDialog_multiInviterError_entry - .mx_InviteDialog_multiInviterError_entry_error { - margin-left: 32px; - font-size: 1.5rem; - line-height: 2.4rem; - color: #ff4b55; -} - -.mx_KeyboardShortcutsDialog { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin-bottom: -50px; - max-height: 1100px; -} - -.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category { - width: 33.3333%; - margin: 0 0 40px; -} - -.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_category > div { - padding-left: 5px; -} - -.mx_KeyboardShortcutsDialog h3 { - margin: 0 0 10px; -} - -.mx_KeyboardShortcutsDialog h5 { - margin: 15px 0 5px; - font-weight: 400; -} - -.mx_KeyboardShortcutsDialog kbd { - padding: 5px; - border-radius: 4px; - background-color: #f3f8fd; - margin-right: 5px; - min-width: 20px; - text-align: center; - display: inline-block; - border: 1px solid #e9edf1; - -webkit-box-shadow: 0 2px #e9edf1; - box-shadow: 0 2px #e9edf1; - margin-bottom: 4px; - text-transform: capitalize; -} - -.mx_KeyboardShortcutsDialog kbd + kbd { - margin-left: 5px; -} - -.mx_KeyboardShortcutsDialog .mx_KeyboardShortcutsDialog_inline div { - display: inline; -} - -.mx_ManageRestrictedJoinRuleDialog, -.mx_ManageRestrictedJoinRuleDialog_wrapper .mx_Dialog { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_ManageRestrictedJoinRuleDialog { - width: 480px; - color: #2e2f32; - -ms-flex-wrap: nowrap; - flex-wrap: nowrap; - min-height: 0; - height: 60vh; -} - -.mx_ManageRestrictedJoinRuleDialog .mx_SearchBox { - margin: 0 0 15px; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; -} - -.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_content { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_noResults { - display: block; - margin-top: 24px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section:not(:first-child) { - margin-top: 24px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - > h3 { - margin: 0; - color: #737d8c; - font-size: 1.2rem; - font-weight: 600; - line-height: 1.5rem; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 12px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry - > div { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry - .mx_RoomAvatar_isSpaceRoom - img, -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry - img.mx_RoomAvatar_isSpaceRoom { - border-radius: 4px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry - .mx_ManageRestrictedJoinRuleDialog_entry_name { - margin: 0 8px; - font-size: 1.5rem; - line-height: 30px; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry - .mx_ManageRestrictedJoinRuleDialog_entry_description { - margin-top: 8px; - font-size: 1.2rem; - line-height: 1.5rem; - color: #8d99a5; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section - .mx_ManageRestrictedJoinRuleDialog_entry - .mx_Checkbox { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section_spaces - .mx_BaseAvatar { - margin-right: 12px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section_spaces - .mx_BaseAvatar_image { - border-radius: 8px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section_info { - position: relative; - border-radius: 8px; - margin: 12px 0; - padding: 8px 8px 8px 42px; - background-color: #f3f8fd; - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_section_info:before { - content: ""; - position: absolute; - left: 10px; - top: calc(50% - 8px); - height: 16px; - width: 16px; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - mask-image: url(../../img/element-icons/room/room-summary.1ad0865.svg); - -webkit-mask-position: center; - mask-position: center; -} - -.mx_ManageRestrictedJoinRuleDialog .mx_ManageRestrictedJoinRuleDialog_footer { - margin-top: 20px; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_footer - .mx_ManageRestrictedJoinRuleDialog_footer_buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; - margin-left: auto; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_footer - .mx_ManageRestrictedJoinRuleDialog_footer_buttons - .mx_AccessibleButton { - display: inline-block; -} - -.mx_ManageRestrictedJoinRuleDialog - .mx_ManageRestrictedJoinRuleDialog_footer - .mx_ManageRestrictedJoinRuleDialog_footer_buttons - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 24px; -} - -.mx_MessageEditHistoryDialog .mx_Dialog_header > .mx_Dialog_title { - text-align: center; -} - -.mx_MessageEditHistoryDialog { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-height: 60vh; -} - -.mx_MessageEditHistoryDialog_scrollPanel { - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; -} - -.mx_MessageEditHistoryDialog_error { - color: #ff4b55; - text-align: center; -} - -.mx_MessageEditHistoryDialog_edits { - list-style-type: none; - font-size: 1.4rem; - padding: 0; - color: #2e2f32; -} - -.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_deletion, -.mx_MessageEditHistoryDialog_edits span.mx_EditHistoryMessage_insertion { - padding: 0 2px; -} - -.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_deletion { - color: #ff4c55; - background-color: rgba(255, 76, 85, 0.1); - text-decoration: line-through; -} - -.mx_MessageEditHistoryDialog_edits .mx_EditHistoryMessage_insertion { - color: #1aa97b; - background-color: rgba(26, 169, 123, 0.1); - text-decoration: underline; -} - -.mx_MessageEditHistoryDialog_edits .mx_EventTile_content, -.mx_MessageEditHistoryDialog_edits .mx_EventTile_line { - margin-right: 0; -} - -.mx_MessageEditHistoryDialog_edits .mx_MessageActionBar .mx_AccessibleButton { - font-size: 1rem; - padding: 0 8px; -} - -.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning { - margin-bottom: 24px; -} - -.mx_ModalWidgetDialog .mx_ModalWidgetDialog_warning > img { - vertical-align: middle; - margin-right: 8px; -} - -.mx_ModalWidgetDialog .mx_ModalWidgetDialog_buttons { - float: right; - margin-top: 24px; -} - -.mx_ModalWidgetDialog - .mx_ModalWidgetDialog_buttons - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 8px; -} - -.mx_ModalWidgetDialog iframe { - width: 100%; - height: 450px; - border: 0; - border-radius: 8px; -} - -.mx_NewSessionReviewDialog_header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-top: 0; -} - -.mx_NewSessionReviewDialog_headerIcon { - width: 24px; - height: 24px; - margin-right: 4px; - position: relative; -} - -.mx_NewSessionReviewDialog_deviceName { - font-weight: 600; -} - -.mx_NewSessionReviewDialog_deviceID { - font-size: 1.2rem; - color: #8d99a5; -} - -.mx_RegistrationEmailPromptDialog { - width: 417px; -} - -.mx_RegistrationEmailPromptDialog .mx_Dialog_content { - margin-bottom: 24px; - color: #8d99a5; -} - -.mx_RegistrationEmailPromptDialog .mx_Dialog_primary { - width: 100%; -} - -.mx_RoomSettingsDialog_settingsIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_RoomSettingsDialog_securityIcon:before { - -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); - mask-image: url(../../img/element-icons/security.66f2fa6.svg); -} - -.mx_RoomSettingsDialog_rolesIcon:before { - -webkit-mask-image: url(../../img/element-icons/room/settings/roles.bad9a9e.svg); - mask-image: url(../../img/element-icons/room/settings/roles.bad9a9e.svg); -} - -.mx_RoomSettingsDialog_notificationsIcon:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); -} - -.mx_RoomSettingsDialog_bridgesIcon:before { - -webkit-mask-image: url(../../img/feather-customised/bridge.b2ca042.svg); - mask-image: url(../../img/feather-customised/bridge.b2ca042.svg); -} - -.mx_RoomSettingsDialog_warningIcon:before { - -webkit-mask-image: url(../../img/element-icons/room/settings/advanced.e079c15.svg); - mask-image: url(../../img/element-icons/room/settings/advanced.e079c15.svg); -} - -.mx_RoomSettingsDialog .mx_Dialog_title { - -ms-text-overflow: ellipsis; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - margin: 0 auto; - padding-right: 80px; -} - -.mx_RoomSettingsDialog - .mx_AvatarSetting_avatar - .mx_AvatarSetting_avatarPlaceholder:before { - -webkit-mask: url(../../img/feather-customised/image.a8671b8.svg); - mask: url(../../img/feather-customised/image.a8671b8.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 36px; - mask-size: 36px; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RoomSettingsDialog_BridgeList { - padding: 0; -} - -.mx_RoomSettingsDialog_BridgeList .mx_AccessibleButton { - display: inline; - margin: 0; - padding: 0; -} - -.mx_RoomSettingsDialog_BridgeList li { - list-style-type: none; - padding: 5px; - margin-bottom: 8px; - border: 1px solid transparent; - border-radius: 5px; -} - -.mx_RoomSettingsDialog_BridgeList li .column-icon { - float: left; - padding-right: 10px; -} - -.mx_RoomSettingsDialog_BridgeList li .column-icon * { - border-radius: 5px; - border: 1px solid #e3e8f0; -} - -.mx_RoomSettingsDialog_BridgeList li .column-icon .noProtocolIcon { - width: 48px; - height: 48px; - background: #e3e8f0; - border-radius: 5px; -} - -.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon { - float: left; - margin-right: 5px; -} - -.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon img { - border-radius: 5px; - border-width: 1px; - border-color: transparent; -} - -.mx_RoomSettingsDialog_BridgeList li .column-icon .protocol-icon span { - left: auto; -} - -.mx_RoomSettingsDialog_BridgeList li .column-data { - display: inline-block; - width: 85%; -} - -.mx_RoomSettingsDialog_BridgeList li .column-data > h3 { - margin-top: 0; - margin-bottom: 0; - font-size: 16pt; - color: #2e2f32; -} - -.mx_RoomSettingsDialog_BridgeList li .column-data > * { - margin-top: 4px; - margin-bottom: 0; -} - -.mx_RoomSettingsDialog_BridgeList li .column-data .workspace-channel-details { - color: #2e2f32; - font-weight: 600; -} - -.mx_RoomSettingsDialog_BridgeList - li - .column-data - .workspace-channel-details - .channel { - margin-left: 5px; -} - -.mx_RoomSettingsDialog_BridgeList li .column-data .metadata { - color: #61708b; - margin-bottom: 0; - overflow-y: visible; - text-overflow: ellipsis; - white-space: normal; - padding: 0; -} - -.mx_RoomSettingsDialog_BridgeList li .column-data .metadata > li { - padding: 0; - border: 0; -} - -.mx_RoomUpgradeDialog { - padding-right: 70px; -} - -.mx_RoomUpgradeWarningDialog { - max-width: 38vw; - width: 38vw; -} - -.mx_RoomUpgradeWarningDialog .mx_SettingsFlag { - font-weight: 700; -} - -.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_ToggleSwitch { - display: inline-block; - vertical-align: middle; - margin-left: 8px; - float: right; -} - -.mx_RoomUpgradeWarningDialog .mx_SettingsFlag .mx_SettingsFlag_label { - display: inline-block; - vertical-align: middle; -} - -.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content { - padding-right: 85px; - color: #2e2f32; -} - -.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content hr { - border-color: #2e2f32; - opacity: 0.1; - border-bottom: none; -} - -.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul { - padding: 16px; -} - -.mx_ServerOfflineDialog .mx_ServerOfflineDialog_content ul li:nth-child(n + 2) { - margin-top: 16px; -} - -.mx_ServerOfflineDialog - .mx_ServerOfflineDialog_content - .mx_ServerOfflineDialog_content_context - .mx_ServerOfflineDialog_content_context_timestamp { - display: inline-block; - width: 115px; - color: #61708b; - line-height: 24px; - vertical-align: top; -} - -.mx_ServerOfflineDialog - .mx_ServerOfflineDialog_content - .mx_ServerOfflineDialog_content_context - .mx_ServerOfflineDialog_content_context_timeline { - display: inline-block; - width: calc(100% - 155px); -} - -.mx_ServerOfflineDialog - .mx_ServerOfflineDialog_content - .mx_ServerOfflineDialog_content_context - .mx_ServerOfflineDialog_content_context_timeline - .mx_ServerOfflineDialog_content_context_timeline_header - span { - margin-left: 8px; - vertical-align: middle; -} - -.mx_ServerOfflineDialog - .mx_ServerOfflineDialog_content - .mx_ServerOfflineDialog_content_context - .mx_ServerOfflineDialog_content_context_timeline - .mx_ServerOfflineDialog_content_context_txn { - position: relative; - margin-top: 8px; -} - -.mx_ServerOfflineDialog - .mx_ServerOfflineDialog_content - .mx_ServerOfflineDialog_content_context - .mx_ServerOfflineDialog_content_context_timeline - .mx_ServerOfflineDialog_content_context_txn - .mx_ServerOfflineDialog_content_context_txn_desc { - width: calc(100% - 100px); -} - -.mx_ServerOfflineDialog - .mx_ServerOfflineDialog_content - .mx_ServerOfflineDialog_content_context - .mx_ServerOfflineDialog_content_context_timeline - .mx_ServerOfflineDialog_content_context_txn - .mx_AccessibleButton { - float: right; - padding: 0; -} - -.mx_ServerPickerDialog { - width: 468px; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_ServerPickerDialog .mx_Dialog_content { - margin-bottom: 0; -} - -.mx_ServerPickerDialog .mx_Dialog_content > p { - color: #737d8c; - font-size: 1.4rem; - margin: 16px 0; -} - -.mx_ServerPickerDialog .mx_Dialog_content > p:first-of-type { - margin-bottom: 40px; -} - -.mx_ServerPickerDialog .mx_Dialog_content > p:last-of-type { - margin: 0 24px 24px; -} - -.mx_ServerPickerDialog .mx_Dialog_content > h4 { - font-size: 1.5rem; - font-weight: 600; - color: #737d8c; - margin-left: 8px; -} - -.mx_ServerPickerDialog .mx_Dialog_content > a { - color: #0dbd8b; - margin-left: 8px; -} - -.mx_ServerPickerDialog - .mx_ServerPickerDialog_otherHomeserverRadio - input[type="radio"] - + div { - margin-top: auto; - margin-bottom: auto; -} - -.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver { - border-top: none; - border-left: none; - border-right: none; - border-radius: unset; -} - -.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > input { - padding-left: 0; -} - -.mx_ServerPickerDialog .mx_ServerPickerDialog_otherHomeserver > label { - margin-left: 0; -} - -.mx_ServerPickerDialog .mx_AccessibleButton_kind_primary { - width: calc(100% - 64px); - margin: 0 8px; - padding: 15px 18px; -} - -.mx_SetEmailDialog_email_input { - border-radius: 3px; - border: 1px solid #e7e7e7; - padding: 9px; - color: rgba(74, 74, 74, 0.9); - background-color: #fff; - font-size: 1.5rem; - width: 100%; - max-width: 280px; - margin-bottom: 10px; -} - -.mx_SetEmailDialog_email_input:focus { - outline: none; - -webkit-box-shadow: none; - box-shadow: none; - border: 1px solid #0dbd8b; -} - -.mx_RoomSettingsDialog, -.mx_SpaceSettingsDialog, -.mx_UserSettingsDialog { - width: 90vw; - max-width: 1000px; - height: 80vh; -} - -.mx_RoomSettingsDialog .mx_TabbedView, -.mx_SpaceSettingsDialog .mx_TabbedView, -.mx_UserSettingsDialog .mx_TabbedView { - top: 65px; -} - -.mx_RoomSettingsDialog .mx_TabbedView .mx_SettingsTab, -.mx_SpaceSettingsDialog .mx_TabbedView .mx_SettingsTab, -.mx_UserSettingsDialog .mx_TabbedView .mx_SettingsTab { - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-width: 580px; - padding-right: 100px; - padding-bottom: 100px; -} - -.mx_RoomSettingsDialog .mx_Dialog_title, -.mx_SpaceSettingsDialog .mx_Dialog_title, -.mx_UserSettingsDialog .mx_Dialog_title { - margin-bottom: 24px; -} - -.mx_ShareDialog hr { - margin-top: 25px; - margin-bottom: 25px; - border-color: #747474; -} - -.mx_ShareDialog_content { - margin: 10px 0; -} - -.mx_ShareDialog_matrixto { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - border-radius: 5px; - border: 1px solid #747474; - margin-bottom: 10px; - margin-top: 30px; - padding: 10px; -} - -.mx_ShareDialog_matrixto a { - text-decoration: none; -} - -.mx_ShareDialog_matrixto_link { - -ms-flex-negative: 1; - flex-shrink: 1; - overflow: hidden; - text-overflow: ellipsis; -} - -.mx_ShareDialog_matrixto_copy { - -ms-flex-negative: 0; - flex-shrink: 0; - cursor: pointer; - margin-left: 20px; - display: inherit; -} - -.mx_ShareDialog_matrixto_copy:after { - content: ""; - -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - background-color: #2e2f32; - margin-left: 5px; - width: 20px; - height: 20px; - background-repeat: no-repeat; -} - -.mx_ShareDialog_split { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; -} - -.mx_ShareDialog_qrcode_container { - float: left; - height: 256px; - width: 256px; - margin-right: 64px; -} - -.mx_ShareDialog_qrcode_container + .mx_ShareDialog_social_container { - width: 299px; -} - -.mx_ShareDialog_social_container { - display: inline-block; -} - -.mx_ShareDialog_social_icon { - display: inline-grid; - margin-right: 10px; - margin-bottom: 10px; -} - -.mx_SlashCommandHelpDialog .mx_SlashCommandHelpDialog_headerRow h2 { - margin-bottom: 2px; -} - -.mx_SlashCommandHelpDialog .mx_Dialog_content { - margin-top: 12px; - margin-bottom: 34px; -} - -.mx_SpaceSettingsDialog { - color: #2e2f32; -} - -.mx_SpaceSettingsDialog .mx_SpaceSettings_errorText { - font-weight: 600; - font-size: 1.2rem; - line-height: 1.5rem; - color: #ff4b55; - margin-bottom: 28px; -} - -.mx_SpaceSettingsDialog .mx_ToggleSwitch { - display: inline-block; - vertical-align: middle; - margin-left: 16px; -} - -.mx_SpaceSettingsDialog - .mx_SettingsTab_section - .mx_SettingsTab_section_caption { - margin-top: 12px; - margin-bottom: 20px; -} - -.mx_SpaceSettingsDialog .mx_SettingsTab_section + .mx_SettingsTab_subheading { - border-top: 1px solid #e3e8f0; - margin-top: 0; - padding-top: 24px; -} - -.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_RadioButton { - margin-top: 8px; - margin-bottom: 4px; -} - -.mx_SpaceSettingsDialog - .mx_SettingsTab_section - .mx_RadioButton - .mx_RadioButton_content { - font-weight: 600; - line-height: 1.8rem; - color: #2e2f32; -} - -.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_RadioButton + span { - font-size: 1.5rem; - line-height: 1.8rem; - color: #737d8c; - margin-left: 26px; -} - -.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_SettingsTab_showAdvanced { - margin: 16px 0; - padding: 0; -} - -.mx_SpaceSettingsDialog .mx_SettingsTab_section .mx_SettingsFlag { - margin-top: 24px; -} - -.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 64px; -} - -.mx_SpaceSettingsDialog .mx_SpaceSettingsDialog_buttons .mx_AccessibleButton { - display: inline-block; -} - -.mx_SpaceSettingsDialog - .mx_SpaceSettingsDialog_buttons - .mx_AccessibleButton_kind_link { - margin-left: auto; -} - -.mx_SpaceSettingsDialog .mx_AccessibleButton_hasKind { - padding: 8px 22px; -} - -.mx_SpaceSettingsDialog - .mx_TabbedView_tabLabel - .mx_SpaceSettingsDialog_generalIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_SpaceSettingsDialog - .mx_TabbedView_tabLabel - .mx_SpaceSettingsDialog_visibilityIcon:before { - -webkit-mask-image: url(../../img/element-icons/eye.23b2229.svg); - mask-image: url(../../img/element-icons/eye.23b2229.svg); -} - -.mx_TabbedIntegrationManagerDialog .mx_Dialog { - width: 60%; - height: 70%; - overflow: hidden; - padding: 0; - max-width: none; - max-height: none; - position: relative; -} - -.mx_TabbedIntegrationManagerDialog_container { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.mx_TabbedIntegrationManagerDialog_container - .mx_TabbedIntegrationManagerDialog_currentManager { - width: 100%; - height: 100%; - border-top: 1px solid #0dbd8b; -} - -.mx_TabbedIntegrationManagerDialog_container - .mx_TabbedIntegrationManagerDialog_currentManager - iframe { - background-color: #fff; - border: 0; - width: 100%; - height: 100%; -} - -.mx_TabbedIntegrationManagerDialog_tab { - display: inline-block; - border: 1px solid #0dbd8b; - border-bottom: 0; - border-top-left-radius: 3px; - border-top-right-radius: 3px; - padding: 10px 8px; - margin-right: 5px; -} - -.mx_TabbedIntegrationManagerDialog_currentTab { - background-color: #0dbd8b; - color: #fff; -} - -.mx_TermsDialog_forIntegrationManager .mx_Dialog { - width: 60%; - height: 70%; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_TermsDialog_termsTableHeader { - font-weight: 700; - text-align: left; -} - -.mx_TermsDialog_termsTable { - font-size: 1.2rem; - width: 100%; -} - -.mx_TermsDialog_service, -.mx_TermsDialog_summary { - padding-right: 10px; -} - -.mx_TermsDialog_link { - display: inline-block; - -webkit-mask-image: url(../../img/external-link.a8d3e9b.svg); - mask-image: url(../../img/external-link.a8d3e9b.svg); - background-color: #0dbd8b; - width: 10px; - height: 10px; -} - -.mx_UntrustedDeviceDialog .mx_Dialog_title { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_UntrustedDeviceDialog .mx_Dialog_title .mx_E2EIcon { - margin-left: 0; -} - -.mx_UploadConfirmDialog_fileIcon { - margin-right: 5px; -} - -.mx_UploadConfirmDialog_previewOuter { - text-align: center; -} - -.mx_UploadConfirmDialog_previewInner { - display: inline-block; - text-align: left; -} - -.mx_UploadConfirmDialog_imagePreview { - max-height: 300px; - max-width: 100%; - border-radius: 4px; - border: 1px solid #c1c1c1; -} - -.mx_UserSettingsDialog_settingsIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_UserSettingsDialog_appearanceIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); - mask-image: url(../../img/element-icons/settings/appearance.cdebd40.svg); -} - -.mx_UserSettingsDialog_voiceIcon:before { - -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); - mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); -} - -.mx_UserSettingsDialog_bellIcon:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); -} - -.mx_UserSettingsDialog_preferencesIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings/preference.82bfabd.svg); - mask-image: url(../../img/element-icons/settings/preference.82bfabd.svg); -} - -.mx_UserSettingsDialog_securityIcon:before { - -webkit-mask-image: url(../../img/element-icons/security.66f2fa6.svg); - mask-image: url(../../img/element-icons/security.66f2fa6.svg); -} - -.mx_UserSettingsDialog_helpIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings/help.68b703f.svg); - mask-image: url(../../img/element-icons/settings/help.68b703f.svg); -} - -.mx_UserSettingsDialog_labsIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg); - mask-image: url(../../img/element-icons/settings/lab-flags.6fbe5e2.svg); -} - -.mx_UserSettingsDialog_mjolnirIcon:before { - -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); - mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); -} - -.mx_UserSettingsDialog_flairIcon:before { - -webkit-mask-image: url(../../img/element-icons/settings/flair.4227a88.svg); - mask-image: url(../../img/element-icons/settings/flair.4227a88.svg); -} - -.mx_WidgetCapabilitiesPromptDialog .text-muted { - font-size: 1.2rem; -} - -.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_content { - margin-bottom: 16px; -} - -.mx_WidgetCapabilitiesPromptDialog .mx_WidgetCapabilitiesPromptDialog_cap { - margin-top: 20px; - font-size: 1.5rem; - line-height: 1.5rem; -} - -.mx_WidgetCapabilitiesPromptDialog - .mx_WidgetCapabilitiesPromptDialog_cap - .mx_WidgetCapabilitiesPromptDialog_byline { - color: #61708b; - margin-left: 26px; - font-size: 1.2rem; - line-height: 1.2rem; -} - -.mx_WidgetCapabilitiesPromptDialog .mx_Dialog_buttons { - margin-top: 40px; -} - -.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag { - line-height: calc(1.4rem + 14px); - color: #61708b; - font-size: 1.2rem; -} - -.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_ToggleSwitch { - display: inline-block; - vertical-align: middle; - margin-right: 8px; - width: 3.2rem; - height: 1.5rem; -} - -.mx_WidgetCapabilitiesPromptDialog - .mx_SettingsFlag - .mx_ToggleSwitch.mx_ToggleSwitch_on - > .mx_ToggleSwitch_ball { - left: calc(100% - 1.5rem); -} - -.mx_WidgetCapabilitiesPromptDialog - .mx_SettingsFlag - .mx_ToggleSwitch - .mx_ToggleSwitch_ball { - width: 1.5rem; - height: 1.5rem; - border-radius: 1.5rem; -} - -.mx_WidgetCapabilitiesPromptDialog .mx_SettingsFlag .mx_SettingsFlag_label { - display: inline-block; - vertical-align: middle; -} - -.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_ToggleSwitch { - display: inline-block; - vertical-align: middle; - margin-right: 8px; -} - -.mx_WidgetOpenIDPermissionsDialog .mx_SettingsFlag .mx_SettingsFlag_label { - display: inline-block; - vertical-align: middle; -} - -.mx_AccessSecretStorageDialog_reset { - position: relative; - padding-left: 24px; - margin-top: 7px; -} - -.mx_AccessSecretStorageDialog_reset:before { - content: ""; - display: inline-block; - position: absolute; - height: 16px; - width: 16px; - left: 0; - top: 2px; - background-image: url(../../img/element-icons/warning-badge.413c9a9.svg); - background-size: contain; -} - -.mx_AccessSecretStorageDialog_reset .mx_AccessSecretStorageDialog_reset_link { - color: #ff4b55; -} - -.mx_AccessSecretStorageDialog_titleWithIcon:before { - content: ""; - display: inline-block; - width: 24px; - height: 24px; - margin-right: 8px; - position: relative; - top: 5px; - background-color: #2e2f32; -} - -.mx_AccessSecretStorageDialog_resetBadge:before { - background-image: url(../../img/element-icons/warning-badge.413c9a9.svg); - background-size: 24px; - background-color: transparent; -} - -.mx_AccessSecretStorageDialog_secureBackupTitle:before { - -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); - mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); -} - -.mx_AccessSecretStorageDialog_securePhraseTitle:before { - -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); - mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); -} - -.mx_AccessSecretStorageDialog_keyStatus { - height: 30px; -} - -.mx_AccessSecretStorageDialog_passPhraseInput { - width: 300px; - border: 1px solid #0dbd8b; - border-radius: 5px; - padding: 10px; -} - -.mx_AccessSecretStorageDialog_recoveryKeyEntry { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText { - margin: 16px; -} - -.mx_AccessSecretStorageDialog_recoveryKeyFeedback:before { - content: ""; - display: inline-block; - vertical-align: bottom; - width: 20px; - height: 20px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 20px; - mask-size: 20px; - margin-right: 5px; -} - -.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid { - color: #0dbd8b; -} - -.mx_AccessSecretStorageDialog_recoveryKeyFeedback_valid:before { - -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); - mask-image: url(../../img/feather-customised/check.5745b4e.svg); - background-color: #0dbd8b; -} - -.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid { - color: #ff4b55; -} - -.mx_AccessSecretStorageDialog_recoveryKeyFeedback_invalid:before { - -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); - mask-image: url(../../img/feather-customised/x.9662221.svg); - background-color: #ff4b55; -} - -.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput { - display: none; -} - -.mx_CreateCrossSigningDialog { - width: 560px; -} - -.mx_CreateCrossSigningDialog details .mx_AccessibleButton { - margin: 1em 0; -} - -.mx_CreateCrossSigningDialog .mx_Dialog_title, -.mx_CreateKeyBackupDialog .mx_Dialog_title { - margin-bottom: 1em; -} - -.mx_CreateKeyBackupDialog_primaryContainer { - padding: 20px; -} - -.mx_CreateKeyBackupDialog_primaryContainer:after { - content: ""; - clear: both; - display: block; -} - -.mx_CreateKeyBackupDialog_passPhraseContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} - -.mx_CreateKeyBackupDialog_passPhraseInput { - -webkit-box-flex: 0; - -ms-flex: none; - flex: none; - width: 250px; - border: 1px solid #0dbd8b; - border-radius: 5px; - padding: 10px; - margin-bottom: 1em; -} - -.mx_CreateKeyBackupDialog_passPhraseMatch { - margin-left: 20px; -} - -.mx_CreateKeyBackupDialog_recoveryKeyHeader { - margin-bottom: 1em; -} - -.mx_CreateKeyBackupDialog_recoveryKeyContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_CreateKeyBackupDialog_recoveryKey { - width: 262px; - padding: 20px; - color: #888; - background-color: #f7f7f7; - margin-right: 12px; -} - -.mx_CreateKeyBackupDialog_recoveryKeyButtons { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CreateKeyBackupDialog_recoveryKeyButtons button { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - white-space: nowrap; -} - -.mx_CreateKeyBackupDialog details .mx_AccessibleButton { - margin: 1em 0; -} - -.mx_CreateSecretStorageDialog { - width: 560px; -} - -.mx_CreateSecretStorageDialog .mx_SettingsFlag { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_CreateSecretStorageDialog .mx_SettingsFlag_label { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - min-width: 0; - font-weight: 600; -} - -.mx_CreateSecretStorageDialog .mx_ToggleSwitch { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin-left: 30px; -} - -.mx_CreateSecretStorageDialog details .mx_AccessibleButton { - margin: 1em 0; -} - -.mx_CreateSecretStorageDialog .mx_Dialog_title { - margin-bottom: 1em; -} - -.mx_CreateSecretStorageDialog_titleWithIcon:before { - content: ""; - display: inline-block; - width: 24px; - height: 24px; - margin-right: 8px; - position: relative; - top: 5px; - background-color: #2e2f32; -} - -.mx_CreateSecretStorageDialog_secureBackupTitle:before { - -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); - mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); -} - -.mx_CreateSecretStorageDialog_securePhraseTitle:before { - -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); - mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); -} - -.mx_CreateSecretStorageDialog_centeredBody, -.mx_CreateSecretStorageDialog_centeredTitle { - text-align: center; -} - -.mx_CreateSecretStorageDialog_primaryContainer { - padding-top: 20px; -} - -.mx_CreateSecretStorageDialog_primaryContainer:after { - content: ""; - clear: both; - display: block; -} - -.mx_CreateSecretStorageDialog_primaryContainer .mx_RadioButton { - margin-bottom: 16px; - padding: 11px; -} - -.mx_CreateSecretStorageDialog_optionTitle { - color: #45474a; - font-weight: 600; - font-size: 1.8rem; - padding-bottom: 10px; -} - -.mx_CreateSecretStorageDialog_optionIcon { - display: inline-block; - width: 24px; - height: 24px; - margin-right: 8px; - position: relative; - top: 5px; - background-color: #2e2f32; -} - -.mx_CreateSecretStorageDialog_optionIcon_securePhrase { - -webkit-mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); - mask-image: url(../../img/feather-customised/secure-phrase.a9d3725.svg); -} - -.mx_CreateSecretStorageDialog_optionIcon_secureBackup { - -webkit-mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); - mask-image: url(../../img/feather-customised/secure-backup.329cb1c.svg); -} - -.mx_CreateSecretStorageDialog_passPhraseContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} - -.mx_Field.mx_CreateSecretStorageDialog_passPhraseField { - margin-top: 0; -} - -.mx_CreateSecretStorageDialog_passPhraseMatch { - width: 200px; - margin-left: 20px; -} - -.mx_CreateSecretStorageDialog_recoveryKeyContainer { - width: 380px; - margin-left: auto; - margin-right: auto; -} - -.mx_CreateSecretStorageDialog_recoveryKey { - font-weight: 700; - text-align: center; - padding: 20px; - color: #888; - background-color: #f7f7f7; - border-radius: 6px; - word-spacing: 1em; - margin-bottom: 20px; -} - -.mx_CreateSecretStorageDialog_recoveryKeyButtons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CreateSecretStorageDialog_recoveryKeyButtons .mx_AccessibleButton { - width: 160px; - padding-left: 0; - padding-right: 0; - white-space: nowrap; -} - -.mx_CreateSecretStorageDialog_continueSpinner { - margin-top: 33px; - text-align: right; -} - -.mx_CreateSecretStorageDialog_continueSpinner img { - width: 20px; - height: 20px; -} - -.mx_KeyBackupFailedDialog .mx_Dialog_title { - margin-bottom: 32px; -} - -.mx_KeyBackupFailedDialog_title { - position: relative; - padding-left: 45px; - padding-bottom: 10px; -} - -.mx_KeyBackupFailedDialog_title:before { - -webkit-mask: url(../../img/e2e/lock-warning-filled.993fb6c.svg); - mask: url(../../img/e2e/lock-warning-filled.993fb6c.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #2e2f32; - content: ""; - position: absolute; - top: -6px; - right: 0; - bottom: 0; - left: 0; -} - -.mx_KeyBackupFailedDialog .mx_Dialog_buttons { - margin-top: 36px; -} - -.mx_RestoreKeyBackupDialog_keyStatus { - height: 30px; -} - -.mx_RestoreKeyBackupDialog_primaryContainer { - padding: 20px; -} - -.mx_RestoreKeyBackupDialog_passPhraseInput, -.mx_RestoreKeyBackupDialog_recoveryKeyInput { - width: 300px; - border: 1px solid #0dbd8b; - border-radius: 5px; - padding: 10px; -} - -.mx_RestoreKeyBackupDialog_content > div { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - min-height: 110px; -} - -.mx_NetworkDropdown { - height: 32px; - position: relative; - padding-right: 32px; - margin-left: auto; - margin-right: 9px; - margin-top: 12px; -} - -.mx_NetworkDropdown, -.mx_NetworkDropdown .mx_AccessibleButton { - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; -} - -.mx_NetworkDropdown_menu { - min-width: 204px; - margin: 0; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 4px; - border: 1px solid #c1c1c1; - background-color: #fff; - max-height: calc(100vh - 20px); - overflow-y: auto; -} - -.mx_NetworkDropdown_menu_network { - font-weight: 700; -} - -.mx_NetworkDropdown_server { - padding: 12px 0; - border-bottom: 1px solid #9fa9ba; -} - -.mx_NetworkDropdown_server .mx_NetworkDropdown_server_title { - padding: 0 10px; - font-size: 1.5rem; - font-weight: 600; - line-height: 2rem; - margin-bottom: 4px; - position: relative; -} - -.mx_NetworkDropdown_server - .mx_NetworkDropdown_server_title - .mx_AccessibleButton { - position: absolute; - display: inline; - right: 10px; - height: 16px; - width: 16px; - margin-top: 2px; -} - -.mx_NetworkDropdown_server - .mx_NetworkDropdown_server_title - .mx_AccessibleButton:after { - content: ""; - position: absolute; - width: 16px; - height: 16px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); - mask-image: url(../../img/feather-customised/x.9662221.svg); - background-color: #ff4b55; -} - -.mx_NetworkDropdown_server .mx_NetworkDropdown_server_subtitle { - padding: 0 10px; - font-size: 1rem; - line-height: 1.4rem; - margin-top: -4px; - margin-bottom: 4px; - color: #61708b; -} - -.mx_NetworkDropdown_server .mx_NetworkDropdown_server_network { - font-size: 1.2rem; - line-height: 1.6rem; - padding: 4px 10px; - cursor: pointer; - position: relative; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.mx_NetworkDropdown_server - .mx_NetworkDropdown_server_network[aria-checked="true"]:after { - content: ""; - position: absolute; - width: 16px; - height: 16px; - right: 10px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); - mask-image: url(../../img/feather-customised/check.5745b4e.svg); - background-color: #0dbd8b; -} - -.mx_NetworkDropdown_server_add:hover, -.mx_NetworkDropdown_server_network:hover { - background-color: #f3f8fd; -} - -.mx_NetworkDropdown_server_add { - padding: 16px 10px 16px 32px; - position: relative; - border-radius: 0 0 4px 4px; -} - -.mx_NetworkDropdown_server_add:before { - content: ""; - position: absolute; - width: 16px; - height: 16px; - left: 7px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/feather-customised/plus.38ae979.svg); - mask-image: url(../../img/feather-customised/plus.38ae979.svg); - background-color: #61708b; -} - -.mx_NetworkDropdown_handle { - position: relative; -} - -.mx_NetworkDropdown_handle:after { - content: ""; - position: absolute; - width: 26px; - height: 26px; - right: -27.5px; - top: -3px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); - mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); - background-color: #2e2f32; -} - -.mx_NetworkDropdown_handle .mx_NetworkDropdown_handle_server { - color: #61708b; - font-size: 1.2rem; -} - -.mx_NetworkDropdown_dialog .mx_Dialog { - width: 45vw; -} - -.mx_AccessibleButton { - cursor: pointer; -} - -.mx_AccessibleButton_disabled { - cursor: default; -} - -.mx_AccessibleButton_hasKind { - padding: 7px 18px; - text-align: center; - border-radius: 8px; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - font-size: 1.4rem; -} - -.mx_AccessibleButton_kind_primary { - color: #fff; - background-color: #0dbd8b; - font-weight: 600; -} - -.mx_AccessibleButton_kind_primary_outline { - color: #0dbd8b; - background-color: #fff; - border: 1px solid #0dbd8b; - font-weight: 600; -} - -.mx_AccessibleButton_kind_secondary { - color: #0dbd8b; - font-weight: 600; -} - -.mx_AccessibleButton_kind_primary.mx_AccessibleButton_disabled, -.mx_AccessibleButton_kind_primary_outline.mx_AccessibleButton_disabled { - opacity: 0.4; -} - -.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_primary_sm { - padding: 5px 12px; - color: #fff; - background-color: #0dbd8b; -} - -.mx_AccessibleButton_kind_primary_sm.mx_AccessibleButton_disabled { - opacity: 0.4; -} - -.mx_AccessibleButton_kind_danger { - color: #fff; - background-color: #ff4b55; -} - -.mx_AccessibleButton_kind_danger_outline { - color: #ff4b55; - background-color: transparent; - border: 1px solid #ff4b55; -} - -.mx_AccessibleButton_kind_danger.mx_AccessibleButton_disabled { - color: #fff; - background-color: #f5b6bb; -} - -.mx_AccessibleButton_kind_danger_outline.mx_AccessibleButton_disabled { - color: #f5b6bb; - border-color: #f5b6bb; -} - -.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_danger_sm { - padding: 5px 12px; - color: #fff; - background-color: #ff4b55; -} - -.mx_AccessibleButton_kind_danger_sm.mx_AccessibleButton_disabled { - color: #fff; - background-color: #f5b6bb; -} - -.mx_AccessibleButton_kind_link { - color: #0dbd8b; - background-color: transparent; -} - -.mx_AccessibleButton_kind_link.mx_AccessibleButton_disabled { - opacity: 0.4; -} - -.mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_link_sm { - padding: 5px 12px; - color: #0dbd8b; - background-color: transparent; -} - -.mx_AccessibleButton_kind_link_sm.mx_AccessibleButton_disabled { - opacity: 0.4; -} - -.mx_AddressSelector { - position: absolute; - background-color: #fff; - width: 485px; - max-height: 116px; - overflow-y: auto; - border-radius: 3px; - border: 1px solid #0dbd8b; - cursor: pointer; - z-index: 1; -} - -.mx_AddressSelector.mx_AddressSelector_empty { - display: none; -} - -.mx_AddressSelector_addressListElement .mx_AddressTile { - background-color: #fff; - border: 1px solid #fff; -} - -.mx_AddressSelector_addressListElement.mx_AddressSelector_selected { - background-color: #f2f5f8; -} - -.mx_AddressSelector_addressListElement.mx_AddressSelector_selected - .mx_AddressTile { - background-color: #f2f5f8; - border: 1px solid #f2f5f8; -} - -.mx_AddressTile { - display: inline-block; - border-radius: 3px; - background-color: rgba(74, 73, 74, 0.1); - border: 1px solid #e7e7e7; - line-height: 2.6rem; - color: #2e2f32; - font-size: 1.4rem; - font-weight: 400; - margin-right: 4px; -} - -.mx_AddressTile.mx_AddressTile_error { - background-color: rgba(255, 0, 100, 0.1); - color: #ff4b55; - border-color: #ff4b55; -} - -.mx_AddressTile_network { - padding-right: 4px; -} - -.mx_AddressTile_avatar, -.mx_AddressTile_network { - display: inline-block; - position: relative; - padding-left: 2px; - vertical-align: middle; -} - -.mx_AddressTile_avatar { - padding-right: 7px; -} - -.mx_AddressTile_mx { - display: inline-block; - margin: 0; - border: 0; - padding: 0; -} - -.mx_AddressTile_name { - display: inline-block; - padding-right: 4px; - font-weight: 600; - overflow: hidden; - height: 26px; - vertical-align: middle; -} - -.mx_AddressTile_name.mx_AddressTile_justified { - width: 180px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_id { - display: inline-block; - padding-right: 11px; -} - -.mx_AddressTile_id.mx_AddressTile_justified { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_unknownMx { - display: inline-block; - font-weight: 600; - padding-right: 11px; -} - -.mx_AddressTile_unknownMxl.mx_AddressTile_justified { - width: 380px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_email { - display: inline-block; - font-weight: 600; - padding-right: 11px; -} - -.mx_AddressTile_email.mx_AddressTile_justified { - width: 200px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_unknown { - display: inline-block; - padding-right: 11px; -} - -.mx_AddressTile_unknown.mx_AddressTile_justified { - width: 380px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.mx_AddressTile_dismiss { - display: inline-block; - padding-right: 11px; - padding-left: 1px; - cursor: pointer; -} - -.mx_AddressTile_dismiss object { - pointer-events: none; -} - -.mx_DesktopBuildsNotice { - text-align: center; - padding: 0 16px; -} - -.mx_DesktopBuildsNotice > * { - vertical-align: middle; -} - -.mx_DesktopBuildsNotice > img { - margin-right: 8px; -} - -.mx_desktopCapturerSourcePicker { - overflow: hidden; -} - -.mx_desktopCapturerSourcePicker_tabLabels { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0 0 8px; -} - -.mx_desktopCapturerSourcePicker_tabLabel, -.mx_desktopCapturerSourcePicker_tabLabel_selected { - width: 100%; - text-align: center; - border-radius: 8px; - padding: 8px 0; - font-size: 1.3rem; -} - -.mx_desktopCapturerSourcePicker_tabLabel_selected { - background-color: #0dbd8b; - color: #fff; -} - -.mx_desktopCapturerSourcePicker_panel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - height: 500px; - overflow: overlay; -} - -.mx_desktopCapturerSourcePicker_stream_button { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin: 8px; - border-radius: 4px; -} - -.mx_desktopCapturerSourcePicker_stream_button:focus, -.mx_desktopCapturerSourcePicker_stream_button:hover { - background: #fff; -} - -.mx_desktopCapturerSourcePicker_stream_thumbnail { - margin: 4px; - width: 312px; -} - -.mx_desktopCapturerSourcePicker_stream_name { - margin: 0 4px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - width: 312px; -} - -.mx_DialPadBackspaceButton { - position: relative; - height: 28px; - width: 28px; -} - -.mx_DialPadBackspaceButton:before { - content: ""; - background-color: #8d97a5; - width: inherit; - height: inherit; - top: 0; - left: 0; - position: absolute; - display: inline-block; - vertical-align: middle; - -webkit-mask-image: url(../../img/element-icons/call/delete.833d785.svg); - mask-image: url(../../img/element-icons/call/delete.833d785.svg); - -webkit-mask-position: 8px; - mask-position: 8px; - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; -} - -.mx_DirectorySearchBox { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-left: 9px; - padding-right: 9px; -} - -.mx_DirectorySearchBox_joinButton { - display: table-cell; - padding: 3px 10px; - background-color: #f2f5f8; - border-radius: 3px; - background-image: url(../../img/icon-return.cb24475.svg); - background-position: 8px 70%; - background-repeat: no-repeat; - text-indent: 18px; - font-weight: 600; - font-size: 1.2rem; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; -} - -.mx_DirectorySearchBox_clear { - background-color: #ff4b55; - -webkit-mask: url(../../img/cancel.4b9715b.svg); - mask: url(../../img/cancel.4b9715b.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 10px; - mask-size: 10px; - width: 15px; - height: 15px; - cursor: pointer; -} - -.mx_Dropdown { - position: relative; - color: #2e2f32; -} - -.mx_Dropdown_disabled { - opacity: 0.3; -} - -.mx_Dropdown_input { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; - border-radius: 4px; - border: 1px solid #c7c7c7; - font-size: 1.2rem; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_Dropdown_input.mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_Dropdown_input:focus { - border-color: #238cf5; -} - -.mx_Dropdown_input.mx_AccessibleButton:focus { - -webkit-filter: none; - filter: none; -} - -.mx_Dropdown_arrow { - width: 10px; - height: 6px; - padding-right: 9px; - -webkit-mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); - mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #2e2f32; -} - -.mx_Dropdown_option { - height: 35px; - line-height: 3.5rem; - padding-left: 8px; - padding-right: 8px; -} - -.mx_Dropdown_input > .mx_Dropdown_option { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_Dropdown_input > .mx_Dropdown_option, -.mx_Dropdown_option div { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mx_Dropdown_option .mx_Dropdown_option_emoji, -.mx_Dropdown_option img { - margin: 5px; - width: 16px; - vertical-align: middle; -} - -.mx_Dropdown_option_emoji { - font-size: 1.6rem; - line-height: 1.6rem; -} - -input.mx_Dropdown_option, -input.mx_Dropdown_option:focus { - font-weight: 400; - border: 0; - padding-top: 0; - padding-bottom: 0; - width: 60%; -} - -.mx_Dropdown_menu { - position: absolute; - left: -1px; - right: -1px; - top: 100%; - z-index: 2; - margin: 0; - padding: 0; - border-radius: 4px; - border: 1px solid #238cf5; - background-color: #fff; - max-height: 200px; - overflow-y: auto; -} - -.mx_Dropdown_menu .mx_Dropdown_option { - height: auto; - min-height: 35px; -} - -.mx_Dropdown_menu .mx_Dropdown_option_highlight { - background-color: #ddd; -} - -.mx_Dropdown_searchPrompt { - font-weight: 400; - margin-left: 5px; - margin-bottom: 5px; -} - -.mx_EditableItemList { - margin-top: 12px; - margin-bottom: 10px; -} - -.mx_EditableItem { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 5px; -} - -.mx_EditableItem_delete { - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - margin-right: 5px; - cursor: pointer; - vertical-align: middle; - width: 14px; - height: 14px; - -webkit-mask-image: url(../../img/feather-customised/cancel.23c2689.svg); - mask-image: url(../../img/feather-customised/cancel.23c2689.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #ff4b55; - -webkit-mask-size: 100%; - mask-size: 100%; -} - -.mx_EditableItem_email { - vertical-align: middle; -} - -.mx_EditableItem_promptText { - margin-right: 10px; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; -} - -.mx_EditableItem_confirmBtn { - margin-right: 5px; -} - -.mx_EditableItem_item { - -webkit-box-flex: 1; - -ms-flex: auto 1 0px; - flex: auto 1 0; - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - width: calc(100% - 14px); - overflow-x: hidden; - text-overflow: ellipsis; -} - -.mx_EditableItemList_label { - margin-bottom: 5px; -} - -.mx_ErrorBoundary { - width: 100%; - height: 100%; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_ErrorBoundary, -.mx_ErrorBoundary_body { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_ErrorBoundary_body { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - max-width: 400px; -} - -.mx_ErrorBoundary_body .mx_AccessibleButton { - margin-top: 5px; -} - -.mx_EventListSummary { - position: relative; -} - -.mx_TextualEvent.mx_EventListSummary_summary { - font-size: 1.4rem; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.mx_EventListSummary_avatars { - display: inline-block; - margin-right: 8px; - padding-top: 8px; - line-height: 1.2rem; -} - -.mx_EventListSummary_avatars .mx_BaseAvatar { - margin-right: -4px; - cursor: pointer; -} - -.mx_EventListSummary_toggle { - color: #0dbd8b; - cursor: pointer; - float: right; - margin-right: 10px; - margin-top: 8px; -} - -.mx_EventListSummary_line { - border-bottom: 1px solid transparent; - margin-left: 63px; - line-height: 3rem; -} - -.mx_MatrixChat_useCompactLayout .mx_EventListSummary { - font-size: 1.3rem; -} - -.mx_MatrixChat_useCompactLayout .mx_EventListSummary .mx_EventTile_line { - line-height: 2rem; -} - -.mx_MatrixChat_useCompactLayout .mx_EventListSummary_line { - line-height: 2.2rem; -} - -.mx_MatrixChat_useCompactLayout .mx_EventListSummary_toggle { - margin-top: 3px; -} - -.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_EventListSummary_summary { - font-size: 1.3rem; -} - -.mx_FacePile .mx_FacePile_faces { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: reverse; - -ms-flex-direction: row-reverse; - flex-direction: row-reverse; - vertical-align: middle; -} - -.mx_FacePile .mx_FacePile_faces > .mx_FacePile_face + .mx_FacePile_face { - margin-right: -8px; -} - -.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_image { - border: 1px solid #fff; -} - -.mx_FacePile .mx_FacePile_faces .mx_BaseAvatar_initial { - margin: 1px; -} - -.mx_FacePile .mx_FacePile_faces .mx_FacePile_more { - position: relative; - border-radius: 100%; - width: 30px; - height: 30px; - background-color: hsla(0, 0%, 91%, 0.77); -} - -.mx_FacePile .mx_FacePile_faces .mx_FacePile_more:before { - content: ""; - z-index: 1; - position: absolute; - top: 0; - left: 0; - height: inherit; - width: inherit; - background: #8d99a5; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); - mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); -} - -.mx_FacePile .mx_FacePile_summary { - margin-left: 12px; - font-size: 1.4rem; - line-height: 2.4rem; - color: #8d99a5; -} - -.mx_Field { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-width: 0; - position: relative; - margin: 1em 0; - border-radius: 4px; - -webkit-transition: border-color 0.25s; - transition: border-color 0.25s; - border: 1px solid #e7e7e7; -} - -.mx_Field_prefix { - border-right: 1px solid #e7e7e7; -} - -.mx_Field_postfix { - border-left: 1px solid #e7e7e7; -} - -.mx_Field input, -.mx_Field select, -.mx_Field textarea { - font-weight: 400; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - border: none; - border-radius: 4px; - padding: 8px 9px; - color: #2e2f32; - background-color: #fff; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-width: 0; -} - -.mx_Field select { - -moz-appearance: none; - -webkit-appearance: none; -} - -.mx_Field_select:before { - content: ""; - position: absolute; - top: 15px; - right: 10px; - width: 10px; - height: 6px; - -webkit-mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); - mask: url(../../img/feather-customised/dropdown-arrow.1a22ebc.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #2e2f32; - z-index: 1; - pointer-events: none; -} - -.mx_Field:focus-within { - border-color: #238cf5; -} - -.mx_Field input:focus, -.mx_Field select:focus, -.mx_Field textarea:focus { - outline: 0; -} - -.mx_Field input::-webkit-input-placeholder, -.mx_Field textarea::-webkit-input-placeholder { - -webkit-transition: color 0.25s ease-in 0s; - transition: color 0.25s ease-in 0s; - color: transparent; -} - -.mx_Field input::-moz-placeholder, -.mx_Field textarea::-moz-placeholder { - -moz-transition: color 0.25s ease-in 0s; - transition: color 0.25s ease-in 0s; - color: transparent; -} - -.mx_Field input:-ms-input-placeholder, -.mx_Field textarea:-ms-input-placeholder { - -ms-transition: color 0.25s ease-in 0s; - transition: color 0.25s ease-in 0s; - color: transparent; -} - -.mx_Field input::-ms-input-placeholder, -.mx_Field textarea::-ms-input-placeholder { - -ms-transition: color 0.25s ease-in 0s; - transition: color 0.25s ease-in 0s; - color: transparent; -} - -.mx_Field input::placeholder, -.mx_Field textarea::placeholder { - -webkit-transition: color 0.25s ease-in 0s; - transition: color 0.25s ease-in 0s; - color: transparent; -} - -.mx_Field input:placeholder-shown:focus::-webkit-input-placeholder, -.mx_Field textarea:placeholder-shown:focus::-webkit-input-placeholder { - -webkit-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field input:placeholder-shown:focus::-moz-placeholder, -.mx_Field textarea:placeholder-shown:focus::-moz-placeholder { - -moz-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field input:placeholder-shown:focus:-ms-input-placeholder, -.mx_Field textarea:placeholder-shown:focus:-ms-input-placeholder { - -ms-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field input:placeholder-shown:focus::-ms-input-placeholder, -.mx_Field textarea:placeholder-shown:focus::-ms-input-placeholder { - -ms-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field input:-moz-placeholder-shown:focus::placeholder, -.mx_Field textarea:-moz-placeholder-shown:focus::placeholder { - -moz-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field input:-ms-input-placeholder:focus::placeholder, -.mx_Field textarea:-ms-input-placeholder:focus::placeholder { - -ms-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field input:placeholder-shown:focus::placeholder, -.mx_Field textarea:placeholder-shown:focus::placeholder { - -webkit-transition: color 0.25s ease-in 0.1s; - transition: color 0.25s ease-in 0.1s; - color: #888; -} - -.mx_Field label { - -webkit-transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, - top 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s; - transition: font-size 0.25s ease-out 0.1s, color 0.25s ease-out 0.1s, - top 0.25s ease-out 0.1s, background-color 0.25s ease-out 0.1s; - color: #2e2f32; - background-color: transparent; - font-size: 1.4rem; - position: absolute; - left: 0; - top: 0; - margin: 7px 8px; - padding: 2px; - pointer-events: none; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - max-width: calc(100% - 20px); -} - -.mx_Field input:not(:-moz-placeholder-shown) + label, -.mx_Field textarea:not(:-moz-placeholder-shown) + label { - -moz-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, - top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; - transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, - top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; - font-size: 1rem; - top: -13px; - padding: 0 2px; - background-color: #fff; - pointer-events: auto; -} - -.mx_Field input:not(:-ms-input-placeholder) + label, -.mx_Field textarea:not(:-ms-input-placeholder) + label { - -ms-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, - top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; - transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, - top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; - font-size: 1rem; - top: -13px; - padding: 0 2px; - background-color: #fff; - pointer-events: auto; -} - -.mx_Field_labelAlwaysTopLeft label, -.mx_Field input:focus + label, -.mx_Field input:not(:placeholder-shown) + label, -.mx_Field select + label, -.mx_Field textarea:focus + label, -.mx_Field textarea:not(:placeholder-shown) + label { - -webkit-transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, - top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; - transition: font-size 0.25s ease-out 0s, color 0.25s ease-out 0s, - top 0.25s ease-out 0s, background-color 0.25s ease-out 0s; - font-size: 1rem; - top: -13px; - padding: 0 2px; - background-color: #fff; - pointer-events: auto; -} - -.mx_Field input:focus + label, -.mx_Field select:focus + label, -.mx_Field textarea:focus + label { - color: #238cf5; -} - -.mx_Field input:disabled, -.mx_Field input:disabled + label, -.mx_Field select:disabled, -.mx_Field select:disabled + label, -.mx_Field textarea:disabled, -.mx_Field textarea:disabled + label { - background-color: #fff; - color: #888; -} - -.mx_Field_valid.mx_Field, -.mx_Field_valid.mx_Field:focus-within { - border-color: #0dbd8b; -} - -.mx_Field_valid.mx_Field:focus-within label, -.mx_Field_valid.mx_Field label { - color: #0dbd8b; -} - -.mx_Field_invalid.mx_Field, -.mx_Field_invalid.mx_Field:focus-within { - border-color: #ff4b55; -} - -.mx_Field_invalid.mx_Field:focus-within label, -.mx_Field_invalid.mx_Field label { - color: #ff4b55; -} - -.mx_Field_tooltip { - margin-top: -12px; - margin-left: 4px; - width: 200px; -} - -.mx_Field_tooltip.mx_Field_valid { - -webkit-animation: mx_fadeout 1s 2s forwards; - animation: mx_fadeout 1s 2s forwards; -} - -.mx_Field .mx_Dropdown_input { - border: initial; - border-radius: 0; - border-radius: initial; -} - -.mx_Field .mx_CountryDropdown { - width: 7.8rem; -} - -.mx_ImageView { - width: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_ImageView, -.mx_ImageView_image_wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 100%; -} - -.mx_ImageView_image_wrapper { - pointer-events: auto; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - overflow: hidden; -} - -.mx_ImageView_image { - -ms-flex-negative: 0; - flex-shrink: 0; -} - -.mx_ImageView_panel { - width: 100%; - height: 68px; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.mx_ImageView_info_wrapper, -.mx_ImageView_panel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_ImageView_info_wrapper { - pointer-events: auto; - padding-left: 32px; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - color: #fff; -} - -.mx_ImageView_info { - padding-left: 12px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_ImageView_info_sender { - font-weight: 700; -} - -.mx_ImageView_toolbar { - padding-right: 16px; - pointer-events: auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - grid-gap: 14px; - gap: 14px; -} - -.mx_ImageView_button { - padding: 5px; - display: block; -} - -.mx_ImageView_button:before { - content: ""; - height: 22px; - width: 22px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; - display: block; - background-color: #c1c6cd; -} - -.mx_ImageView_button_rotateCW:before { - -webkit-mask-image: url(../../img/image-view/rotate-cw.60d903e.svg); - mask-image: url(../../img/image-view/rotate-cw.60d903e.svg); -} - -.mx_ImageView_button_rotateCCW:before { - -webkit-mask-image: url(../../img/image-view/rotate-ccw.b28ae4a.svg); - mask-image: url(../../img/image-view/rotate-ccw.b28ae4a.svg); -} - -.mx_ImageView_button_zoomOut:before { - -webkit-mask-image: url(../../img/image-view/zoom-out.8506f80.svg); - mask-image: url(../../img/image-view/zoom-out.8506f80.svg); -} - -.mx_ImageView_button_zoomIn:before { - -webkit-mask-image: url(../../img/image-view/zoom-in.3b3f32e.svg); - mask-image: url(../../img/image-view/zoom-in.3b3f32e.svg); -} - -.mx_ImageView_button_download:before { - -webkit-mask-image: url(../../img/image-view/download.2eac468.svg); - mask-image: url(../../img/image-view/download.2eac468.svg); -} - -.mx_ImageView_button_more:before { - -webkit-mask-image: url(../../img/image-view/more.0427c6c.svg); - mask-image: url(../../img/image-view/more.0427c6c.svg); -} - -.mx_ImageView_button_close { - padding: 0; - border-radius: 100%; - background: #21262c; -} - -.mx_ImageView_button_close:before { - width: 32px; - height: 32px; - -webkit-mask-image: url(../../img/image-view/close.97d1731.svg); - mask-image: url(../../img/image-view/close.97d1731.svg); - -webkit-mask-size: 40%; - mask-size: 40%; -} - -.mx_InfoTooltip_icon, -.mx_InfoTooltip_icon:before { - width: 16px; - height: 16px; - display: inline-block; -} - -.mx_InfoTooltip_icon:before { - background-color: #61708b; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 16px; - mask-size: 16px; - -webkit-mask-position: center; - mask-position: center; - content: ""; - vertical-align: middle; -} - -.mx_InfoTooltip_icon_info:before { - -webkit-mask-image: url(../../img/element-icons/info.dc07e19.svg); - mask-image: url(../../img/element-icons/info.dc07e19.svg); -} - -.mx_InfoTooltip_icon_warning:before { - -webkit-mask-image: url(../../img/element-icons/warning.d65f5be.svg); - mask-image: url(../../img/element-icons/warning.d65f5be.svg); -} - -.mx_InlineSpinner { - display: inline; -} - -.mx_InlineSpinner_icon, -.mx_InlineSpinner img { - margin: 0 6px; - vertical-align: -3px; -} - -.mx_InlineSpinner_icon { - display: inline-block; -} - -.mx_InviteReason { - position: relative; - margin-bottom: 1em; -} - -.mx_InviteReason .mx_InviteReason_reason { - visibility: visible; -} - -.mx_InviteReason .mx_InviteReason_view { - display: none; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - cursor: pointer; - color: #737d8c; -} - -.mx_InviteReason .mx_InviteReason_view:before { - content: ""; - margin-right: 8px; - background-color: #737d8c; - -webkit-mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); - mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); - display: inline-block; - width: 18px; - height: 14px; -} - -.mx_InviteReason_hidden .mx_InviteReason_reason { - visibility: hidden; -} - -.mx_InviteReason_hidden .mx_InviteReason_view { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_ManageIntegsButton_error { - position: relative; - float: right; - cursor: not-allowed; -} - -.mx_ManageIntegsButton_error img { - position: absolute; - right: -5px; - top: -5px; -} - -.mx_ManageIntegsButton_errorPopup { - position: absolute; - top: 110%; - left: -275%; - width: 550%; - padding: 30%; - font-size: 10pt; - line-height: 1.5em; - border-radius: 5px; - background-color: #0dbd8b; - color: #fff; - text-align: center; - z-index: 1000; -} - -.mx_ManageIntegsButton_error .mx_ManageIntegsButton_errorPopup { - display: none; -} - -.mx_ManageIntegsButton_error:hover .mx_ManageIntegsButton_errorPopup { - display: inline; -} - -.mx_MiniAvatarUploader { - position: relative; - width: -webkit-min-content; - width: -moz-min-content; - width: min-content; -} - -.mx_MiniAvatarUploader .mx_Tooltip { - display: inline-block; - position: absolute; - z-index: unset; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; - left: 72px; - top: 0; -} - -.mx_MiniAvatarUploader .mx_MiniAvatarUploader_indicator { - position: absolute; - height: 26px; - width: 26px; - right: -6px; - bottom: -6px; - background-color: #fff; - border-radius: 50%; - z-index: 1; -} - -.mx_MiniAvatarUploader - .mx_MiniAvatarUploader_indicator - .mx_MiniAvatarUploader_cameraIcon { - height: 100%; - width: 100%; - background-color: #737d8c; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/element-icons/camera.a81a395.svg); - mask-image: url(../../img/element-icons/camera.a81a395.svg); - -webkit-mask-size: 16px; - mask-size: 16px; - z-index: 2; -} - -.mx_MiniAvatarUploader_input { - display: none; -} - -.mx_PowerSelector { - width: 100%; -} - -.mx_PowerSelector .mx_Field input, -.mx_PowerSelector .mx_Field select { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -progress.mx_ProgressBar { - height: 6px; - width: 60px; - overflow: hidden; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - border: none; - border-radius: 6px; -} - -progress.mx_ProgressBar::-moz-progress-bar { - border-radius: 6px; -} - -progress.mx_ProgressBar::-webkit-progress-bar, -progress.mx_ProgressBar::-webkit-progress-value { - border-radius: 6px; -} - -progress.mx_ProgressBar { - color: #0dbd8b; -} - -progress.mx_ProgressBar::-moz-progress-bar { - background-color: #0dbd8b; -} - -progress.mx_ProgressBar::-webkit-progress-value { - background-color: #0dbd8b; -} - -progress.mx_ProgressBar { - background-color: rgba(141, 151, 165, 0.2); -} - -progress.mx_ProgressBar::-webkit-progress-bar { - background-color: rgba(141, 151, 165, 0.2); -} - -progress.mx_ProgressBar ::-webkit-progress-value { - -webkit-transition: width 1s; - transition: width 1s; -} - -progress.mx_ProgressBar ::-moz-progress-bar { - -moz-transition: padding-bottom 1s; - transition: padding-bottom 1s; - padding-bottom: var(--value); - transform-origin: 0 0; - transform: rotate(-90deg) translateX(-15px); - padding-left: 15px; - height: 0; -} - -.mx_QRCode img { - border-radius: 8px; -} - -.mx_ReplyThread { - margin: 0 0 8px; - padding: 0 10px; - border-left: 2px solid #0dbd8b; - border-radius: 2px; -} - -.mx_ReplyThread .mx_ReplyThread_show { - cursor: pointer; -} - -.mx_ReplyThread.mx_ReplyThread_color1 { - border-left-color: #368bd6; -} - -.mx_ReplyThread.mx_ReplyThread_color2 { - border-left-color: #ac3ba8; -} - -.mx_ReplyThread.mx_ReplyThread_color3 { - border-left-color: #0dbd8b; -} - -.mx_ReplyThread.mx_ReplyThread_color4 { - border-left-color: #e64f7a; -} - -.mx_ReplyThread.mx_ReplyThread_color5 { - border-left-color: #ff812d; -} - -.mx_ReplyThread.mx_ReplyThread_color6 { - border-left-color: #2dc2c5; -} - -.mx_ReplyThread.mx_ReplyThread_color7 { - border-left-color: #5c56f5; -} - -.mx_ReplyThread.mx_ReplyThread_color8 { - border-left-color: #74d12c; -} - -.mx_ResizeHandle { - cursor: row-resize; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - z-index: 100; -} - -.mx_ResizeHandle.mx_ResizeHandle_horizontal { - margin: 0 -5px; - padding: 0 5px; - cursor: col-resize; -} - -.mx_ResizeHandle.mx_ResizeHandle_vertical { - margin: -5px 0; - padding: 5px 0; - cursor: row-resize; -} - -.mx_MatrixChat > .mx_ResizeHandle.mx_ResizeHandle_horizontal { - margin: 0 -10px 0 0; - padding: 0 8px 0 0; -} - -.mx_ResizeHandle > div { - background: transparent; -} - -.mx_ResizeHandle.mx_ResizeHandle_horizontal > div { - width: 1px; - height: 100%; -} - -.mx_ResizeHandle.mx_ResizeHandle_vertical > div { - height: 1px; -} - -.mx_AtRoomPill, -.mx_GroupPill, -.mx_RoomPill, -.mx_UserPill { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - vertical-align: middle; - border-radius: 1.6rem; - line-height: 1.5rem; - padding-left: 0; -} - -a.mx_Pill { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - max-width: calc(100% - 1ch); -} - -.mx_Pill { - padding: 0.1rem 0.4em 0.1rem 0.1rem; - vertical-align: text-top; - line-height: 1.7rem; -} - -.mx_EventTile_content .markdown-body a.mx_GroupPill, -.mx_GroupPill { - color: #fff; - background-color: #aaa; -} - -.mx_EventTile_content .markdown-body a.mx_Pill { - text-decoration: none; -} - -.mx_EventTile_content .markdown-body a.mx_UserPill, -.mx_UserPill { - color: #2e2f32; - background-color: rgba(0, 0, 0, 0.1); -} - -.mx_UserPill_selected { - background-color: #0dbd8b !important; -} - -.mx_EventTile_content .markdown-body a.mx_AtRoomPill, -.mx_EventTile_content .mx_AtRoomPill, -.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, -.mx_MessageComposer_input .mx_AtRoomPill { - color: #fff; - background-color: #ff4b55; -} - -.mx_EventTile_content .markdown-body a.mx_GroupPill, -.mx_EventTile_content .markdown-body a.mx_RoomPill, -.mx_GroupPill, -.mx_RoomPill { - color: #fff; - background-color: #aaa; -} - -.mx_EventTile_body .mx_GroupPill, -.mx_EventTile_body .mx_RoomPill, -.mx_EventTile_body .mx_UserPill { - cursor: pointer; -} - -.mx_AtRoomPill .mx_BaseAvatar, -.mx_GroupPill .mx_BaseAvatar, -.mx_RoomPill .mx_BaseAvatar, -.mx_UserPill .mx_BaseAvatar { - position: relative; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-radius: 10rem; - margin-right: 0.24rem; -} - -.mx_Markdown_BOLD { - font-weight: 700; -} - -.mx_Markdown_ITALIC { - font-style: italic; -} - -.mx_Markdown_CODE { - padding: 0.2em 0; - margin: 0; - font-size: 85%; - background-color: rgba(0, 0, 0, 0.04); - border-radius: 3px; -} - -.mx_Markdown_HR { - display: block; - background: #e9e9e9; -} - -.mx_Markdown_STRIKETHROUGH { - text-decoration: line-through; -} - -.mx_RoleButton { - margin-left: 4px; - margin-right: 4px; - cursor: pointer; - display: inline-block; -} - -.mx_RoleButton object { - pointer-events: none; -} - -.mx_RoleButton_tooltip { - display: inline-block; - position: relative; - top: -25px; - left: 6px; -} - -.mx_RoomAliasField { - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - min-width: 0; - max-width: 100%; -} - -.mx_RoomAliasField input { - width: 150px; - padding-left: 0; - padding-right: 0; -} - -.mx_RoomAliasField input::-webkit-input-placeholder { - color: #888; - font-weight: 400; -} - -.mx_RoomAliasField input::-moz-placeholder { - color: #888; - font-weight: 400; -} - -.mx_RoomAliasField input:-ms-input-placeholder { - color: #888; - font-weight: 400; -} - -.mx_RoomAliasField input::-ms-input-placeholder { - color: #888; - font-weight: 400; -} - -.mx_RoomAliasField input::placeholder { - color: #888; - font-weight: 400; -} - -.mx_RoomAliasField .mx_Field_postfix, -.mx_RoomAliasField .mx_Field_prefix { - color: #888; - border-left: none; - border-right: none; - font-weight: 600; - padding: 9px 10px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; -} - -.mx_RoomAliasField .mx_Field_postfix { - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - max-width: calc(100% - 180px); -} - -.mx_SSOButtons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_SSOButtons .mx_SSOButtons_row + .mx_SSOButtons_row { - margin-top: 16px; -} - -.mx_SSOButtons .mx_SSOButton { - position: relative; - width: 100%; - padding: 7px 32px; - text-align: center; - border-radius: 8px; - display: inline-block; - font-size: 1.4rem; - font-weight: 600; - border: 1px solid #e7e7e7; - color: #2e2f32; -} - -.mx_SSOButtons .mx_SSOButton > img { - -o-object-fit: contain; - object-fit: contain; - position: absolute; - left: 8px; - top: 4px; -} - -.mx_SSOButtons .mx_SSOButton_default { - color: #0dbd8b; - background-color: #fff; - border-color: #0dbd8b; -} - -.mx_SSOButtons .mx_SSOButton_default.mx_SSOButton_primary { - color: #fff; - background-color: #0dbd8b; -} - -.mx_SSOButtons .mx_SSOButton_mini { - -webkit-box-sizing: border-box; - box-sizing: border-box; - width: 50px; - height: 50px; - min-width: 50px; - padding: 12px; -} - -.mx_SSOButtons .mx_SSOButton_mini > img { - left: 12px; - top: 12px; -} - -.mx_SSOButtons .mx_SSOButton_mini + .mx_SSOButton_mini { - margin-left: 16px; -} - -.mx_ServerPicker { - margin-bottom: 14px; - border-bottom: 1px solid rgba(141, 151, 165, 0.2); - display: grid; - grid-template-columns: auto -webkit-min-content; - grid-template-columns: auto min-content; - grid-template-rows: auto auto auto; - font-size: 1.4rem; - line-height: 2rem; -} - -.mx_ServerPicker > h3 { - font-weight: 600; - margin: 0 0 20px; - grid-column: 1; - grid-row: 1; -} - -.mx_ServerPicker .mx_ServerPicker_help { - width: 20px; - height: 20px; - background-color: #c1c6cd; - border-radius: 10px; - grid-column: 2; - grid-row: 1; - margin-left: auto; - text-align: center; - color: #fff; - font-size: 16px; - position: relative; -} - -.mx_ServerPicker .mx_ServerPicker_help:before { - content: ""; - width: 24px; - height: 24px; - position: absolute; - top: -2px; - left: -2px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/element-icons/i.80d84f3.svg); - mask-image: url(../../img/element-icons/i.80d84f3.svg); - background: #fff; -} - -.mx_ServerPicker .mx_ServerPicker_server { - color: #232f32; - grid-column: 1; - grid-row: 2; - margin-bottom: 16px; -} - -.mx_ServerPicker .mx_ServerPicker_change { - padding: 0; - font-size: inherit; - grid-column: 2; - grid-row: 2; -} - -.mx_ServerPicker .mx_ServerPicker_desc { - margin-top: -12px; - color: #8d99a5; - grid-column: 1/2; - grid-row: 3; - margin-bottom: 16px; -} - -.mx_ServerPicker_helpDialog .mx_Dialog_content { - width: 456px; -} - -.mx_Slider { - position: relative; - margin: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_Slider_dotContainer { - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.mx_Slider_bar, -.mx_Slider_dotContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_Slider_bar { - -webkit-box-sizing: border-box; - box-sizing: border-box; - position: absolute; - height: 1em; - width: 100%; - padding: 0 0.5em; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_Slider_bar > hr { - width: 100%; - height: 0.4em; - background-color: #c1c9d6; - border: 0; -} - -.mx_Slider_selection { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: calc(100% - 1em); - height: 1em; - position: absolute; - pointer-events: none; -} - -.mx_Slider_selectionDot { - position: absolute; - width: 1.1em; - height: 1.1em; - background-color: #0dbd8b; - border-radius: 50%; - -webkit-box-shadow: 0 0 6px #d3d3d3; - box-shadow: 0 0 6px #d3d3d3; - z-index: 10; -} - -.mx_Slider_selection > hr { - margin: 0; - border: 0.2em solid #0dbd8b; -} - -.mx_Slider_dot { - height: 1em; - width: 1em; - border-radius: 50%; - background-color: #c1c9d6; - z-index: 0; -} - -.mx_Slider_dotActive { - background-color: #0dbd8b; -} - -.mx_Slider_dotValue { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #c1c9d6; -} - -.mx_Slider_labelContainer { - width: 1em; -} - -.mx_Slider_label { - position: relative; - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; - left: -50%; -} - -.mx_Spinner { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 100%; - height: 100%; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_MatrixChat_middlePanel .mx_Spinner { - height: auto; -} - -@-webkit-keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -webkit-transform: rotate(1turn); - transform: rotate(1turn); - } -} - -@keyframes spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - to { - -webkit-transform: rotate(1turn); - transform: rotate(1turn); - } -} - -.mx_Spinner_icon { - background-color: #2e2f32; - -webkit-mask: url(../../img/spinner.5a0438d.svg); - mask: url(../../img/spinner.5a0438d.svg); - -webkit-mask-size: contain; - mask-size: contain; - -webkit-animation: spin 1.1s steps(12) infinite; - animation: spin 1.1s steps(12) infinite; -} - -.mx_Checkbox { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} - -.mx_Checkbox input[type="checkbox"] { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; - margin: 0; - padding: 0; -} - -.mx_Checkbox input[type="checkbox"] + label { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - position: relative; - -ms-flex-negative: 0; - flex-shrink: 0; - height: 1.6rem; - width: 1.6rem; - size: 0.5rem; - border: 0.15rem solid rgba(97, 112, 139, 0.5); - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 0.4rem; -} - -.mx_Checkbox input[type="checkbox"] + label > .mx_Checkbox_background img { - display: none; - height: 100%; - width: 100%; - -webkit-filter: invert(100%); - filter: invert(100%); -} - -.mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background { - background: #0dbd8b; - border-color: #0dbd8b; -} - -.mx_Checkbox - input[type="checkbox"]:checked - + label - > .mx_Checkbox_background - img { - display: block; -} - -.mx_Checkbox input[type="checkbox"] + label > :not(.mx_Checkbox_background) { - margin-left: 10px; -} - -.mx_Checkbox input[type="checkbox"]:disabled + label { - opacity: 0.5; - cursor: not-allowed; -} - -.mx_Checkbox - input[type="checkbox"]:checked:disabled - + label - > .mx_Checkbox_background { - background-color: #0dbd8b; - border-color: #0dbd8b; -} - -.mx_Checkbox - input[type="checkbox"].focus-visible - + label - .mx_Checkbox_background { - outline-width: 2px; - outline-style: solid; - outline-color: Highlight; -} - -@media (-webkit-min-device-pixel-ratio: 0) { - .mx_Checkbox - input[type="checkbox"].focus-visible - + label - .mx_Checkbox_background { - outline-color: -webkit-focus-ring-color; - outline-style: auto; - } -} - -.mx_RadioButton { - position: relative; - -webkit-box-align: baseline; - -ms-flex-align: baseline; - align-items: baseline; -} - -.mx_RadioButton, -.mx_RadioButton > .mx_RadioButton_content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_RadioButton > .mx_RadioButton_content { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin-left: 8px; - margin-right: 8px; -} - -.mx_RadioButton .mx_RadioButton_spacer { - -ms-flex-negative: 0; - flex-shrink: 0; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - height: 1.6rem; - width: 1.6rem; -} - -.mx_RadioButton input[type="radio"] { - margin: 0; - padding: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; -} - -.mx_RadioButton input[type="radio"] + div { - -ms-flex-negative: 0; - flex-shrink: 0; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-sizing: border-box; - box-sizing: border-box; - height: 1.6rem; - width: 1.6rem; - margin-left: 2px; - border: 0.15rem solid #61708b; - border-radius: 1.6rem; -} - -.mx_RadioButton input[type="radio"] + div > div { - -webkit-box-sizing: border-box; - box-sizing: border-box; - height: 0.8rem; - width: 0.8rem; - border-radius: 0.8rem; -} - -.mx_RadioButton input[type="radio"].focus-visible + div { - outline-width: 2px; - outline-style: solid; - outline-color: Highlight; -} - -@media (-webkit-min-device-pixel-ratio: 0) { - .mx_RadioButton input[type="radio"].focus-visible + div { - outline-color: -webkit-focus-ring-color; - outline-style: auto; - } -} - -.mx_RadioButton input[type="radio"]:checked + div { - border-color: #0dbd8b; -} - -.mx_RadioButton input[type="radio"]:checked + div > div { - background: #0dbd8b; -} - -.mx_RadioButton input[type="radio"]:disabled + div, -.mx_RadioButton input[type="radio"]:disabled + div + span { - opacity: 0.5; - cursor: not-allowed; -} - -.mx_RadioButton input[type="radio"]:disabled + div { - border-color: #61708b; -} - -.mx_RadioButton input[type="radio"]:checked:disabled + div > div { - background-color: #61708b; -} - -.mx_RadioButton .mx_RadioButton_innerLabel { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - position: relative; - top: 4px; -} - -.mx_RadioButton_outlined { - border: 1px solid #e3e8f0; - border-radius: 8px; -} - -.mx_RadioButton_checked { - border-color: #0dbd8b; -} - -.mx_SyntaxHighlight { - background: none !important; - color: #747474 !important; -} - -.mx_TagComposer .mx_TagComposer_input { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_TagComposer .mx_TagComposer_input .mx_Field { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin: 0; -} - -.mx_TagComposer .mx_TagComposer_input .mx_AccessibleButton { - min-width: 70px; - padding: 0; - margin-left: 16px; -} - -.mx_TagComposer .mx_TagComposer_input .mx_AccessibleButton, -.mx_TagComposer .mx_TagComposer_input .mx_Field, -.mx_TagComposer .mx_TagComposer_input .mx_Field input { - border-radius: 8px; -} - -.mx_TagComposer .mx_TagComposer_tags { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-top: 12px; -} - -.mx_TagComposer .mx_TagComposer_tags .mx_TagComposer_tag { - padding: 6px 8px 8px 12px; - position: relative; - margin-right: 12px; - margin-top: 12px; -} - -.mx_TagComposer .mx_TagComposer_tags .mx_TagComposer_tag:before { - content: ""; - border-radius: 20px; - background-color: #8d99a5; - opacity: 0.15; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - pointer-events: none; -} - -.mx_TagComposer .mx_TagComposer_tags .mx_AccessibleButton { - background-image: url(../../img/subtract.880420e.svg); - width: 16px; - height: 16px; - margin-left: 8px; - display: inline-block; - vertical-align: middle; - cursor: pointer; -} - -.mx_TextWithTooltip_tooltip { - display: none; -} - -.mx_ToggleSwitch { - -webkit-transition: background-color 0.2s ease-out 0.1s; - transition: background-color 0.2s ease-out 0.1s; - width: 4.4rem; - height: 2rem; - border-radius: 1.5rem; - padding: 2px; - background-color: #c1c9d6; - opacity: 0.5; -} - -.mx_ToggleSwitch_enabled { - cursor: pointer; - opacity: 1; -} - -.mx_ToggleSwitch.mx_ToggleSwitch_on { - background-color: #0dbd8b; -} - -.mx_ToggleSwitch.mx_ToggleSwitch_on > .mx_ToggleSwitch_ball { - left: calc(100% - 2rem); -} - -.mx_ToggleSwitch_ball { - position: relative; - width: 2rem; - height: 2rem; - border-radius: 2rem; - background-color: #fff; - -webkit-transition: left 0.15s ease-out 0.1s; - transition: left 0.15s ease-out 0.1s; - left: 0; -} - -@-webkit-keyframes mx_fadein { - 0% { - opacity: 0; - } - to { - opacity: 1; - } -} - -@keyframes mx_fadein { - 0% { - opacity: 0; - } - to { - opacity: 1; - } -} - -@-webkit-keyframes mx_fadeout { - 0% { - opacity: 1; - } - to { - opacity: 0; - } -} - -@keyframes mx_fadeout { - 0% { - opacity: 1; - } - to { - opacity: 0; - } -} - -.mx_Tooltip_chevron { - position: absolute; - left: -7px; - top: 10px; - width: 0; - height: 0; - border-top: 7px solid transparent; - border-right: 7px solid #e7e7e7; - border-bottom: 7px solid transparent; -} - -.mx_Tooltip_chevron:after { - content: ""; - width: 0; - height: 0; - border-top: 6px solid transparent; - border-right: 6px solid #fff; - border-bottom: 6px solid transparent; - position: absolute; - top: -6px; - left: 1px; -} - -.mx_Tooltip { - position: fixed; - border-radius: 8px; - -webkit-box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); - box-shadow: 4px 4px 12px 0 rgba(118, 131, 156, 0.6); - z-index: 6000; - padding: 10px; - pointer-events: none; - line-height: 1.4rem; - font-size: 1.2rem; - font-weight: 500; - max-width: 200px; - word-break: break-word; - margin-right: 50px; - background-color: #27303a; - color: #fff; - border: 0; - text-align: center; -} - -.mx_Tooltip, -.mx_Tooltip .mx_Tooltip_chevron { - display: none; -} - -.mx_Tooltip.mx_Tooltip_visible { - -webkit-animation: mx_fadein 0.2s forwards; - animation: mx_fadein 0.2s forwards; -} - -.mx_Tooltip.mx_Tooltip_invisible { - -webkit-animation: mx_fadeout 0.1s forwards; - animation: mx_fadeout 0.1s forwards; -} - -.mx_Field_tooltip { - background-color: #fff; - color: #2e2f32; - border: 1px solid #e7e7e7; - text-align: unset; -} - -.mx_Field_tooltip .mx_Tooltip_chevron { - display: unset; -} - -.mx_Tooltip_title { - font-weight: 600; -} - -.mx_Tooltip_sub { - opacity: 0.7; - margin-top: 4px; -} - -.mx_TooltipButton { - display: inline-block; - width: 11px; - height: 11px; - margin-left: 5px; - border: 2px solid #dbdbdb; - border-radius: 20px; - color: #dbdbdb; - -webkit-transition: opacity 0.2s ease-in; - transition: opacity 0.2s ease-in; - opacity: 0.6; - line-height: 1.1rem; - text-align: center; - cursor: pointer; -} - -.mx_TooltipButton:hover { - opacity: 1; -} - -.mx_TooltipButton_container { - position: relative; - top: -18px; - left: 4px; -} - -.mx_TooltipButton_helpText { - width: 400px; - text-align: start; - line-height: 17px !important; -} - -.mx_Validation { - position: relative; -} - -.mx_Validation_details { - padding-left: 20px; - margin: 0; -} - -.mx_Validation_description + .mx_Validation_details { - margin: 1em 0 0; -} - -.mx_Validation_detail { - position: relative; - font-weight: 400; - list-style: none; - margin-bottom: 0.5em; -} - -.mx_Validation_detail:last-child { - margin-bottom: 0; -} - -.mx_Validation_detail:before { - content: ""; - position: absolute; - width: 14px; - height: 14px; - top: 0; - left: -18px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_Validation_detail.mx_Validation_valid { - color: #0dbd8b; -} - -.mx_Validation_detail.mx_Validation_valid:before { - -webkit-mask-image: url(../../img/feather-customised/check.5745b4e.svg); - mask-image: url(../../img/feather-customised/check.5745b4e.svg); - background-color: #0dbd8b; -} - -.mx_Validation_detail.mx_Validation_invalid { - color: #ff4b55; -} - -.mx_Validation_detail.mx_Validation_invalid:before { - -webkit-mask-image: url(../../img/feather-customised/x.9662221.svg); - mask-image: url(../../img/feather-customised/x.9662221.svg); - background-color: #ff4b55; -} - -.mx_EmojiPicker { - width: 340px; - height: 450px; - border-radius: 4px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_EmojiPicker_body { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow-y: scroll; - scrollbar-width: thin; - scrollbar-color: rgba(0, 0, 0, 0.2) transparent; -} - -.mx_EmojiPicker_header { - padding: 4px 8px 0; - border-bottom: 1px solid #e9edf1; -} - -.mx_EmojiPicker_anchor { - padding: 8px 8px 6px; - border: none; - border-bottom: 2px solid transparent; - background-color: transparent; - border-radius: 4px 4px 0 0; - width: 36px; - height: 38px; -} - -.mx_EmojiPicker_anchor:not(:disabled) { - cursor: pointer; -} - -.mx_EmojiPicker_anchor:not(:disabled):hover { - background-color: #ddd; - border-bottom: 2px solid #0dbd8b; -} - -.mx_EmojiPicker_anchor:before { - background-color: #2e2f32; - content: ""; - display: inline-block; - -webkit-mask-size: 100%; - mask-size: 100%; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - width: 100%; - height: 100%; -} - -.mx_EmojiPicker_anchor:disabled:before { - background-color: #ddd; -} - -.mx_EmojiPicker_anchor_activity:before { - -webkit-mask-image: url(../../img/emojipicker/activity.921ec9f.svg); - mask-image: url(../../img/emojipicker/activity.921ec9f.svg); -} - -.mx_EmojiPicker_anchor_custom:before { - -webkit-mask-image: url(../../img/emojipicker/custom.e1cd0fd.svg); - mask-image: url(../../img/emojipicker/custom.e1cd0fd.svg); -} - -.mx_EmojiPicker_anchor_flags:before { - -webkit-mask-image: url(../../img/emojipicker/flags.1a8855e.svg); - mask-image: url(../../img/emojipicker/flags.1a8855e.svg); -} - -.mx_EmojiPicker_anchor_foods:before { - -webkit-mask-image: url(../../img/emojipicker/foods.c6b220a.svg); - mask-image: url(../../img/emojipicker/foods.c6b220a.svg); -} - -.mx_EmojiPicker_anchor_nature:before { - -webkit-mask-image: url(../../img/emojipicker/nature.6540b99.svg); - mask-image: url(../../img/emojipicker/nature.6540b99.svg); -} - -.mx_EmojiPicker_anchor_objects:before { - -webkit-mask-image: url(../../img/emojipicker/objects.4d34f58.svg); - mask-image: url(../../img/emojipicker/objects.4d34f58.svg); -} - -.mx_EmojiPicker_anchor_people:before { - -webkit-mask-image: url(../../img/emojipicker/people.e918580.svg); - mask-image: url(../../img/emojipicker/people.e918580.svg); -} - -.mx_EmojiPicker_anchor_places:before { - -webkit-mask-image: url(../../img/emojipicker/places.7310322.svg); - mask-image: url(../../img/emojipicker/places.7310322.svg); -} - -.mx_EmojiPicker_anchor_recent:before { - -webkit-mask-image: url(../../img/emojipicker/recent.13b42e2.svg); - mask-image: url(../../img/emojipicker/recent.13b42e2.svg); -} - -.mx_EmojiPicker_anchor_symbols:before { - -webkit-mask-image: url(../../img/emojipicker/symbols.15a557d.svg); - mask-image: url(../../img/emojipicker/symbols.15a557d.svg); -} - -.mx_EmojiPicker_anchor_visible { - border-bottom: 2px solid #0dbd8b; -} - -.mx_EmojiPicker_search { - margin: 8px; - border-radius: 4px; - border: 1px solid #e7e7e7; - background-color: #fff; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_EmojiPicker_search input { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - border: none; - padding: 8px 12px; - border-radius: 4px 0; -} - -.mx_EmojiPicker_search button { - border: none; - background-color: inherit; - margin: 0; - padding: 8px; - -ms-flex-item-align: center; - align-self: center; - width: 32px; - height: 32px; -} - -.mx_EmojiPicker_search_clear { - cursor: pointer; -} - -.mx_EmojiPicker_search_icon { - width: 16px; - margin: 8px; -} - -.mx_EmojiPicker_search_icon:not(.mx_EmojiPicker_search_clear) { - pointer-events: none; -} - -.mx_EmojiPicker_search_icon:after { - -webkit-mask: url(../../img/emojipicker/search.973c315.svg) no-repeat; - mask: url(../../img/emojipicker/search.973c315.svg) no-repeat; - -webkit-mask-size: 100%; - mask-size: 100%; - background-color: #2e2f32; - content: ""; - display: inline-block; - width: 100%; - height: 100%; -} - -.mx_EmojiPicker_search_clear:after { - -webkit-mask-image: url(../../img/emojipicker/delete.f7344c5.svg); - mask-image: url(../../img/emojipicker/delete.f7344c5.svg); -} - -.mx_EmojiPicker_category { - padding: 0 12px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_EmojiPicker_category_label { - width: 304px; -} - -.mx_EmojiPicker_list { - width: 304px; - padding: 0; - margin: 0; -} - -.mx_EmojiPicker_item_wrapper { - display: inline-block; - list-style: none; - width: 38px; - cursor: pointer; -} - -.mx_EmojiPicker_item { - display: inline-block; - font-size: 2rem; - padding: 5px; - width: 100%; - height: 100%; - -webkit-box-sizing: border-box; - box-sizing: border-box; - text-align: center; - border-radius: 4px; -} - -.mx_EmojiPicker_item:hover { - background-color: #ddd; -} - -.mx_EmojiPicker_item_selected { - color: rgba(0, 0, 0, 0.5); - border: 1px solid #0dbd8b; - padding: 4px; -} - -.mx_EmojiPicker_category_label, -.mx_EmojiPicker_preview_name { - font-size: 1.6rem; - font-weight: 600; - margin: 0; -} - -.mx_EmojiPicker_footer { - border-top: 1px solid #e9edf1; - min-height: 72px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_EmojiPicker_preview_emoji { - font-size: 3.2rem; - padding: 8px 16px; -} - -.mx_EmojiPicker_preview_text { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_EmojiPicker_name { - text-transform: capitalize; -} - -.mx_EmojiPicker_shortcode { - color: #747474; - font-size: 1.4rem; -} - -.mx_EmojiPicker_shortcode:after, -.mx_EmojiPicker_shortcode:before { - content: ":"; -} - -.mx_EmojiPicker_quick { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-pack: distribute; - justify-content: space-around; -} - -.mx_EmojiPicker_quick_header .mx_EmojiPicker_name { - margin-right: 4px; -} - -.mx_GroupPublicity_toggle { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin: 8px; -} - -.mx_GroupPublicity_toggle .mx_GroupTile { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - cursor: pointer; - -webkit-box-sizing: border-box; - box-sizing: border-box; - width: 100%; -} - -.mx_GroupPublicity_toggle .mx_ToggleSwitch { - float: right; -} - -.mx_GroupRoomTile { - position: relative; - color: #2e2f32; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_GroupRoomList_wrapper { - padding: 10px; -} - -.mx_GroupUserSettings_groupPublicity_scrollbox { - height: 200px; - border: 1px solid transparent; - border-radius: 3px; - overflow: hidden; -} - -.mx_CallEvent { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - background-color: #f2f5f8; - border-radius: 8px; - margin: 10px auto; - max-width: 75%; - -webkit-box-sizing: border-box; - box-sizing: border-box; - height: 60px; -} - -.mx_CallEvent.mx_CallEvent_voice - .mx_CallEvent_content_button_answer - span:before, -.mx_CallEvent.mx_CallEvent_voice - .mx_CallEvent_content_button_callBack - span:before, -.mx_CallEvent.mx_CallEvent_voice .mx_CallEvent_type_icon:before { - -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); - mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); -} - -.mx_CallEvent.mx_CallEvent_video - .mx_CallEvent_content_button_answer - span:before, -.mx_CallEvent.mx_CallEvent_video - .mx_CallEvent_content_button_callBack - span:before, -.mx_CallEvent.mx_CallEvent_video .mx_CallEvent_type_icon:before { - -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); - mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); -} - -.mx_CallEvent .mx_CallEvent_info { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-left: 12px; -} - -.mx_CallEvent .mx_CallEvent_info .mx_CallEvent_info_basic { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - margin-left: 10px; -} - -.mx_CallEvent .mx_CallEvent_info .mx_CallEvent_info_basic .mx_CallEvent_sender { - font-weight: 600; - font-size: 1.5rem; - line-height: 1.8rem; - margin-bottom: 3px; -} - -.mx_CallEvent .mx_CallEvent_info .mx_CallEvent_info_basic .mx_CallEvent_type { - font-weight: 400; - color: #737d8c; - font-size: 1.2rem; - line-height: 1.3rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CallEvent - .mx_CallEvent_info - .mx_CallEvent_info_basic - .mx_CallEvent_type - .mx_CallEvent_type_icon { - height: 13px; - width: 13px; - margin-right: 5px; -} - -.mx_CallEvent - .mx_CallEvent_info - .mx_CallEvent_info_basic - .mx_CallEvent_type - .mx_CallEvent_type_icon:before { - content: ""; - position: absolute; - height: 13px; - width: 13px; - background-color: #8d99a5; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_CallEvent .mx_CallEvent_content { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #737d8c; - margin-right: 16px; -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_button { - height: 24px; - padding: 0 12px; - margin-left: 8px; -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_button span { - padding: 8px 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_button span:before { - content: ""; - display: inline-block; - background-color: #fff; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 16px; - mask-size: 16px; - width: 16px; - height: 16px; - margin-right: 8px; -} - -.mx_CallEvent - .mx_CallEvent_content - .mx_CallEvent_content_button_reject - span:before { - -webkit-mask-image: url(../../img/element-icons/call/hangup.a207e54.svg); - mask-image: url(../../img/element-icons/call/hangup.a207e54.svg); -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_content_tooltip { - margin-right: 5px; -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_iconButton { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - margin-right: 8px; -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_iconButton:before { - content: ""; - height: 16px; - width: 16px; - background-color: #8d99a5; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_silence:before { - -webkit-mask-image: url(../../img/voip/silence.08cd2d6.svg); - mask-image: url(../../img/voip/silence.08cd2d6.svg); -} - -.mx_CallEvent .mx_CallEvent_content .mx_CallEvent_unSilence:before { - -webkit-mask-image: url(../../img/voip/un-silence.cebdd12.svg); - mask-image: url(../../img/voip/un-silence.cebdd12.svg); -} - -.mx_CreateEvent:before { - background-color: #91a1c0; - -webkit-mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); - mask-image: url(../../img/element-icons/chat-bubbles.e2bd2cb.svg); -} - -.mx_DateSeparator { - clear: both; - margin: 4px 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 1.4rem; - color: #9e9e9e; -} - -.mx_DateSeparator > hr { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - height: 0; - border: none; - border-bottom: 1px solid transparent; -} - -.mx_DateSeparator > div { - margin: 0 25px; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; -} - -.mx_EventTileBubble { - background-color: #f2f5f8; - padding: 10px; - border-radius: 8px; - margin: 10px auto; - max-width: 75%; - -webkit-box-sizing: border-box; - box-sizing: border-box; - display: grid; - grid-template-columns: 24px minmax(0, 1fr) -webkit-min-content; - grid-template-columns: 24px minmax(0, 1fr) min-content; -} - -.mx_EventTileBubble:after, -.mx_EventTileBubble:before { - position: relative; - grid-column: 1; - grid-row: 1/3; - width: 16px; - height: 16px; - content: ""; - top: 0; - bottom: 0; - left: 0; - right: 0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - margin-top: 4px; -} - -.mx_EventTileBubble .mx_EventTileBubble_subtitle, -.mx_EventTileBubble .mx_EventTileBubble_title { - overflow-wrap: break-word; -} - -.mx_EventTileBubble .mx_EventTileBubble_title { - font-weight: 600; - font-size: 1.5rem; - grid-column: 2; - grid-row: 1; -} - -.mx_EventTileBubble .mx_EventTileBubble_subtitle { - font-size: 1.2rem; - grid-column: 2; - grid-row: 2; -} - -.mx_MEmoteBody { - white-space: pre-wrap; -} - -.mx_MEmoteBody_sender { - cursor: pointer; -} - -.mx_MFileBody_download { - color: #0dbd8b; -} - -.mx_MFileBody_download .mx_MFileBody_download_icon { - width: 12px; - height: 12px; - -webkit-mask-size: 12px; - mask-size: 12px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/download.4f331f0.svg); - mask-image: url(../../img/download.4f331f0.svg); - background-color: #0dbd8b; - display: inline-block; -} - -.mx_MFileBody_download a { - color: #0dbd8b; - text-decoration: none; - cursor: pointer; -} - -.mx_MFileBody_download object { - margin-left: -16px; - padding-right: 4px; - margin-top: -4px; - vertical-align: middle; - pointer-events: none; -} - -.mx_MFileBody_download iframe { - margin: 0; - padding: 0; - border: none; - width: 100%; - height: 1.5em; -} - -.mx_MFileBody_info .mx_MFileBody_info_icon { - background-color: #f4f6fa; - border-radius: 20px; - display: inline-block; - width: 32px; - height: 32px; - position: relative; - vertical-align: middle; - margin-right: 12px; -} - -.mx_MFileBody_info .mx_MFileBody_info_icon:before { - content: ""; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - -webkit-mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); - mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); - background-color: #737d8c; - width: 15px; - height: 15px; - position: absolute; - top: 8px; - left: 8px; -} - -.mx_MFileBody_info .mx_MFileBody_info_filename { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - display: inline-block; - width: calc(100% - 44px); - vertical-align: middle; -} - -.mx_MImageBody_thumbnail { - -o-object-fit: contain; - object-fit: contain; - border-radius: 4px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_MImageBody_thumbnail > div > canvas { - border-radius: 4px; -} - -.mx_MImageBody_thumbnail_container { - overflow: hidden; - position: relative; -} - -.mx_MImageBody_gifLabel { - position: absolute; - display: block; - top: 0; - left: 14px; - padding: 5px; - border-radius: 5px; - background: rgba(0, 0, 0, 0.7); - border: 2px solid rgba(0, 0, 0, 0.2); - color: #fff; - pointer-events: none; -} - -.mx_HiddenImagePlaceholder { - position: absolute; - left: 0; - top: 0; - bottom: 0; - right: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - text-align: center; - cursor: pointer; - background-color: #f3f8fd; -} - -.mx_HiddenImagePlaceholder .mx_HiddenImagePlaceholder_button { - color: #0dbd8b; -} - -.mx_HiddenImagePlaceholder - .mx_HiddenImagePlaceholder_button - span.mx_HiddenImagePlaceholder_eye { - margin-right: 8px; - background-color: #0dbd8b; - -webkit-mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); - mask-image: url(../../img/feather-customised/eye.52aa0d2.svg); - display: inline-block; - width: 18px; - height: 14px; -} - -.mx_HiddenImagePlaceholder - .mx_HiddenImagePlaceholder_button - span:not(.mx_HiddenImagePlaceholder_eye) { - vertical-align: text-bottom; -} - -.mx_EventTile:hover .mx_HiddenImagePlaceholder { - background-color: #fff; -} - -.mx_MImageReplyBody { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_MImageReplyBody .mx_MImageBody_thumbnail_container { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-right: 4px; -} - -.mx_MImageReplyBody .mx_MImageReplyBody_info { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_MImageReplyBody .mx_MImageReplyBody_info .mx_MImageReplyBody_sender { - grid-area: sender; -} - -.mx_MImageReplyBody .mx_MImageReplyBody_info .mx_MImageReplyBody_filename { - grid-area: filename; -} - -.mx_MJitsiWidgetEvent:before { - background-color: #91a1c0; - -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); - mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); -} - -.mx_MNoticeBody { - white-space: pre-wrap; - opacity: 0.6; -} - -.mx_MStickerBody_wrapper { - padding: 20px 0; -} - -.mx_MStickerBody_tooltip { - position: absolute; - top: 50%; -} - -.mx_MStickerBody_hidden { - max-width: 220px; - text-decoration: none; - text-align: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_MTextBody { - white-space: pre-wrap; -} - -span.mx_MVideoBody video.mx_MVideoBody { - max-width: 100%; - height: auto; - border-radius: 4px; -} - -.mx_MediaBody { - background-color: #e3e8f0; - border-radius: 12px; - max-width: 243px; - color: #737d8c; - font-size: 1.4rem; - line-height: 2.4rem; - padding: 6px 12px; -} - -.mx_MessageActionBar { - position: absolute; - visibility: hidden; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 32px; - line-height: 2.4rem; - border-radius: 8px; - background: #fff; - border: 1px solid #e7e7e7; - top: -32px; - right: 8px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - z-index: 1; -} - -.mx_MessageActionBar:before { - content: ""; - position: absolute; - width: calc(66px + 100%); - height: calc(20px + 100%); - top: -12px; - left: -58px; - z-index: -1; - cursor: auto; -} - -.mx_MessageActionBar > * { - white-space: nowrap; - display: inline-block; - position: relative; - margin: 2px; -} - -.mx_MessageActionBar > :hover { - background: rgba(141, 151, 165, 0.2); - border-radius: 6px; - z-index: 1; -} - -.mx_MessageActionBar_maskButton { - width: 28px; - height: 28px; -} - -.mx_MessageActionBar_maskButton:after { - content: ""; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - -webkit-mask-size: 18px; - mask-size: 18px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #737d8c; -} - -.mx_MessageActionBar_maskButton:hover:after { - background-color: #2e2f32; -} - -.mx_MessageActionBar_reactButton:after { - -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); - mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); -} - -.mx_MessageActionBar_replyButton:after { - -webkit-mask-image: url(../../img/element-icons/room/message-bar/reply.5812741.svg); - mask-image: url(../../img/element-icons/room/message-bar/reply.5812741.svg); -} - -.mx_MessageActionBar_editButton:after { - -webkit-mask-image: url(../../img/element-icons/room/message-bar/edit.688678e.svg); - mask-image: url(../../img/element-icons/room/message-bar/edit.688678e.svg); -} - -.mx_MessageActionBar_optionsButton:after { - -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); - mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); -} - -.mx_MessageActionBar_resendButton:after { - -webkit-mask-image: url(../../img/element-icons/retry.6cd23ad.svg); - mask-image: url(../../img/element-icons/retry.6cd23ad.svg); -} - -.mx_MessageActionBar_cancelButton:after { - -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); - mask-image: url(../../img/element-icons/trashcan.3b626db.svg); -} - -.mx_MessageActionBar_downloadButton:after { - -webkit-mask-size: 14px; - mask-size: 14px; - -webkit-mask-image: url(../../img/download.4f331f0.svg); - mask-image: url(../../img/download.4f331f0.svg); -} - -.mx_MessageActionBar_downloadButton.mx_MessageActionBar_downloadSpinnerButton:after { - background-color: transparent; -} - -.mx_MessageTimestamp { - color: #acacac; - font-size: 1rem; - -webkit-font-feature-settings: "tnum"; - font-feature-settings: "tnum"; - font-variant-numeric: tabular-nums; -} - -.mx_MjolnirBody { - opacity: 0.4; -} - -.mx_ReactionsRow { - margin: 6px 0; - color: #2e2f32; -} - -.mx_ReactionsRow .mx_ReactionsRow_addReactionButton { - position: relative; - display: inline-block; - visibility: hidden; - width: 24px; - height: 24px; - vertical-align: middle; - margin-left: 4px; - margin-right: 4px; -} - -.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:before { - content: ""; - position: absolute; - height: 100%; - width: 100%; - -webkit-mask-size: 16px; - mask-size: 16px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #8d99a5; - -webkit-mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); - mask-image: url(../../img/element-icons/room/message-bar/emoji.af14771.svg); -} - -.mx_ReactionsRow - .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active { - visibility: visible; -} - -.mx_ReactionsRow - .mx_ReactionsRow_addReactionButton.mx_ReactionsRow_addReactionButton_active:before, -.mx_ReactionsRow .mx_ReactionsRow_addReactionButton:hover:before { - background-color: #2e2f32; -} - -.mx_EventTile:hover .mx_ReactionsRow_addReactionButton { - visibility: visible; -} - -.mx_ReactionsRow_showAll { - text-decoration: none; - font-size: 1.2rem; - line-height: 2rem; - margin-left: 4px; - vertical-align: middle; -} - -.mx_ReactionsRow_showAll:link, -.mx_ReactionsRow_showAll:visited { - color: #8d99a5; -} - -.mx_ReactionsRow_showAll:hover { - color: #2e2f32; -} - -.mx_ReactionsRowButton { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - line-height: 2rem; - margin-right: 6px; - padding: 1px 6px; - border: 1px solid #e9edf1; - border-radius: 10px; - background-color: #f3f8fd; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - vertical-align: middle; -} - -.mx_ReactionsRowButton:hover { - border-color: #ddd; -} - -.mx_ReactionsRowButton.mx_ReactionsRowButton_selected { - background-color: #e9fff9; - border-color: #0dbd8b; -} - -.mx_ReactionsRowButton.mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_ReactionsRowButton .mx_ReactionsRowButton_content { - max-width: 100px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - padding-right: 4px; -} - -.mx_RedactedBody { - white-space: pre-wrap; - color: #61708b; - vertical-align: middle; - padding-left: 20px; - position: relative; -} - -.mx_RedactedBody:before { - height: 14px; - width: 14px; - background-color: #61708b; - -webkit-mask-image: url(../../img/feather-customised/trash.custom.1e6ecd4.svg); - mask-image: url(../../img/feather-customised/trash.custom.1e6ecd4.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - content: ""; - position: absolute; - top: 1px; - left: 0; -} - -.mx_RoomAvatarEvent { - opacity: 0.5; - overflow-y: hidden; -} - -.mx_RoomAvatarEvent_avatar { - display: inline; - position: relative; - top: 5px; -} - -.mx_SenderProfile_displayName { - font-weight: 600; -} - -.mx_SenderProfile_mxid { - font-weight: 600; - font-size: 1.1rem; - margin-left: 5px; - opacity: 0.5; -} - -.mx_TextualEvent { - opacity: 0.5; - overflow-y: hidden; -} - -.mx_TextualEvent a { - color: #0dbd8b; - cursor: pointer; -} - -.mx_UnknownBody { - white-space: pre-wrap; -} - -.mx_EventTile_content.mx_ViewSourceEvent { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - opacity: 0.6; - font-size: 1.2rem; -} - -.mx_EventTile_content.mx_ViewSourceEvent code, -.mx_EventTile_content.mx_ViewSourceEvent pre { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_EventTile_content.mx_ViewSourceEvent pre { - line-height: 1.2; - margin: 3.5px 0; -} - -.mx_EventTile_content.mx_ViewSourceEvent .mx_ViewSourceEvent_toggle { - width: 12px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: 0 center; - mask-position: 0 center; - -webkit-mask-size: auto 12px; - mask-size: auto 12px; - visibility: hidden; - background-color: #0dbd8b; - -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); - mask-image: url(../../img/feather-customised/maximise.dc32127.svg); -} - -.mx_EventTile_content.mx_ViewSourceEvent.mx_ViewSourceEvent_expanded - .mx_ViewSourceEvent_toggle { - -webkit-mask-position: 0 bottom; - mask-position: 0 bottom; - margin-bottom: 7px; - -webkit-mask-image: url(../../img/feather-customised/minimise.aec9142.svg); - mask-image: url(../../img/feather-customised/minimise.aec9142.svg); -} - -.mx_EventTile_content.mx_ViewSourceEvent:hover .mx_ViewSourceEvent_toggle { - visibility: visible; -} - -.mx_cryptoEvent.mx_cryptoEvent_icon:before { - background-color: #fff; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 80%; - mask-size: 80%; -} - -.mx_cryptoEvent.mx_cryptoEvent_icon:after, -.mx_cryptoEvent.mx_cryptoEvent_icon:before { - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); -} - -.mx_cryptoEvent.mx_cryptoEvent_icon:after { - background-color: #91a1c0; -} - -.mx_cryptoEvent.mx_cryptoEvent_icon_verified:after { - -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); - mask-image: url(../../img/e2e/verified.5be6c9f.svg); - background-color: #0dbd8b; -} - -.mx_cryptoEvent.mx_cryptoEvent_icon_warning:after { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); - background-color: #ff4b55; -} - -.mx_cryptoEvent .mx_cryptoEvent_buttons, -.mx_cryptoEvent .mx_cryptoEvent_state { - grid-column: 3; - grid-row: 1/3; -} - -.mx_cryptoEvent .mx_cryptoEvent_buttons { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - grid-gap: 5px; - gap: 5px; -} - -.mx_cryptoEvent .mx_cryptoEvent_state { - width: 130px; - padding: 10px 20px; - margin: auto 0; - text-align: center; - color: #8d99a5; - overflow-wrap: break-word; - font-size: 1.2rem; -} - -.mx_BaseCard { - padding: 0 8px; - overflow: hidden; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_BaseCard .mx_BaseCard_header { - margin: 8px 0; -} - -.mx_BaseCard .mx_BaseCard_header > h2 { - margin: 0 44px; - font-size: 1.8rem; - font-weight: 600; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back, -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close { - position: absolute; - background-color: rgba(141, 151, 165, 0.2); - height: 20px; - width: 20px; - margin: 12px; - top: 0; - border-radius: 10px; -} - -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before, -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before { - content: ""; - position: absolute; - height: 20px; - width: 20px; - top: 0; - left: 0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #91a1c0; -} - -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back { - left: 0; -} - -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_back:before { - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - -webkit-mask-size: 22px; - mask-size: 22px; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close { - right: 0; -} - -.mx_BaseCard .mx_BaseCard_header .mx_BaseCard_close:before { - -webkit-mask-image: url(../../img/icons-close.11ff07c.svg); - mask-image: url(../../img/icons-close.11ff07c.svg); - -webkit-mask-size: 8px; - mask-size: 8px; -} - -.mx_BaseCard .mx_AutoHideScrollbar { - margin-right: -8px; - padding-right: 8px; - min-height: 0; - width: 100%; - height: 100%; -} - -.mx_BaseCard .mx_BaseCard_Group { - margin: 20px 0 16px; -} - -.mx_BaseCard .mx_BaseCard_Group > * { - margin-left: 12px; - margin-right: 12px; -} - -.mx_BaseCard .mx_BaseCard_Group > h1 { - color: #8d99a5; - font-size: 1.2rem; - font-weight: 500; -} - -.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button { - padding: 10px 38px 10px 12px; - margin: 0; - position: relative; - font-size: 1.3rem; - height: 20px; - line-height: 20px; - border-radius: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:hover { - background-color: rgba(141, 151, 165, 0.1); -} - -.mx_BaseCard .mx_BaseCard_Group .mx_BaseCard_Button:after { - content: ""; - position: absolute; - top: 10px; - right: 6px; - height: 20px; - width: 20px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #c1c6cd; - -webkit-transform: rotate(270deg); - transform: rotate(270deg); - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_BaseCard - .mx_BaseCard_Group - .mx_BaseCard_Button.mx_AccessibleButton_disabled { - padding-right: 12px; -} - -.mx_BaseCard - .mx_BaseCard_Group - .mx_BaseCard_Button.mx_AccessibleButton_disabled:after { - content: unset; -} - -.mx_BaseCard .mx_BaseCard_footer { - padding-top: 4px; - text-align: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-pack: distribute; - justify-content: space-around; -} - -.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_kind_secondary { - color: #737d8c; - background-color: rgba(141, 151, 165, 0.2); - font-weight: 600; - font-size: 1.4rem; -} - -.mx_BaseCard .mx_BaseCard_footer .mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_FilePanel.mx_BaseCard, -.mx_MemberList.mx_BaseCard, -.mx_NotificationPanel.mx_BaseCard, -.mx_UserInfo.mx_BaseCard { - padding: 32px 0 0; -} - -.mx_FilePanel.mx_BaseCard .mx_AutoHideScrollbar, -.mx_MemberList.mx_BaseCard .mx_AutoHideScrollbar, -.mx_NotificationPanel.mx_BaseCard .mx_AutoHideScrollbar, -.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar { - margin-right: unset; - padding-right: unset; -} - -.mx_EncryptionInfo_spinner .mx_Spinner { - margin-top: 25px; - margin-bottom: 15px; -} - -.mx_EncryptionInfo_spinner { - text-align: center; -} - -.mx_PinnedMessagesCard { - padding-top: 0; -} - -.mx_PinnedMessagesCard .mx_BaseCard_header { - text-align: center; - margin-top: 0; - border-bottom: 1px solid #e7e7e7; -} - -.mx_PinnedMessagesCard .mx_BaseCard_header > h2 { - font-weight: 600; - font-size: 1.8rem; - margin: 8px 0; -} - -.mx_PinnedMessagesCard .mx_BaseCard_header .mx_BaseCard_close { - margin-right: 6px; -} - -.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 100%; -} - -.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty > div { - height: -webkit-max-content; - height: -moz-max-content; - height: max-content; - text-align: center; - margin: auto 40px; -} - -.mx_PinnedMessagesCard - .mx_PinnedMessagesCard_empty - > div - .mx_PinnedMessagesCard_MessageActionBar { - pointer-events: none; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 32px; - line-height: 2.4rem; - border-radius: 8px; - background: #fff; - border: 1px solid #e7e7e7; - padding: 1px; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; - margin: 0 auto; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_PinnedMessagesCard - .mx_PinnedMessagesCard_empty - > div - .mx_PinnedMessagesCard_MessageActionBar - .mx_MessageActionBar_maskButton { - display: inline-block; - position: relative; -} - -.mx_PinnedMessagesCard - .mx_PinnedMessagesCard_empty - > div - .mx_PinnedMessagesCard_MessageActionBar - .mx_MessageActionBar_optionsButton { - background: rgba(141, 151, 165, 0.2); - border-radius: 6px; - z-index: 1; -} - -.mx_PinnedMessagesCard - .mx_PinnedMessagesCard_empty - > div - .mx_PinnedMessagesCard_MessageActionBar - .mx_MessageActionBar_optionsButton:after { - background-color: #2e2f32; -} - -.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty > div > h2 { - font-weight: 600; - font-size: 1.5rem; - line-height: 2.4rem; - color: #2e2f32; - margin-top: 24px; - margin-bottom: 20px; -} - -.mx_PinnedMessagesCard .mx_PinnedMessagesCard_empty > div > span { - font-size: 1.2rem; - line-height: 1.5rem; - color: #737d8c; -} - -.mx_RoomSummaryCard .mx_BaseCard_header { - text-align: center; - margin-top: 20px; -} - -.mx_RoomSummaryCard .mx_BaseCard_header h2 { - font-weight: 600; - font-size: 1.8rem; - margin: 12px 0 4px; -} - -.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias { - font-size: 1.3rem; - color: #737d8c; -} - -.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_alias, -.mx_RoomSummaryCard .mx_BaseCard_header h2 { - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - text-overflow: ellipsis; - white-space: pre-wrap; -} - -.mx_RoomSummaryCard .mx_BaseCard_header .mx_RoomSummaryCard_avatar { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee { - display: inline-block; - position: relative; - width: 54px; - height: 54px; - border-radius: 50%; - background-color: #737d8c; - margin-top: -3px; - margin-left: -10px; - border: 3px solid #f2f5f8; -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee:before { - content: ""; - position: absolute; - top: 13px; - left: 13px; - height: 28px; - width: 28px; - -webkit-mask-size: cover; - mask-size: cover; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-image: url(../../img/e2e/disabled.6c5c6be.svg); - mask-image: url(../../img/e2e/disabled.6c5c6be.svg); - background-color: #fff; -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee_normal { - background-color: #424446; -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee_normal:before { - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee_verified { - background-color: #0dbd8b; -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee_verified:before { - -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); - mask-image: url(../../img/e2e/verified.5be6c9f.svg); -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee_warning { - background-color: #ff4b55; -} - -.mx_RoomSummaryCard - .mx_BaseCard_header - .mx_RoomSummaryCard_avatar - .mx_RoomSummaryCard_e2ee_warning:before { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); -} - -.mx_RoomSummaryCard .mx_RoomSummaryCard_aboutGroup .mx_RoomSummaryCard_Button { - padding-left: 44px; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_aboutGroup - .mx_RoomSummaryCard_Button:before { - content: ""; - position: absolute; - top: 8px; - left: 10px; - height: 24px; - width: 24px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #c1c6cd; -} - -.mx_RoomSummaryCard .mx_RoomSummaryCard_appsGroup .mx_RoomSummaryCard_Button { - padding: 0; - height: auto; - color: #8d99a5; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_icon_app { - padding: 10px 48px 10px 12px; - text-overflow: ellipsis; - overflow: hidden; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_icon_app - .mx_BaseAvatar_image { - vertical-align: top; - margin-right: 12px; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_icon_app - span { - color: #2e2f32; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_options, -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_pinToggle { - position: absolute; - top: 0; - height: 100%; - width: 24px; - padding: 12px 4px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - min-width: 24px; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_options:hover:after, -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_pinToggle:hover:after { - content: ""; - position: absolute; - height: 24px; - width: 24px; - top: 8px; - left: 0; - border-radius: 12px; - background-color: rgba(141, 151, 165, 0.1); -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_options:before, -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_pinToggle:before { - content: ""; - position: absolute; - height: 16px; - width: 16px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 16px; - mask-size: 16px; - background-color: #c1c6cd; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_pinToggle { - right: 24px; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_pinToggle:before { - -webkit-mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); - mask-image: url(../../img/element-icons/room/pin-upright.65783fb.svg); -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_options { - right: 48px; - display: none; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button - .mx_RoomSummaryCard_app_options:before { - -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); - mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned:after { - opacity: 0.2; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button.mx_RoomSummaryCard_Button_pinned - .mx_RoomSummaryCard_app_pinToggle:before { - background-color: #0dbd8b; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button:hover - .mx_RoomSummaryCard_icon_app { - padding-right: 72px; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button:hover - .mx_RoomSummaryCard_app_options { - display: unset; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button:before { - content: unset; -} - -.mx_RoomSummaryCard - .mx_RoomSummaryCard_appsGroup - .mx_RoomSummaryCard_Button:after { - top: 8px; - pointer-events: none; -} - -.mx_RoomSummaryCard .mx_AccessibleButton_kind_link { - padding: 0; - margin-top: 12px; - margin-bottom: 12px; - font-size: 1.3rem; - font-weight: 600; -} - -.mx_RoomSummaryCard_icon_people:before { - -webkit-mask-image: url(../../img/element-icons/room/members.88c3e93.svg); - mask-image: url(../../img/element-icons/room/members.88c3e93.svg); -} - -.mx_RoomSummaryCard_icon_files:before { - -webkit-mask-image: url(../../img/element-icons/room/files.5709c0c.svg); - mask-image: url(../../img/element-icons/room/files.5709c0c.svg); -} - -.mx_RoomSummaryCard_icon_share:before { - -webkit-mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); - mask-image: url(../../img/element-icons/room/share.54dc3fb.svg); -} - -.mx_RoomSummaryCard_icon_settings:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_RoomSummaryCard_icon_export:before { - -webkit-mask-image: url(../../img/element-icons/export.57444c5.svg); - mask-image: url(../../img/element-icons/export.57444c5.svg); -} - -.mx_UserInfo.mx_BaseCard { - padding-top: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow-y: auto; - font-size: 1.2rem; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel { - cursor: pointer; - position: absolute; - top: 0; - border-radius: 4px; - background-color: #f2f5f8; - margin: 9px; - z-index: 1; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_cancel div { - height: 16px; - width: 16px; - padding: 4px; - -webkit-mask-image: url(../../img/minimise.871d2de.svg); - mask-image: url(../../img/minimise.871d2de.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: 7px center; - mask-position: 7px center; - background-color: #91a1c0; -} - -.mx_UserInfo.mx_BaseCard h2 { - font-size: 1.8rem; - font-weight: 600; - margin: 18px 0 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_container { - padding: 8px 16px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_separator { - border-bottom: 1px solid rgba(46, 47, 50, 0.1); -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetailsContainer { - padding-top: 0; - padding-bottom: 0; - margin-bottom: 8px; -} - -.mx_UserInfo.mx_BaseCard .mx_RoomTile_nameContainer { - width: 154px; -} - -.mx_UserInfo.mx_BaseCard .mx_RoomTile_badge { - display: none; -} - -.mx_UserInfo.mx_BaseCard .mx_RoomTile_name { - width: 160px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar { - margin: 24px 32px 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div { - max-width: 30vh; - margin: 0 auto; - -webkit-transition: 0.5s; - transition: 0.5s; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div > div { - padding-top: 100%; - position: relative; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar > div > div * { - border-radius: 100%; - position: absolute; - top: 0; - left: 0; - width: 100% !important; - height: 100% !important; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_avatar .mx_BaseAvatar_initial { - z-index: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - font-size: 6rem !important; - width: 100% !important; - -webkit-transition: font-size 0.5s; - transition: font-size 0.5s; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_avatar - .mx_BaseAvatar.mx_BaseAvatar_image { - cursor: -webkit-zoom-in; - cursor: zoom-in; -} - -.mx_UserInfo.mx_BaseCard h3 { - text-transform: uppercase; - color: #8d99a5; - font-weight: 600; - font-size: 1.2rem; - margin: 4px 0; -} - -.mx_UserInfo.mx_BaseCard p { - margin: 5px 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile { - text-align: center; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - font-size: 1.8rem; - line-height: 2.5rem; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 span { - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; - word-break: break-all; - text-overflow: ellipsis; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile h2 .mx_E2EIcon { - margin-top: 3px; - margin-right: 4px; - min-width: 18px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_profile .mx_UserInfo_profileStatus { - margin-top: 12px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField { - margin: 6px 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_memberDetails .mx_UserInfo_profileField, -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_memberDetails - .mx_UserInfo_profileField - .mx_UserInfo_roleDescription { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_memberDetails - .mx_UserInfo_profileField - .mx_UserInfo_roleDescription { - margin: 11px 0 12px; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_memberDetails - .mx_UserInfo_profileField - .mx_Field { - margin: 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_field { - cursor: pointer; - color: #0dbd8b; - line-height: 1.6rem; - margin: 8px 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_field.mx_UserInfo_destructive { - color: #ff4b55; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_statusMessage { - font-size: 1.1rem; - opacity: 0.5; - overflow: hidden; - white-space: nowrap; - text-overflow: clip; -} - -.mx_UserInfo.mx_BaseCard .mx_AutoHideScrollbar { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_container:not(.mx_UserInfo_separator) { - padding-top: 16px; - padding-bottom: 0; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_container:not(.mx_UserInfo_separator) - > :not(h3) { - margin-left: 8px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_device { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: 8px 0; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_devices - .mx_UserInfo_device.mx_UserInfo_device_verified - .mx_UserInfo_device_trusted { - color: #0dbd8b; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_devices - .mx_UserInfo_device.mx_UserInfo_device_unverified - .mx_UserInfo_device_trusted { - color: #ff4b55; -} - -.mx_UserInfo.mx_BaseCard - .mx_UserInfo_devices - .mx_UserInfo_device - .mx_UserInfo_device_name { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-right: 5px; - word-break: break-word; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_E2EIcon { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - margin: 2px 5px 0 0; - width: 12px; - height: 12px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_devices .mx_UserInfo_expand { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 11px; -} - -.mx_UserInfo.mx_BaseCard .mx_AccessibleButton.mx_AccessibleButton_hasKind { - padding: 8px 18px; -} - -.mx_UserInfo.mx_BaseCard .mx_UserInfo_wideButton, -.mx_UserInfo.mx_BaseCard .mx_VerificationShowSas .mx_AccessibleButton { - display: block; - margin: 16px 0 8px; -} - -.mx_UserInfo.mx_BaseCard - .mx_VerificationShowSas - .mx_AccessibleButton - + .mx_AccessibleButton { - margin: 8px 0; -} - -.mx_UserInfo.mx_UserInfo_smallAvatar .mx_UserInfo_avatar > div { - max-width: 72px; - margin: 0 auto; -} - -.mx_UserInfo.mx_UserInfo_smallAvatar - .mx_UserInfo_avatar - .mx_BaseAvatar_initial { - font-size: 40px !important; -} - -.mx_VerificationPanel_reciprocate_section .mx_E2EIcon, -.mx_VerificationPanel_verified_section .mx_E2EIcon { - margin: 20px auto !important; -} - -.mx_UserInfo .mx_EncryptionPanel_cancel { - -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); - mask: url(../../img/feather-customised/cancel.23c2689.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - width: 14px; - height: 14px; - background-color: #61708b; - cursor: pointer; - position: absolute; - z-index: 100; - top: 14px; - right: 14px; -} - -.mx_UserInfo .mx_VerificationPanel_qrCode { - padding: 4px 4px 0; - background: #fff; - border-radius: 4px; - width: -webkit-max-content; - width: -moz-max-content; - width: max-content; - max-width: 100%; - margin: 0 auto !important; -} - -.mx_UserInfo .mx_VerificationPanel_qrCode canvas { - height: auto !important; - width: 100% !important; - max-width: 240px; -} - -.mx_UserInfo .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton { - width: 100%; - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding: 10px; - display: block; - margin: 10px 0; -} - -.mx_CompleteSecurity_body .mx_VerificationPanel_QRPhase_startOptions, -.mx_Dialog .mx_VerificationPanel_QRPhase_startOptions { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 10px; - margin-bottom: 10px; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_QRPhase_startOptions - > .mx_VerificationPanel_QRPhase_betweenText, -.mx_Dialog - .mx_VerificationPanel_QRPhase_startOptions - > .mx_VerificationPanel_QRPhase_betweenText { - width: 50px; - vertical-align: middle; - text-align: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption, -.mx_Dialog - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption { - background-color: #f3f8fd; - border-radius: 10px; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 20px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - position: relative; - max-width: 310px; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - .mx_VerificationPanel_QRPhase_noQR, -.mx_CompleteSecurity_body - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - canvas, -.mx_Dialog - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - .mx_VerificationPanel_QRPhase_noQR, -.mx_Dialog - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - canvas { - width: 220px !important; - height: 220px !important; - background-color: #fff; - border-radius: 4px; - vertical-align: middle; - text-align: center; - padding: 10px; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - > p, -.mx_Dialog - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - > p { - margin-top: 0; - font-weight: 700; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - .mx_VerificationPanel_QRPhase_helpText, -.mx_Dialog - .mx_VerificationPanel_QRPhase_startOptions - .mx_VerificationPanel_QRPhase_startOption - .mx_VerificationPanel_QRPhase_helpText { - font-size: 1.4rem; - margin: 30px 0; - text-align: center; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_verified_section - .mx_AccessibleButton, -.mx_Dialog .mx_VerificationPanel_verified_section .mx_AccessibleButton { - float: right; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_reciprocate_section - .mx_AccessibleButton, -.mx_Dialog .mx_VerificationPanel_reciprocate_section .mx_AccessibleButton { - margin-left: 10px; - padding: 7px 40px; -} - -.mx_CompleteSecurity_body - .mx_VerificationPanel_reciprocate_section - .mx_VerificationPanel_reciprocateButtons, -.mx_Dialog - .mx_VerificationPanel_reciprocate_section - .mx_VerificationPanel_reciprocateButtons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; -} - -.mx_WidgetCard { - height: 100%; - display: contents; -} - -.mx_WidgetCard .mx_AppTileFullWidth { - max-width: unset; - height: 100%; - border: 0; -} - -.mx_WidgetCard .mx_BaseCard_header { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.mx_WidgetCard .mx_BaseCard_header > h2 { - margin-right: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton { - position: relative; - margin-right: 44px; - height: 20px; - width: 20px; - min-width: 20px; - padding: 0; -} - -.mx_WidgetCard .mx_BaseCard_header .mx_WidgetCard_optionsButton:before { - content: ""; - position: absolute; - width: 20px; - height: 20px; - top: 0; - left: 4px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); - mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); - background-color: #737d8c; -} - -.mx_WidgetCard_maxPinnedTooltip { - background-color: #ff4b55; - color: #fff; -} - -.mx_AliasSettings_editable { - border: 0; - border-bottom: 1px solid #c7c7c7; - padding: 0; - min-width: 240px; -} - -.mx_AliasSettings_editable:focus { - border-bottom: 1px solid #0dbd8b; - outline: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -.mx_AliasSettings summary { - cursor: pointer; - color: #0dbd8b; - font-weight: 600; - list-style: none; -} - -.mx_AliasSettings summary::-webkit-details-marker { - display: none; -} - -.mx_AliasSettings .mx_AliasSettings_localAliasHeader { - margin-top: 35px; -} - -.mx_AppsDrawer { - margin: 5px 5px 5px 18px; - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - overflow: hidden; -} - -.mx_AppsDrawer .mx_AppsContainer_resizerHandleContainer { - width: 100%; - height: 10px; - margin-top: -3px; - display: block; - position: relative; -} - -.mx_AppsDrawer .mx_AppsContainer_resizerHandle { - cursor: ns-resize; - width: 100% !important; - height: 100% !important; - position: absolute; - bottom: 0 !important; -} - -.mx_AppsDrawer .mx_AppsContainer_resizerHandle:after { - content: ""; - position: absolute; - border-radius: 3px; - top: 6px; - bottom: 0; - left: calc(50% - 32px); - right: calc(50% - 32px); -} - -.mx_AppsDrawer:hover .mx_AppsContainer_resizerHandle:after { - opacity: 0.8; - background: #2e2f32; -} - -.mx_AppsDrawer:hover .mx_ResizeHandle_horizontal:before { - position: absolute; - left: 3px; - top: 50%; - -webkit-transform: translateY(-50%); - transform: translateY(-50%); - height: 64px; - width: 4px; - border-radius: 4px; - content: ""; - background-color: #2e2f32; - opacity: 0.8; -} - -.mx_AppsContainer_resizer { - margin-bottom: 8px; -} - -.mx_AppsContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - height: 100%; - width: 100%; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - min-height: 0; -} - -.mx_AppsContainer .mx_AppTile:first-of-type { - border-left-width: 8px; - border-radius: 10px 0 0 10px; -} - -.mx_AppsContainer .mx_AppTile:last-of-type { - border-right-width: 8px; - border-radius: 0 10px 10px 0; -} - -.mx_AppsContainer .mx_ResizeHandle_horizontal { - position: relative; -} - -.mx_AppsContainer .mx_ResizeHandle_horizontal > div { - width: 0; -} - -.mx_AppsDrawer_2apps .mx_AppTile { - width: 50%; -} - -.mx_AppsDrawer_2apps .mx_AppTile:nth-child(3) { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: 0 !important; - min-width: 240px !important; -} - -.mx_AppsDrawer_3apps .mx_AppTile { - width: 33%; -} - -.mx_AppsDrawer_3apps .mx_AppTile:nth-child(3) { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - width: 0 !important; - min-width: 240px !important; -} - -.mx_AppTile { - width: 50%; - min-width: 240px; - border-color: #f2f5f8; - border-style: solid; - border-width: 8px 5px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-sizing: border-box; - box-sizing: border-box; - background-color: #f2f5f8; -} - -.mx_AppTileFullWidth { - width: 100% !important; - border: 5px solid #f2f5f8; - border-radius: 8px; - background-color: #f2f5f8; -} - -.mx_AppTile_mini, -.mx_AppTileFullWidth { - margin: 0; - padding: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_AppTile_mini { - width: 100%; - height: 200px; -} - -.mx_AppTile .mx_AppTile_persistedWrapper, -.mx_AppTile_mini .mx_AppTile_persistedWrapper, -.mx_AppTileFullWidth .mx_AppTile_persistedWrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_AppTile_persistedWrapper div { - width: 100%; - height: 100%; -} - -.mx_AppTileMenuBar { - margin: 0; - font-size: 1.2rem; - background-color: #f2f5f8; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - width: 100%; - padding-top: 2px; - padding-bottom: 8px; -} - -.mx_AppTileMenuBarTitle { - line-height: 20px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.mx_AppTileMenuBarTitle .mx_WidgetAvatar { - margin-right: 12px; -} - -.mx_AppTileMenuBarTitle > :last-child { - margin-left: 9px; -} - -.mx_AppTileMenuBarWidgets { - float: right; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_AppTileMenuBar_iconButton { - width: 12px; - height: 12px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: 0 center; - mask-position: 0 center; - -webkit-mask-size: auto 12px; - mask-size: auto 12px; - background-color: #212121; - margin: 0 3px; -} - -.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_popout { - -webkit-mask-image: url(../../img/feather-customised/widget/external-link.7ab6751.svg); - mask-image: url(../../img/feather-customised/widget/external-link.7ab6751.svg); -} - -.mx_AppTileMenuBar_iconButton.mx_AppTileMenuBar_iconButton_menu { - -webkit-mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); - mask-image: url(../../img/element-icons/room/ellipsis.b82ece6.svg); -} - -.mx_AppTileBody { - height: 100%; - background-color: #fff; -} - -.mx_AppTileBody, -.mx_AppTileBody_mini { - width: 100%; - overflow: hidden; - border-radius: 8px; -} - -.mx_AppTileBody_mini { - height: 200px; -} - -.mx_AppTile .mx_AppTileBody, -.mx_AppTile_mini .mx_AppTileBody_mini, -.mx_AppTileFullWidth .mx_AppTileBody { - height: inherit; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_AppTileBody_mini iframe, -.mx_AppTileBody iframe { - border: none; - width: 100%; - height: 100%; -} - -.mx_AppTileBody iframe { - overflow: hidden; - padding: 0; - margin: 0; - display: block; -} - -.mx_AppPermissionWarning { - text-align: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 100%; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 1.6rem; -} - -.mx_AppPermissionWarning_row { - margin-bottom: 12px; -} - -.mx_AppPermissionWarning_smallText { - font-size: 1.2rem; -} - -.mx_AppPermissionWarning_bolder { - font-weight: 600; -} - -.mx_AppPermissionWarning h4 { - margin: 0; - padding: 0; -} - -.mx_AppPermissionWarning_helpIcon { - margin-top: 1px; - margin-right: 2px; - width: 10px; - height: 10px; - display: inline-block; -} - -.mx_AppPermissionWarning_helpIcon:before { - display: inline-block; - background-color: #0dbd8b; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 12px; - mask-size: 12px; - width: 12px; - height: 12px; - -webkit-mask-position: center; - mask-position: center; - content: ""; - vertical-align: middle; - -webkit-mask-image: url(../../img/feather-customised/help-circle.03fb6cf.svg); - mask-image: url(../../img/feather-customised/help-circle.03fb6cf.svg); -} - -.mx_AppPermissionWarning_tooltip { - -webkit-box-shadow: none; - box-shadow: none; - background-color: #27303a; - color: #fff; - border: none; - border-radius: 3px; - padding: 6px 8px; -} - -.mx_AppPermissionWarning_tooltip ul { - list-style-position: inside; - padding-left: 2px; - margin-left: 0; -} - -.mx_AppLoading { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-weight: 700; - position: relative; - height: 100%; - background-color: #fff !important; - border-radius: 8px; -} - -.mx_AppLoading .mx_Spinner { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.mx_AppLoading_spinner_fadeIn { - -webkit-animation-fill-mode: backwards; - animation-fill-mode: backwards; - -webkit-animation-duration: 0.2s; - animation-duration: 0.2s; - -webkit-animation-delay: 0.5s; - animation-delay: 0.5s; - -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; - animation-name: mx_AppLoading_spinner_fadeIn_animation; -} - -@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { - 0% { - opacity: 0; - } - to { - opacity: 1; - } -} - -@keyframes mx_AppLoading_spinner_fadeIn_animation { - 0% { - opacity: 0; - } - to { - opacity: 1; - } -} - -.mx_AppLoading iframe { - display: none; -} - -.mx_AppsDrawer_resizing .mx_AppTile_persistedWrapper { - z-index: 1; -} - -.mx_Autocomplete { - position: absolute; - bottom: 0; - z-index: 1001; - width: 100%; - background: #fff; - border: 1px solid transparent; - border-bottom: none; - border-radius: 8px 8px 0 0; - max-height: 50vh; - overflow: auto; - -webkit-box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); - box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); -} - -.mx_Autocomplete_ProviderSection { - border-bottom: 1px solid transparent; -} - -.mx_Autocomplete_Completion_block { - height: 34px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 0 12px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #2e2f32; -} - -.mx_Autocomplete_Completion_block * { - margin: 0 3px; -} - -.mx_Autocomplete_Completion_pill { - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 2rem; - height: 3.4rem; - padding: 0.4rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #2e2f32; -} - -.mx_Autocomplete_Completion_pill > * { - margin-right: 0.3rem; -} - -.mx_Autocomplete_Completion_subtitle { - font-style: italic; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_Autocomplete_Completion_description { - color: grey; -} - -.mx_Autocomplete_Completion_container_pill { - margin: 12px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-flow: wrap; - flex-flow: wrap; -} - -.mx_Autocomplete_Completion_container_truncate - .mx_Autocomplete_Completion_description, -.mx_Autocomplete_Completion_container_truncate - .mx_Autocomplete_Completion_subtitle, -.mx_Autocomplete_Completion_container_truncate - .mx_Autocomplete_Completion_title { - max-width: 150px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.mx_Autocomplete_Completion.selected, -.mx_Autocomplete_Completion:hover { - background: #f2f5f8; - outline: none; -} - -.mx_Autocomplete_provider_name { - margin: 12px; - color: #2e2f32; - font-weight: 400; - opacity: 0.4; -} - -.m_RoomView_auxPanel_stateViews { - padding: 5px 5px 5px 19px; - border-bottom: 1px solid transparent; -} - -.m_RoomView_auxPanel_stateViews_span a { - text-decoration: none; - color: inherit; -} - -.m_RoomView_auxPanel_stateViews_span[data-severity="warning"] { - font-weight: 700; - color: orange; -} - -.m_RoomView_auxPanel_stateViews_span[data-severity="alert"] { - font-weight: 700; - color: red; -} - -.m_RoomView_auxPanel_stateViews_span[data-severity="normal"] { - font-weight: 400; -} - -.m_RoomView_auxPanel_stateViews_span[data-severity="notice"] { - font-weight: 400; - color: #a2a2a2; -} - -.m_RoomView_auxPanel_stateViews_delim { - padding: 0 5px; - color: #a2a2a2; -} - -.mx_BasicMessageComposer { - position: relative; -} - -.mx_BasicMessageComposer - .mx_BasicMessageComposer_inputEmpty - > :first-child:before { - content: var(--placeholder); - opacity: 0.333; - width: 0; - height: 0; - overflow: visible; - display: inline-block; - pointer-events: none; - white-space: nowrap; -} - -@-webkit-keyframes visualbell { - 0% { - background-color: #faa; - } - to { - background-color: #fff; - } -} - -.mx_BasicMessageComposer.mx_BasicMessageComposer_input_error { - -webkit-animation: visualbell 0.2s; - animation: visualbell 0.2s; -} - -.mx_BasicMessageComposer .mx_BasicMessageComposer_input { - white-space: pre-wrap; - word-wrap: break-word; - outline: none; - overflow-x: hidden; -} - -.mx_BasicMessageComposer - .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar - span.mx_RoomPill, -.mx_BasicMessageComposer - .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar - span.mx_UserPill { - position: relative; -} - -.mx_BasicMessageComposer - .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar - span.mx_RoomPill:before, -.mx_BasicMessageComposer - .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_shouldShowPillAvatar - span.mx_UserPill:before { - content: var(--avatar-letter); - width: 1.6rem; - height: 1.6rem; - margin-right: 0.24rem; - background: var(--avatar-background), #fff; - color: #fff; - background-repeat: no-repeat; - background-size: 1.6rem; - border-radius: 1.6rem; - text-align: center; - font-weight: 400; - line-height: 1.6rem; - font-size: 1.04rem; -} - -.mx_BasicMessageComposer - .mx_BasicMessageComposer_input.mx_BasicMessageComposer_input_disabled { - pointer-events: none; -} - -.mx_BasicMessageComposer .mx_BasicMessageComposer_AutoCompleteWrapper { - position: relative; - height: 0; -} - -.mx_E2EIcon { - width: 16px; - height: 16px; - margin: 0 9px; - position: relative; - display: block; -} - -.mx_E2EIcon_normal:after, -.mx_E2EIcon_normal:before, -.mx_E2EIcon_verified:after, -.mx_E2EIcon_verified:before, -.mx_E2EIcon_warning:after, -.mx_E2EIcon_warning:before { - content: ""; - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_E2EIcon:before { - background-color: #fff; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 80%; - mask-size: 80%; -} - -.mx_E2EIcon:before, -.mx_E2EIcon_bordered { - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); -} - -.mx_E2EIcon_bordered { - background-color: #f3f8fd; -} - -.mx_E2EIcon_bordered:after { - -webkit-mask-size: 75%; - mask-size: 75%; -} - -.mx_E2EIcon_bordered:before { - -webkit-mask-size: 60%; - mask-size: 60%; -} - -.mx_E2EIcon_warning:after { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); - background-color: #ff4b55; -} - -.mx_E2EIcon_normal:after { - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); - background-color: #91a1c0; -} - -.mx_E2EIcon_verified:after { - -webkit-mask-image: url(../../img/e2e/verified.5be6c9f.svg); - mask-image: url(../../img/e2e/verified.5be6c9f.svg); - background-color: #0dbd8b; -} - -.mx_EditMessageComposer { - padding: 3px; - margin: -7px -10px -5px; - overflow: visible !important; -} - -.mx_EditMessageComposer .mx_BasicMessageComposer_input { - border-radius: 4px; - border: 1px solid transparent; - background-color: #fff; - max-height: 200px; - padding: 3px 6px; -} - -.mx_EditMessageComposer .mx_BasicMessageComposer_input:focus { - border-color: rgba(13, 189, 139, 0.5); -} - -.mx_EditMessageComposer .mx_EditMessageComposer_buttons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - position: absolute; - left: 0; - background: #f3f8fd; - z-index: 100; - right: 0; - margin: 0 -110px 0 0; - padding: 5px 147px 5px 5px; -} - -.mx_EditMessageComposer .mx_EditMessageComposer_buttons .mx_AccessibleButton { - margin-left: 5px; - padding: 5px 40px; -} - -.mx_EventTile_last .mx_EditMessageComposer_buttons { - position: static; - margin-right: -147px; -} - -.mx_EntityTile { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - color: #2e2f32; - cursor: pointer; -} - -.mx_EntityTile .mx_E2EIcon { - margin: 0; - position: absolute; - bottom: 2px; - right: 7px; -} - -.mx_EntityTile:hover { - padding-right: 30px; - position: relative; -} - -.mx_EntityTile:hover:before { - content: ""; - position: absolute; - top: calc(50% - 8px); - right: -8px; - -webkit-mask: url(../../img/member_chevron.4163a20.png); - mask: url(../../img/member_chevron.4163a20.png); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - width: 16px; - height: 16px; - background-color: #91a1c0; -} - -.mx_EntityTile .mx_PresenceLabel { - display: none; -} - -.mx_EntityTile:not(.mx_EntityTile_noHover):hover .mx_PresenceLabel { - display: block; -} - -.mx_EntityTile_invite { - display: table-cell; - vertical-align: middle; - margin-left: 10px; - width: 26px; -} - -.mx_EntityTile_avatar, -.mx_GroupRoomTile_avatar { - padding: 4px 12px 4px 3px; - position: relative; -} - -.mx_EntityTile_name, -.mx_GroupRoomTile_name { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - overflow: hidden; - font-size: 1.4rem; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mx_EntityTile_details { - overflow: hidden; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_EntityTile_ellipsis .mx_EntityTile_name, -.mx_EntityTile_invitePlaceholder .mx_EntityTile_name { - font-style: italic; - color: #2e2f32; -} - -.mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, -.mx_EntityTile_offline_beenactive .mx_EntityTile_name, -.mx_EntityTile_unavailable .mx_EntityTile_avatar, -.mx_EntityTile_unavailable .mx_EntityTile_name { - opacity: 0.5; -} - -.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, -.mx_EntityTile_offline_neveractive .mx_EntityTile_name, -.mx_EntityTile_unknown .mx_EntityTile_avatar, -.mx_EntityTile_unknown .mx_EntityTile_name { - opacity: 0.25; -} - -.mx_EntityTile_subtext { - font-size: 1.1rem; - opacity: 0.5; - overflow: hidden; - white-space: nowrap; - text-overflow: clip; -} - -.mx_EntityTile_power { - -webkit-padding-start: 6px; - padding-inline-start: 6px; - font-size: 1rem; - color: #8d99a5; - max-width: 6em; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.mx_EntityTile:hover .mx_EntityTile_power { - display: none; -} - -.mx_EventTile[data-layout="bubble"], -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary { - --avatarSize: 32px; - --gutterSize: 11px; - --cornerRadius: 12px; - --maxWidth: 70%; -} - -.mx_EventTile[data-layout="bubble"] { - position: relative; - margin-top: var(--gutterSize); - margin-left: 50px; - margin-right: 100px; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation { - margin-top: 2px; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile { - padding-top: 0; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_selected:before, -.mx_EventTile[data-layout="bubble"]:hover:before { - content: ""; - position: absolute; - top: -1px; - bottom: -1px; - left: -60px; - right: -60px; - z-index: -1; - background: #fefcf5; - border-radius: 4px; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_selected - .mx_EventTile_avatar - img, -.mx_EventTile[data-layout="bubble"]:hover .mx_EventTile_avatar img { - -webkit-box-shadow: 0 0 0 3px #fefcf5; - box-shadow: 0 0 0 3px #fefcf5; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile_line, -.mx_EventTile[data-layout="bubble"] .mx_SenderProfile { - width: -webkit-fit-content; - width: -moz-fit-content; - width: fit-content; - max-width: 70%; -} - -.mx_EventTile[data-layout="bubble"] .mx_SenderProfile { - position: relative; - top: -2px; - left: 2px; -} - -.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_line { - border-bottom-right-radius: var(--cornerRadius); -} - -.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_EventTile_avatar { - left: -34px; -} - -.mx_EventTile[data-layout="bubble"][data-self="false"] .mx_MessageActionBar { - right: 0; - -webkit-transform: translate3d(90%, 50%, 0); - transform: translate3d(90%, 50%, 0); -} - -.mx_EventTile[data-layout="bubble"][data-self="false"] { - --backgroundColor: #f7f8f9; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line { - border-bottom-left-radius: var(--cornerRadius); - float: right; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_line > a { - left: auto; - right: -68px; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_SenderProfile { - display: none; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] - .mx_ReplyTile - .mx_SenderProfile { - display: block; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_ReactionsRow { - float: right; - clear: right; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] - .mx_ReactionsRow - > :last-child { - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] .mx_EventTile_avatar { - top: -19px; - right: -35px; -} - -.mx_EventTile[data-layout="bubble"][data-self="true"] { - --backgroundColor: #f8fdfc; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile_line { - position: relative; - padding: var(--gutterSize); - border-top-left-radius: var(--cornerRadius); - border-top-right-radius: var(--cornerRadius); - background: var(--backgroundColor); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - grid-gap: 5px; - gap: 5px; - margin: 0 -12px 0 -9px; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile_line > a { - position: absolute; - padding: 10px 20px; - top: 0; - left: -68px; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="false"] - .mx_EventTile_line { - border-top-left-radius: 0; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="false"] - .mx_EventTile_line { - border-bottom-left-radius: var(--cornerRadius); -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_continuation[data-self="true"] - .mx_EventTile_line { - border-top-right-radius: 0; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_lastInSection[data-self="true"] - .mx_EventTile_line { - border-bottom-right-radius: var(--cornerRadius); -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar { - position: absolute; - top: 0; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar img { - -webkit-box-shadow: 0 0 0 3px #fff; - box-shadow: 0 0 0 3px #fff; - border-radius: 50%; -} - -.mx_EventTile[data-layout="bubble"] .mx_BaseAvatar, -.mx_EventTile[data-layout="bubble"] .mx_EventTile_avatar { - line-height: 1; -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - > .mx_EventTile_line { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - .mx_ReplyThread_show { - -webkit-box-ordinal-group: 100000; - -ms-flex-order: 99999; - order: 99999; -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] .mx_ReplyThread { - margin: 0 calc(var(--gutterSize) * -1); -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - .mx_ReplyThread - .mx_EventTile_reply { - max-width: 90%; - padding: 0; -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - .mx_ReplyThread - .mx_EventTile_reply - > a { - display: none !important; -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - .mx_ReplyThread - .mx_EventTile { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - grid-gap: var(--gutterSize); - gap: var(--gutterSize); -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - .mx_ReplyThread - .mx_EventTile - .mx_EventTile_avatar { - position: static; -} - -.mx_EventTile[data-layout="bubble"][data-has-reply="true"] - .mx_ReplyThread - .mx_EventTile - .mx_SenderProfile { - display: none; -} - -.mx_EventTile[data-layout="bubble"] .mx_EditMessageComposer_buttons { - position: static; - padding: 0; - margin: 0; - background: transparent; -} - -.mx_EventTile[data-layout="bubble"] .mx_ReactionsRow { - margin-right: -18px; - margin-left: -9px; -} - -.mx_EventTile[data-layout="bubble"] .mx_ReplyThread { - border-left-width: 2px; - border-left-color: #c1c6cd; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bubbleContainer, -.mx_EventTile[data-layout="bubble"].mx_EventTile_info, -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary[data-expanded="false"] { - --backgroundColor: transparent; - --gutterSize: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding: 5px 0; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bubbleContainer - .mx_EventTile_avatar, -.mx_EventTile[data-layout="bubble"].mx_EventTile_info .mx_EventTile_avatar, -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary[data-expanded="false"] - .mx_EventTile_avatar { - position: static; - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1; - margin-right: 5px; -} - -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary { - --maxWidth: 80%; - margin-left: calc(var(--avatarSize) + var(--gutterSize)); - margin-right: calc(var(--gutterSize) + var(--avatarSize)); -} - -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary - .mx_EventListSummary_toggle { - float: none; - -webkit-box-ordinal-group: 10; - -ms-flex-order: 9; - order: 9; - margin: 0 0 0 5px; -} - -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary - .mx_EventListSummary_avatars { - padding-top: 0; -} - -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary:after { - content: ""; - clear: both; -} - -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary .mx_EventTile { - margin: 0 6px; -} - -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary .mx_EventTile_line { - margin: 0 5px; -} - -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary - .mx_EventTile_line - > a { - left: auto; - right: 0; - -webkit-transform: translateX(calc(100% + 5px)); - transform: translateX(calc(100% + 5px)); -} - -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary - .mx_MessageActionBar { - -webkit-transform: translate3d(90%, 0, 0); - transform: translate3d(90%, 0, 0); -} - -.mx_EventTile[data-layout="bubble"] - ~ .mx_EventListSummary[data-expanded="false"] { - padding: 0 34px; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad .mx_EventTile_line, -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad:hover:before, -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary .mx_EventTile_line, -.mx_EventTile[data-layout="bubble"] ~ .mx_EventListSummary:hover:before { - background: transparent; -} - -.mx_EventTile[data-layout="bubble"] + .mx_EventListSummary .mx_EventTile { - margin-top: 0; - padding: 2px 0; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventListSummary_toggle { - margin-right: 55px; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad > .mx_EventTile_line { - display: grid; - grid-template: "reply reply" auto "shield body" auto "shield link" auto/auto 1fr; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad - > .mx_EventTile_line - .mx_EventTile_e2eIcon { - grid-area: shield; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad - > .mx_EventTile_line - .mx_UnknownBody { - grid-area: body; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad - > .mx_EventTile_line - .mx_EventTile_keyRequestInfo { - grid-area: link; -} - -.mx_EventTile[data-layout="bubble"].mx_EventTile_bad - > .mx_EventTile_line - .mx_ReplyThread_wrapper { - grid-area: reply; -} - -.mx_EventTile[data-layout="bubble"] .mx_EventTile_readAvatars { - position: absolute; - right: -110px; - bottom: 0; - top: auto; -} - -.mx_EventTile[data-layout="bubble"] .mx_MTextBody { - max-width: 100%; -} - -.mx_EventTile:not([data-layout="bubble"]) { - max-width: 100%; - clear: both; - padding-top: 18px; - font-size: 1.4rem; - position: relative; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_info { - padding-top: 1px; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_avatar { - top: 14px; - left: 8px; - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_info - .mx_EventTile_avatar { - top: 0.6rem; - left: 64px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_continuation { - padding-top: 0 !important; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_continuation.mx_EventTile_isEditing { - padding-top: 5px !important; - margin-top: -5px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_isEditing { - background-color: #f3f8fd; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_SenderProfile { - color: #2e2f32; - font-size: 1.4rem; - display: inline-block; - overflow: hidden; - cursor: pointer; - padding-bottom: 0; - padding-top: 0; - margin: 0; - white-space: nowrap; - text-overflow: ellipsis; - max-width: calc(100% - 64px); -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_SenderProfile .mx_Flair { - opacity: 0.7; - margin-left: 5px; - display: inline-block; - vertical-align: top; - overflow: hidden; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_SenderProfile .mx_Flair img { - vertical-align: -2px; - margin-right: 2px; - border-radius: 8px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_isEditing - .mx_MessageTimestamp { - visibility: hidden; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_MessageTimestamp { - display: block; - white-space: nowrap; - left: 0; - text-align: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_continuation - .mx_EventTile_line { - clear: both; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_reply { - position: relative; - padding-left: 64px; - border-radius: 8px; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_reply { - margin-right: 10px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_selected - > div - > a - > .mx_MessageTimestamp { - left: -4px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_selected - > .mx_EventTile_line { - border-left: 4px solid #0dbd8b; - padding-left: 60px; - background-color: #f6f7f8; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight, -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight - .markdown-body { - color: #ff4b55; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight - .markdown-body - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_highlight - .mx_EventTile_line { - background-color: #fff8e3; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_info .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]) - ~ .mx_EventListSummary - .mx_EventTile_avatar - ~ .mx_EventTile_line { - padding-left: 82px; -} - -.mx_EventTile:not([data-layout="bubble"]) - ~ .mx_EventListSummary - .mx_EventTile_line { - padding-left: 64px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_selected.mx_EventTile_info - .mx_EventTile_line { - padding-left: 78px; -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile.focus-visible:focus-within - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile.mx_EventTile_actionBarFocused - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile:hover - .mx_EventTile_line { - background-color: #f6f7f8; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_searchHighlight { - background-color: #0dbd8b; - color: #fff; - border-radius: 5px; - padding-left: 2px; - padding-right: 2px; - cursor: pointer; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_searchHighlight a { - background-color: #0dbd8b; - color: #fff; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSending:before, -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSent:before { - background-color: #8d99a5; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 14px; - mask-size: 14px; - width: 14px; - height: 14px; - content: ""; - position: absolute; - top: 0; - left: 0; - right: 0; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSent:before { - -webkit-mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); - mask-image: url(../../img/element-icons/circle-sent.5079cbe.svg); -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_receiptSending:before { - -webkit-mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); - mask-image: url(../../img/element-icons/circle-sending.bcca6aa.svg); -} - -.mx_EventTile:not([data-layout="bubble"]).mx_EventTile_contextual { - opacity: 0.4; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_msgOption { - float: right; - text-align: right; - position: relative; - width: 90px; - height: 1px; - margin-right: 10px; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_msgOption a { - text-decoration: none; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_body { - overflow-y: hidden; -} - -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified - .mx_EventTile_line { - padding-left: 60px; -} - -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified - .mx_EventTile_line { - border-left: 4px solid #76cfa5; -} - -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified - .mx_EventTile_line { - border-left: 4px solid #e8bf37; -} - -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown.mx_EventTile_info - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified.mx_EventTile_info - .mx_EventTile_line, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified.mx_EventTile_info - .mx_EventTile_line { - padding-left: 78px; -} - -.mx_EventTile:not([data-layout="bubble"]):hover .mx_EventTile_e2eIcon { - opacity: 1; -} - -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown - .mx_EventTile_line - > a - > .mx_MessageTimestamp, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified - .mx_EventTile_line - > a - > .mx_MessageTimestamp, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified - .mx_EventTile_line - > a - > .mx_MessageTimestamp { - left: -4px; -} - -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unknown - .mx_EventTile_line - > .mx_EventTile_e2eIcon, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_unverified - .mx_EventTile_line - > .mx_EventTile_e2eIcon, -.mx_EventTile:not([data-layout="bubble"]):hover.mx_EventTile_verified - .mx_EventTile_line - > .mx_EventTile_e2eIcon { - display: block; - left: 41px; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_MImageBody { - margin-right: 34px; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_EventTile_e2eIcon { - position: absolute; - top: 6px; - left: 44px; - bottom: 0; - right: 0; -} - -.mx_EventTile:not([data-layout="bubble"]) .mx_ReactionsRow { - margin: 0; - padding: 6px 60px; -} - -.mx_EventTile_content { - overflow-y: hidden; - overflow-x: hidden; - margin-right: 34px; -} - -.mx_EventTile_spoiler { - cursor: pointer; -} - -.mx_EventTile_spoiler_reason { - color: #acacac; - font-size: 1.1rem; -} - -.mx_EventTile_spoiler_content { - -webkit-filter: blur(5px) saturate(0.1) sepia(1); - filter: blur(5px) saturate(0.1) sepia(1); - -webkit-transition-duration: 0.5s; - transition-duration: 0.5s; -} - -.mx_EventTile_spoiler.visible > .mx_EventTile_spoiler_content { - -webkit-filter: none; - filter: none; -} - -.mx_RoomView_timeline_rr_enabled - .mx_EventTile:not([data-layout="bubble"]) - .mx_EventTile_line { - margin-right: 110px; -} - -.mx_EventTile_bubbleContainer { - display: grid; - grid-template-columns: 1fr 100px; -} - -.mx_EventTile_bubbleContainer .mx_EventTile_line { - margin-right: 0; - grid-column: 1/3; - padding: 0 !important; -} - -.mx_EventTile_bubbleContainer .mx_EventTile_msgOption { - grid-column: 2; -} - -.mx_EventTile_bubbleContainer:hover .mx_EventTile_line { - background-color: inherit !important; -} - -.mx_EventTile_readAvatars { - position: relative; - display: inline-block; - width: 14px; - height: 14px; - top: -2.2rem; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - z-index: 1; -} - -.mx_EventTile_readAvatars .mx_BaseAvatar { - position: absolute; - display: inline-block; - height: 1.4rem; - width: 1.4rem; - will-change: left, top; - -webkit-transition: left 0.1s ease-out, top 0.3s ease-out; - transition: left 0.1s ease-out, top 0.3s ease-out; - -webkit-transition: left var(--transition-short) ease-out, - top var(--transition-standard) ease-out; - transition: left var(--transition-short) ease-out, - top var(--transition-standard) ease-out; -} - -.mx_EventTile_readAvatarRemainder { - color: #acacac; - font-size: 1.1rem; - position: absolute; -} - -.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { - font-size: 48px !important; - line-height: 57px !important; -} - -.mx_EventTile_content .mx_EventTile_edited { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - font-size: 1.2rem; - color: #9e9e9e; - display: inline-block; - margin-left: 9px; - cursor: pointer; -} - -.mx_EventTile_e2eIcon { - position: relative; - width: 14px; - height: 14px; - display: block; - opacity: 0.2; - background-repeat: no-repeat; - background-size: contain; -} - -.mx_EventTile_e2eIcon:after, -.mx_EventTile_e2eIcon:before { - content: ""; - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_EventTile_e2eIcon:after, -.mx_EventTile_e2eIcon:before { - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_EventTile_e2eIcon:before { - background-color: #fff; - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); - -webkit-mask-size: 80%; - mask-size: 80%; -} - -.mx_EventTile_e2eIcon_undecryptable:after, -.mx_EventTile_e2eIcon_unverified:after { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); - background-color: #ff4b55; -} - -.mx_EventTile_e2eIcon_undecryptable, -.mx_EventTile_e2eIcon_unverified { - opacity: 1; -} - -.mx_EventTile_e2eIcon_unknown:after { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); - background-color: #ff4b55; -} - -.mx_EventTile_e2eIcon_unknown { - opacity: 1; -} - -.mx_EventTile_e2eIcon_unencrypted:after { - -webkit-mask-image: url(../../img/e2e/warning.78bb264.svg); - mask-image: url(../../img/e2e/warning.78bb264.svg); - background-color: #ff4b55; -} - -.mx_EventTile_e2eIcon_unencrypted { - opacity: 1; -} - -.mx_EventTile_e2eIcon_unauthenticated:after { - -webkit-mask-image: url(../../img/e2e/normal.76f0c09.svg); - mask-image: url(../../img/e2e/normal.76f0c09.svg); - background-color: #91a1c0; -} - -.mx_EventTile_e2eIcon_unauthenticated { - opacity: 1; -} - -.mx_EventTile_body pre { - border: 1px solid transparent; -} - -.mx_EventTile_content .markdown-body { - font-family: inherit !important; - white-space: normal !important; - line-height: inherit !important; - color: inherit; - font-size: 1.4rem; -} - -.mx_EventTile_content .markdown-body code, -.mx_EventTile_content .markdown-body pre { - font-family: Menlo, Consolas, Liberation Mono, Lucida Console, monospace !important; - background-color: #f3f8fd; -} - -.mx_EventTile_content .markdown-body pre code > * { - display: inline-block; -} - -.mx_EventTile_content .markdown-body pre { - overflow-x: overlay; - overflow-y: visible; -} - -.mx_EventTile_lineNumbers { - float: left; - margin: 0 0.5em 0 -1.5em; - color: grey; -} - -.mx_EventTile_lineNumber { - text-align: right; - display: block; - padding-left: 1em; -} - -.mx_EventTile_collapsedCodeBlock { - max-height: 30vh; -} - -.mx_EventTile.focus-visible:focus-within .mx_EventTile_body pre, -.mx_EventTile:hover .mx_EventTile_body pre { - border: 1px solid #e5e5e5; -} - -.mx_EventTile_pre_container { - position: relative; -} - -.mx_EventTile_button { - position: absolute; - display: inline-block; - visibility: hidden; - cursor: pointer; - top: 8px; - right: 8px; - width: 19px; - height: 19px; - background-color: #2e2f32; -} - -.mx_EventTile_buttonBottom { - top: 33px; -} - -.mx_EventTile_copyButton { - -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); -} - -.mx_EventTile_collapseButton { - -webkit-mask-image: url(../../img/feather-customised/minimise.aec9142.svg); - mask-image: url(../../img/feather-customised/minimise.aec9142.svg); -} - -.mx_EventTile_collapseButton, -.mx_EventTile_expandButton { - -webkit-mask-size: 75%; - mask-size: 75%; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; -} - -.mx_EventTile_expandButton { - -webkit-mask-image: url(../../img/feather-customised/maximise.dc32127.svg); - mask-image: url(../../img/feather-customised/maximise.dc32127.svg); -} - -.mx_EventTile_body - .mx_EventTile_pre_container:focus-within - .mx_EventTile_collapseButton, -.mx_EventTile_body - .mx_EventTile_pre_container:focus-within - .mx_EventTile_copyButton, -.mx_EventTile_body - .mx_EventTile_pre_container:focus-within - .mx_EventTile_expandButton, -.mx_EventTile_body - .mx_EventTile_pre_container:hover - .mx_EventTile_collapseButton, -.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton, -.mx_EventTile_body - .mx_EventTile_pre_container:hover - .mx_EventTile_expandButton { - visibility: visible; -} - -.mx_EventTile_content .markdown-body h1, -.mx_EventTile_content .markdown-body h2, -.mx_EventTile_content .markdown-body h3, -.mx_EventTile_content .markdown-body h4, -.mx_EventTile_content .markdown-body h5, -.mx_EventTile_content .markdown-body h6 { - font-family: inherit !important; - color: inherit; -} - -.mx_EventTile_content .markdown-body h1, -.mx_EventTile_content .markdown-body h2 { - font-size: 1.5em; - border-bottom: none !important; -} - -.mx_EventTile_content .markdown-body a { - color: #238cf5; -} - -.mx_EventTile_content .markdown-body .hljs { - display: inline !important; -} - -.mx_EventTile_keyRequestInfo { - font-size: 1.2rem; -} - -.mx_EventTile_keyRequestInfo_text { - opacity: 0.5; -} - -.mx_EventTile_keyRequestInfo_text a { - color: #2e2f32; - text-decoration: underline; - cursor: pointer; -} - -.mx_EventTile_keyRequestInfo_tooltip_contents p { - text-align: auto; - margin-left: 3px; - margin-right: 3px; -} - -.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { - margin-top: 0; -} - -.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { - margin-bottom: 0; -} - -.mx_EventTile_tileError { - color: red; - text-align: center; - margin-right: 0; -} - -.mx_EventTile_tileError .mx_EventTile_line { - padding-left: 0; - margin-right: 0; -} - -.mx_EventTile_tileError .mx_EventTile_line span { - padding: 4px 8px; -} - -.mx_EventTile_tileError a { - margin-left: 1em; -} - -.mx_EventTile.focus-visible:focus-within .mx_MessageActionBar, -.mx_EventTile.mx_EventTile_actionBarFocused .mx_MessageActionBar, -.mx_EventTile:hover .mx_MessageActionBar, -[data-whatinput="keyboard"] .mx_EventTile:focus-within .mx_MessageActionBar { - visibility: visible; -} - -@media only screen and (max-width: 480px) { - .mx_EventTile_line, - .mx_EventTile_reply { - padding-left: 0; - margin-right: 0; - } - .mx_EventTile_content { - margin-top: 10px; - margin-right: 0; - } -} - -.mx_GroupLayout .mx_EventTile > .mx_SenderProfile { - line-height: 2rem; - margin-left: 64px; -} - -.mx_GroupLayout .mx_EventTile > .mx_EventTile_avatar { - position: absolute; - z-index: 9; -} - -.mx_GroupLayout .mx_EventTile .mx_MessageTimestamp { - position: absolute; - width: 46px; -} - -.mx_GroupLayout .mx_EventTile .mx_EventTile_line, -.mx_GroupLayout .mx_EventTile .mx_EventTile_reply { - padding-top: 1px; - padding-bottom: 3px; - line-height: 2.2rem; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile { - padding-top: 4px; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_line, -.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_reply { - padding-top: 0; - padding-bottom: 0; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info { - padding-top: 0; - font-size: 1.3rem; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_info - .mx_EventTile_line, -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_info - .mx_EventTile_reply { - line-height: 2rem; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_info - .mx_EventTile_avatar { - top: 4px; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile { - font-size: 1.3rem; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote { - padding-top: 8px; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_emote - .mx_EventTile_avatar { - top: 2px; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_emote - .mx_EventTile_line, -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_emote - .mx_EventTile_reply { - padding-top: 0; - padding-bottom: 1px; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { - padding-top: 0; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation - .mx_EventTile_line, -.mx_MatrixChat_useCompactLayout - .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation - .mx_EventTile_reply { - padding-top: 0; - padding-bottom: 0; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_avatar { - top: 2px; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_e2eIcon { - top: 3px; -} - -.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_EventTile_readAvatars { - top: -2rem; -} - -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - blockquote, -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - dl, -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - ol, -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - p, -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - pre, -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - table, -.mx_MatrixChat_useCompactLayout - .mx_EventTile - .mx_EventTile_content - .markdown-body - ul { - margin-bottom: 4px; -} - -.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 { - margin-top: 6px; -} - -.mx_IRCLayout { - --name-width: 70px; - line-height: 1.8rem !important; -} - -.mx_IRCLayout .mx_EventTile > a { - text-decoration: none; - min-width: 45px; -} - -.mx_IRCLayout .mx_EventTile { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - padding-top: 0; -} - -.mx_IRCLayout .mx_EventTile > * { - margin-right: 5px; -} - -.mx_IRCLayout .mx_EventTile > .mx_EventTile_msgOption { - -webkit-box-ordinal-group: 6; - -ms-flex-order: 5; - order: 5; - -ms-flex-negative: 0; - flex-shrink: 0; -} - -.mx_IRCLayout - .mx_EventTile - > .mx_EventTile_msgOption - .mx_EventTile_readAvatars { - top: 0.2rem; -} - -.mx_IRCLayout .mx_EventTile .mx_EventTile_line, -.mx_IRCLayout .mx_EventTile .mx_EventTile_reply { - padding: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-ordinal-group: 4; - -ms-flex-order: 3; - order: 3; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -ms-flex-negative: 1; - flex-shrink: 1; - min-width: 0; -} - -.mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - position: relative; - top: 0; - left: 0; - -ms-flex-negative: 0; - flex-shrink: 0; - height: 1.8rem; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar > .mx_BaseAvatar, -.mx_IRCLayout .mx_EventTile > .mx_EventTile_avatar > .mx_BaseAvatar > * { - height: 1.4rem !important; - width: 1.4rem !important; - font-size: 1rem !important; - line-height: 1.5rem !important; -} - -.mx_IRCLayout .mx_EventTile .mx_MessageTimestamp { - font-size: 1rem; - width: 45px; - text-align: right; -} - -.mx_IRCLayout .mx_EventTile > .mx_EventTile_e2eIcon { - position: absolute; - right: unset; - left: unset; - top: 0; - padding: 0; - -ms-flex-negative: 0; - flex-shrink: 0; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - height: 1.8rem; - background-position: 50%; -} - -.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_EventTile_e2eIcon, -.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_MTextBody, -.mx_IRCLayout .mx_EventTile .mx_EventTile_line .mx_TextualEvent { - display: inline-block; -} - -.mx_IRCLayout .mx_EventTile .mx_EventTile_reply { - -webkit-box-ordinal-group: 5; - -ms-flex-order: 4; - order: 4; -} - -.mx_IRCLayout .mx_EventTile .mx_EditMessageComposer_buttons { - position: relative; -} - -.mx_IRCLayout .mx_EventTile_emote > .mx_EventTile_avatar { - margin-left: calc(var(--name-width) + 19px); -} - -.mx_IRCLayout blockquote { - margin: 0; -} - -.mx_IRCLayout .mx_EventListSummary > .mx_EventTile_line { - padding-left: calc(var(--name-width) + 74px); -} - -.mx_IRCLayout .mx_EventListSummary .mx_EventListSummary_avatars { - padding: 0; - margin: 0 9px 0 0; -} - -.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { - left: calc(var(--name-width) + 24px); - top: 0; -} - -.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line { - left: calc(var(--name-width) + 24px); -} - -.mx_IRCLayout .mx_EventTile.mx_EventTile_info .mx_TextualEvent { - line-height: 1.8rem; -} - -.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unknown .mx_EventTile_line, -.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line, -.mx_IRCLayout .mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { - padding-left: 0; - border-left: 0; -} - -.mx_IRCLayout .mx_SenderProfile { - width: var(--name-width); - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - -ms-flex-negative: 0; - flex-shrink: 0; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_IRCLayout .mx_SenderProfile > .mx_SenderProfile_displayName { - width: 100%; - text-align: end; - overflow: hidden; - text-overflow: ellipsis; -} - -.mx_IRCLayout .mx_SenderProfile > .mx_SenderProfile_mxid { - visibility: collapse; -} - -.mx_IRCLayout .mx_SenderProfile:hover { - overflow: visible; - z-index: 10; -} - -.mx_IRCLayout .mx_SenderProfile:hover > .mx_SenderProfile_displayName { - overflow: visible; -} - -.mx_IRCLayout .mx_SenderProfile:hover > .mx_SenderProfile_mxid { - visibility: visible; -} - -.mx_IRCLayout .mx_ReplyThread { - margin: 0; -} - -.mx_IRCLayout .mx_ReplyThread .mx_SenderProfile { - -webkit-box-ordinal-group: unset; - -ms-flex-order: unset; - order: unset; - max-width: unset; - width: unset; - background: transparent; -} - -.mx_IRCLayout .mx_ReplyThread .mx_EventTile_emote > .mx_EventTile_avatar { - margin-left: 0; -} - -.mx_IRCLayout .mx_ReplyThread .mx_MessageTimestamp { - width: auto; -} - -.mx_IRCLayout .mx_ReplyThread .mx_EventTile_e2eIcon { - position: relative; - -webkit-box-ordinal-group: 0; - -ms-flex-order: -1; - order: -1; -} - -.mx_IRCLayout .mx_ProfileResizer { - position: absolute; - height: 100%; - width: 15px; - left: calc(80px + var(--name-width)); - cursor: col-resize; - z-index: 100; -} - -.mx_IRCLayout .mx_Flair > img { - height: 1.4rem !important; - width: 1.4rem !important; -} - -.mx_JumpToBottomButton { - z-index: 1000; - position: absolute; - bottom: 12px; - right: 24px; - width: 38px; - height: 50px; - text-align: center; -} - -.mx_JumpToBottomButton_badge { - position: relative; - top: -12px; - border-radius: 16px; - font-weight: 700; - font-size: 1.2rem; - line-height: 1.4rem; - text-align: center; - display: inline-block; - padding: 0 4px; - color: #fff; - background-color: #61708b; -} - -.mx_JumpToBottomButton_highlight .mx_JumpToBottomButton_badge { - color: #f2f5f8; - background-color: #ff4b55; -} - -.mx_JumpToBottomButton_scrollDown { - position: relative; - display: block; - height: 38px; - border-radius: 19px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - background: #fff; - border: 1.3px solid #61708b; - cursor: pointer; -} - -.mx_JumpToBottomButton_scrollDown:before { - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - -webkit-mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); - mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - background: #61708b; -} - -.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide { - cursor: pointer; - width: 18px; - height: 18px; -} - -.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide img { - -webkit-box-flex: 0; - -ms-flex: 0 0 40px; - flex: 0 0 40px; - visibility: hidden; -} - -.mx_LinkPreviewGroup .mx_LinkPreviewGroup_hide.focus-visible:focus img, -.mx_LinkPreviewGroup:hover .mx_LinkPreviewGroup_hide img { - visibility: visible; -} - -.mx_LinkPreviewGroup > .mx_AccessibleButton { - color: #0dbd8b; - text-align: center; -} - -.mx_LinkPreviewWidget { - margin-top: 15px; - margin-right: 15px; - margin-bottom: 15px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - border-left: 2px solid #ddd; - border-radius: 2px; - color: #888; -} - -.mx_LinkPreviewWidget_image { - -webkit-box-flex: 0; - -ms-flex: 0 0 100px; - flex: 0 0 100px; - margin-left: 15px; - text-align: center; - cursor: pointer; -} - -.mx_LinkPreviewWidget_caption { - margin-left: 15px; - -webkit-box-flex: 1; - -ms-flex: 1 1 auto; - flex: 1 1 auto; - overflow: hidden; -} - -.mx_LinkPreviewWidget_title { - font-weight: 700; - white-space: normal; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; -} - -.mx_LinkPreviewWidget_title .mx_LinkPreviewWidget_siteName { - font-weight: 400; -} - -.mx_LinkPreviewWidget_description { - margin-top: 8px; - white-space: normal; - word-wrap: break-word; - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; -} - -.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget { - margin-top: 6px; - margin-bottom: 6px; -} - -.mx_MemberInfo { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow-y: auto; - margin-top: 8px; -} - -.mx_MemberInfo, -.mx_MemberInfo_name { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_MemberInfo_name { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_MemberInfo_name > .mx_E2EIcon { - margin-right: 0; -} - -.mx_MemberInfo_cancel { - height: 16px; - width: 16px; - padding: 10px 0 10px 10px; - cursor: pointer; - -webkit-mask-image: url(../../img/minimise.871d2de.svg); - mask-image: url(../../img/minimise.871d2de.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: 16px center; - mask-position: 16px center; - background-color: #91a1c0; -} - -.mx_MemberInfo_name h2 { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - overflow-x: auto; - max-height: 50px; -} - -.mx_MemberInfo h2 { - font-size: 1.8rem; - font-weight: 600; - margin: 16px 0 16px 15px; -} - -.mx_MemberInfo_container { - margin: 0 16px 16px; -} - -.mx_MemberInfo .mx_RoomTile_nameContainer { - width: 154px; -} - -.mx_MemberInfo .mx_RoomTile_badge { - display: none; -} - -.mx_MemberInfo .mx_RoomTile_name { - width: 160px; -} - -.mx_MemberInfo_avatar { - background: hsla(0, 0%, 91%, 0.77); - margin-bottom: 16px; -} - -.mx_MemberInfo_avatar > img { - height: auto; - width: 100%; - max-height: 30vh; - -o-object-fit: contain; - object-fit: contain; - display: block; -} - -.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { - cursor: -webkit-zoom-in; - cursor: zoom-in; -} - -.mx_MemberInfo_profile { - margin-bottom: 16px; -} - -.mx_MemberInfo h3 { - text-transform: uppercase; - color: #9fa9ba; - font-weight: 700; - font-size: 1.2rem; - margin: 4px 0; -} - -.mx_MemberInfo_profileField { - font-size: 1.5rem; - position: relative; -} - -.mx_MemberInfo_buttons { - margin-bottom: 16px; -} - -.mx_MemberInfo_field { - cursor: pointer; - font-size: 1.5rem; - color: #2e2f32; - margin-left: 8px; - line-height: 2.3rem; -} - -.mx_MemberInfo_createRoom { - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 0 8px; -} - -.mx_MemberInfo_createRoom_label { - width: auto !important; - cursor: pointer; -} - -.mx_MemberInfo label { - font-size: 1.3rem; -} - -.mx_MemberInfo label .mx_MemberInfo_label_text { - display: inline-block; - max-width: 180px; - vertical-align: text-top; -} - -.mx_MemberInfo input[type="radio"] { - vertical-align: -2px; - margin-right: 5px; - margin-left: 8px; -} - -.mx_MemberInfo_statusMessage { - font-size: 1.1rem; - opacity: 0.5; - overflow: hidden; - white-space: nowrap; - text-overflow: clip; -} - -.mx_MemberInfo .mx_MemberInfo_scrollContainer { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_GroupMemberList, -.mx_GroupRoomList, -.mx_MemberList { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - min-height: 0; -} - -.mx_GroupMemberList .mx_Spinner, -.mx_GroupRoomList .mx_Spinner, -.mx_MemberList .mx_Spinner { - -webkit-box-flex: 1; - -ms-flex: 1 0 auto; - flex: 1 0 auto; -} - -.mx_GroupMemberList .mx_SearchBox, -.mx_GroupRoomList .mx_SearchBox, -.mx_MemberList .mx_SearchBox { - margin-bottom: 5px; -} - -.mx_GroupMemberList h2, -.mx_GroupRoomList h2, -.mx_MemberList h2 { - text-transform: uppercase; - color: #3d3b39; - font-weight: 600; - font-size: 1.3rem; - padding-left: 3px; - padding-right: 12px; - margin-top: 8px; - margin-bottom: 4px; -} - -.mx_GroupMemberList .mx_AutoHideScrollbar, -.mx_GroupRoomList .mx_AutoHideScrollbar, -.mx_MemberList .mx_AutoHideScrollbar { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; -} - -.mx_GroupMemberList .mx_RightPanel_scopeHeader, -.mx_GroupRoomList .mx_RightPanel_scopeHeader, -.mx_MemberList .mx_RightPanel_scopeHeader { - margin-top: -8px; -} - -.mx_GroupMemberList_query, -.mx_GroupRoomList_query { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; -} - -.mx_MemberList_chevron { - position: absolute; - right: 35px; - margin-top: -15px; -} - -.mx_MemberList_border { - overflow-y: auto; - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0px; -} - -.mx_MemberList_query { - height: 16px; -} - -.mx_MemberList_query[type="text"] { - font-size: 1.2rem; -} - -.mx_MemberList_wrapper { - padding: 10px; -} - -.mx_MemberList_invite { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - position: relative; - background-color: #0dbd8b; - border-radius: 4px; - margin: 5px 9px 9px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - color: #fff; - font-weight: 600; -} - -.mx_MemberList_invite.mx_AccessibleButton_disabled { - background-color: #888; - cursor: not-allowed; -} - -.mx_MemberList_invite span { - padding: 8px 0; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; -} - -.mx_MemberList_invite span:before { - content: ""; - display: inline-block; - background-color: #fff; - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 20px; - mask-size: 20px; - width: 20px; - height: 20px; - margin-right: 5px; -} - -.mx_MemberList_inviteCommunity span:before { - -webkit-mask-image: url(../../img/icon-invite-people.d82f491.svg); - mask-image: url(../../img/icon-invite-people.d82f491.svg); -} - -.mx_MemberList_addRoomToCommunity span:before { - -webkit-mask-image: url(../../img/icons-room-add.bd36e26.svg); - mask-image: url(../../img/icons-room-add.bd36e26.svg); -} - -.mx_MessageComposer_wrapper { - vertical-align: middle; - margin: auto; - border-top: 1px solid transparent; - position: relative; - padding-left: 82px; - padding-right: 6px; -} - -.mx_MessageComposer_replaced_wrapper { - margin-left: auto; - margin-right: auto; -} - -.mx_MessageComposer_replaced_valign { - height: 60px; - display: table-cell; - vertical-align: middle; -} - -.mx_MessageComposer_roomReplaced_icon { - float: left; - margin-right: 20px; - margin-top: 5px; - width: 31px; - height: 31px; -} - -.mx_MessageComposer_roomReplaced_header { - font-weight: 700; -} - -.mx_MessageComposer_autocomplete_wrapper { - position: relative; - height: 0; -} - -.mx_MessageComposer_row { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - width: 100%; -} - -.mx_MessageComposer .mx_MessageComposer_avatar { - position: absolute; - left: 26px; -} - -.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { - display: block; -} - -.mx_MessageComposer_composecontrols { - width: 100%; -} - -.mx_MessageComposer_e2eIcon.mx_E2EIcon { - position: absolute; - left: 60px; - margin-right: 0; - margin-left: 3px; - width: 12px; - height: 12px; -} - -.mx_MessageComposer_noperm_error { - width: 100%; - height: 60px; - font-style: italic; - color: #888; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_MessageComposer_input_wrapper { - cursor: text; -} - -.mx_MessageComposer_input, -.mx_MessageComposer_input_wrapper { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_MessageComposer_input { - vertical-align: middle; - min-height: 60px; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; - font-size: 1.4rem; - margin-right: 6px; -} - -.mx_MessageComposer_editor { - width: 100%; - max-height: 120px; - min-height: 19px; - overflow-y: auto; - overflow-x: hidden; - word-break: break-word; -} - -.mx_MessageComposer_editor > :first-child { - margin-top: 0 !important; -} - -.mx_MessageComposer_editor > :last-child { - margin-bottom: 0 !important; -} - -@keyframes visualbell { - 0% { - background-color: #faa; - } - to { - background-color: #fff; - } -} - -.mx_MessageComposer_input_error { - -webkit-animation: visualbell 0.2s; - animation: visualbell 0.2s; -} - -.mx_MessageComposer_input blockquote { - color: #777; - margin: 0 0 16px; - padding: 0 15px; - border-left: 4px solid #ddd; -} - -.mx_MessageComposer_input pre { - background-color: rgba(0, 0, 0, 0.04); - border-radius: 3px; - padding: 10px; -} - -.mx_MessageComposer_input textarea { - display: block; - width: 100%; - padding: 0; - margin-top: 6px; - margin-bottom: 6px; - border: 0; - resize: none; - outline: none; - -webkit-box-shadow: none; - box-shadow: none; - color: #2e2f32; - background-color: #fff; - font-size: 1.4rem; - max-height: 120px; - overflow: auto; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; -} - -.mx_MessageComposer_input textarea::-moz-placeholder { - line-height: 100%; - color: #0dbd8b; - opacity: 1; -} - -.mx_MessageComposer_input textarea::-webkit-input-placeholder { - color: #0dbd8b; -} - -.mx_MessageComposer_button_highlight { - background: rgba(13, 189, 139, 0.25); -} - -.mx_MessageComposer_button_highlight:before { - background-color: #0dbd8b !important; -} - -.mx_MessageComposer_button { - position: relative; - margin-right: 6px; - cursor: pointer; - height: 26px; - width: 26px; - border-radius: 100%; -} - -.mx_MessageComposer_button:before { - content: ""; - position: absolute; - top: 3px; - left: 3px; - height: 20px; - width: 20px; - background-color: #c1c6cd; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_MessageComposer_button:hover { - background: rgba(13, 189, 139, 0.1); -} - -.mx_MessageComposer_button:hover:before { - background-color: #0dbd8b; -} - -.mx_MessageComposer_button.mx_MessageComposer_hangup:not(.mx_AccessibleButton_disabled):before { - background-color: #ff4b55; -} - -.mx_MessageComposer_upload:before { - -webkit-mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); - mask-image: url(../../img/element-icons/room/composer/attach.359c84e.svg); -} - -.mx_MessageComposer_voiceMessage:before { - -webkit-mask-image: url(../../img/voip/mic-on-mask.97ec7a0.svg); - mask-image: url(../../img/voip/mic-on-mask.97ec7a0.svg); -} - -.mx_MessageComposer_emoji:before { - -webkit-mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); - mask-image: url(../../img/element-icons/room/composer/emoji.52d7369.svg); -} - -.mx_MessageComposer_stickers:before { - -webkit-mask-image: url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg); - mask-image: url(../../img/element-icons/room/composer/sticker.8dbe5ec.svg); -} - -.mx_MessageComposer_sendMessage { - cursor: pointer; - position: relative; - margin-right: 6px; - width: 32px; - height: 32px; - border-radius: 100%; - background-color: #0dbd8b; -} - -.mx_MessageComposer_sendMessage:before { - position: absolute; - height: 16px; - width: 16px; - top: 8px; - left: 9px; - -webkit-mask-image: url(../../img/element-icons/send-message.a4e9cf8.svg); - mask-image: url(../../img/element-icons/send-message.a4e9cf8.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; - background-color: #fff; - content: ""; -} - -.mx_MessageComposer_formatting { - cursor: pointer; - margin: 0 11px; - width: 24px; - height: 18px; -} - -.mx_MessageComposer_formatbar_wrapper { - width: 100%; - background-color: #fff; - -webkit-box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); - box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); -} - -.mx_MessageComposer_formatbar { - margin: auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - height: 30px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding-left: 62px; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - font-size: 1rem; - color: #888; -} - -.mx_MessageComposer_formatbar * { - margin-right: 4px; -} - -.mx_MessageComposer_format_button, -.mx_MessageComposer_formatbar_cancel, -.mx_MessageComposer_formatbar_markdown { - cursor: pointer; -} - -.mx_MessageComposer_formatbar_cancel { - margin-right: 22px; -} - -.mx_MessageComposer_formatbar_markdown { - height: 17px; - width: 30px; - margin-right: 64px; -} - -.mx_MessageComposer_input_markdownIndicator { - height: 10px; - width: 12px; - padding: 4px 4px 4px 0; -} - -.mx_MessageComposer_formatbar_markdown, -.mx_MessageComposer_input_markdownIndicator { - cursor: pointer; - -webkit-mask-image: url(../../img/markdown.6905ba8.svg); - mask-image: url(../../img/markdown.6905ba8.svg); - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #c1c6cd; -} - -.mx_MessageComposer_formatbar_markdown.mx_MessageComposer_markdownDisabled, -.mx_MessageComposer_input_markdownIndicator.mx_MessageComposer_markdownDisabled { - opacity: 0.2; -} - -.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input { - min-height: 50px; -} - -.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error { - height: 50px; -} - -.mx_MessageComposerFormatBar { - display: none; - width: 130px; - height: 24px; - position: absolute; - cursor: pointer; - border-radius: 4px; - background-color: #fff; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - z-index: 1000; -} - -.mx_MessageComposerFormatBar.mx_MessageComposerFormatBar_shown { - display: block; -} - -.mx_MessageComposerFormatBar > * { - white-space: nowrap; - display: inline-block; - position: relative; - border: 1px solid #e9edf1; - margin-left: -1px; -} - -.mx_MessageComposerFormatBar > :hover { - border-color: #ddd; - z-index: 1; -} - -.mx_MessageComposerFormatBar > :first-child { - border-radius: 3px 0 0 3px; -} - -.mx_MessageComposerFormatBar > :last-child { - border-radius: 0 3px 3px 0; -} - -.mx_MessageComposerFormatBar > :only-child { - border-radius: 3px; -} - -.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button { - width: 27px; - height: 24px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - background: none; - vertical-align: middle; -} - -.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_button:after { - content: ""; - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - background-color: #2e2f32; -} - -.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconBold:after { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg); - mask-image: url(../../img/element-icons/room/format-bar/bold.0d80ac7.svg); -} - -.mx_MessageComposerFormatBar - .mx_MessageComposerFormatBar_buttonIconItalic:after { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/italic.bf18054.svg); - mask-image: url(../../img/element-icons/room/format-bar/italic.bf18054.svg); -} - -.mx_MessageComposerFormatBar - .mx_MessageComposerFormatBar_buttonIconStrikethrough:after { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg); - mask-image: url(../../img/element-icons/room/format-bar/strikethrough.0264f7b.svg); -} - -.mx_MessageComposerFormatBar - .mx_MessageComposerFormatBar_buttonIconQuote:after { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); - mask-image: url(../../img/element-icons/room/format-bar/quote.560cd8f.svg); -} - -.mx_MessageComposerFormatBar .mx_MessageComposerFormatBar_buttonIconCode:after { - -webkit-mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); - mask-image: url(../../img/element-icons/room/format-bar/code.27444ba.svg); -} - -.mx_MessageComposerFormatBar_buttonTooltip { - white-space: nowrap; - font-size: 1.3rem; - font-weight: 600; - min-width: 54px; - text-align: center; -} - -.mx_MessageComposerFormatBar_buttonTooltip - .mx_MessageComposerFormatBar_tooltipShortcut { - font-size: 0.9rem; - opacity: 0.7; -} - -.mx_NewRoomIntro { - margin: 40px 0 48px 64px; -} - -.mx_NewRoomIntro - .mx_MiniAvatarUploader_hasAvatar:not(.mx_MiniAvatarUploader_busy):not(:hover) - .mx_MiniAvatarUploader_indicator { - display: none; -} - -.mx_NewRoomIntro .mx_AccessibleButton_kind_link { - padding: 0; - font-size: inherit; -} - -.mx_NewRoomIntro .mx_NewRoomIntro_buttons { - margin-top: 28px; -} - -.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_AccessibleButton { - line-height: 2.4rem; - display: inline-block; -} - -.mx_NewRoomIntro - .mx_NewRoomIntro_buttons - .mx_AccessibleButton - + .mx_AccessibleButton { - margin-left: 12px; -} - -.mx_NewRoomIntro - .mx_NewRoomIntro_buttons - .mx_AccessibleButton:not(.mx_AccessibleButton_kind_primary_outline):before { - content: ""; - display: inline-block; - background-color: #fff; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 20px; - mask-size: 20px; - width: 20px; - height: 20px; - margin-right: 5px; - vertical-align: text-bottom; -} - -.mx_NewRoomIntro .mx_NewRoomIntro_buttons .mx_NewRoomIntro_inviteButton:before { - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_NewRoomIntro > h2 { - margin-top: 24px; - font-size: 2.4rem; - font-weight: 600; -} - -.mx_NewRoomIntro > p { - margin: 0; - font-size: 1.5rem; - color: #737d8c; -} - -.mx_NotificationBadge:not(.mx_NotificationBadge_visible) { - display: none; -} - -.mx_NotificationBadge.mx_NotificationBadge_visible { - background-color: #61708b; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_highlighted { - background-color: #ff4b55; -} - -.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_dot { - background-color: #2e2f32; - width: 6px; - height: 6px; - border-radius: 6px; -} - -.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_2char { - width: 1.6rem; - height: 1.6rem; - border-radius: 1.6rem; -} - -.mx_NotificationBadge.mx_NotificationBadge_visible.mx_NotificationBadge_3char { - width: 2.6rem; - height: 1.6rem; - border-radius: 1.6rem; -} - -.mx_NotificationBadge.mx_NotificationBadge_visible .mx_NotificationBadge_count { - font-size: 1rem; - line-height: 1.4rem; - color: #fff; -} - -.mx_PinnedEventTile { - min-height: 40px; - width: 100%; - padding: 0 4px 12px; - display: grid; - grid-template-areas: "avatar name remove" "content content content" "footer footer footer"; - grid-template-rows: -webkit-max-content auto -webkit-max-content; - grid-template-rows: max-content auto max-content; - grid-template-columns: 24px auto 24px; - grid-row-gap: 12px; - grid-column-gap: 8px; -} - -.mx_PinnedEventTile + .mx_PinnedEventTile { - padding: 12px 4px; - border-top: 1px solid #e7e7e7; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar { - grid-area: avatar; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_sender { - grid-area: name; - font-weight: 600; - font-size: 1.5rem; - line-height: 2.4rem; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton { - visibility: hidden; - grid-area: remove; - position: relative; - width: 24px; - height: 24px; - border-radius: 8px; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton:hover { - background-color: rgba(92, 100, 112, 0.2); -} - -.mx_PinnedEventTile .mx_PinnedEventTile_unpinButton:before { - content: ""; - position: absolute; - height: inherit; - width: inherit; - background: #737d8c; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 8px; - mask-size: 8px; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-image: url(../../img/image-view/close.97d1731.svg); - mask-image: url(../../img/image-view/close.97d1731.svg); -} - -.mx_PinnedEventTile .mx_PinnedEventTile_message { - grid-area: content; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_footer { - grid-area: footer; - font-size: 10px; - line-height: 12px; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_footer .mx_PinnedEventTile_timestamp { - font-size: inherit; - line-height: inherit; - color: #737d8c; -} - -.mx_PinnedEventTile .mx_PinnedEventTile_footer .mx_AccessibleButton_kind_link { - padding: 0; - margin-left: 12px; - font-size: inherit; - line-height: inherit; -} - -.mx_PinnedEventTile:hover .mx_PinnedEventTile_unpinButton { - visibility: visible; -} - -.mx_PresenceLabel { - font-size: 1.1rem; - opacity: 0.5; -} - -.mx_ReplyPreview { - background: #fff; - border: 1px solid transparent; - border-bottom: none; - border-radius: 8px 8px 0 0; - max-height: 50vh; - overflow: auto; - -webkit-box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); - box-shadow: 0 -16px 32px rgba(0, 0, 0, 0.04); -} - -.mx_ReplyPreview .mx_ReplyPreview_section { - border-bottom: 1px solid transparent; -} - -.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_header { - margin: 8px; - color: #2e2f32; - font-weight: 400; - opacity: 0.4; -} - -.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_tile { - margin: 0 8px; -} - -.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_title { - float: left; -} - -.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_cancel { - float: right; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_ReplyPreview .mx_ReplyPreview_section .mx_ReplyPreview_clear { - clear: both; -} - -.mx_ReplyTile { - position: relative; - padding: 2px 0; - font-size: 1.4rem; - line-height: 1.6rem; -} - -.mx_ReplyTile.mx_ReplyTile_audio .mx_MFileBody_info_icon:before { - -webkit-mask-image: url(../../img/element-icons/speaker.7124b41.svg); - mask-image: url(../../img/element-icons/speaker.7124b41.svg); -} - -.mx_ReplyTile.mx_ReplyTile_video .mx_MFileBody_info_icon:before { - -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); - mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); -} - -.mx_ReplyTile .mx_MFileBody .mx_MFileBody_info { - margin: 5px 0; -} - -.mx_ReplyTile .mx_MFileBody .mx_MFileBody_download { - display: none; -} - -.mx_ReplyTile > a { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - text-decoration: none; - color: #2e2f32; -} - -.mx_ReplyTile .mx_RedactedBody { - padding: 4px 0 2px 20px; -} - -.mx_ReplyTile .mx_RedactedBody:before { - height: 13px; - width: 13px; - top: 5px; -} - -.mx_ReplyTile .mx_EventTile_content { - pointer-events: none; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - line-height: 2.2rem; -} - -.mx_ReplyTile .mx_EventTile_content .mx_EventTile_body.mx_EventTile_bigEmoji { - line-height: 2.2rem !important; - font-size: 1.4rem !important; -} - -.mx_ReplyTile .mx_EventTile_content .mx_EventTile_lineNumbers { - display: none; -} - -.mx_ReplyTile .mx_EventTile_content .mx_EventTile_pre_container > pre { - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - padding: 4px; -} - -.mx_ReplyTile .mx_EventTile_content .markdown-body blockquote, -.mx_ReplyTile .mx_EventTile_content .markdown-body dl, -.mx_ReplyTile .mx_EventTile_content .markdown-body ol, -.mx_ReplyTile .mx_EventTile_content .markdown-body p, -.mx_ReplyTile .mx_EventTile_content .markdown-body pre, -.mx_ReplyTile .mx_EventTile_content .markdown-body table, -.mx_ReplyTile .mx_EventTile_content .markdown-body ul { - margin-bottom: 4px; -} - -.mx_ReplyTile.mx_ReplyTile_info { - padding-top: 0; -} - -.mx_ReplyTile .mx_SenderProfile { - font-size: 1.4rem; - line-height: 1.7rem; - display: inline-block; - padding: 0; - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.mx_RoomBreadcrumbs { - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} - -.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_crumb { - margin-right: 8px; - width: 32px; -} - -.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter { - -webkit-transform: translateX(-40px); - transform: translateX(-40px); -} - -.mx_RoomBreadcrumbs.mx_RoomBreadcrumbs-enter-active { - -webkit-transform: translateX(0); - transform: translateX(0); - -webkit-transition: -webkit-transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); - transition: -webkit-transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); - transition: transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); - transition: transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1), - -webkit-transform 0.64s cubic-bezier(0.66, 0.02, 0.36, 1); -} - -.mx_RoomBreadcrumbs .mx_RoomBreadcrumbs_placeholder { - font-weight: 600; - font-size: 1.4rem; - line-height: 32px; - height: 32px; -} - -.mx_RoomBreadcrumbs_Tooltip { - margin-left: -42px; - margin-top: -42px; -} - -.mx_RoomHeader { - -webkit-box-flex: 0; - -ms-flex: 0 0 50px; - flex: 0 0 50px; - border-bottom: 1px solid transparent; - background-color: #fff; -} - -.mx_RoomHeader .mx_RoomHeader_e2eIcon { - height: 12px; - width: 12px; -} - -.mx_RoomHeader .mx_RoomHeader_e2eIcon .mx_E2EIcon { - margin: 0; - position: absolute; - height: 12px; - width: 12px; -} - -.mx_RoomHeader_wrapper { - margin: auto; - height: 50px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - min-width: 0; - padding: 0 10px 0 18px; -} - -.mx_RoomHeader_wrapper .mx_InviteOnlyIcon_large { - margin: 0; -} - -.mx_RoomHeader_spinner { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - height: 36px; - padding-left: 12px; - padding-right: 12px; -} - -.mx_RoomHeader_textButton { - vertical-align: middle; - border: 0; - border-radius: 8px; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-size: 1.4rem; - color: #fff; - background-color: #0dbd8b; - width: auto; - padding: 7px 1.5em; - cursor: pointer; - display: inline-block; - outline: none; - margin-right: 8px; - margin-top: -5px; -} - -.mx_RoomHeader_textButton_danger { - background-color: #ff4b55; -} - -.mx_RoomHeader_cancelButton { - cursor: pointer; - padding-left: 12px; - padding-right: 12px; -} - -.mx_RoomHeader_buttons { - background-color: #fff; -} - -.mx_RoomHeader_buttons, -.mx_RoomHeader_info { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_RoomHeader_info { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomHeader_simpleHeader { - line-height: 5.2rem; - color: #45474a; - font-size: 1.8rem; - font-weight: 600; - overflow: hidden; - margin-left: 63px; - text-overflow: ellipsis; - width: 100%; -} - -.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { - float: right; -} - -.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { - margin-left: 14px; - margin-right: 24px; - vertical-align: -4px; -} - -.mx_RoomHeader_name { - -webkit-box-flex: 0; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - overflow: hidden; - color: #45474a; - font-weight: 600; - font-size: 1.8rem; - margin: 0 7px; - border-bottom: 1px solid transparent; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_RoomHeader_nametext { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} - -.mx_RoomHeader_settingsHint { - color: #a2a2a2 !important; -} - -.mx_RoomHeader_searchStatus { - font-weight: 400; - opacity: 0.6; -} - -.mx_RoomHeader_avatar, -.mx_RoomHeader_avatarPicker, -.mx_RoomHeader_avatarPicker_edit, -.mx_RoomHeader_avatarPicker_remove, -.mx_RoomHeader_name { - cursor: pointer; -} - -.mx_RoomHeader_avatarPicker_remove { - position: absolute; - top: -11px; - right: -9px; -} - -.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { - color: #0dbd8b; -} - -.mx_RoomHeader_placeholder { - color: #a2a2a2 !important; -} - -.mx_RoomHeader_editable { - border-bottom: 1px solid #c7c7c7 !important; - min-width: 150px; - cursor: text; -} - -.mx_RoomHeader_editable:focus { - border-bottom: 1px solid #0dbd8b !important; - outline: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -.mx_RoomHeader_topic { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - color: #9e9e9e; - font-weight: 400; - font-size: 1.3rem; - margin: 4px 7px 0; - overflow: hidden; - text-overflow: ellipsis; - border-bottom: 1px solid transparent; - line-height: 1.2em; - max-height: 2.4em; -} - -.mx_RoomHeader_avatar { - -webkit-box-flex: 0; - -ms-flex: 0; - flex: 0; - margin: 0 6px 0 7px; - position: relative; -} - -.mx_RoomHeader_avatar .mx_BaseAvatar_image { - -o-object-fit: cover; - object-fit: cover; -} - -.mx_RoomHeader_avatarPicker { - position: relative; -} - -.mx_RoomHeader_avatarPicker_edit { - position: absolute; - left: 16px; - top: 18px; -} - -.mx_RoomHeader_avatarPicker_edit > label { - cursor: pointer; -} - -.mx_RoomHeader_avatarPicker_edit > input { - display: none; -} - -.mx_RoomHeader_button { - position: relative; - margin-left: 1px; - margin-right: 1px; - cursor: pointer; - height: 32px; - width: 32px; - border-radius: 100%; -} - -.mx_RoomHeader_button:before { - content: ""; - position: absolute; - top: 4px; - left: 4px; - height: 24px; - width: 24px; - background-color: #c1c6cd; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; -} - -.mx_RoomHeader_button:hover { - background: rgba(13, 189, 139, 0.1); -} - -.mx_RoomHeader_button:hover:before { - background-color: #0dbd8b; -} - -.mx_RoomHeader_forgetButton:before { - -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); - mask-image: url(../../img/element-icons/leave.bb917e7.svg); - width: 26px; -} - -.mx_RoomHeader_appsButton:before { - -webkit-mask-image: url(../../img/element-icons/room/apps.5ee9f78.svg); - mask-image: url(../../img/element-icons/room/apps.5ee9f78.svg); -} - -.mx_RoomHeader_appsButton_highlight:before { - background-color: #0dbd8b; -} - -.mx_RoomHeader_searchButton:before { - -webkit-mask-image: url(../../img/element-icons/room/search-inset.db6314d.svg); - mask-image: url(../../img/element-icons/room/search-inset.db6314d.svg); -} - -.mx_RoomHeader_voiceCallButton:before { - -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); - mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_RoomHeader_videoCallButton:before { - -webkit-mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); - mask-image: url(../../img/element-icons/call/video-call.f465ed0.svg); -} - -.mx_RoomHeader_showPanel { - height: 16px; -} - -.mx_RoomHeader_voipButton { - display: table-cell; -} - -.mx_RoomHeader_voipButtons { - margin-top: 18px; -} - -@media only screen and (max-width: 480px) { - .mx_RoomHeader_wrapper { - padding: 0; - } - .mx_RoomHeader { + white-space: nowrap; overflow: hidden; } -} - -.mx_RoomList { - padding-right: 7px; -} - -.mx_RoomList_iconPlus:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); - mask-image: url(../../img/element-icons/roomlist/plus-circle.aa44b1a.svg); -} - -.mx_RoomList_iconHash:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); - mask-image: url(../../img/element-icons/roomlist/hash-circle.c36ee5b.svg); -} - -.mx_RoomList_iconExplore:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); - mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); -} - -.mx_RoomList_iconBrowse:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); - mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); -} - -.mx_RoomList_iconDialpad:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/dialpad.37f876f.svg); - mask-image: url(../../img/element-icons/roomlist/dialpad.37f876f.svg); -} - -.mx_RoomList_explorePrompt { - margin: 4px 12px; - padding-top: 12px; - border-top: 1px solid #e7e7e7; - font-size: 1.4rem; -} - -.mx_RoomList_explorePrompt div:first-child { - font-weight: 600; - line-height: 1.8rem; - color: #2e2f32; -} - -.mx_RoomList_explorePrompt .mx_AccessibleButton { - color: #2e2f32; - position: relative; - padding: 8px 8px 8px 32px; - font-size: inherit; - margin-top: 12px; - display: block; - text-align: start; - background-color: rgba(141, 151, 165, 0.2); - border-radius: 4px; -} - -.mx_RoomList_explorePrompt .mx_AccessibleButton:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - top: 8px; - left: 8px; - background: #737d8c; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; -} - -.mx_RoomList_explorePrompt - .mx_AccessibleButton.mx_RoomList_explorePrompt_startChat:before { - -webkit-mask-image: url(../../img/element-icons/feedback.a91241e.svg); - mask-image: url(../../img/element-icons/feedback.a91241e.svg); -} - -.mx_RoomList_explorePrompt - .mx_AccessibleButton.mx_RoomList_explorePrompt_explore:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); - mask-image: url(../../img/element-icons/roomlist/explore.1523e65.svg); -} - -.mx_RoomList_explorePrompt - .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceInvite:before { - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_RoomList_explorePrompt - .mx_AccessibleButton.mx_RoomList_explorePrompt_spaceExplore:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); - mask-image: url(../../img/element-icons/roomlist/browse.080f923.svg); -} - -.mx_RoomPreviewBar { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; -} - -.mx_RoomPreviewBar h3 { - font-size: 1.8rem; - font-weight: 600; -} - -.mx_RoomPreviewBar h3.mx_RoomPreviewBar_spinnerTitle { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomPreviewBar .mx_RoomPreviewBar_message p, -.mx_RoomPreviewBar h3 { - word-break: break-all; - word-break: break-word; -} - -.mx_RoomPreviewBar .mx_Spinner { - width: auto; - height: auto; - margin: 10px 10px 10px 0; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; -} - -.mx_RoomPreviewBar .mx_RoomPreviewBar_footer { - font-size: 1.2rem; - line-height: 2rem; -} - -.mx_RoomPreviewBar .mx_RoomPreviewBar_footer .mx_Spinner { - vertical-align: middle; - display: inline-block; -} - -.mx_RoomPreviewBar_actions, -.mx_RoomPreviewBar_message { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_RoomPreviewBar_message { - -webkit-box-align: stretch; - -ms-flex-align: stretch; - align-items: stretch; -} - -.mx_RoomPreviewBar_message p { - overflow-wrap: break-word; -} - -.mx_RoomPreviewBar_panel { - padding: 8px 8px 8px 20px; - border-top: 1px solid transparent; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; -} - -.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions { - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - padding: 3px 8px; -} - -.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_actions > * { - margin-left: 12px; -} - -.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - min-width: 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_RoomPreviewBar_panel .mx_RoomPreviewBar_message > * { - margin: 4px; -} - -.mx_RoomPreviewBar_dialog { - margin: auto; - -webkit-box-sizing: content; - box-sizing: content; - width: 400px; - border-radius: 4px; - padding: 20px; - text-align: center; -} - -.mx_RoomPreviewBar_dialog, -.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_message > * { - margin: 5px 0 20px; -} - -.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions { - -webkit-box-orient: vertical; - -webkit-box-direction: reverse; - -ms-flex-direction: column-reverse; - flex-direction: column-reverse; -} - -.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions .mx_AccessibleButton { - padding: 7px 50px; -} - -.mx_RoomPreviewBar_dialog .mx_RoomPreviewBar_actions > * { - margin-top: 12px; -} - -.mx_RoomPreviewBar_dialog - .mx_RoomPreviewBar_actions - .mx_AccessibleButton.mx_AccessibleButton_kind_primary { - margin-bottom: 7px; -} - -.mx_RoomPreviewBar_inviter { - font-weight: 600; -} - -a.mx_RoomPreviewBar_inviter { - text-decoration: underline; - cursor: pointer; -} - -.mx_RoomSublist { - margin-left: 8px; - margin-bottom: 4px; -} - -.mx_RoomSublist.mx_RoomSublist_hidden { - display: none; -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding-bottom: 8px; - max-height: 24px; - color: #8d99a5; -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_stickable { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - max-width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_stickable.mx_RoomSublist_headerContainer_sticky { - position: fixed; - height: 32px; - width: calc(100% - 15px); -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_badgeContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_badgeContainer - .mx_NotificationBadge { - margin-left: 8px; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) - .mx_NotificationBadge { - margin-right: 4px; -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton, -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton { - margin-left: 8px; - position: relative; - width: 24px; - height: 24px; - border-radius: 8px; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_auxButton:before, -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_menuButton:before { - content: ""; - width: 16px; - height: 16px; - position: absolute; - top: 4px; - left: 4px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #61708b; -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_auxButton:hover, -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_menuButton:hover { - background: rgba(141, 151, 165, 0.2); -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_menuButton { - visibility: hidden; - width: 0; - margin: 0; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_auxButton:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/plus.daac9ba.svg); - mask-image: url(../../img/element-icons/roomlist/plus.daac9ba.svg); -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_menuButton:before { - -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); - mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); -} - -.mx_RoomSublist .mx_RoomSublist_headerContainer .mx_RoomSublist_headerText { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - max-width: calc(100% - 16px); - line-height: 1.6rem; - font-size: 1.3rem; - font-weight: 600; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_headerText - .mx_RoomSublist_collapseBtn { - display: inline-block; - position: relative; - width: 14px; - height: 14px; - margin-right: 6px; -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_headerText - .mx_RoomSublist_collapseBtn:before { - content: ""; - width: 18px; - height: 18px; - position: absolute; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #8d99a5; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_RoomSublist - .mx_RoomSublist_headerContainer - .mx_RoomSublist_headerText - .mx_RoomSublist_collapseBtn.mx_RoomSublist_collapseBtn_collapsed:before { - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); -} - -.mx_RoomSublist:first-child .mx_RoomSublist_headerContainer { - height: 0; - padding-bottom: 4px; -} - -.mx_RoomSublist .mx_RoomSublist_resizeBox { - position: relative; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_RoomSublist .mx_RoomSublist_resizeBox, -.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - overflow: hidden; -} - -.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_tiles { - -webkit-box-flex: 1; - -ms-flex: 1 0 0px; - flex: 1 0 0; - -ms-flex-direction: column; - flex-direction: column; - -ms-flex-item-align: stretch; - align-self: stretch; - -webkit-mask-image: linear-gradient(0deg, transparent, #000 4px); - mask-image: linear-gradient(0deg, transparent, #000 4px); -} - -.mx_RoomSublist - .mx_RoomSublist_resizeBox - .mx_RoomSublist_resizerHandles_showNButton { - -webkit-box-flex: 0; - -ms-flex: 0 0 32px; - flex: 0 0 32px; -} - -.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandles { - -webkit-box-flex: 0; - -ms-flex: 0 0 4px; - flex: 0 0 4px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 100%; -} - -.mx_RoomSublist .mx_RoomSublist_resizeBox .mx_RoomSublist_resizerHandle { - cursor: ns-resize; - border-radius: 3px; - max-width: 64px; - height: 4px !important; - position: relative !important; - bottom: 0 !important; -} - -.mx_RoomSublist - .mx_RoomSublist_resizeBox.mx_RoomSublist_hasMenuOpen - .mx_RoomSublist_resizerHandle, -.mx_RoomSublist .mx_RoomSublist_resizeBox:hover .mx_RoomSublist_resizerHandle { - opacity: 0.8; - background-color: #2e2f32; -} - -.mx_RoomSublist .mx_RoomSublist_showNButton { - cursor: pointer; - font-size: 1.3rem; - line-height: 1.8rem; - color: #737d8c; - height: 24px; - padding-bottom: 4px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomSublist .mx_RoomSublist_showNButton .mx_RoomSublist_showNButtonChevron { - position: relative; - width: 18px; - height: 18px; - margin-left: 12px; - margin-right: 16px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #8d99a5; - left: -1px; -} - -.mx_RoomSublist - .mx_RoomSublist_showNButton - .mx_RoomSublist_showLessButtonChevron, -.mx_RoomSublist - .mx_RoomSublist_showNButton - .mx_RoomSublist_showMoreButtonChevron { - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_RoomSublist - .mx_RoomSublist_showNButton - .mx_RoomSublist_showLessButtonChevron { - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -.mx_RoomSublist.mx_RoomSublist_hasMenuOpen .mx_RoomSublist_menuButton, -.mx_RoomSublist:not(.mx_RoomSublist_minimized) - > .mx_RoomSublist_headerContainer:focus-within - .mx_RoomSublist_menuButton, -.mx_RoomSublist:not(.mx_RoomSublist_minimized) - > .mx_RoomSublist_headerContainer:hover - .mx_RoomSublist_menuButton { - visibility: visible; - width: 24px; - margin-left: 8px; -} - -.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_headerContainer { - height: auto; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - position: relative; -} - -.mx_RoomSublist.mx_RoomSublist_minimized - .mx_RoomSublist_headerContainer - .mx_RoomSublist_badgeContainer { - -webkit-box-ordinal-group: 1; - -ms-flex-order: 0; - order: 0; - -ms-flex-item-align: end; - align-self: flex-end; - margin-right: 0; -} - -.mx_RoomSublist.mx_RoomSublist_minimized - .mx_RoomSublist_headerContainer - .mx_RoomSublist_stickable { - -webkit-box-ordinal-group: 2; - -ms-flex-order: 1; - order: 1; - max-width: 100%; -} - -.mx_RoomSublist.mx_RoomSublist_minimized - .mx_RoomSublist_headerContainer - .mx_RoomSublist_auxButton { - -webkit-box-ordinal-group: 3; - -ms-flex-order: 2; - order: 2; - visibility: visible; - width: 32px !important; - height: 32px !important; - margin-left: 0 !important; - background-color: rgba(141, 151, 165, 0.2); - margin-top: 8px; -} - -.mx_RoomSublist.mx_RoomSublist_minimized - .mx_RoomSublist_headerContainer - .mx_RoomSublist_auxButton:before { - top: 8px; - left: 8px; -} - -.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_resizeBox { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_showNButton { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_RoomSublist.mx_RoomSublist_minimized - .mx_RoomSublist_showNButton - .mx_RoomSublist_showNButtonChevron { - margin-right: 12px; -} - -.mx_RoomSublist.mx_RoomSublist_minimized .mx_RoomSublist_menuButton { - height: 16px; -} - -.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen - .mx_RoomSublist_menuButton, -.mx_RoomSublist.mx_RoomSublist_minimized - > .mx_RoomSublist_headerContainer:hover - .mx_RoomSublist_menuButton { - visibility: visible; - position: absolute; - bottom: 48px; - right: 0; - width: 16px; - height: 16px; - border-radius: 0; - z-index: 1; - background-color: hsla(0, 0%, 96.1%, 0.9); -} - -.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen - .mx_RoomSublist_menuButton:before, -.mx_RoomSublist.mx_RoomSublist_minimized - > .mx_RoomSublist_headerContainer:hover - .mx_RoomSublist_menuButton:before { - top: 0; - left: 0; -} - -.mx_RoomSublist.mx_RoomSublist_minimized.mx_RoomSublist_hasMenuOpen.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) - .mx_RoomSublist_menuButton, -.mx_RoomSublist.mx_RoomSublist_minimized - > .mx_RoomSublist_headerContainer:hover.mx_RoomSublist_headerContainer:not(.mx_RoomSublist_headerContainer_withAux) - .mx_RoomSublist_menuButton { - bottom: 8px; -} - -.mx_RoomSublist_contextMenu { - padding: 20px 16px; - width: 250px; -} - -.mx_RoomSublist_contextMenu hr { - margin-top: 16px; - margin-bottom: 16px; - margin-right: 16px; - border: 1px solid #2e2f32; - opacity: 0.1; -} - -.mx_RoomSublist_contextMenu .mx_RoomSublist_contextMenu_title { - font-size: 1.5rem; - line-height: 2rem; - font-weight: 600; - margin-bottom: 4px; -} - -.mx_RoomSublist_contextMenu .mx_Checkbox, -.mx_RoomSublist_contextMenu .mx_RadioButton { - margin-top: 8px; -} - -.mx_RoomSublist_addRoomTooltip { - margin-top: -3px; -} - -.mx_RoomSublist_skeletonUI { - position: relative; - margin-left: 4px; - height: 288px; -} - -.mx_RoomSublist_skeletonUI:before { - background: -webkit-gradient( - linear, - left top, - left bottom, - from(#fff), - to(hsla(0, 0%, 100%, 0)) - ); - background: linear-gradient(180deg, #fff, hsla(0, 0%, 100%, 0)); - width: 100%; - height: 100%; - content: ""; - position: absolute; - -webkit-mask-repeat: repeat-y; - mask-repeat: repeat-y; - -webkit-mask-size: auto 48px; - mask-size: auto 48px; - -webkit-mask-image: url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg); - mask-image: url(../../img/element-icons/roomlist/skeleton-ui.1f67400.svg); -} - -.mx_RoomTile { - margin-bottom: 4px; - padding: 4px; - contain: content; - height: 40px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_RoomTile.mx_RoomTile_hasMenuOpen, -.mx_RoomTile.mx_RoomTile_selected, -.mx_RoomTile:focus-within, -.mx_RoomTile:hover { - background-color: #fff; - border-radius: 8px; -} - -.mx_RoomTile .mx_DecoratedRoomAvatar, -.mx_RoomTile .mx_RoomTile_avatarContainer { - margin-right: 8px; -} - -.mx_RoomTile .mx_RoomTile_nameContainer { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - min-width: 0; - margin-right: 8px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview, -.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name { - margin: 0 2px; - width: 100%; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; -} - -.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_name { - font-size: 1.4rem; - line-height: 1.8rem; -} - -.mx_RoomTile - .mx_RoomTile_nameContainer - .mx_RoomTile_name.mx_RoomTile_nameHasUnreadEvents { - font-weight: 600; -} - -.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_messagePreview { - font-size: 1.3rem; - line-height: 1.8rem; - color: #737d8c; -} - -.mx_RoomTile .mx_RoomTile_nameContainer .mx_RoomTile_nameWithPreview { - margin-top: -4px; -} - -.mx_RoomTile .mx_RoomTile_notificationsButton { - margin-left: 4px; -} - -.mx_RoomTile .mx_RoomTile_badgeContainer { - height: 16px; - margin: auto 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge { - margin-right: 2px; -} - -.mx_RoomTile .mx_RoomTile_badgeContainer .mx_NotificationBadge_dot { - margin-left: 5px; - margin-right: 7px; -} - -.mx_RoomTile .mx_RoomTile_menuButton, -.mx_RoomTile .mx_RoomTile_notificationsButton { - width: 20px; - min-width: 20px; - height: 20px; - margin-top: auto; - margin-bottom: auto; - position: relative; - display: none; -} - -.mx_RoomTile .mx_RoomTile_menuButton:before, -.mx_RoomTile .mx_RoomTile_notificationsButton:before { - top: 2px; - left: 2px; - content: ""; - width: 16px; - height: 16px; - position: absolute; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background: #2e2f32; -} - -.mx_RoomTile - .mx_RoomTile_notificationsButton.mx_RoomTile_notificationsButton_show { - display: block; -} - -.mx_RoomTile .mx_RoomTile_menuButton:before { - -webkit-mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); - mask-image: url(../../img/element-icons/context-menu.829cc1a.svg); -} - -.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen - .mx_RoomTile_badgeContainer, -.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within - .mx_RoomTile_badgeContainer, -.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_badgeContainer { - width: 0; - height: 0; - display: none; -} - -.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen - .mx_RoomTile_menuButton, -.mx_RoomTile:not(.mx_RoomTile_minimized).mx_RoomTile_hasMenuOpen - .mx_RoomTile_notificationsButton, -.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within .mx_RoomTile_menuButton, -.mx_RoomTile:not(.mx_RoomTile_minimized):focus-within - .mx_RoomTile_notificationsButton, -.mx_RoomTile:not(.mx_RoomTile_minimized):hover .mx_RoomTile_menuButton, -.mx_RoomTile:not(.mx_RoomTile_minimized):hover - .mx_RoomTile_notificationsButton { - display: block; -} - -.mx_RoomTile.mx_RoomTile_minimized { - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - position: relative; -} - -.mx_RoomTile.mx_RoomTile_minimized .mx_DecoratedRoomAvatar, -.mx_RoomTile.mx_RoomTile_minimized .mx_RoomTile_avatarContainer { - margin-right: 0; -} - -.mx_RoomTile_iconBell:before { - -webkit-mask-image: url(../../img/element-icons/notifications.d298b39.svg); - mask-image: url(../../img/element-icons/notifications.d298b39.svg); -} - -.mx_RoomTile_iconBellDot:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg); - mask-image: url(../../img/element-icons/roomlist/notifications-default.8b8509e.svg); -} - -.mx_RoomTile_iconBellCrossed:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); - mask-image: url(../../img/element-icons/roomlist/notifications-off.0c57561.svg); -} - -.mx_RoomTile_iconBellMentions:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg); - mask-image: url(../../img/element-icons/roomlist/notifications-dm.ffa8881.svg); -} - -.mx_RoomTile_contextMenu .mx_RoomTile_iconStar:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/favorite.ff7609d.svg); - mask-image: url(../../img/element-icons/roomlist/favorite.ff7609d.svg); -} - -.mx_RoomTile_contextMenu .mx_RoomTile_iconArrowDown:before { - -webkit-mask-image: url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg); - mask-image: url(../../img/element-icons/roomlist/low-priority.6c7fb97.svg); -} - -.mx_RoomTile_contextMenu .mx_RoomTile_iconSettings:before { - -webkit-mask-image: url(../../img/element-icons/settings.6b381af.svg); - mask-image: url(../../img/element-icons/settings.6b381af.svg); -} - -.mx_RoomTile_contextMenu .mx_RoomTile_iconCopyLink:before { - -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); - mask-image: url(../../img/element-icons/link.8f4b1fc.svg); -} - -.mx_RoomTile_contextMenu .mx_RoomTile_iconInvite:before { - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_RoomTile_contextMenu .mx_RoomTile_iconSignOut:before { - -webkit-mask-image: url(../../img/element-icons/leave.bb917e7.svg); - mask-image: url(../../img/element-icons/leave.bb917e7.svg); -} - -.mx_RoomUpgradeWarningBar { - max-height: 235px; - background-color: #f7f7f7; - padding-left: 20px; - padding-right: 20px; - overflow: scroll; -} - -.mx_RoomUpgradeWarningBar_wrapped { - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - text-align: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-align-items: center; -} - -.mx_RoomUpgradeWarningBar_header { - color: #ff4b55; - font-weight: 700; -} - -.mx_RoomUpgradeWarningBar_body { - color: #ff4b55; -} - -.mx_RoomUpgradeWarningBar_upgradelink { - color: #ff4b55; - text-decoration: underline; -} - -.mx_RoomUpgradeWarningBar_small { - color: #888; - font-size: 70%; -} - -.mx_SearchBar { - height: 56px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border-bottom: 1px solid transparent; -} - -.mx_SearchBar .mx_SearchBar_input { - -webkit-box-flex: 1; - -ms-flex: 1 1 0px; - flex: 1 1 0; - margin-left: 22px; -} - -.mx_SearchBar .mx_SearchBar_searchButton { - cursor: pointer; - width: 37px; - height: 37px; - background-color: #0dbd8b; - -webkit-mask: url(../../img/feather-customised/search-input.044bfa7.svg); - mask: url(../../img/feather-customised/search-input.044bfa7.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_SearchBar .mx_SearchBar_buttons { - display: inherit; -} - -.mx_SearchBar .mx_SearchBar_button { - border: 0; - margin: 0 0 0 22px; - padding: 5px; - font-size: 1.5rem; - cursor: pointer; - color: #2e2f32; - border-bottom: 2px solid #0dbd8b; - font-weight: 600; -} - -.mx_SearchBar .mx_SearchBar_unselected { - color: #9fa9ba; - border-color: transparent; -} - -.mx_SearchBar .mx_SearchBar_cancel { - background-color: #ff4b55; - -webkit-mask: url(../../img/cancel.4b9715b.svg); - mask: url(../../img/cancel.4b9715b.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 14px; - mask-size: 14px; - padding: 9px; - margin: 0 12px 0 3px; - cursor: pointer; -} - -.mx_SendMessageComposer { - -ms-flex: 1; - flex: 1; - -ms-flex-direction: column; - flex-direction: column; - font-size: 1.4rem; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin-right: 6px; - min-width: 0; -} - -.mx_SendMessageComposer, -.mx_SendMessageComposer .mx_BasicMessageComposer { - -webkit-box-flex: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; -} - -.mx_SendMessageComposer .mx_BasicMessageComposer { - -ms-flex: 1; - flex: 1; - -ms-flex-direction: column; - flex-direction: column; - min-height: 55px; -} - -.mx_SendMessageComposer - .mx_BasicMessageComposer - .mx_BasicMessageComposer_input { - padding: 3px 0; - margin: auto 0; - max-height: 140px; - overflow-y: auto; -} - -.mx_Stickers_content { - overflow: hidden; -} - -.mx_Stickers_content_container { - overflow: hidden; - height: 300px; -} - -#mx_persistedElement_stickerPicker .mx_AppTileFullWidth { - height: unset; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-left: none; - border-right: none; - border-bottom: none; -} - -#mx_persistedElement_stickerPicker .mx_AppTileMenuBar { - padding: 0; -} - -#mx_persistedElement_stickerPicker iframe { - height: 283px; -} - -.mx_Stickers_contentPlaceholder { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - text-align: center; -} - -.mx_Stickers_contentPlaceholder p { - max-width: 200px; -} - -.mx_Stickers_addLink { - display: inline; - cursor: pointer; - color: #0dbd8b; -} - -.mx_Stickers_hideStickers { - z-index: 2001; -} - -.mx_TopUnreadMessagesBar { - z-index: 1000; - position: absolute; - top: 24px; - right: 24px; - width: 38px; -} - -.mx_TopUnreadMessagesBar:after { - content: ""; - position: absolute; - top: -8px; - left: 10.5px; - width: 4px; - height: 4px; - border-radius: 16px; - background-color: #f2f5f8; - border: 6px solid #0dbd8b; - pointer-events: none; -} - -.mx_TopUnreadMessagesBar_scrollUp { - height: 38px; - border-radius: 19px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - background: #fff; - border: 1.3px solid #61708b; - cursor: pointer; -} - -.mx_TopUnreadMessagesBar_scrollUp:before { - content: ""; - position: absolute; - width: 36px; - height: 36px; - -webkit-mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); - mask-image: url(../../img/feather-customised/chevron-down-thin.f9a2477.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - background: #61708b; - -webkit-transform: rotate(180deg); - transform: rotate(180deg); -} - -.mx_TopUnreadMessagesBar_markAsRead { - display: block; - width: 18px; - height: 18px; - background: #fff; - border: 1.3px solid #61708b; - border-radius: 10px; - margin: 5px auto; -} - -.mx_TopUnreadMessagesBar_markAsRead:before { - content: ""; - position: absolute; - width: 18px; - height: 18px; - -webkit-mask-image: url(../../img/cancel.4b9715b.svg); - mask-image: url(../../img/cancel.4b9715b.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 10px; - mask-size: 10px; - -webkit-mask-position: 4px 4px; - mask-position: 4px 4px; - background: #61708b; -} - -.mx_VoiceRecordComposerTile_stop { - width: 28px; - height: 28px; - border: 2px solid #e3e8f0; - border-radius: 32px; - margin-right: 16px; - position: relative; -} - -.mx_VoiceRecordComposerTile_stop:after { - content: ""; - width: 14px; - height: 14px; - position: absolute; - top: 7px; - left: 7px; - border-radius: 2px; - background-color: #ff4b55; -} - -.mx_VoiceRecordComposerTile_delete { - width: 24px; - height: 24px; - vertical-align: middle; - margin-right: 8px; - background-color: #8d99a5; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-image: url(../../img/element-icons/trashcan.3b626db.svg); - mask-image: url(../../img/element-icons/trashcan.3b626db.svg); -} - -.mx_MessageComposer_row .mx_VoiceMessagePrimaryContainer { - margin: 6px 12px 6px 6px; - position: relative; -} - -.mx_MessageComposer_row - .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording { - padding-left: 22px; -} - -.mx_MessageComposer_row - .mx_VoiceMessagePrimaryContainer.mx_VoiceRecordComposerTile_recording:before { - -webkit-animation: recording-pulse 2s infinite; - animation: recording-pulse 2s infinite; - content: ""; - background-color: #ff4b55; - width: 10px; - height: 10px; - position: absolute; - left: 12px; - top: 18px; - border-radius: 10px; -} - -@-webkit-keyframes recording-pulse { - 0% { - opacity: 1; - } - 35% { - opacity: 0; - } - 65% { - opacity: 1; - } -} - -@keyframes recording-pulse { - 0% { - opacity: 1; - } - 35% { - opacity: 0; - } - 65% { - opacity: 1; - } -} - -.mx_WhoIsTypingTile { - margin-left: -18px; - padding-top: 18px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_WhoIsTypingTile_avatars { - -webkit-box-flex: 0; - -ms-flex: 0 0 83px; - flex: 0 0 83px; - text-align: center; -} - -.mx_WhoIsTypingTile_avatars > :not(:first-child) { - margin-left: -12px; -} - -.mx_WhoIsTypingTile_avatars .mx_BaseAvatar_initial { - padding-top: 1px; -} - -.mx_WhoIsTypingTile_avatars .mx_BaseAvatar { - border: 1px solid #fff; - border-radius: 40px; -} - -.mx_WhoIsTypingTile_remainingAvatarPlaceholder { - position: relative; - display: inline-block; - color: #acacac; - background-color: #ddd; - border: 1px solid #fff; - border-radius: 40px; - width: 24px; - height: 24px; - line-height: 2.4rem; - font-size: 0.8em; - vertical-align: top; - text-align: center; -} - -.mx_WhoIsTypingTile_label { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - font-size: 1.4rem; - font-weight: 600; - color: #9e9e9e; -} - -.mx_WhoIsTypingTile_label > span { - background-image: url(../../img/typing-indicator-2x.0eb9f0e.gif); - background-size: 25px; - background-position: 0 100%; - background-repeat: no-repeat; - padding-bottom: 15px; - display: block; -} - -.mx_MatrixChat_useCompactLayout .mx_WhoIsTypingTile { - padding-top: 4px; -} - -.mx_AvatarSetting_avatar { - width: 90px; - min-width: 90px; - height: 90px; - margin-top: 8px; - position: relative; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_hover { - -webkit-transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); - transition: opacity 0.08s cubic-bezier(0.46, 0.03, 0.52, 0.96); - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - pointer-events: none; - line-height: 90px; - text-align: center; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_hover > span { - color: #fff; - position: relative; - font-weight: 500; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_hover .mx_AvatarSetting_hoverBg { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - opacity: 0.5; - background-color: #2e2f32; - border-radius: 90px; -} - -.mx_AvatarSetting_avatar.mx_AvatarSetting_avatar_hovering - .mx_AvatarSetting_hover { - opacity: 1; -} - -.mx_AvatarSetting_avatar:not(.mx_AvatarSetting_avatar_hovering) - .mx_AvatarSetting_hover { - opacity: 0; -} - -.mx_AvatarSetting_avatar > * { - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_primary { - margin-top: 8px; -} - -.mx_AvatarSetting_avatar .mx_AccessibleButton.mx_AccessibleButton_kind_link_sm { - width: 100%; -} - -.mx_AvatarSetting_avatar > img { - cursor: pointer; - -o-object-fit: cover; - object-fit: cover; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder, -.mx_AvatarSetting_avatar > img { - display: block; - height: 90px; - width: inherit; - border-radius: 90px; - cursor: pointer; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder:before { - background-color: #2e2f32; - -webkit-mask: url(../../img/feather-customised/user.7a4d23d.svg); - mask: url(../../img/feather-customised/user.7a4d23d.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 36px; - mask-size: 36px; - -webkit-mask-position: center; - mask-position: center; - content: ""; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton { - width: 32px; - height: 32px; - border-radius: 32px; - background-color: #e7e7e7; - position: absolute; - bottom: 0; - right: 0; -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_uploadButton:before { - content: ""; - display: block; - width: 100%; - height: 100%; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 55%; - mask-size: 55%; - background-color: #2e2f32; - -webkit-mask-image: url(../../img/feather-customised/edit.fd55ec2.svg); - mask-image: url(../../img/feather-customised/edit.fd55ec2.svg); -} - -.mx_AvatarSetting_avatar .mx_AvatarSetting_avatarPlaceholder { - background-color: #f4f6fa; -} - -.mx_CrossSigningPanel_statusList { - border-spacing: 0; -} - -.mx_CrossSigningPanel_statusList td { - padding: 0; -} - -.mx_CrossSigningPanel_statusList td:first-of-type { - -webkit-padding-end: 1em; - padding-inline-end: 1em; -} - -.mx_CrossSigningPanel_buttonRow { - margin: 1em 0; -} - -.mx_CrossSigningPanel_buttonRow :nth-child(n + 1) { - -webkit-margin-end: 10px; - margin-inline-end: 10px; -} - -.mx_DevicesPanel { - display: table; - table-layout: fixed; - width: 880px; - border-spacing: 10px; -} - -.mx_DevicesPanel_header { - display: table-header-group; - font-weight: 700; -} - -.mx_DevicesPanel_header > .mx_DevicesPanel_deviceButtons { - height: 48px; -} - -.mx_DevicesPanel_header > div { - display: table-cell; - vertical-align: middle; -} - -.mx_DevicesPanel_header .mx_DevicesPanel_deviceName { - width: 50%; -} - -.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { - width: 30%; -} - -.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { - width: 20%; -} - -.mx_DevicesPanel_device { - display: table-row; -} - -.mx_DevicesPanel_device > div { - display: table-cell; -} - -.mx_DevicesPanel_myDevice { - font-weight: 700; -} - -.mx_E2eAdvancedPanel_settingLongDescription { - margin-right: 150px; -} - -.mx_ExistingEmailAddress { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 5px; -} - -.mx_ExistingEmailAddress_delete { - margin-right: 5px; - cursor: pointer; - vertical-align: middle; -} - -.mx_ExistingEmailAddress_email, -.mx_ExistingEmailAddress_promptText { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-right: 10px; -} - -.mx_ExistingEmailAddress_confirmBtn { - margin-left: 5px; -} - -.mx_IntegrationManager .mx_Dialog { - width: 60%; - height: 70%; - overflow: hidden; - padding: 0; - max-width: none; - max-height: none; -} - -.mx_IntegrationManager iframe { - background-color: #fff; - border: 0; - width: 100%; - height: 100%; -} - -.mx_IntegrationManager_loading h3 { - text-align: center; -} - -.mx_IntegrationManager_error { - text-align: center; - padding-top: 20px; -} - -.mx_IntegrationManager_error h3 { - color: #ff4b55; -} - -.mx_UserNotifSettings { - color: #2e2f32; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable { - width: calc(100% + 12px); - table-layout: fixed; - border-collapse: collapse; - border-spacing: 0; - margin-top: 40px; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable tr > th { - font-weight: 600; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable tr > th:first-child { - text-align: left; - font-size: 1.8rem; -} - -.mx_UserNotifSettings - .mx_UserNotifSettings_pushRulesTable - tr - > th:nth-child(n + 2) { - color: #737d8c; - font-size: 1.2rem; - vertical-align: middle; - width: 66px; -} - -.mx_UserNotifSettings - .mx_UserNotifSettings_pushRulesTable - tr - > td:nth-child(n + 2) { - text-align: center; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable tr > td { - padding-top: 8px; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_pushRulesTable .mx_RadioButton { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_UserNotifSettings - .mx_UserNotifSettings_pushRulesTable - .mx_RadioButton - .mx_RadioButton_content, -.mx_UserNotifSettings - .mx_UserNotifSettings_pushRulesTable - .mx_RadioButton - .mx_RadioButton_spacer { - display: none; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_floatingSection { - margin-top: 40px; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_floatingSection > div:first-child { - font-size: 1.8rem; - font-weight: 600; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_floatingSection > table { - border-collapse: collapse; - border-spacing: 0; - margin-top: 8px; -} - -.mx_UserNotifSettings - .mx_UserNotifSettings_floatingSection - > table - tr - > td:first-child { - padding-right: 8px; -} - -.mx_UserNotifSettings .mx_UserNotifSettings_clearNotifsButton { - margin-top: 8px; -} - -.mx_UserNotifSettings .mx_TagComposer { - margin-top: 35px; -} - -.mx_ExistingPhoneNumber { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 5px; -} - -.mx_ExistingPhoneNumber_delete { - margin-right: 5px; - cursor: pointer; - vertical-align: middle; -} - -.mx_ExistingPhoneNumber_address, -.mx_ExistingPhoneNumber_promptText { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-right: 10px; -} - -.mx_ExistingPhoneNumber_confirmBtn { - margin-left: 5px; -} - -.mx_ExistingPhoneNumber_verification { - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_ExistingPhoneNumber_verification .mx_Field { - margin: 0 0 0 1em; -} - -.mx_PhoneNumbers_input { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_PhoneNumbers_input > .mx_Field { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; -} - -.mx_PhoneNumbers_country { - width: 80px; -} - -.mx_ProfileSettings_controls_topic > textarea { - resize: vertical; -} - -.mx_ProfileSettings_profile { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} - -.mx_ProfileSettings_controls { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - margin-right: 54px; -} - -.mx_ProfileSettings_controls .mx_SettingsTab_subheading { - margin-top: 0; -} - -.mx_ProfileSettings_controls .mx_Field #profileTopic { - height: 4em; -} - -.mx_ProfileSettings_controls .mx_Field:first-child { - margin-top: 0; -} - -.mx_ProfileSettings_hostingSignup { - margin-left: 20px; -} - -.mx_ProfileSettings_hostingSignup img { - margin-left: 5px; -} - -.mx_ProfileSettings_avatarUpload { - display: none; -} - -.mx_ProfileSettings_profileForm { - margin-right: 100px; - border-bottom: 1px solid #e7e7e7; -} - -.mx_ProfileSettings_buttons { - margin-top: 10px; - margin-bottom: 28px; -} - -.mx_ProfileSettings_buttons > .mx_AccessibleButton_kind_link { - padding-left: 0; -} - -.mx_SecureBackupPanel_deviceNotVerified, -.mx_SecureBackupPanel_deviceVerified, -.mx_SecureBackupPanel_sigInvalid, -.mx_SecureBackupPanel_sigValid { - font-weight: 700; -} - -.mx_SecureBackupPanel_deviceVerified, -.mx_SecureBackupPanel_sigValid { - color: #76cfa5; -} - -.mx_SecureBackupPanel_deviceNotVerified, -.mx_SecureBackupPanel_sigInvalid { - color: #ba6363; -} - -.mx_SecureBackupPanel_deviceName { - font-style: italic; -} - -.mx_SecureBackupPanel_buttonRow { - margin: 1em 0; -} - -.mx_SecureBackupPanel_buttonRow :nth-child(n + 1) { - -webkit-margin-end: 10px; - margin-inline-end: 10px; -} - -.mx_SecureBackupPanel_statusList { - border-spacing: 0; -} - -.mx_SecureBackupPanel_statusList td { - padding: 0; -} - -.mx_SecureBackupPanel_statusList td:first-of-type { - -webkit-padding-end: 1em; - padding-inline-end: 1em; -} - -.mx_SetIdServer .mx_Field_input { - margin-right: 100px; -} - -.mx_SetIdServer_tooltip { - max-width: 120px; -} - -.mx_SetIntegrationManager { - margin-top: 10px; - margin-bottom: 10px; -} - -.mx_SetIntegrationManager > .mx_SettingsTab_heading { - margin-bottom: 10px; -} - -.mx_SetIntegrationManager - > .mx_SettingsTab_heading - > .mx_SettingsTab_subheading { - display: inline-block; - padding-left: 5px; -} - -.mx_SetIntegrationManager .mx_ToggleSwitch { - display: inline-block; - float: right; - top: 9px; - margin-right: 100px; -} - -.mx_ExistingSpellCheckLanguage { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 5px; -} - -.mx_ExistingSpellCheckLanguage_language { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - margin-right: 10px; -} - -.mx_GeneralUserSettingsTab_spellCheckLanguageInput { - margin-top: 1em; - margin-bottom: 1em; -} - -.mx_SpellCheckLanguages { - margin-right: 100px; -} - -.mx_UpdateCheckButton_summary { - margin-left: 16px; -} - -.mx_UpdateCheckButton_summary .mx_AccessibleButton_kind_link { - padding: 0; -} - -.mx_SettingsTab { - color: #61708b; -} - -.mx_SettingsTab_warningText { - color: #ff4b55; -} - -.mx_SettingsTab_heading { - font-size: 2rem; - font-weight: 600; - color: #2e2f32; - margin-bottom: 10px; -} - -.mx_SettingsTab_heading:nth-child(n + 2) { - margin-top: 30px; -} - -.mx_SettingsTab_subheading { - font-size: 1.6rem; - display: block; - font-family: Inter, Twemoji, Apple Color Emoji, Segoe UI Emoji, Arial, - Helvetica, Sans-Serif, Noto Color Emoji; - font-weight: 600; - color: #2e2f32; - margin-bottom: 10px; - margin-top: 12px; -} - -.mx_SettingsTab_subsectionText { - color: #61708b; - font-size: 1.4rem; - display: block; - margin: 10px 80px 10px 0; -} - -.mx_SettingsTab_section { - margin-bottom: 24px; -} - -.mx_SettingsTab_section .mx_SettingsFlag { - margin-right: 80px; - margin-bottom: 10px; -} - -.mx_SettingsTab_section.mx_SettingsTab_subsectionText .mx_SettingsFlag { - margin-right: 0 !important; -} - -.mx_SettingsTab_section .mx_SettingsFlag .mx_SettingsFlag_label { - vertical-align: middle; - display: inline-block; - font-size: 1.4rem; - color: #2e2f32; - max-width: calc(100% - 4.8rem); - -webkit-box-sizing: border-box; - box-sizing: border-box; - padding-right: 10px; -} - -.mx_SettingsTab_section .mx_SettingsFlag .mx_ToggleSwitch { - float: right; -} - -.mx_SettingsTab_linkBtn { - cursor: pointer; - color: #0dbd8b; - word-break: break-all; -} - -.mx_SettingsTab a { - color: #238cf5; -} - -.mx_GeneralRoomSettingsTab_profileSection { - margin-top: 10px; -} - -.mx_RolesRoomSettingsTab ul { - margin-bottom: 0; -} - -.mx_RolesRoomSettingsTab_unbanBtn { - margin-right: 10px; - margin-bottom: 5px; -} - -.mx_SecurityRoomSettingsTab .mx_SettingsTab_showAdvanced { - padding: 0; - margin-bottom: 16px; -} - -.mx_SecurityRoomSettingsTab .mx_SecurityRoomSettingsTab_spacesWithAccess > h4 { - color: #737d8c; - font-weight: 600; - font-size: 1.2rem; - line-height: 1.5rem; - text-transform: uppercase; -} - -.mx_SecurityRoomSettingsTab - .mx_SecurityRoomSettingsTab_spacesWithAccess - > span { - font-weight: 500; - font-size: 1.4rem; - line-height: 32px; - color: #737d8c; - display: inline-block; -} - -.mx_SecurityRoomSettingsTab - .mx_SecurityRoomSettingsTab_spacesWithAccess - > span - .mx_RoomAvatar_isSpaceRoom - img, -.mx_SecurityRoomSettingsTab - .mx_SecurityRoomSettingsTab_spacesWithAccess - > span - img.mx_RoomAvatar_isSpaceRoom { - border-radius: 8px; -} - -.mx_SecurityRoomSettingsTab - .mx_SecurityRoomSettingsTab_spacesWithAccess - > span - .mx_BaseAvatar { - margin-right: 8px; -} - -.mx_SecurityRoomSettingsTab - .mx_SecurityRoomSettingsTab_spacesWithAccess - > span - + span { - margin-left: 16px; -} - -.mx_SecurityRoomSettingsTab_warning { - display: block; -} - -.mx_SecurityRoomSettingsTab_warning img { - vertical-align: middle; - margin-right: 5px; - margin-left: 3px; - margin-bottom: 5px; -} - -.mx_SecurityRoomSettingsTab_encryptionSection { - padding-bottom: 24px; - border-bottom: 1px solid #e7e7e7; - margin-bottom: 32px; -} - -.mx_SecurityRoomSettingsTab_upgradeRequired { - margin-left: 16px; - padding: 4px 16px; - border: 1px solid #0dbd8b; - border-radius: 8px; - color: #0dbd8b; - font-size: 1.2rem; - line-height: 1.5rem; -} - -.mx_SecurityRoomSettingsTab_joinRule .mx_RadioButton { - padding-top: 16px; - margin-bottom: 8px; -} - -.mx_SecurityRoomSettingsTab_joinRule .mx_RadioButton .mx_RadioButton_content { - margin-left: 14px; - font-weight: 600; - font-size: 1.5rem; - line-height: 2.4rem; - color: #2e2f32; - display: block; -} - -.mx_SecurityRoomSettingsTab_joinRule > span { - display: inline-block; - margin-left: 34px; - margin-bottom: 16px; - font-size: 1.5rem; - line-height: 2.4rem; - color: #737d8c; -} - -.mx_SecurityRoomSettingsTab_joinRule > span + .mx_RadioButton { - border-top: 1px solid #e7e7e7; -} - -.mx_SecurityRoomSettingsTab_joinRule .mx_AccessibleButton_kind_link { - padding: 0; - font-size: inherit; -} - -.mx_AppearanceUserSettingsTab_fontSlider, -.mx_AppearanceUserSettingsTab_fontSlider_preview { - margin-right: 100px; -} - -.mx_AppearanceUserSettingsTab .mx_Field { - width: 256px; -} - -.mx_AppearanceUserSettingsTab_fontScaling { - color: #2e2f32; -} - -.mx_AppearanceUserSettingsTab_fontSlider { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 15px; - background: rgba(227, 232, 240, 0.2); - border-radius: 10px; - font-size: 10px; - margin-top: 24px; - margin-bottom: 24px; -} - -.mx_AppearanceUserSettingsTab_fontSlider_preview { - border: 1px solid #e3e8f0; - border-radius: 10px; - padding: 0 16px 9px; - pointer-events: none; - display: flow-root; -} - -.mx_AppearanceUserSettingsTab_fontSlider_preview - .mx_EventTile[data-layout="bubble"] { - margin-top: 30px; -} - -.mx_AppearanceUserSettingsTab_fontSlider_preview .mx_EventTile_msgOption { - display: none; -} - -.mx_AppearanceUserSettingsTab_fontSlider_preview.mx_IRCLayout { - padding-top: 9px; -} - -.mx_AppearanceUserSettingsTab_fontSlider_smallText { - font-size: 15px; - padding-right: 20px; - padding-left: 5px; - font-weight: 500; -} - -.mx_AppearanceUserSettingsTab_fontSlider_largeText { - font-size: 18px; - padding-left: 20px; - padding-right: 5px; - font-weight: 500; -} - -.mx_AppearanceUserSettingsTab > .mx_SettingsTab_SubHeading { - margin-bottom: 32px; -} - -.mx_AppearanceUserSettingsTab_themeSection { - color: #2e2f32; -} - -.mx_AppearanceUserSettingsTab_themeSection > .mx_ThemeSelectors { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin-top: 4px; - margin-bottom: 30px; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton { - padding: 1.6rem; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 10px; - width: 180px; - background: #e3e8f0; - opacity: 0.4; - -ms-flex-negative: 1; - flex-shrink: 1; - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - margin-right: 15px; - margin-top: 10px; - font-weight: 600; - color: #61708b; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton - > span { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled { - opacity: 1; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_light { - background-color: #f3f8fd; - color: #2e2f32; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_dark { - background-color: #25282e; - color: #f3f8fd; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_dark - > input - > div, -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_dark - > input - > div - > div { - border-color: #e3e8f0; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_black { - background-color: #000; - color: #f3f8fd; -} - -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_black - > input - > div, -.mx_AppearanceUserSettingsTab_themeSection - > .mx_ThemeSelectors - > .mx_RadioButton_enabled.mx_ThemeSelector_black - > input - > div - > div { - border-color: #e3e8f0; -} - -.mx_SettingsTab_customFontSizeField { - margin-left: calc(1.6rem + 10px); -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - grid-gap: 24px; - gap: 24px; - color: #2e2f32; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton { - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - -ms-flex-negative: 1; - flex-shrink: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 300px; - border: 1px solid #e3e8f0; - border-radius: 10px; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton - .mx_EventTile_msgOption, -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton - .mx_MessageActionBar { - display: none; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton - .mx_AppearanceUserSettingsTab_Layout_RadioButton_preview { - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 10px; - pointer-events: none; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton - .mx_RadioButton { - -webkit-box-flex: 0; - -ms-flex-positive: 0; - flex-grow: 0; - padding: 10px; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton - .mx_EventTile_content { - margin-right: 0; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - > .mx_AppearanceUserSettingsTab_Layout_RadioButton.mx_AppearanceUserSettingsTab_Layout_RadioButton_selected { - border-color: #0dbd8b; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton { - border-top: 1px solid #e3e8f0; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - .mx_RadioButton - > input - + div { - border-color: rgba(97, 112, 139, 0.2); -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_RadioButton_checked { - background-color: rgba(13, 189, 139, 0.08); -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons .mx_EventTile { - margin: 0; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - .mx_EventTile[data-layout="bubble"] { - margin-right: 40px; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - .mx_EventTile[data-layout="irc"] - > a { - display: none; -} - -.mx_AppearanceUserSettingsTab_Layout_RadioButtons - .mx_EventTile - .mx_EventTile_line { - max-width: 90%; -} - -.mx_AppearanceUserSettingsTab_Advanced { - color: #2e2f32; -} - -.mx_AppearanceUserSettingsTab_Advanced > * { - margin-bottom: 16px; -} - -.mx_AppearanceUserSettingsTab_Advanced - .mx_AppearanceUserSettingsTab_AdvancedToggle { - color: #0dbd8b; - cursor: pointer; -} - -.mx_AppearanceUserSettingsTab_Advanced - .mx_AppearanceUserSettingsTab_systemFont { - margin-left: calc(1.6rem + 10px); -} - -.mx_GeneralUserSettingsTab_changePassword .mx_Field { - margin-right: 100px; -} - -.mx_GeneralUserSettingsTab_changePassword .mx_Field:first-child { - margin-top: 0; -} - -.mx_GeneralUserSettingsTab_accountSection - .mx_SettingsTab_subheading:nth-child(n + 1), -.mx_GeneralUserSettingsTab_discovery - .mx_SettingsTab_subheading:nth-child(n + 2), -.mx_SetIdServer .mx_SettingsTab_subheading { - margin-top: 24px; -} - -.mx_GeneralUserSettingsTab_accountSection .mx_Spinner, -.mx_GeneralUserSettingsTab_discovery .mx_Spinner { - -webkit-box-pack: left; - -ms-flex-pack: left; - justify-content: left; -} - -.mx_GeneralUserSettingsTab_accountSection .mx_EmailAddresses, -.mx_GeneralUserSettingsTab_accountSection .mx_PhoneNumbers, -.mx_GeneralUserSettingsTab_discovery .mx_ExistingEmailAddress, -.mx_GeneralUserSettingsTab_discovery .mx_ExistingPhoneNumber, -.mx_GeneralUserSettingsTab_languageInput { - margin-right: 100px; -} - -.mx_GeneralUserSettingsTab_warningIcon { - vertical-align: middle; -} - -.mx_HelpUserSettingsTab_debugButton { - margin-bottom: 5px; - margin-top: 5px; -} - -.mx_HelpUserSettingsTab span.mx_AccessibleButton { - word-break: break-word; -} - -.mx_HelpUserSettingsTab code { - word-break: break-all; - -webkit-user-select: all; - -moz-user-select: all; - -ms-user-select: all; - user-select: all; -} - -.mx_HelpUserSettingsTab_accessToken { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - border-radius: 5px; - border: 1px solid #747474; - margin-bottom: 10px; - margin-top: 10px; - padding: 10px; -} - -.mx_HelpUserSettingsTab_accessToken_copy { - -ms-flex-negative: 0; - flex-shrink: 0; - cursor: pointer; - margin-left: 20px; - display: inherit; -} - -.mx_HelpUserSettingsTab_accessToken_copy > div { - -webkit-mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - mask-image: url(../../img/feather-customised/clipboard.24dd87a.svg); - background-color: #2e2f32; - margin-left: 5px; - width: 20px; - height: 20px; - background-repeat: no-repeat; -} - -.mx_LabsUserSettingsTab .mx_SettingsTab_section { - margin-top: 32px; -} - -.mx_LabsUserSettingsTab .mx_SettingsTab_section .mx_SettingsFlag { - margin-right: 0; -} - -.mx_MjolnirUserSettingsTab .mx_Field { - margin-right: 100px; -} - -.mx_MjolnirUserSettingsTab_listItem { - margin-bottom: 2px; -} - -.mx_NotificationUserSettingsTab .mx_SettingsTab_heading { - margin-bottom: 10px; -} - -.mx_PreferencesUserSettingsTab .mx_Field { - margin-right: 100px; -} - -.mx_PreferencesUserSettingsTab .mx_SettingsTab_section { - margin-bottom: 30px; -} - -.mx_SecurityUserSettingsTab .mx_DevicesPanel { - width: auto; - max-width: 880px; -} - -.mx_SecurityUserSettingsTab_deviceInfo { - display: table; - padding-left: 0; -} - -.mx_SecurityUserSettingsTab_deviceInfo > li { - display: table-row; -} - -.mx_SecurityUserSettingsTab_deviceInfo > li > label, -.mx_SecurityUserSettingsTab_deviceInfo > li > span { - display: table-cell; - padding-right: 1em; -} - -.mx_SecurityUserSettingsTab_bulkOptions .mx_AccessibleButton, -.mx_SecurityUserSettingsTab_importExportButtons .mx_AccessibleButton { - margin-right: 10px; -} - -.mx_SecurityUserSettingsTab_importExportButtons { - margin-bottom: 15px; -} - -.mx_SecurityUserSettingsTab_ignoredUser { - margin-bottom: 5px; -} - -.mx_SecurityUserSettingsTab_ignoredUser .mx_AccessibleButton { - margin-right: 10px; -} - -.mx_SecurityUserSettingsTab - .mx_SettingsTab_section - .mx_AccessibleButton_kind_link { - padding: 0; - font-size: inherit; -} - -.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning { - color: #ff4b55; - position: relative; - padding-left: 40px; - margin-top: 30px; -} - -.mx_SecurityUserSettingsTab .mx_SecurityUserSettingsTab_warning:before { - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: 0 center; - mask-position: 0 center; - -webkit-mask-size: 2.4rem; - mask-size: 2.4rem; - position: absolute; - width: 2.4rem; - height: 2.4rem; - content: ""; - top: 0; - left: 0; - background-color: #ff4b55; - -webkit-mask-image: url(../../img/feather-customised/alert-triangle.38aca3a.svg); - mask-image: url(../../img/feather-customised/alert-triangle.38aca3a.svg); -} - -.mx_VoiceUserSettingsTab .mx_Field { - margin-right: 100px; -} - -.mx_VoiceUserSettingsTab_missingMediaPermissions { - margin-bottom: 15px; -} - -.mx_SpaceBasicSettings .mx_Field { - margin: 24px 0; -} - -.mx_SpaceBasicSettings .mx_SpaceBasicSettings_avatarContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-top: 24px; -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - .mx_SpaceBasicSettings_avatar { - position: relative; - height: 80px; - width: 80px; - background-color: #8d99a5; - border-radius: 16px; -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - img.mx_SpaceBasicSettings_avatar { - width: 80px; - height: 80px; - -o-object-fit: cover; - object-fit: cover; - border-radius: 16px; -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - div.mx_SpaceBasicSettings_avatar { - cursor: pointer; -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - div.mx_SpaceBasicSettings_avatar:before { - content: ""; - position: absolute; - height: 80px; - width: 80px; - top: 0; - left: 0; - background-color: #fff; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-image: url(../../img/element-icons/camera.a81a395.svg); - mask-image: url(../../img/element-icons/camera.a81a395.svg); -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - > input[type="file"] { - display: none; -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - > .mx_AccessibleButton_kind_link { - display: inline-block; - padding: 0; - margin: auto 16px; - color: #368bd6; -} - -.mx_SpaceBasicSettings - .mx_SpaceBasicSettings_avatarContainer - > .mx_SpaceBasicSettings_avatar_remove { - color: #ff4b55; -} - -.mx_SpaceBasicSettings .mx_AccessibleButton_hasKind { - padding: 8px 22px; - margin-left: auto; - display: block; - width: -webkit-min-content; - width: -moz-min-content; - width: min-content; -} - -.mx_SpaceBasicSettings .mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu_background { - background-color: rgba(46, 48, 51, 0.38); - opacity: 0.6; - left: 71px; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu { - padding: 24px; - width: 480px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - background-color: #fff; - position: relative; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > h2 { - font-weight: 600; - font-size: 1.8rem; - margin-top: 4px; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu > div > p { - font-size: 1.5rem; - color: #737d8c; - margin: 0; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_BetaCard_betaPill { - position: absolute; - top: 24px; - right: 24px; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType { - position: relative; - padding: 16px 32px 16px 72px; - width: 432px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 8px; - border: 1px solid #e7e7e7; - font-size: 1.5rem; - margin: 20px 0; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > h3 { - font-weight: 600; - margin: 0 0 4px; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType > span { - color: #737d8c; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:before { - position: absolute; - content: ""; - width: 32px; - height: 32px; - top: 24px; - left: 20px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 24px; - mask-size: 24px; - background-color: #8d99a5; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenuType:hover { - border-color: #0dbd8b; -} - -.mx_SpaceCreateMenu_wrapper - .mx_ContextualMenu - .mx_SpaceCreateMenuType:hover:before { - background-color: #0dbd8b; -} - -.mx_SpaceCreateMenu_wrapper - .mx_ContextualMenu - .mx_SpaceCreateMenuType:hover - > span { - color: #2e2f32; -} - -.mx_SpaceCreateMenu_wrapper - .mx_ContextualMenu - .mx_SpaceCreateMenuType_public:before { - -webkit-mask-image: url(../../img/globe.8201f08.svg); - mask-image: url(../../img/globe.8201f08.svg); -} - -.mx_SpaceCreateMenu_wrapper - .mx_ContextualMenu - .mx_SpaceCreateMenuType_private:before { - -webkit-mask-image: url(../../img/element-icons/lock.1f264bd.svg); - mask-image: url(../../img/element-icons/lock.1f264bd.svg); -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back { - width: 28px; - height: 28px; - position: relative; - background-color: rgba(141, 151, 165, 0.2); - border-radius: 14px; - margin-bottom: 12px; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_SpaceCreateMenu_back:before { - content: ""; - position: absolute; - height: 28px; - width: 28px; - top: 0; - left: 0; - background-color: #8d99a5; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: 2px 3px; - mask-position: 2px 3px; - -webkit-mask-size: 24px; - mask-size: 24px; - -webkit-mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); - mask-image: url(../../img/feather-customised/chevron-down.5278abe.svg); -} - -.mx_SpaceCreateMenu_wrapper - .mx_ContextualMenu - .mx_AccessibleButton_kind_primary { - padding: 8px 22px; - margin-left: auto; - display: block; - width: -webkit-min-content; - width: -moz-min-content; - width: min-content; -} - -.mx_SpaceCreateMenu_wrapper .mx_ContextualMenu .mx_AccessibleButton_disabled { - cursor: not-allowed; -} - -.mx_SpacePublicShare .mx_AccessibleButton { - position: relative; - padding: 16px 32px 16px 72px; - width: 432px; - -webkit-box-sizing: border-box; - box-sizing: border-box; - border-radius: 8px; - border: 1px solid #e7e7e7; - font-size: 1.5rem; - margin: 20px 0; -} - -.mx_SpacePublicShare .mx_AccessibleButton > h3 { - font-weight: 600; - margin: 0 0 4px; -} - -.mx_SpacePublicShare .mx_AccessibleButton > span { - color: #737d8c; -} - -.mx_SpacePublicShare .mx_AccessibleButton:before { - position: absolute; - content: ""; - width: 32px; - height: 32px; - top: 24px; - left: 20px; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 24px; - mask-size: 24px; - background-color: #8d99a5; -} - -.mx_SpacePublicShare .mx_AccessibleButton:hover { - border-color: #0dbd8b; -} - -.mx_SpacePublicShare .mx_AccessibleButton:hover:before { - background-color: #0dbd8b; -} - -.mx_SpacePublicShare .mx_AccessibleButton:hover > span { - color: #2e2f32; -} - -.mx_SpacePublicShare - .mx_AccessibleButton.mx_SpacePublicShare_shareButton:before { - -webkit-mask-image: url(../../img/element-icons/link.8f4b1fc.svg); - mask-image: url(../../img/element-icons/link.8f4b1fc.svg); -} - -.mx_SpacePublicShare - .mx_AccessibleButton.mx_SpacePublicShare_inviteButton:before { - -webkit-mask-image: url(../../img/element-icons/room/invite.946a71b.svg); - mask-image: url(../../img/element-icons/room/invite.946a71b.svg); -} - -.mx_InlineTermsAgreement_cbContainer { - margin-bottom: 10px; - font-size: 1.4rem; -} - -.mx_InlineTermsAgreement_cbContainer a { - color: #0dbd8b; - text-decoration: none; -} - -.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox { - margin-top: 10px; -} - -.mx_InlineTermsAgreement_cbContainer .mx_InlineTermsAgreement_checkbox input { - vertical-align: text-bottom; -} - -.mx_InlineTermsAgreement_link { - display: inline-block; - -webkit-mask-image: url(../../img/external-link.a8d3e9b.svg); - mask-image: url(../../img/external-link.a8d3e9b.svg); - background-color: #0dbd8b; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - width: 12px; - height: 12px; - margin-left: 3px; - vertical-align: middle; -} - -.mx_AnalyticsToast .mx_AccessibleButton_kind_danger { - background: none; - color: #0dbd8b; -} - -.mx_AnalyticsToast .mx_AccessibleButton_kind_primary { - background: #0dbd8b; - color: #fff; -} - -.mx_NonUrgentEchoFailureToast .mx_NonUrgentEchoFailureToast_icon { - display: inline-block; - width: 1.8rem; - height: 1.8rem; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - background-color: #fff; - -webkit-mask-image: url(../../img/element-icons/cloud-off.33cd28e.svg); - mask-image: url(../../img/element-icons/cloud-off.33cd28e.svg); - margin-right: 8px; -} - -.mx_NonUrgentEchoFailureToast span { - vertical-align: middle; -} - -.mx_NonUrgentEchoFailureToast .mx_AccessibleButton { - padding: 0; -} - -.mx_VerificationShowSas_decimalSas { - text-align: center; - font-weight: 700; - padding-left: 3px; - padding-right: 3px; -} - -.mx_VerificationShowSas_decimalSas span { - margin-left: 5px; - margin-right: 5px; -} - -.mx_VerificationShowSas_emojiSas { - text-align: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - margin: 25px 0; -} - -.mx_VerificationShowSas_emojiSas_block { - display: inline-block; - margin-bottom: 16px; - position: relative; - width: 52px; -} - -.mx_AuthPage_modal .mx_VerificationShowSas_emojiSas_block, -.mx_Dialog .mx_VerificationShowSas_emojiSas_block { - width: 60px; -} - -.mx_VerificationShowSas_emojiSas_emoji { - font-size: 3.2rem; -} - -.mx_VerificationShowSas_emojiSas_label { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - font-size: 1.2rem; -} - -.mx_VerificationShowSas_emojiSas_break { - -ms-flex-preferred-size: 100%; - flex-basis: 100%; -} - -.mx_VerificationShowSas - .mx_Dialog_buttons - button.mx_VerificationShowSas_matchButton { - color: #0dbd8b; - background-color: rgba(3, 179, 129, 0.16); - border: none; -} - -.mx_VerificationShowSas - .mx_Dialog_buttons - button.mx_VerificationShowSas_noMatchButton { - color: #ff4b55; - background-color: rgba(255, 75, 85, 0.16); - border: none; -} - -.mx_CallContainer { - position: absolute; - right: 20px; - bottom: 72px; - z-index: 100; - pointer-events: none; -} - -.mx_CallContainer .mx_CallPreview { - pointer-events: auto; - cursor: pointer; -} - -.mx_CallContainer .mx_CallPreview .mx_VideoFeed_remote.mx_VideoFeed_voice { - min-height: 150px; -} - -.mx_CallContainer .mx_CallPreview .mx_VideoFeed_local { - border-radius: 8px; - overflow: hidden; -} - -.mx_CallContainer .mx_AppTile_persistedWrapper div { - min-width: 350px; -} - -.mx_CallContainer .mx_IncomingCallBox { - min-width: 250px; - background-color: #f4f6fa; - padding: 8px; - -webkit-box-shadow: 0 14px 24px rgba(0, 0, 0, 0.08); - box-shadow: 0 14px 24px rgba(0, 0, 0, 0.08); - border-radius: 8px; - pointer-events: auto; - cursor: pointer; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - direction: row; -} - -.mx_CallContainer - .mx_IncomingCallBox - .mx_IncomingCallBox_CallerInfo - .mx_BaseAvatar_initial, -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo img { - margin: 8px; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo > div { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1, -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo p { - margin: 0; - padding: 0; - font-size: 1.4rem; - line-height: 1.6rem; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_CallerInfo h1 { - font-weight: 700; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons { - padding: 8px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; -} - -.mx_CallContainer - .mx_IncomingCallBox - .mx_IncomingCallBox_buttons - > .mx_IncomingCallBox_spacer { - width: 8px; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_buttons > * { - -ms-flex-negative: 0; - flex-shrink: 0; - -webkit-box-flex: 1; - -ms-flex-positive: 1; - flex-grow: 1; - margin-right: 0; - font-size: 1.5rem; - line-height: 2.4rem; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_iconButton { - position: absolute; - right: 8px; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_iconButton:before { - content: ""; - height: 20px; - width: 20px; - background-color: #c1c6cd; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_silence:before { - -webkit-mask-image: url(../../img/voip/silence.08cd2d6.svg); - mask-image: url(../../img/voip/silence.08cd2d6.svg); -} - -.mx_CallContainer .mx_IncomingCallBox .mx_IncomingCallBox_unSilence:before { - -webkit-mask-image: url(../../img/voip/un-silence.cebdd12.svg); - mask-image: url(../../img/voip/un-silence.cebdd12.svg); -} - -.mx_CallPreview { - position: fixed; - left: 0; - top: 0; -} - -.mx_CallView { - border-radius: 8px; - background-color: #f2f5f8; - padding-left: 8px; - padding-right: 8px; - pointer-events: auto; -} - -.mx_CallView_large { - padding-bottom: 10px; - margin: 5px 5px 5px 18px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} - -.mx_CallView_large, -.mx_CallView_large .mx_CallView_voice { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; -} - -.mx_CallView_pip { - width: 320px; - padding-bottom: 8px; - background-color: #f4f6fa; - -webkit-box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2); - border-radius: 8px; -} - -.mx_CallView_pip .mx_CallView_voice { - height: 180px; -} - -.mx_CallView_pip .mx_CallView_callControls { - bottom: 0; -} - -.mx_CallView_pip .mx_CallView_callControls_button:before { - width: 36px; - height: 36px; -} - -.mx_CallView_pip .mx_CallView_holdTransferContent { - padding-top: 10px; - padding-bottom: 25px; -} - -.mx_CallView_content { - position: relative; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - border-radius: 8px; -} - -.mx_CallView_voice { - -webkit-box-orient: vertical; - -ms-flex-direction: column; - flex-direction: column; - background-color: #27303a; -} - -.mx_CallView_voice, -.mx_CallView_voice_avatarsContainer { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-direction: normal; -} - -.mx_CallView_voice_avatarsContainer { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -ms-flex-direction: row; - flex-direction: row; -} - -.mx_CallView_voice_avatarsContainer div { - margin-left: 12px; - margin-right: 12px; -} - -.mx_CallView_voice - .mx_CallView_holdTransferContent - .mx_CallView_voice_avatarContainer { - border-radius: 2000px; - overflow: hidden; - position: relative; -} - -.mx_CallView_holdTransferContent { - height: 20px; - padding-top: 20px; - padding-bottom: 15px; - color: #fff; -} - -.mx_CallView_holdTransferContent .mx_AccessibleButton_hasKind { - padding: 0; - font-weight: 700; -} - -.mx_CallView_video { - width: 100%; - height: 100%; - z-index: 30; - overflow: hidden; -} - -.mx_CallView_video_hold { - overflow: hidden; -} - -.mx_CallView_video_hold .mx_VideoFeed { - visibility: hidden; -} - -.mx_CallView_video_holdBackground { - position: absolute; - width: 100%; - height: 100%; - left: 0; - right: 0; - background-repeat: no-repeat; - background-size: cover; - background-position: 50%; - -webkit-filter: blur(20px); - filter: blur(20px); -} - -.mx_CallView_video_holdBackground:after { - content: ""; - display: block; - position: absolute; - width: 100%; - height: 100%; - left: 0; - right: 0; - background-color: rgba(0, 0, 0, 0.6); -} - -.mx_CallView_video .mx_CallView_holdTransferContent { - position: absolute; - top: 50%; - left: 50%; - -webkit-transform: translate(-50%, -50%); - transform: translate(-50%, -50%); - font-weight: 700; - color: #fff; - text-align: center; -} - -.mx_CallView_video .mx_CallView_holdTransferContent:before { - display: block; - margin-left: auto; - margin-right: auto; - content: ""; - width: 40px; - height: 40px; - background-image: url(../../img/voip/paused.77799b3.svg); - background-position: 50%; - background-size: cover; -} - -.mx_CallView_pip .mx_CallView_video .mx_CallView_holdTransferContent:before { - width: 30px; - height: 30px; -} - -.mx_CallView_video - .mx_CallView_holdTransferContent - .mx_AccessibleButton_hasKind { - padding: 0; -} - -.mx_CallView_header { - height: 44px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: left; - -ms-flex-pack: left; - justify-content: left; - -ms-flex-negative: 0; - flex-shrink: 0; -} - -.mx_CallView_header_callType { - font-size: 1.2rem; - font-weight: 700; - vertical-align: middle; -} - -.mx_CallView_header_secondaryCallInfo:before { - content: "·"; - margin-left: 6px; - margin-right: 6px; -} - -.mx_CallView_header_controls { - margin-left: auto; -} - -.mx_CallView_header_button { - display: inline-block; - vertical-align: middle; - cursor: pointer; -} - -.mx_CallView_header_button:before { - content: ""; - display: inline-block; - height: 20px; - width: 20px; - vertical-align: middle; - background-color: #737d8c; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; -} - -.mx_CallView_header_button_fullscreen:before { - -webkit-mask-image: url(../../img/element-icons/call/fullscreen.43be138.svg); - mask-image: url(../../img/element-icons/call/fullscreen.43be138.svg); -} - -.mx_CallView_header_button_expand:before { - -webkit-mask-image: url(../../img/element-icons/call/expand.7ef9f56.svg); - mask-image: url(../../img/element-icons/call/expand.7ef9f56.svg); -} - -.mx_CallView_header_callInfo { - margin-left: 12px; - margin-right: 16px; -} - -.mx_CallView_header_roomName { - font-weight: 700; - font-size: 12px; - line-height: normal; - height: 15px; -} - -.mx_CallView_secondaryCall_roomName { - margin-left: 4px; -} - -.mx_CallView_header_callTypeSmall { - font-size: 12px; - color: #737d8c; - line-height: normal; - height: 15px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - max-width: 240px; -} - -.mx_CallView_header_phoneIcon { - display: inline-block; - margin-right: 6px; - height: 16px; - width: 16px; - vertical-align: middle; -} - -.mx_CallView_header_phoneIcon:before { - content: ""; - display: inline-block; - vertical-align: top; - height: 16px; - width: 16px; - background-color: #ff4b55; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: contain; - mask-size: contain; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); - mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); -} - -.mx_CallView_callControls { - position: absolute; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - bottom: 5px; - width: 100%; - opacity: 1; - -webkit-transition: opacity 0.5s; - transition: opacity 0.5s; -} - -.mx_CallView_callControls_hidden { - opacity: 0.001; - pointer-events: none; -} - -.mx_CallView_callControls_button { - cursor: pointer; - margin-left: 8px; - margin-right: 8px; -} - -.mx_CallView_callControls_button:before { - content: ""; - display: inline-block; - height: 48px; - width: 48px; - background-repeat: no-repeat; - background-size: contain; - background-position: 50%; -} - -.mx_CallView_callControls_dialpad { - margin-right: auto; -} - -.mx_CallView_callControls_dialpad:before { - background-image: url(../../img/voip/dialpad.fdda9a0.svg); -} - -.mx_CallView_callControls_button_dialpad_hidden { - margin-right: auto; - cursor: auto; -} - -.mx_CallView_callControls_button_micOn:before { - background-image: url(../../img/voip/mic-on.2592c14.svg); -} - -.mx_CallView_callControls_button_micOff:before { - background-image: url(../../img/voip/mic-off.774e42b.svg); -} - -.mx_CallView_callControls_button_vidOn:before { - background-image: url(../../img/voip/vid-on.b9b8bbf.svg); -} - -.mx_CallView_callControls_button_vidOff:before { - background-image: url(../../img/voip/vid-off.5552596.svg); -} - -.mx_CallView_callControls_button_hangup:before { - background-image: url(../../img/voip/hangup.9c3adeb.svg); -} - -.mx_CallView_callControls_button_more { - margin-left: auto; -} - -.mx_CallView_callControls_button_more:before { - background-image: url(../../img/voip/more.5e8055e.svg); -} - -.mx_CallView_callControls_button_more_hidden { - margin-left: auto; - cursor: auto; -} - -.mx_CallView_callControls_button_invisible { - visibility: hidden; - pointer-events: none; - position: absolute; -} - -.mx_CallViewForRoom { - overflow: hidden; -} - -.mx_CallViewForRoom .mx_CallViewForRoom_ResizeWrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 8px; -} - -.mx_CallViewForRoom - .mx_CallViewForRoom_ResizeWrapper:hover - .mx_CallViewForRoom_ResizeHandle { - width: 100% !important; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} - -.mx_CallViewForRoom - .mx_CallViewForRoom_ResizeWrapper:hover - .mx_CallViewForRoom_ResizeHandle:after { - content: ""; - margin-top: 3px; - border-radius: 4px; - height: 4px; - width: 100%; - max-width: 64px; - background-color: #2e2f32; -} - -.mx_DialPad { - display: grid; - grid-row-gap: 16px; - row-gap: 16px; - grid-column-gap: 0; - -webkit-column-gap: 0; - -moz-column-gap: 0; - column-gap: 0; - margin-top: 24px; - grid-template-columns: repeat(3, 1fr); -} - -.mx_DialPad, -.mx_DialPad_button { - margin-left: auto; - margin-right: auto; -} - -.mx_DialPad_button { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - width: 40px; - height: 40px; - background-color: #e3e8f0; - border-radius: 40px; - font-size: 18px; - font-weight: 600; - text-align: center; - vertical-align: middle; -} - -.mx_DialPad_button .mx_DialPad_buttonSubText { - font-size: 8px; -} - -.mx_DialPad_dialButton { - grid-column: 2; - background-color: #0dbd8b; -} - -.mx_DialPad_dialButton:before { - content: ""; - display: inline-block; - height: 40px; - width: 40px; - vertical-align: middle; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-size: 20px; - mask-size: 20px; - -webkit-mask-position: center; - mask-position: center; - background-color: #fff; - -webkit-mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); - mask-image: url(../../img/element-icons/call/voice-call.303eba8.svg); -} - -.mx_DialPadContextMenu_dialPad .mx_DialPad { - grid-row-gap: 16px; - row-gap: 16px; - grid-column-gap: 32px; - -webkit-column-gap: 32px; - -moz-column-gap: 32px; - column-gap: 32px; -} - -.mx_DialPadContextMenuWrapper { - padding: 15px; -} - -.mx_DialPadContextMenu_header { - margin-top: 32px; - margin-left: 20px; - margin-right: 20px; - border: none; - border-bottom: 1px solid #c1c6cd; - -webkit-transition: border-bottom 0.25s; - transition: border-bottom 0.25s; -} - -.mx_DialPadContextMenu_cancel { - float: right; - -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); - mask: url(../../img/feather-customised/cancel.23c2689.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - width: 14px; - height: 14px; - background-color: #c1c1c1; - cursor: pointer; -} - -.mx_DialPadContextMenu_header:focus-within { - border-bottom: 1px solid #0dbd8b; -} - -.mx_DialPadContextMenu_title { - color: #61708b; - font-size: 12px; - font-weight: 600; -} - -.mx_DialPadContextMenu_dialled { - height: 1.5em; - font-size: 18px; - font-weight: 600; - border: none; - margin: 0; -} - -.mx_DialPadContextMenu_dialled input { - font-size: 18px; - font-weight: 600; - overflow: hidden; - max-width: 185px; - text-align: left; - direction: rtl; - padding: 8px 0; - background-color: transparent; -} - -.mx_DialPadContextMenu_dialPad { - margin: 16px; -} - -.mx_Dialog_dialPadWrapper .mx_Dialog { - padding: 0; -} - -.mx_DialPadModal { - width: 292px; - height: 370px; - padding: 16px 0 0; -} - -.mx_DialPadModal_header { - margin-top: 32px; - margin-left: 40px; - margin-right: 40px; - border-bottom: 1px solid #c1c6cd; - -webkit-transition: border-bottom 0.25s; - transition: border-bottom 0.25s; -} - -.mx_DialPadModal_header:focus-within { - border-bottom: 1px solid #0dbd8b; -} - -.mx_DialPadModal_title { - color: #61708b; - font-size: 12px; - font-weight: 600; -} - -.mx_DialPadModal_cancel { - float: right; - -webkit-mask: url(../../img/feather-customised/cancel.23c2689.svg); - mask: url(../../img/feather-customised/cancel.23c2689.svg); - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: cover; - mask-size: cover; - width: 14px; - height: 14px; - background-color: #c1c1c1; - cursor: pointer; - margin-right: 16px; -} - -.mx_DialPadModal_field { - border: none; - margin: 0; - height: 30px; -} - -.mx_DialPadModal_field .mx_Field_postfix { - border-left: none; -} - -.mx_DialPadModal_field input { - font-size: 18px; - font-weight: 600; -} - -.mx_DialPadModal_dialPad { - margin-left: 16px; - margin-right: 16px; - margin-top: 16px; -} - -.mx_VideoFeed_voice { - background-color: #27303a; -} - -.mx_VideoFeed_remote { - width: 100%; - height: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.mx_VideoFeed_remote.mx_VideoFeed_video { - background-color: #000; -} - -.mx_VideoFeed_local { - max-width: 25%; - max-height: 25%; - position: absolute; - right: 10px; - top: 10px; - z-index: 100; - border-radius: 4px; -} - -.mx_VideoFeed_local.mx_VideoFeed_video { - background-color: transparent; -} - -.mx_VideoFeed_mirror { - -webkit-transform: scaleX(-1); - transform: scaleX(-1); -} - -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - color: #383a42; - background: #fafafa; -} - -.hljs-comment, -.hljs-quote { - color: #a0a1a7; - font-style: italic; -} - -.hljs-doctag, -.hljs-formula, -.hljs-keyword { - color: #a626a4; -} - -.hljs-deletion, -.hljs-name, -.hljs-section, -.hljs-selector-tag, -.hljs-subst { - color: #e45649; -} - -.hljs-literal { - color: #0184bb; -} - -.hljs-addition, -.hljs-attribute, -.hljs-meta-string, -.hljs-regexp, -.hljs-string { - color: #50a14f; -} - -.hljs-built_in, -.hljs-class .hljs-title { - color: #c18401; -} - -.hljs-attr, -.hljs-number, -.hljs-selector-attr, -.hljs-selector-class, -.hljs-selector-pseudo, -.hljs-template-variable, -.hljs-type, -.hljs-variable { - color: #986801; -} - -.hljs-bullet, -.hljs-link, -.hljs-meta, -.hljs-selector-id, -.hljs-symbol, -.hljs-title { - color: #4078f2; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: 700; -} - -.hljs-link { - text-decoration: underline; -} `; -const customCSS = ` -#snackbar { - display: flex; - visibility: hidden; - min-width: 250px; - margin-left: -125px; - background-color: #333; - color: #fff; - text-align: center; - position: fixed; - z-index: 1; - left: 50%; - bottom: 30px; - font-size: 17px; - padding: 6px 16px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; - font-weight: 400; - line-height: 1.43; - border-radius: 4px; - letter-spacing: 0.01071em; -} + return themeCSS + bundleCSS + customCSS; +}; -#snackbar.mx_show { - visibility: visible; - -webkit-animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; - animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; -} - -a.mx_reply_anchor{ - cursor: pointer; - color: #238cf5; -} - -a.mx_reply_anchor:hover{ - text-decoration: underline; -} - -@-webkit-keyframes mx_snackbar_fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 30px; opacity: 1;} -} - -@keyframes mx_snackbar_fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 30px; opacity: 1;} -} - -@-webkit-keyframes mx_snackbar_fadeout { - from {bottom: 30px; opacity: 1;} - to {bottom: 0; opacity: 0;} -} - -@keyframes mx_snackbar_fadeout { - from {bottom: 30px; opacity: 1;} - to {bottom: 0; opacity: 0;} -} - -.mx_MFileBody_info .mx_MFileBody_info_icon img.mx_export_attach_icon { - content: ''; - background-color: #ffffff; - width: 13px; - height: 15px; - position: absolute; - top: 8px; - left: 9px; -} - -* { - scroll-behavior: smooth !important; -} - - -.mx_Export_EventWrapper:target { - background: white; - animation: mx_event_highlight_animation 2s linear; -} - - -@keyframes mx_event_highlight_animation { - 0%,100% { - background: white; - } - 50% { - background: #e3e2df; - } -} - -.mx_ReplyThread_Export { - margin-top: -5px; - margin-bottom: 5px; -} - -.mx_RedactedBody img.mx_export_trash_icon { - height: 14px; - width: 14px; - background-color: #ffffff; - content: ''; - position: absolute; - top: 1px; - left: 0; -} - -img { - white-space: nowrap; - overflow: hidden; -} -`; - -const markdownCSS = `.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}`; - -export default lightCSS + markdownCSS + customCSS; +export default getExportCSS; From c74d6c6fff8f8f8ed9404e3343b7fac9378cf248 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 4 Aug 2021 12:39:35 +0530 Subject: [PATCH 150/176] Assign replacements --- src/utils/exportUtils/HtmlExport.tsx | 8 ++++++-- src/utils/exportUtils/exportCSS.ts | 8 +++++--- test/utils/export-test.tsx | 30 ++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 54e21fdf14..124914a210 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -36,6 +36,7 @@ import { ExportTypes } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; import getExportCSS from "./exportCSS"; +import { textForEvent } from "../../TextForEvent"; export default class HTMLExporter extends Exporter { protected avatars: Map<string, boolean>; @@ -346,13 +347,16 @@ export default class HTMLExporter extends Exporter { ); } } else { - eventTile = await this.getEventTileMarkup(this.createModifiedEvent(this.mediaOmitText, mxEv), joined); + eventTile = await this.getEventTileMarkup( + this.createModifiedEvent(this.mediaOmitText, mxEv), + joined, + ); } } else eventTile = await this.getEventTileMarkup(mxEv, joined); } catch (e) { // TODO: Handle callEvent errors console.error(e); - eventTile = await this.getEventTileMarkup(this.createModifiedEvent("Error parsing HTML", mxEv), joined); + eventTile = await this.getEventTileMarkup(this.createModifiedEvent(textForEvent(mxEv), mxEv), joined); } return eventTile; diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 7079967d93..8ae92b17ee 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -20,6 +20,7 @@ import ThemeWatcher from "../../settings/watchers/ThemeWatcher"; const getExportCSS = async (): Promise<string> => { const theme = new ThemeWatcher().getEffectiveTheme(); + // eslint-disable-next-line camelcase const hash = __webpack_hash__; const bundle = await fetch(`bundles/${hash}/bundle.css`); const bundleCSS = await bundle.text(); @@ -32,13 +33,14 @@ const getExportCSS = async (): Promise<string> => { themeCSS = await res.text(); } const fontFaceRegex = /@font-face {.*?}/sg; - themeCSS.replace(fontFaceRegex, ''); - themeCSS.replace( + + themeCSS = themeCSS.replace(fontFaceRegex, ''); + themeCSS = themeCSS.replace( /font-family: Inter/g, `font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif`, ); - themeCSS.replace( + themeCSS = themeCSS.replace( /font-family: Inconsolata/g, "font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace", ); diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index 279ebcff59..25bf17d0ea 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -37,6 +37,12 @@ describe('export', function() { return MY_USER_ID; }; + const mockExportOptions: IExportOptions = { + numberOfMessages: 5, + maxSize: 100 * 1024 * 1024, + attachmentsIncluded: false, + }; + const invalidExportOptions: IExportOptions[] = [ { numberOfMessages: 10**9, @@ -97,5 +103,29 @@ describe('export', function() { } } }); + + it('tests the file extension splitter', function() { + const exporter = new PlainTextExporter(room, ExportTypes.BEGINNING, mockExportOptions, null); + const fileNameWithExtensions = { + "": ["", ""], + "name": ["name", ""], + "name.txt": ["name", ".txt"], + ".htpasswd": ["", ".htpasswd"], + "name.with.many.dots.myext": ["name.with.many.dots", ".myext"], + }; + for (const fileName in fileNameWithExtensions) { + expect(exporter.splitFileName(fileName)).toStrictEqual(fileNameWithExtensions[fileName]); + } + }); + + // it('checks if the reply regex executes correctly', function() { + // const eventContents = [ + // { + // "msgtype": "m.text", + // "body": "> <@me:here> Testing....\n\nTest", + // "expectedText": "", + // }, + // ]; + // }); }); From f00ab0460bde2e156d82c81c4484bba98228b0f3 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 4 Aug 2021 13:06:07 +0530 Subject: [PATCH 151/176] Delint --- src/utils/exportUtils/exportCSS.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 8ae92b17ee..1a3a575f07 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -14,14 +14,16 @@ See the License for the specific language governing permissions and limitations under the License. */ -/* global __webpack_hash__ */ +/* eslint-disable max-len, camelcase */ + +declare const __webpack_hash__: string; import ThemeWatcher from "../../settings/watchers/ThemeWatcher"; const getExportCSS = async (): Promise<string> => { const theme = new ThemeWatcher().getEffectiveTheme(); - // eslint-disable-next-line camelcase const hash = __webpack_hash__; + const bundle = await fetch(`bundles/${hash}/bundle.css`); const bundleCSS = await bundle.text(); let themeCSS: string; From 850b5452a0ff62905b8387e0b650cfb68b93649e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 9 Aug 2021 12:36:06 +0530 Subject: [PATCH 152/176] Add tests for reply regex --- package.json | 2 +- src/utils/exportUtils/Exporter.ts | 3 +- src/utils/exportUtils/PlainTextExport.ts | 11 +++--- test/utils/export-test.tsx | 50 ++++++++++++++++++------ 4 files changed, 45 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 32f0db29f2..8f927c7bca 100644 --- a/package.json +++ b/package.json @@ -199,7 +199,7 @@ "decoderWorker\\.min\\.wasm": "<rootDir>/__mocks__/empty.js", "waveWorker\\.min\\.js": "<rootDir>/__mocks__/empty.js", "workers/(.+)\\.worker\\.ts": "<rootDir>/__mocks__/workerMock.js", - "^!!raw-loader!.*": "jest-raw-loader" + "^!!raw-loader!.*": "jest-raw-loader", "RecorderWorklet": "<rootDir>/__mocks__/empty.js" }, "transformIgnorePatterns": [ diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index f975e76ddd..92f2c3e3d2 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -98,7 +98,8 @@ export default abstract class Exporter { } protected downloadPlainText(fileName: string, text: string) { - saveAs(new Blob[text], fileName); + const content = new Blob([text], { type: "text" }); + saveAs(content, fileName); } protected setEventMetadata(event: MatrixEvent): MatrixEvent { diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 7ab4748848..7421118470 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -16,7 +16,7 @@ limitations under the License. import Exporter from "./Exporter"; import { Room } from "matrix-js-sdk/src/models/room"; -import { MatrixEvent } from "matrix-js-sdk/src/models/event"; +import { IContent, MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; @@ -42,10 +42,9 @@ export default class PlainTextExporter extends Exporter { : _t("Media omitted - file size limit exceeded"); } - public textForReplyEvent = (ev: MatrixEvent) => { - const REPLY_REGEX = /> <(.*?)>(.*?)\n\n(.*)/; + public textForReplyEvent = (content: IContent) => { + const REPLY_REGEX = /> <(.*?)>(.*?)\n\n(.*)/s; const REPLY_SOURCE_MAX_LENGTH = 32; - const content = ev.getContent(); const match = REPLY_REGEX.exec(content.body); @@ -55,7 +54,7 @@ export default class PlainTextExporter extends Exporter { const rplName = match[1]; const rplText = match[3]; - rplSource = match[2].substring(1, REPLY_SOURCE_MAX_LENGTH); + rplSource = match[2].substring(1); // Get the first non-blank line from the source. const lines = rplSource.split('\n').filter((line) => !/^\s*$/.test(line)); if (lines.length > 0) { @@ -99,7 +98,7 @@ export default class PlainTextExporter extends Exporter { } } else mediaText = ` (${this.mediaOmitText})`; } - if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv) + mediaText; + if (this.isReply(mxEv)) return senderDisplayName + ": " + this.textForReplyEvent(mxEv.getContent()) + mediaText; else return textForEvent(mxEv) + mediaText; }; diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index 25bf17d0ea..141fbe1280 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { MatrixClient, Room } from "matrix-js-sdk"; +import { IContent, MatrixClient, Room } from "matrix-js-sdk"; import { MatrixClientPeg } from "../../src/MatrixClientPeg"; import { textForFormat, IExportOptions, ExportTypes } from "../../src/utils/exportUtils/exportUtils"; import '../skinned-sdk'; @@ -30,6 +30,10 @@ function generateRoomId() { return '!' + Math.random().toString().slice(2, 10) + ':domain'; } +interface ITestContent extends IContent { + expectedText: string; +} + describe('export', function() { stubClient(); client = MatrixClientPeg.get(); @@ -63,7 +67,7 @@ describe('export', function() { const events = mkEvents(); const room = createRoom(); - console.log(events, room); + console.log(events); function createRoom() { const room = new Room(generateRoomId(), null, client.getUserId()); return room; @@ -74,8 +78,8 @@ describe('export', function() { const ts0 = Date.now(); for (let i = 0; i < 10; i++) { events.push(TestUtilsMatrix.mkMessage({ - event: true, room: "!room:id", user: "@user:id", - ts: ts0 + i * 1000, + event: true, room: "!room:id", user: "@user:id", + ts: ts0 + i * 1000, })); } return events; @@ -118,14 +122,34 @@ describe('export', function() { } }); - // it('checks if the reply regex executes correctly', function() { - // const eventContents = [ - // { - // "msgtype": "m.text", - // "body": "> <@me:here> Testing....\n\nTest", - // "expectedText": "", - // }, - // ]; - // }); + it('checks if the reply regex executes correctly', function() { + const eventContents: ITestContent[] = [ + { + "msgtype": "m.text", + "body": "> <@me:here> Source\n\nReply", + "expectedText": "<@me:here \"Source\"> Reply", + }, + { + "msgtype": "m.text", + // if the reply format is invalid, then return the original string as it is + "body": "Invalid reply format", + "expectedText": "Invalid reply format", + }, + { + "msgtype": "m.text", + "body": "> <@me:here> The source is more than 32 characters\n\nReply", + "expectedText": "<@me:here \"The source is more than 32 chara...\"> Reply", + }, + { + "msgtype": "m.text", + "body": "> <@me:here> This\nsource\nhas\nnew\nlines\n\nReply", + "expectedText": "<@me:here \"This\"> Reply", + }, + ]; + const exporter = new PlainTextExporter(room, ExportTypes.BEGINNING, mockExportOptions, null); + for (const content of eventContents) { + expect(exporter.textForReplyEvent(content)).toBe(content.expectedText); + } + }); }); From b3c03c9b68f0776f06c86c2a3614bfd09d8a35f5 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 9 Aug 2021 12:41:41 +0530 Subject: [PATCH 153/176] Fix lint errors --- src/components/views/messages/MFileBody.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/views/messages/MFileBody.tsx b/src/components/views/messages/MFileBody.tsx index 4fecaf0a5c..9c4a09e695 100644 --- a/src/components/views/messages/MFileBody.tsx +++ b/src/components/views/messages/MFileBody.tsx @@ -277,13 +277,13 @@ export default class MFileBody extends React.Component<IProps, IState> { ); } else if (contentUrl) { const downloadProps = { - target: "_blank", - rel: "noreferrer noopener", + target: "_blank", + rel: "noreferrer noopener", - // We set the href regardless of whether or not we intercept the download - // because we don't really want to convert the file to a blob eagerly, and - // still want "open in new tab" and "save link as" to work. - href: contentUrl, + // We set the href regardless of whether or not we intercept the download + // because we don't really want to convert the file to a blob eagerly, and + // still want "open in new tab" and "save link as" to work. + href: contentUrl, }; // Blobs can only have up to 500mb, so if the file reports as being too large then From 900accd823f3ea01db2d7595ec553add0e218609 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Mon, 9 Aug 2021 13:24:54 +0530 Subject: [PATCH 154/176] Add test for renderToString --- src/utils/exportUtils/PlainTextExport.ts | 1 + test/utils/export-test.tsx | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 7421118470..86f714140e 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -48,6 +48,7 @@ export default class PlainTextExporter extends Exporter { const match = REPLY_REGEX.exec(content.body); + // if the reply format is invalid, then return the body if (!match) return content.body; let rplSource: string; diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index 141fbe1280..1b8fc9c31b 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -14,13 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { IContent, MatrixClient, Room } from "matrix-js-sdk"; +import { IContent, MatrixClient, MatrixEvent, Room } from "matrix-js-sdk"; import { MatrixClientPeg } from "../../src/MatrixClientPeg"; import { textForFormat, IExportOptions, ExportTypes } from "../../src/utils/exportUtils/exportUtils"; import '../skinned-sdk'; import PlainTextExporter from "../../src/utils/exportUtils/PlainTextExport"; +import HTMLExporter from "../../src/utils/exportUtils/HtmlExport"; import * as TestUtilsMatrix from '../test-utils'; import { stubClient } from '../test-utils'; +import { renderToString } from "react-dom/server"; let client: MatrixClient; @@ -65,9 +67,8 @@ describe('export', function() { }, ]; - const events = mkEvents(); + const events: MatrixEvent[] = mkEvents(); const room = createRoom(); - console.log(events); function createRoom() { const room = new Room(generateRoomId(), null, client.getUserId()); return room; @@ -131,7 +132,7 @@ describe('export', function() { }, { "msgtype": "m.text", - // if the reply format is invalid, then return the original string as it is + // if the reply format is invalid, then return the body "body": "Invalid reply format", "expectedText": "Invalid reply format", }, @@ -151,5 +152,13 @@ describe('export', function() { expect(exporter.textForReplyEvent(content)).toBe(content.expectedText); } }); + + it('checks if the render to string works for eventTile', function() { + // Todo: Generate different event types + const exporter = new HTMLExporter(room, ExportTypes.BEGINNING, mockExportOptions, null); + for (const event of events) { + expect(renderToString(exporter.getEventTile(event, false))).toBeTruthy(); + } + }); }); From ecf0aba97ce42fcf124125398d747da2bb329886 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 10 Aug 2021 12:25:11 +0530 Subject: [PATCH 155/176] Test for different types of events --- src/utils/exportUtils/HtmlExport.tsx | 15 ++-- test/test-utils.js | 6 +- test/utils/export-test.tsx | 101 +++++++++++++++++++++++---- 3 files changed, 104 insertions(+), 18 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 124914a210..daa411826e 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -303,13 +303,17 @@ export default class HTMLExporter extends Exporter { return eventTileMarkup; } - protected createModifiedEvent(text: string, mxEv: MatrixEvent) { + protected createModifiedEvent(text: string, mxEv: MatrixEvent, italic=true) { const modifiedContent = { msgtype: "m.text", - body: `*${text}*`, + body: `${text}`, format: "org.matrix.custom.html", - formatted_body: `<em>${text}</em>`, + formatted_body: `${text}`, }; + if (italic) { + modifiedContent.formatted_body = '<em>' + modifiedContent.formatted_body + '</em>'; + modifiedContent.body = '*' + modifiedContent.body + '*'; + } const modifiedEvent = new MatrixEvent(); modifiedEvent.event = mxEv.event; modifiedEvent.sender = mxEv.sender; @@ -356,7 +360,10 @@ export default class HTMLExporter extends Exporter { } catch (e) { // TODO: Handle callEvent errors console.error(e); - eventTile = await this.getEventTileMarkup(this.createModifiedEvent(textForEvent(mxEv), mxEv), joined); + eventTile = await this.getEventTileMarkup( + this.createModifiedEvent(textForEvent(mxEv), mxEv, false), + joined, + ); } return eventTile; diff --git a/test/test-utils.js b/test/test-utils.js index d25fbe5207..46b8e9bbc9 100644 --- a/test/test-utils.js +++ b/test/test-utils.js @@ -113,6 +113,7 @@ export function createTestClient() { * @param {number=} opts.ts Optional. Timestamp for the event * @param {Object} opts.content The event.content * @param {boolean} opts.event True to make a MatrixEvent. + * @param {unsigned=} opts.unsigned * @return {Object} a JSON object representing this event. */ export function mkEvent(opts) { @@ -167,12 +168,13 @@ export function mkPresence(opts) { * @param {string} opts.room The room ID for the event. * @param {string} opts.mship The content.membership for the event. * @param {string} opts.prevMship The prev_content.membership for the event. + * @param {number=} opts.ts Optional. Timestamp for the event * @param {string} opts.user The user ID for the event. * @param {RoomMember} opts.target The target of the event. - * @param {string} opts.skey The other user ID for the event if applicable + * @param {string=} opts.skey The other user ID for the event if applicable * e.g. for invites/bans. * @param {string} opts.name The content.displayname for the event. - * @param {string} opts.url The content.avatar_url for the event. + * @param {string=} opts.url The content.avatar_url for the event. * @param {boolean} opts.event True to make a MatrixEvent. * @return {Object|MatrixEvent} The event */ diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index 1b8fc9c31b..e3811ea957 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -67,25 +67,103 @@ describe('export', function() { }, ]; - const events: MatrixEvent[] = mkEvents(); - const room = createRoom(); function createRoom() { const room = new Room(generateRoomId(), null, client.getUserId()); return room; } + const mockRoom = createRoom(); function mkEvents() { - const events = []; + const matrixEvents = []; const ts0 = Date.now(); - for (let i = 0; i < 10; i++) { - events.push(TestUtilsMatrix.mkMessage({ + let i: number; + // plain text + for (i = 0; i < 10; i++) { + matrixEvents.push(TestUtilsMatrix.mkMessage({ event: true, room: "!room:id", user: "@user:id", ts: ts0 + i * 1000, })); } - return events; + // reply events + for (i = 0; i < 10; i++) { + matrixEvents.push(TestUtilsMatrix.mkEvent({ + "content": { + "body": "> <@me:here> Hi\n\nTest", + "format": "org.matrix.custom.html", + "m.relates_to": { + "m.in_reply_to": { + "event_id": "$" + Math.random() + "-" + Math.random(), + }, + }, + "msgtype": "m.text", + }, + "user": "@me:here", + "type": "m.room.message", + "room": mockRoom.roomId, + "event": true, + })); + } + // membership events + for (i = 0; i < 10; i++) { + matrixEvents.push(TestUtilsMatrix.mkMembership({ + event: true, room: "!room:id", user: "@user:id", + target: { + userId: "@user:id", + name: "Bob", + getAvatarUrl: () => { + return "avatar.jpeg"; + }, + getMxcAvatarUrl: () => 'mxc://avatar.url/image.png', + }, + ts: ts0 + i*1000, + mship: 'join', + prevMship: 'join', + name: 'A user', + })); + } + // emote + matrixEvents.push(TestUtilsMatrix.mkEvent({ + "content": { + "body": "waves", + "msgtype": "m.emote", + }, + "user": "@me:here", + "type": "m.room.message", + "room": mockRoom.roomId, + "event": true, + })); + // redacted events + for (i = 0; i < 10; i++) { + matrixEvents.push(new MatrixEvent({ + type: "m.room.message", + sender: MY_USER_ID, + content: {}, + unsigned: { + "age": 72, + "transaction_id": "m1212121212.23", + "redacted_because": { + "content": {}, + "origin_server_ts": ts0 + i*1000, + "redacts": "$9999999999999999999999999999999999999999998", + "sender": "@me:here", + "type": "m.room.redaction", + "unsigned": { + "age": 94, + "transaction_id": "m1111111111.1", + }, + "event_id": "$9999999999999999999999999999999999999999998", + "room_id": mockRoom.roomId, + }, + }, + event_id: "$9999999999999999999999999999999999999999999", + room_id: mockRoom.roomId, + })); + } + return matrixEvents; } + const events: MatrixEvent[] = mkEvents(); + it('checks if the export format is valid', function() { expect(textForFormat('HTML')).toBeTruthy(); expect(textForFormat('JSON')).toBeTruthy(); @@ -101,7 +179,7 @@ describe('export', function() { it('checks if the export options are valid', function() { for (const exportOption of invalidExportOptions) { try { - new PlainTextExporter(room, ExportTypes.BEGINNING, exportOption, null); + new PlainTextExporter(mockRoom, ExportTypes.BEGINNING, exportOption, null); throw new Error("Expected to throw an error"); } catch (e) { expect(e.message).toBe("Invalid export options"); @@ -110,7 +188,7 @@ describe('export', function() { }); it('tests the file extension splitter', function() { - const exporter = new PlainTextExporter(room, ExportTypes.BEGINNING, mockExportOptions, null); + const exporter = new PlainTextExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); const fileNameWithExtensions = { "": ["", ""], "name": ["name", ""], @@ -147,15 +225,14 @@ describe('export', function() { "expectedText": "<@me:here \"This\"> Reply", }, ]; - const exporter = new PlainTextExporter(room, ExportTypes.BEGINNING, mockExportOptions, null); + const exporter = new PlainTextExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); for (const content of eventContents) { expect(exporter.textForReplyEvent(content)).toBe(content.expectedText); } }); - it('checks if the render to string works for eventTile', function() { - // Todo: Generate different event types - const exporter = new HTMLExporter(room, ExportTypes.BEGINNING, mockExportOptions, null); + it("checks if the render to string doesn't throw any error for different kinds of strings", function() { + const exporter = new HTMLExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); for (const event of events) { expect(renderToString(exporter.getEventTile(event, false))).toBeTruthy(); } From e396dcfb102c8182766f2de0d674e63b5ee9712e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 10 Aug 2021 13:22:40 +0530 Subject: [PATCH 156/176] Remove @types/streamsaver --- package.json | 1 - .../views/elements/EventListSummary.tsx | 1 - test/utils/export-test.tsx | 2 +- yarn.lock | 15 +++++---------- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 8f927c7bca..6927fd627d 100644 --- a/package.json +++ b/package.json @@ -147,7 +147,6 @@ "@types/react-dom": "^17.0.2", "@types/react-transition-group": "^4.4.0", "@types/sanitize-html": "^2.3.1", - "@types/streamsaver": "^2.0.1", "@types/zxcvbn": "^4.4.0", "@typescript-eslint/eslint-plugin": "^4.17.0", "@typescript-eslint/parser": "^4.17.0", diff --git a/src/components/views/elements/EventListSummary.tsx b/src/components/views/elements/EventListSummary.tsx index c5630f8346..cbb0e17b42 100644 --- a/src/components/views/elements/EventListSummary.tsx +++ b/src/components/views/elements/EventListSummary.tsx @@ -81,7 +81,6 @@ const EventListSummary: React.FC<IProps> = ({ </React.Fragment>; } else { const avatars = summaryMembers.map((m) => <MemberAvatar key={m.userId} member={m} width={14} height={14} />); - body = ( <div className="mx_EventTile_line"> <div className="mx_EventTile_info"> diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index e3811ea957..437dcbbd60 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -231,7 +231,7 @@ describe('export', function() { } }); - it("checks if the render to string doesn't throw any error for different kinds of strings", function() { + it("checks if the render to string doesn't throw any error for different types of events", function() { const exporter = new HTMLExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); for (const event of events) { expect(renderToString(exporter.getEventTile(event, false))).toBeTruthy(); diff --git a/yarn.lock b/yarn.lock index 348f120f18..6f24e45f81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1785,11 +1785,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== -"@types/streamsaver@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/streamsaver/-/streamsaver-2.0.1.tgz#fa5e5b891d1b282be3078c232a30ee004b8e0be0" - integrity sha512-I49NtT8w6syBI3Zg3ixCyygTHoTVMY0z2TMRcTgccdIsVd2MwlKk7ITLHLsJtgchUHcOd7QEARG9h0ifcA6l2Q== - "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" @@ -2348,16 +2343,16 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - before-after-hook@^2.2.0: version "2.2.2" resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" From edfc8af6cf93a1a6884c244e965434cc0e7aeef2 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 13 Aug 2021 08:30:50 +0530 Subject: [PATCH 157/176] Apply PR Suggestions --- src/components/views/dialogs/ExportDialog.tsx | 32 +-- src/components/views/messages/MFileBody.tsx | 182 +++++++++--------- src/utils/exportUtils/Exporter.ts | 17 +- src/utils/exportUtils/HtmlExport.tsx | 4 +- src/utils/exportUtils/JSONExport.ts | 10 +- src/utils/exportUtils/PlainTextExport.ts | 4 +- src/utils/exportUtils/exportUtils.ts | 28 +-- test/utils/export-test.tsx | 10 +- 8 files changed, 143 insertions(+), 144 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 5ebe6ed7c5..6116faf1e1 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -24,8 +24,8 @@ import Field from "../elements/Field"; import StyledRadioGroup from "../elements/StyledRadioGroup"; import StyledCheckbox from "../elements/StyledCheckbox"; import { - ExportFormats, - ExportTypes, + ExportFormat, + ExportType, textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; @@ -42,8 +42,8 @@ interface IProps extends IDialogProps { } const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { - const [exportFormat, setExportFormat] = useState(ExportFormats.HTML); - const [exportType, setExportType] = useState(ExportTypes.TIMELINE); + const [exportFormat, setExportFormat] = useState(ExportFormat.Html); + const [exportType, setExportType] = useState(ExportType.Timeline); const [includeAttachments, setAttachments] = useState(false); const [isExporting, setExporting] = useState(false); const [numberOfMessages, setNumberOfMessages] = useState<number>(100); @@ -70,31 +70,31 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { maxSize: sizeLimit * 1024 * 1024, }; switch (exportFormat) { - case ExportFormats.HTML: + case ExportFormat.Html: setExporter( new HTMLExporter( room, - ExportTypes[exportType], + ExportType[exportType], exportOptions, exportProgressRef, ), ); break; - case ExportFormats.JSON: + case ExportFormat.Json: setExporter( new JSONExporter( room, - ExportTypes[exportType], + ExportType[exportType], exportOptions, exportProgressRef, ), ); break; - case ExportFormats.PLAIN_TEXT: + case ExportFormat.PlainText: setExporter( new PlainTextExporter( room, - ExportTypes[exportType], + ExportType[exportType], exportOptions, exportProgressRef, ), @@ -114,7 +114,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { sizeLimitRef.current.validate({ focused: true }); return; } - if (exportType === ExportTypes.LAST_N_MESSAGES) { + if (exportType === ExportType.LastNMessages) { const isValidNumberOfMessages = await messageCountRef.current.validate({ focused: false }); if (!isValidNumberOfMessages) { @@ -202,12 +202,12 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }); }; - const exportFormatOptions = Object.keys(ExportFormats).map((format) => ({ + const exportFormatOptions = Object.keys(ExportFormat).map((format) => ({ value: format, label: textForFormat(format), })); - const exportTypeOptions = Object.keys(ExportTypes).map((type) => { + const exportTypeOptions = Object.keys(ExportType).map((type) => { return ( <option key={type} value={type}> { textForType(type) } @@ -216,7 +216,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }); let messageCount = null; - if (exportType === ExportTypes.LAST_N_MESSAGES) { + if (exportType === ExportType.LastNMessages) { messageCount = ( <Field element="input" @@ -322,7 +322,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { <StyledRadioGroup name="exportFormat" value={exportFormat} - onChange={(key) => setExportFormat(ExportFormats[key])} + onChange={(key) => setExportFormat(ExportFormat[key])} definitions={exportFormatOptions} /> @@ -334,7 +334,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { element="select" value={exportType} onChange={(e) => { - setExportType(ExportTypes[e.target.value]); + setExportType(ExportType[e.target.value]); }} > { exportTypeOptions } diff --git a/src/components/views/messages/MFileBody.tsx b/src/components/views/messages/MFileBody.tsx index 9c4a09e695..1f079cd1e2 100644 --- a/src/components/views/messages/MFileBody.tsx +++ b/src/components/views/messages/MFileBody.tsx @@ -222,125 +222,125 @@ export default class MFileBody extends React.Component<IProps, IState> { { placeholder } </a> </span>; - } else { - const showDownloadLink = this.props.tileShape || !this.props.showGenericPlaceholder; + } - if (isEncrypted) { - if (!this.state.decryptedBlob) { + const showDownloadLink = this.props.tileShape || !this.props.showGenericPlaceholder; + + if (isEncrypted) { + if (!this.state.decryptedBlob) { // Need to decrypt the attachment // Wait for the user to click on the link before downloading // and decrypting the attachment. - // This button should actually Download because usercontent/ will try to click itself - // but it is not guaranteed between various browsers' settings. - return ( - <span className="mx_MFileBody"> - { placeholder } - { showDownloadLink && <div className="mx_MFileBody_download"> - <AccessibleButton onClick={this.decryptFile}> - { _t("Decrypt %(text)s", { text: this.linkText }) } - </AccessibleButton> - </div> } - </span> - ); - } - - const url = "usercontent/"; // XXX: this path should probably be passed from the skin - - // If the attachment is encrypted then put the link inside an iframe. + // This button should actually Download because usercontent/ will try to click itself + // but it is not guaranteed between various browsers' settings. return ( <span className="mx_MFileBody"> { placeholder } { showDownloadLink && <div className="mx_MFileBody_download"> - <div style={{ display: "none" }}> - { /* + <AccessibleButton onClick={this.decryptFile}> + { _t("Decrypt %(text)s", { text: this.linkText }) } + </AccessibleButton> + </div> } + </span> + ); + } + + const url = "usercontent/"; // XXX: this path should probably be passed from the skin + + // If the attachment is encrypted then put the link inside an iframe. + return ( + <span className="mx_MFileBody"> + { placeholder } + { showDownloadLink && <div className="mx_MFileBody_download"> + <div style={{ display: "none" }}> + { /* * Add dummy copy of the "a" tag * We'll use it to learn how the download link * would have been styled if it was rendered inline. */ } - <a ref={this.dummyLink} /> - </div> - { /* + <a ref={this.dummyLink} /> + </div> + { /* TODO: Move iframe (and dummy link) into FileDownloader. We currently have it set up this way because of styles applied to the iframe itself which cannot be easily handled/overridden by the FileDownloader. In future, the download link may disappear entirely at which point it could also be suitable to just remove this bit of code. */ } - <iframe - src={url} - onLoad={() => this.downloadFile(this.fileName, this.linkText)} - ref={this.iframe} - sandbox="allow-scripts allow-downloads allow-downloads-without-user-activation" /> - </div> } - </span> - ); - } else if (contentUrl) { - const downloadProps = { - target: "_blank", - rel: "noreferrer noopener", + <iframe + src={url} + onLoad={() => this.downloadFile(this.fileName, this.linkText)} + ref={this.iframe} + sandbox="allow-scripts allow-downloads allow-downloads-without-user-activation" /> + </div> } + </span> + ); + } else if (contentUrl) { + const downloadProps = { + target: "_blank", + rel: "noreferrer noopener", - // We set the href regardless of whether or not we intercept the download - // because we don't really want to convert the file to a blob eagerly, and - // still want "open in new tab" and "save link as" to work. - href: contentUrl, - }; + // We set the href regardless of whether or not we intercept the download + // because we don't really want to convert the file to a blob eagerly, and + // still want "open in new tab" and "save link as" to work. + href: contentUrl, + }; - // Blobs can only have up to 500mb, so if the file reports as being too large then - // we won't try and convert it. Likewise, if the file size is unknown then we'll assume - // it is too big. There is the risk of the reported file size and the actual file size - // being different, however the user shouldn't normally run into this problem. - const fileTooBig = typeof(fileSize) === 'number' ? fileSize > 524288000 : true; + // Blobs can only have up to 500mb, so if the file reports as being too large then + // we won't try and convert it. Likewise, if the file size is unknown then we'll assume + // it is too big. There is the risk of the reported file size and the actual file size + // being different, however the user shouldn't normally run into this problem. + const fileTooBig = typeof(fileSize) === 'number' ? fileSize > 524288000 : true; - if (["application/pdf"].includes(fileType) && !fileTooBig) { + if (["application/pdf"].includes(fileType) && !fileTooBig) { // We want to force a download on this type, so use an onClick handler. - downloadProps["onClick"] = (e) => { - console.log(`Downloading ${fileType} as blob (unencrypted)`); + downloadProps["onClick"] = (e) => { + console.log(`Downloading ${fileType} as blob (unencrypted)`); - // Avoid letting the <a> do its thing - e.preventDefault(); - e.stopPropagation(); + // Avoid letting the <a> do its thing + e.preventDefault(); + e.stopPropagation(); - // Start a fetch for the download - // Based upon https://stackoverflow.com/a/49500465 - this.props.mediaEventHelper.sourceBlob.value.then((blob) => { - const blobUrl = URL.createObjectURL(blob); + // Start a fetch for the download + // Based upon https://stackoverflow.com/a/49500465 + this.props.mediaEventHelper.sourceBlob.value.then((blob) => { + const blobUrl = URL.createObjectURL(blob); - // We have to create an anchor to download the file - const tempAnchor = document.createElement('a'); - tempAnchor.download = this.fileName; - tempAnchor.href = blobUrl; - document.body.appendChild(tempAnchor); // for firefox: https://stackoverflow.com/a/32226068 - tempAnchor.click(); - tempAnchor.remove(); - }); - }; - } else { - // Else we are hoping the browser will do the right thing - downloadProps["download"] = this.fileName; - } - - return ( - <span className="mx_MFileBody"> - { placeholder } - { showDownloadLink && <div className="mx_MFileBody_download"> - <a {...downloadProps}> - <span className="mx_MFileBody_download_icon" /> - { _t("Download %(text)s", { text: this.linkText }) } - </a> - { this.props.tileShape === TileShape.FileGrid && <div className="mx_MImageBody_size"> - { this.content.info && this.content.info.size ? filesize(this.content.info.size) : "" } - </div> } - </div> } - </span> - ); + // We have to create an anchor to download the file + const tempAnchor = document.createElement('a'); + tempAnchor.download = this.fileName; + tempAnchor.href = blobUrl; + document.body.appendChild(tempAnchor); // for firefox: https://stackoverflow.com/a/32226068 + tempAnchor.click(); + tempAnchor.remove(); + }); + }; } else { - const extra = this.linkText ? (': ' + this.linkText) : ''; - return <span className="mx_MFileBody"> - { placeholder } - { _t("Invalid file%(extra)s", { extra: extra }) } - </span>; + // Else we are hoping the browser will do the right thing + downloadProps["download"] = this.fileName; } + + return ( + <span className="mx_MFileBody"> + { placeholder } + { showDownloadLink && <div className="mx_MFileBody_download"> + <a {...downloadProps}> + <span className="mx_MFileBody_download_icon" /> + { _t("Download %(text)s", { text: this.linkText }) } + </a> + { this.props.tileShape === TileShape.FileGrid && <div className="mx_MImageBody_size"> + { this.content.info && this.content.info.size ? filesize(this.content.info.size) : "" } + </div> } + </div> } + </span> + ); + } else { + const extra = this.linkText ? (': ' + this.linkText) : ''; + return <span className="mx_MFileBody"> + { placeholder } + { _t("Invalid file%(extra)s", { extra: extra }) } + </span>; } } } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 92f2c3e3d2..920d690174 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -17,7 +17,7 @@ limitations under the License. import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixClientPeg } from "../../MatrixClientPeg"; -import { IExportOptions, ExportTypes } from "./exportUtils"; +import { IExportOptions, ExportType } from "./exportUtils"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; @@ -38,13 +38,14 @@ export default abstract class Exporter { protected constructor( protected room: Room, - protected exportType: ExportTypes, + protected exportType: ExportType, protected exportOptions: IExportOptions, protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { - if (exportOptions.maxSize < 1 * 1024 * 1024|| - exportOptions.maxSize > 2000 * 1024 * 1024|| - exportOptions.numberOfMessages > 10**8) { + if (exportOptions.maxSize < 1 * 1024 * 1024|| // Less than 1 MB + exportOptions.maxSize > 2000 * 1024 * 1024|| // More than ~ 2 GB + exportOptions.numberOfMessages > 10**8 + ) { throw new Error("Invalid export options"); } this.cancelled = false; @@ -118,10 +119,10 @@ export default abstract class Exporter { public getLimit(): number { let limit: number; switch (this.exportType) { - case ExportTypes.LAST_N_MESSAGES: + case ExportType.LastNMessages: limit = this.exportOptions.numberOfMessages; break; - case ExportTypes.TIMELINE: + case ExportType.Timeline: limit = 40; break; default: @@ -166,7 +167,7 @@ export default abstract class Exporter { events.push(mxEv); } this.updateProgress( - ("Fetched " + events.length + " events ") + (this.exportType === ExportTypes.LAST_N_MESSAGES + ("Fetched " + events.length + " events ") + (this.exportType === ExportType.LastNMessages ? `out of ${this.exportOptions.numberOfMessages}` : "so far"), ); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index daa411826e..6cdbae6c48 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -32,7 +32,7 @@ import DateSeparator from "../../components/views/messages/DateSeparator"; import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportJS from "!!raw-loader!./exportJS"; import exportIcons from "./exportIcons"; -import { ExportTypes } from "./exportUtils"; +import { ExportType } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; import getExportCSS from "./exportCSS"; @@ -46,7 +46,7 @@ export default class HTMLExporter extends Exporter { constructor( room: Room, - exportType: ExportTypes, + exportType: ExportType, exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 356f4282db..a2273ad918 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -19,24 +19,22 @@ import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay, formatFullDateNoDayNoTime } from "../../DateUtils"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; -import { ExportTypes } from "./exportUtils"; +import { ExportType } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import { EventType } from "matrix-js-sdk/src/@types/event"; import { MutableRefObject } from "react"; export default class JSONExporter extends Exporter { - protected totalSize: number; - protected messages: any[]; + protected totalSize = 0; + protected messages: any[] = []; constructor( room: Room, - exportType: ExportTypes, + exportType: ExportType, exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { super(room, exportType, exportOptions, exportProgressRef); - this.totalSize = 0; - this.messages = []; } protected createJSONString(): string { diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 86f714140e..23ed6c7bbd 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -20,7 +20,7 @@ import { IContent, MatrixEvent } from "matrix-js-sdk/src/models/event"; import { formatFullDateNoDay } from "../../DateUtils"; import { _t } from "../../languageHandler"; import { haveTileForEvent } from "../../components/views/rooms/EventTile"; -import { ExportTypes } from "./exportUtils"; +import { ExportType } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; import { MutableRefObject } from "react"; @@ -31,7 +31,7 @@ export default class PlainTextExporter extends Exporter { constructor( room: Room, - exportType: ExportTypes, + exportType: ExportType, exportOptions: IExportOptions, exportProgressRef: MutableRefObject<HTMLParagraphElement>, ) { diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 8410b747ea..2f6e2c2cbc 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -16,26 +16,26 @@ limitations under the License. import { _t } from "../../languageHandler"; -export enum ExportFormats { - HTML = "HTML", - PLAIN_TEXT = "PLAIN_TEXT", - JSON = "JSON", +export enum ExportFormat { + Html = "HTML", + PlainText = "PLAIN_TEXT", + Json = "JSON", } -export enum ExportTypes { - TIMELINE = "TIMELINE", - BEGINNING = "BEGINNING", - LAST_N_MESSAGES = "LAST_N_MESSAGES", +export enum ExportType { + Timeline = "TIMELINE", + Beginning = "BEGINNING", + LastNMessages = "LAST_N_MESSAGES", // START_DATE = "START_DATE", } export const textForFormat = (format: string): string => { switch (format) { - case ExportFormats.HTML: + case ExportFormat.Html: return _t("HTML"); - case ExportFormats.JSON: + case ExportFormat.Json: return _t("JSON"); - case ExportFormats.PLAIN_TEXT: + case ExportFormat.PlainText: return _t("Plain Text"); default: throw new Error("Unknown format"); @@ -44,11 +44,11 @@ export const textForFormat = (format: string): string => { export const textForType = (type: string): string => { switch (type) { - case ExportTypes.BEGINNING: + case ExportType.Beginning: return _t("From the beginning"); - case ExportTypes.LAST_N_MESSAGES: + case ExportType.LastNMessages: return _t("Specify a number of messages"); - case ExportTypes.TIMELINE: + case ExportType.Timeline: return _t("Current Timeline"); default: throw new Error("Unknown type: " + type); diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index 437dcbbd60..c23f15c24b 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -16,7 +16,7 @@ limitations under the License. import { IContent, MatrixClient, MatrixEvent, Room } from "matrix-js-sdk"; import { MatrixClientPeg } from "../../src/MatrixClientPeg"; -import { textForFormat, IExportOptions, ExportTypes } from "../../src/utils/exportUtils/exportUtils"; +import { textForFormat, IExportOptions, ExportType } from "../../src/utils/exportUtils/exportUtils"; import '../skinned-sdk'; import PlainTextExporter from "../../src/utils/exportUtils/PlainTextExport"; import HTMLExporter from "../../src/utils/exportUtils/HtmlExport"; @@ -179,7 +179,7 @@ describe('export', function() { it('checks if the export options are valid', function() { for (const exportOption of invalidExportOptions) { try { - new PlainTextExporter(mockRoom, ExportTypes.BEGINNING, exportOption, null); + new PlainTextExporter(mockRoom, ExportType.Beginning, exportOption, null); throw new Error("Expected to throw an error"); } catch (e) { expect(e.message).toBe("Invalid export options"); @@ -188,7 +188,7 @@ describe('export', function() { }); it('tests the file extension splitter', function() { - const exporter = new PlainTextExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); + const exporter = new PlainTextExporter(mockRoom, ExportType.Beginning, mockExportOptions, null); const fileNameWithExtensions = { "": ["", ""], "name": ["name", ""], @@ -225,14 +225,14 @@ describe('export', function() { "expectedText": "<@me:here \"This\"> Reply", }, ]; - const exporter = new PlainTextExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); + const exporter = new PlainTextExporter(mockRoom, ExportType.Beginning, mockExportOptions, null); for (const content of eventContents) { expect(exporter.textForReplyEvent(content)).toBe(content.expectedText); } }); it("checks if the render to string doesn't throw any error for different types of events", function() { - const exporter = new HTMLExporter(mockRoom, ExportTypes.BEGINNING, mockExportOptions, null); + const exporter = new HTMLExporter(mockRoom, ExportType.Beginning, mockExportOptions, null); for (const event of events) { expect(renderToString(exporter.getEventTile(event, false))).toBeTruthy(); } From 9cbdc4a6136ab8c0a4ed87dcd9b2fe5a882af183 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 13 Aug 2021 08:34:54 +0530 Subject: [PATCH 158/176] Use throw error instead of try-catch --- test/utils/export-test.tsx | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index c23f15c24b..c4d9b43765 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -168,22 +168,15 @@ describe('export', function() { expect(textForFormat('HTML')).toBeTruthy(); expect(textForFormat('JSON')).toBeTruthy(); expect(textForFormat('PLAIN_TEXT')).toBeTruthy(); - try { - textForFormat('PDF'); - throw new Error("Expected to throw an error"); - } catch (e) { - expect(e.message).toBe("Unknown format"); - } + expect(() => textForFormat('PDF')).toThrowError("Unknown format"); }); it('checks if the export options are valid', function() { for (const exportOption of invalidExportOptions) { - try { - new PlainTextExporter(mockRoom, ExportType.Beginning, exportOption, null); - throw new Error("Expected to throw an error"); - } catch (e) { - expect(e.message).toBe("Invalid export options"); - } + expect( + () => + new PlainTextExporter(mockRoom, ExportType.Beginning, exportOption, null), + ).toThrowError("Invalid export options"); } }); From dda24da20435a0d0b701199dfa9769614b50c47b Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 13 Aug 2021 08:59:14 +0530 Subject: [PATCH 159/176] Add copyright headers --- src/components/views/dialogs/ExportDialog.tsx | 12 ++++++------ src/utils/exportUtils/exportIcons.ts | 16 ++++++++++++++++ src/utils/exportUtils/exportJS.js | 17 +++++++++++++++++ src/utils/exportUtils/exportUtils.ts | 16 ++++++++-------- 4 files changed, 47 insertions(+), 14 deletions(-) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index 6116faf1e1..d2f1da861a 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -54,7 +54,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [displayCancel, setCancelWarning] = useState(false); const [exportCancelled, setExportCancelled] = useState(false); const [exportSuccessful, setExportSuccessful] = useState(false); - const [Exporter, setExporter] = useStateCallback<Exporter>( + const [exporter, setExporter] = useStateCallback<Exporter>( null, async (exporter: Exporter) => { await exporter?.export().then(() => { @@ -195,7 +195,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; const confirmCanel = async () => { - await Exporter?.cancelExport().then(() => { + await exporter?.cancelExport().then(() => { setExportCancelled(true); setExporting(false); setExporter(null); @@ -203,14 +203,14 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; const exportFormatOptions = Object.keys(ExportFormat).map((format) => ({ - value: format, - label: textForFormat(format), + value: ExportFormat[format], + label: textForFormat(ExportFormat[format]), })); const exportTypeOptions = Object.keys(ExportType).map((type) => { return ( - <option key={type} value={type}> - { textForType(type) } + <option key={type} value={ExportType[type]}> + { textForType(ExportType[type]) } </option> ); }); diff --git a/src/utils/exportUtils/exportIcons.ts b/src/utils/exportUtils/exportIcons.ts index 181a62848e..7a8264f7e9 100644 --- a/src/utils/exportUtils/exportIcons.ts +++ b/src/utils/exportUtils/exportIcons.ts @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import trashSVG from "!!raw-loader!../../../res/img/element-icons/trashcan.svg"; import attachSVG from "!!raw-loader!../../../res/img/element-icons/room/composer/attach.svg"; diff --git a/src/utils/exportUtils/exportJS.js b/src/utils/exportUtils/exportJS.js index 9e58c8b99c..e082f88d98 100644 --- a/src/utils/exportUtils/exportJS.js +++ b/src/utils/exportUtils/exportJS.js @@ -1,3 +1,20 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// This file is raw-imported (imported as plain text) for the export bundle, which is why this is in JS function showToastIfNeeded(replyId) { const el = document.getElementById(replyId); if (!el) { diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 2f6e2c2cbc..139e3a3740 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -17,19 +17,19 @@ limitations under the License. import { _t } from "../../languageHandler"; export enum ExportFormat { - Html = "HTML", - PlainText = "PLAIN_TEXT", - Json = "JSON", + Html = "Html", + PlainText = "PlainText", + Json = "Json", } export enum ExportType { - Timeline = "TIMELINE", - Beginning = "BEGINNING", - LastNMessages = "LAST_N_MESSAGES", + Timeline = "Timeline", + Beginning = "Beginning", + LastNMessages = "LastNMessages", // START_DATE = "START_DATE", } -export const textForFormat = (format: string): string => { +export const textForFormat = (format: ExportFormat): string => { switch (format) { case ExportFormat.Html: return _t("HTML"); @@ -42,7 +42,7 @@ export const textForFormat = (format: string): string => { } }; -export const textForType = (type: string): string => { +export const textForType = (type: ExportType): string => { switch (type) { case ExportType.Beginning: return _t("From the beginning"); From 00d5a0baa4832e9a4f1c35dd100d0a71758ab675 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 13 Aug 2021 08:59:28 +0530 Subject: [PATCH 160/176] Apply suggestions from code review Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --- src/TextForEvent.tsx | 9 +++++---- src/components/views/messages/MImageBody.tsx | 2 +- src/utils/exportUtils/Exporter.ts | 10 ++++------ src/utils/exportUtils/exportUtils.ts | 4 ++-- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/TextForEvent.tsx b/src/TextForEvent.tsx index 5ab1ceb9f4..7845091c48 100644 --- a/src/TextForEvent.tsx +++ b/src/TextForEvent.tsx @@ -167,7 +167,7 @@ function textForTopicEvent(ev: MatrixEvent): () => string | null { } function textForRoomAvatarEvent(ev: MatrixEvent): () => string | null { - const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); + const senderDisplayName = ev?.sender?.name || ev.getSender(); return () => _t('%(senderDisplayName)s changed the room avatar.', { senderDisplayName }); } @@ -298,11 +298,12 @@ function textForMessageEvent(ev: MatrixEvent): () => string | null { if (ev.isRedacted()) { message = _t("Message deleted"); const unsigned = ev.getUnsigned(); - const redactedBecauseUserId = unsigned && unsigned.redacted_because && unsigned.redacted_because.sender; + const redactedBecauseUserId = unsigned?.redacted_because?.sender; if (redactedBecauseUserId && redactedBecauseUserId !== ev.getSender()) { const room = MatrixClientPeg.get().getRoom(ev.getRoomId()); - const sender = room && room.getMember(redactedBecauseUserId); - message = _t("Message deleted by %(name)s", { name: sender ? sender.name : redactedBecauseUserId }); + const sender = room?.getMember(redactedBecauseUserId); + message = _t("Message deleted by %(name)s", { name: sender?.name + || redactedBecauseUserId }); } } if (ev.getContent().msgtype === "m.emote") { diff --git a/src/components/views/messages/MImageBody.tsx b/src/components/views/messages/MImageBody.tsx index 4fa1161d82..ae82c57a5e 100644 --- a/src/components/views/messages/MImageBody.tsx +++ b/src/components/views/messages/MImageBody.tsx @@ -428,7 +428,7 @@ export default class MImageBody extends React.Component<IBodyProps, IState> { // Overidden by MStickerBody protected wrapImage(contentUrl: string, children: JSX.Element): JSX.Element { - return <a href={contentUrl} target={this.props.forExport ? "__blank" : undefined} onClick={this.onClick}> + return <a href={contentUrl} target={this.props.forExport ? "_blank" : undefined} onClick={this.onClick}> { children } </a>; } diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 92f2c3e3d2..e497fb7e38 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -32,9 +32,9 @@ type BlobFile = { }; export default abstract class Exporter { - protected files: BlobFile[]; + protected files: BlobFile[] = []; protected client: MatrixClient; - protected cancelled: boolean; + protected cancelled = false; protected constructor( protected room: Room, @@ -47,8 +47,6 @@ export default abstract class Exporter { exportOptions.numberOfMessages > 10**8) { throw new Error("Invalid export options"); } - this.cancelled = false; - this.files = []; this.client = MatrixClientPeg.get(); window.addEventListener("beforeunload", this.onBeforeUnload); } @@ -71,7 +69,7 @@ export default abstract class Exporter { this.files.push(file); } - protected async downloadZIP(): Promise<any> { + protected async downloadZIP(): Promise<void> { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; const zip = new JSZip(); @@ -257,5 +255,5 @@ export default abstract class Exporter { return mxEv.getType() === attachmentTypes[0] || attachmentTypes.includes(mxEv.getContent().msgtype); } - abstract export(): Promise<any>; + abstract export(): Promise<void>; } diff --git a/src/utils/exportUtils/exportUtils.ts b/src/utils/exportUtils/exportUtils.ts index 8410b747ea..b69eef4edb 100644 --- a/src/utils/exportUtils/exportUtils.ts +++ b/src/utils/exportUtils/exportUtils.ts @@ -29,7 +29,7 @@ export enum ExportTypes { // START_DATE = "START_DATE", } -export const textForFormat = (format: string): string => { +export const textForFormat = (format: ExportFormat): string => { switch (format) { case ExportFormats.HTML: return _t("HTML"); @@ -42,7 +42,7 @@ export const textForFormat = (format: string): string => { } }; -export const textForType = (type: string): string => { +export const textForType = (type: ExportType): string => { switch (type) { case ExportTypes.BEGINNING: return _t("From the beginning"); From 7207329c15a1d0bd851b7e99cf9ec1bf7ca612df Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 13 Aug 2021 23:44:07 +0530 Subject: [PATCH 161/176] Apply review suggestions --- res/css/views/dialogs/_ExportDialog.scss | 6 +- src/TextForEvent.tsx | 5 +- src/components/views/avatars/MemberAvatar.tsx | 4 +- src/components/views/dialogs/ExportDialog.tsx | 182 +++++++++--------- src/components/views/elements/ReplyThread.tsx | 6 +- src/components/views/messages/CallEvent.tsx | 4 +- src/components/views/messages/MFileBody.tsx | 6 +- .../views/messages/RedactedBody.tsx | 1 - src/i18n/strings/en_EN.json | 12 +- src/utils/exportUtils/Exporter.ts | 5 +- src/utils/exportUtils/HtmlExport.tsx | 6 +- src/utils/exportUtils/exportCSS.ts | 36 ++-- src/utils/exportUtils/exportIcons.ts | 23 --- test/utils/export-test.tsx | 100 +++++++--- 14 files changed, 201 insertions(+), 195 deletions(-) delete mode 100644 src/utils/exportUtils/exportIcons.ts diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index b4bc2b84b2..f3e418354c 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -35,7 +35,7 @@ limitations under the License. } .mx_RadioButton input[type="radio"]:checked + div > div { - background: gray; + background: $greyed-fg-color; } .mx_RadioButton input[type=radio]:checked + div { @@ -52,8 +52,8 @@ limitations under the License. } .mx_Checkbox input[type="checkbox"]:checked + label > .mx_Checkbox_background { - background: gray; - border-color: gray; + background: $greyed-fg-color; + border-color: $greyed-fg-color; } } diff --git a/src/TextForEvent.tsx b/src/TextForEvent.tsx index 7845091c48..5f4ae4a702 100644 --- a/src/TextForEvent.tsx +++ b/src/TextForEvent.tsx @@ -312,7 +312,10 @@ function textForMessageEvent(ev: MatrixEvent): () => string | null { message = _t('%(senderDisplayName)s sent an image.', { senderDisplayName }); } else if (ev.getType() == "m.sticker") { message = _t('%(senderDisplayName)s sent a sticker.', { senderDisplayName }); - } else message = senderDisplayName + ': ' + message; + } else { + // in this case, parse it as a plain text message + message = senderDisplayName + ': ' + message; + } return message; }; } diff --git a/src/components/views/avatars/MemberAvatar.tsx b/src/components/views/avatars/MemberAvatar.tsx index 9554a50684..933cd58880 100644 --- a/src/components/views/avatars/MemberAvatar.tsx +++ b/src/components/views/avatars/MemberAvatar.tsx @@ -36,7 +36,6 @@ interface IProps extends Omit<React.ComponentProps<typeof BaseAvatar>, "name" | // Whether the onClick of the avatar should be overridden to dispatch `Action.ViewUser` viewUserOnClick?: boolean; title?: string; - forExport?: boolean; } interface IState { @@ -90,8 +89,7 @@ export default class MemberAvatar extends React.Component<IProps, IState> { } render() { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - let { member, fallbackUserId, onClick, viewUserOnClick, forExport, ...otherProps } = this.props; + let { member, fallbackUserId, onClick, viewUserOnClick, ...otherProps } = this.props; const userId = member ? member.userId : fallbackUserId; if (viewUserOnClick) { diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx index d2f1da861a..f474bcdb70 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -29,13 +29,15 @@ import { textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; -import { IFieldState, IValidationResult } from "../elements/Validation"; +import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; import Exporter from "../../../utils/exportUtils/Exporter"; import Spinner from "../elements/Spinner"; +import Modal from "../../../Modal"; +import InfoDialog from "./InfoDialog"; interface IProps extends IDialogProps { room: Room; @@ -126,67 +128,85 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { await startExport(); }; - const onValidateSize = async ({ - value, - }: Pick<IFieldState, "value">): Promise<IValidationResult> => { - const parsedSize = parseFloat(value); - const min = 1; - const max = 2000; + const validateSize = withValidation({ + rules: [ + { + key: "required", + test({ value, allowEmpty }) { + return allowEmpty || !!value; + }, + invalid: () => { + const min = 1; + const max = 10 ** 8; + return _t("Enter a number between %(min)s and %(max)s", { + min, + max, + }); + }, + }, { + key: "number", + test: ({ value }) => { + const parsedSize = parseFloat(value); + const min = 1; + const max = 2000; + return !(isNaN(parsedSize) || min > parsedSize || parsedSize > max); + }, + invalid: () => { + const min = 1; + const max = 2000; + return _t( + "Size can only be a number between %(min)s MB and %(max)s MB", + { min, max }, + ); + }, + }, + ], + }); - if (isNaN(parsedSize)) { - return { valid: false, feedback: _t("Size must be a number") }; - } - - if (min > parsedSize || parsedSize > max) { - return { - valid: false, - feedback: _t( - "Size can only be between %(min)s MB and %(max)s MB", - { min, max }, - ), - }; - } - - return { - valid: true, - feedback: _t("Enter size between %(min)s MB and %(max)s MB", { - min, - max, - }), - }; + const onValidateSize = async (fieldState: IFieldState): Promise<IValidationResult> => { + const result = await validateSize(fieldState); + return result; }; - const onValidateNumberOfMessages = async ({ - value, - }: Pick<IFieldState, "value">): Promise<IValidationResult> => { - const parsedSize = parseFloat(value); - const min = 1; - const max = 10 ** 8; + const validateNumberOfMessages = withValidation({ + rules: [ + { + key: "required", + test({ value, allowEmpty }) { + return allowEmpty || !!value; + }, + invalid: () => { + const min = 1; + const max = 10 ** 8; + return _t("Enter a number between %(min)s and %(max)s", { + min, + max, + }); + }, + }, { + key: "number", + test: ({ value }) => { + const parsedSize = parseFloat(value); + const min = 1; + const max = 10 ** 8; + if (isNaN(parsedSize)) return false; + return !(min > parsedSize || parsedSize > max); + }, + invalid: () => { + const min = 1; + const max = 10 ** 8; + return _t( + "Number of messages can only be a number between %(min)s and %(max)s", + { min, max }, + ); + }, + }, + ], + }); - if (isNaN(parsedSize)) { - return { - valid: false, - feedback: _t("Number of messages must be a number"), - }; - } - - if (min > parsedSize || parsedSize > max) { - return { - valid: false, - feedback: _t( - "Number of messages can only be between %(min)s and %(max)s", - { min, max }, - ), - }; - } - - return { - valid: true, - feedback: _t("Enter a number between %(min)s and %(max)s", { - min, - max, - }), - }; + const onValidateNumberOfMessages = async (fieldState: IFieldState): Promise<IValidationResult> => { + const result = await validateNumberOfMessages(fieldState); + return result; }; const onCancel = async () => { @@ -236,42 +256,20 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { if (exportCancelled) { // Display successful cancellation message - return ( - <BaseDialog - title={_t("Export Cancelled")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <p>{ _t("The export was cancelled successfully") }</p> - - <DialogButtons - primaryButton={_t("Okay")} - hasCancel={false} - onPrimaryButtonClick={onFinished} - /> - </BaseDialog> - ); + Modal.createTrackedDialog("Export Cancelled", "", InfoDialog, { + title: _t("Export Cancelled"), + description: <p>{ _t("The export was cancelled successfully") }</p>, + hasCloseButton: true, + }); + return null; } else if (exportSuccessful) { // Display successful export message - return ( - <BaseDialog - title={_t("Export Successful")} - className="mx_ExportDialog" - contentId="mx_Dialog_content" - onFinished={onFinished} - fixedWidth={true} - > - <p>{ _t("Your messages were successfully exported") }</p> - - <DialogButtons - primaryButton={_t("Okay")} - hasCancel={false} - onPrimaryButtonClick={onFinished} - /> - </BaseDialog> - ); + Modal.createTrackedDialog("Export Successful", "", InfoDialog, { + title: _t("Export Successful"), + description: <p>{ _t("Your messages were successfully exported") }</p>, + hasCloseButton: true, + }); + return null; } else if (displayCancel) { // Display cancel warning return ( diff --git a/src/components/views/elements/ReplyThread.tsx b/src/components/views/elements/ReplyThread.tsx index 2144cc602c..86330c1dbc 100644 --- a/src/components/views/elements/ReplyThread.tsx +++ b/src/components/views/elements/ReplyThread.tsx @@ -355,10 +355,10 @@ export default class ReplyThread extends React.Component<IProps, IState> { } else if (this.props.forExport) { const eventId = ReplyThread.getParentEventId(this.props.parentEv); header = <p className="mx_ReplyThread_Export"> - { _t("In reply to <messageLink/>", + { _t("In reply to <a>this message</a>", {}, - { messageLink: () => ( - <a className="mx_reply_anchor" href={`#${eventId}`} scroll-to={eventId}> { _t("this message") } </a> + { a: (sub) => ( + <a className="mx_reply_anchor" href={`#${eventId}`} scroll-to={eventId}> { sub } </a> ), }) } diff --git a/src/components/views/messages/CallEvent.tsx b/src/components/views/messages/CallEvent.tsx index 0a32e7f637..bc868c35b3 100644 --- a/src/components/views/messages/CallEvent.tsx +++ b/src/components/views/messages/CallEvent.tsx @@ -47,7 +47,7 @@ export default class CallEvent extends React.Component<IProps, IState> { super(props); this.state = { - callState: this.props.callEventGrouper?.state, + callState: this.props.callEventGrouper.state, silenced: false, }; } @@ -210,7 +210,7 @@ export default class CallEvent extends React.Component<IProps, IState> { render() { const event = this.props.mxEvent; const sender = event.sender ? event.sender.name : event.getSender(); - const isVoice = this.props.callEventGrouper?.isVoice; + const isVoice = this.props.callEventGrouper.isVoice; const callType = isVoice ? _t("Voice call") : _t("Video call"); const callState = this.state.callState; const hangupReason = this.props.callEventGrouper.hangupReason; diff --git a/src/components/views/messages/MFileBody.tsx b/src/components/views/messages/MFileBody.tsx index 1f079cd1e2..3675b14295 100644 --- a/src/components/views/messages/MFileBody.tsx +++ b/src/components/views/messages/MFileBody.tsx @@ -201,11 +201,7 @@ export default class MFileBody extends React.Component<IProps, IState> { if (this.props.showGenericPlaceholder) { placeholder = ( <AccessibleButton className="mx_MediaBody mx_MFileBody_info" onClick={this.onPlaceholderClick}> - <span className="mx_MFileBody_info_icon"> - { this.props.forExport ? - <img alt="Attachment" className="mx_export_attach_icon" src="icons/attach.svg" /> - : null } - </span> + <span className="mx_MFileBody_info_icon" /> <TextWithTooltip tooltip={presentableTextForFile(this.content, _t("Attachment"), true)}> <span className="mx_MFileBody_info_filename"> { presentableTextForFile(this.content, _t("Attachment"), true, true) } diff --git a/src/components/views/messages/RedactedBody.tsx b/src/components/views/messages/RedactedBody.tsx index 65933cb801..4ec528fdf3 100644 --- a/src/components/views/messages/RedactedBody.tsx +++ b/src/components/views/messages/RedactedBody.tsx @@ -39,7 +39,6 @@ const RedactedBody = React.forwardRef<any, IBodyProps>(({ mxEvent, forExport }, return ( <span className="mx_RedactedBody" ref={ref} title={titleText}> - { forExport ? <img alt={_t("Redacted")} className="mx_export_trash_icon" src="icons/trash.svg" /> : null } { text } </span> ); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 81f8375000..f05025ea32 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -725,6 +725,7 @@ "Invite to %(spaceName)s": "Invite to %(spaceName)s", "Share your public space": "Share your public space", "Unknown App": "Unknown App", + "Are you sure you want to exit during this export?": "Are you sure you want to exit during this export?", "HTML": "HTML", "JSON": "JSON", "Plain Text": "Plain Text", @@ -1972,7 +1973,6 @@ "<reactors/><reactedWith> reacted with %(content)s</reactedWith>": "<reactors/><reactedWith> reacted with %(content)s</reactedWith>", "<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>": "<reactors/><reactedWith>reacted with %(shortName)s</reactedWith>", "Message deleted on %(date)s": "Message deleted on %(date)s", - "Redacted": "Redacted", "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", "%(senderDisplayName)s changed the room avatar to <img/>": "%(senderDisplayName)s changed the room avatar to <img/>", @@ -2122,8 +2122,7 @@ "QR Code": "QR Code", "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.", "<a>In reply to</a> <pill>": "<a>In reply to</a> <pill>", - "In reply to <messageLink/>": "In reply to <messageLink/>", - "this message": "this message", + "In reply to <a>this message</a>": "In reply to <a>this message</a>", "Room address": "Room address", "e.g. my-room": "e.g. my-room", "Some characters not allowed": "Some characters not allowed", @@ -2329,16 +2328,13 @@ "There was an error updating your community. The server is unable to process your request.": "There was an error updating your community. The server is unable to process your request.", "Update community": "Update community", "An error has occurred.": "An error has occurred.", - "Size can only be between %(min)s MB and %(max)s MB": "Size can only be between %(min)s MB and %(max)s MB", - "Enter size between %(min)s MB and %(max)s MB": "Enter size between %(min)s MB and %(max)s MB", - "Number of messages must be a number": "Number of messages must be a number", - "Number of messages can only be between %(min)s and %(max)s": "Number of messages can only be between %(min)s and %(max)s", "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", + "Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB", + "Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s", "Number of messages": "Number of messages", "MB": "MB", "Export Cancelled": "Export Cancelled", "The export was cancelled successfully": "The export was cancelled successfully", - "Okay": "Okay", "Export Successful": "Export Successful", "Your messages were successfully exported": "Your messages were successfully exported", "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 8c419ce657..0151836792 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -25,6 +25,7 @@ import { Direction, MatrixClient } from "matrix-js-sdk"; import { MutableRefObject } from "react"; import JSZip from "jszip"; import { saveAs } from "file-saver"; +import { _t } from "../../languageHandler"; type BlobFile = { name: string; @@ -54,7 +55,7 @@ export default abstract class Exporter { protected onBeforeUnload(e: BeforeUnloadEvent): string { e.preventDefault(); - return e.returnValue = "Are you sure you want to exit during this export?"; + return e.returnValue = _t("Are you sure you want to exit during this export?"); } protected updateProgress(progress: string, log = true, show = true): void { @@ -70,7 +71,7 @@ export default abstract class Exporter { this.files.push(file); } - protected async downloadZIP(): Promise<string | null> { + protected async downloadZIP(): Promise<string | void> { const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; const zip = new JSZip(); diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 6cdbae6c48..3608cff1f2 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -31,7 +31,6 @@ import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventT import DateSeparator from "../../components/views/messages/DateSeparator"; import BaseAvatar from "../../components/views/avatars/BaseAvatar"; import exportJS from "!!raw-loader!./exportJS"; -import exportIcons from "./exportIcons"; import { ExportType } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import MatrixClientContext from "../../contexts/MatrixClientContext"; @@ -294,6 +293,7 @@ export default class HTMLExporter extends Exporter { const mxc = mxEv.getContent().url || mxEv.getContent().file?.url; eventTileMarkup = eventTileMarkup.split(mxc).join(filePath); } + eventTileMarkup = eventTileMarkup.replace(/<span class="mx_MFileBody_info_icon".*?>.*?<\/span>/, ''); if (hasAvatar) { eventTileMarkup = eventTileMarkup.replace( encodeURI(this.getAvatarURL(mxEv)).replace(/&/g, '&'), @@ -406,10 +406,6 @@ export default class HTMLExporter extends Exporter { this.addFile("css/style.css", new Blob([exportCSS])); this.addFile("js/script.js", new Blob([exportJS])); - for (const iconName in exportIcons) { - this.addFile(`icons/${iconName}`, new Blob([exportIcons[iconName]])); - } - await this.downloadZIP(); const exportEnd = performance.now(); diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 1a3a575f07..f19bc1004b 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -16,33 +16,31 @@ limitations under the License. /* eslint-disable max-len, camelcase */ -declare const __webpack_hash__: string; - import ThemeWatcher from "../../settings/watchers/ThemeWatcher"; const getExportCSS = async (): Promise<string> => { const theme = new ThemeWatcher().getEffectiveTheme(); - const hash = __webpack_hash__; - - const bundle = await fetch(`bundles/${hash}/bundle.css`); - const bundleCSS = await bundle.text(); - let themeCSS: string; - if (theme === 'light') { - const res = await fetch(`bundles/${hash}/theme-light.css`); - themeCSS = await res.text(); - } else { - const res = await fetch(`bundles/${hash}/theme-dark.css`); - themeCSS = await res.text(); + const stylesheets: string[] = []; + document.querySelectorAll('link[rel="stylesheet"]').forEach((e: any) => { + if (e.href.endsWith("bundle.css") || e.href.endsWith(`theme-${theme}.css`)) { + stylesheets.push(e.href); + } + }); + let CSS: string; + for (const stylesheet of stylesheets) { + const res = await fetch(stylesheet); + const innerText = await res.text(); + CSS += innerText; } const fontFaceRegex = /@font-face {.*?}/sg; - themeCSS = themeCSS.replace(fontFaceRegex, ''); - themeCSS = themeCSS.replace( + CSS = CSS.replace(fontFaceRegex, ''); + CSS = CSS.replace( /font-family: Inter/g, `font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif`, ); - themeCSS = themeCSS.replace( + CSS = CSS.replace( /font-family: Inconsolata/g, "font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace", ); @@ -148,6 +146,10 @@ const getExportCSS = async (): Promise<string> => { top: 1px; left: 0; } + + .mx_RedactedBody { + padding-left: unset; + } img { white-space: nowrap; @@ -155,7 +157,7 @@ const getExportCSS = async (): Promise<string> => { } `; - return themeCSS + bundleCSS + customCSS; + return CSS + customCSS; }; export default getExportCSS; diff --git a/src/utils/exportUtils/exportIcons.ts b/src/utils/exportUtils/exportIcons.ts deleted file mode 100644 index 7a8264f7e9..0000000000 --- a/src/utils/exportUtils/exportIcons.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* -Copyright 2021 The Matrix.org Foundation C.I.C. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -import trashSVG from "!!raw-loader!../../../res/img/element-icons/trashcan.svg"; -import attachSVG from "!!raw-loader!../../../res/img/element-icons/room/composer/attach.svg"; - -export default { - "trash.svg": trashSVG, - "attach.svg": attachSVG, -}; diff --git a/test/utils/export-test.tsx b/test/utils/export-test.tsx index c4d9b43765..66436da9c5 100644 --- a/test/utils/export-test.tsx +++ b/test/utils/export-test.tsx @@ -16,7 +16,7 @@ limitations under the License. import { IContent, MatrixClient, MatrixEvent, Room } from "matrix-js-sdk"; import { MatrixClientPeg } from "../../src/MatrixClientPeg"; -import { textForFormat, IExportOptions, ExportType } from "../../src/utils/exportUtils/exportUtils"; +import { IExportOptions, ExportType, ExportFormat } from "../../src/utils/exportUtils/exportUtils"; import '../skinned-sdk'; import PlainTextExporter from "../../src/utils/exportUtils/PlainTextExport"; import HTMLExporter from "../../src/utils/exportUtils/HtmlExport"; @@ -73,9 +73,60 @@ describe('export', function() { } const mockRoom = createRoom(); + const ts0 = Date.now(); + + function mkRedactedEvent(i = 0) { + return new MatrixEvent({ + type: "m.room.message", + sender: MY_USER_ID, + content: {}, + unsigned: { + "age": 72, + "transaction_id": "m1212121212.23", + "redacted_because": { + "content": {}, + "origin_server_ts": ts0 + i*1000, + "redacts": "$9999999999999999999999999999999999999999998", + "sender": "@me:here", + "type": "m.room.redaction", + "unsigned": { + "age": 94, + "transaction_id": "m1111111111.1", + }, + "event_id": "$9999999999999999999999999999999999999999998", + "room_id": mockRoom.roomId, + }, + }, + event_id: "$9999999999999999999999999999999999999999999", + room_id: mockRoom.roomId, + }); + } + + function mkFileEvent() { + return new MatrixEvent({ + "content": { + "body": "index.html", + "info": { + "mimetype": "text/html", + "size": 31613, + }, + "msgtype": "m.file", + "url": "mxc://test.org", + }, + "origin_server_ts": 1628872988364, + "sender": MY_USER_ID, + "type": "m.room.message", + "unsigned": { + "age": 266, + "transaction_id": "m99999999.2", + }, + "event_id": "$99999999999999999999", + "room_id": mockRoom.roomId, + }); + } + function mkEvents() { const matrixEvents = []; - const ts0 = Date.now(); let i: number; // plain text for (i = 0; i < 10; i++) { @@ -134,30 +185,7 @@ describe('export', function() { })); // redacted events for (i = 0; i < 10; i++) { - matrixEvents.push(new MatrixEvent({ - type: "m.room.message", - sender: MY_USER_ID, - content: {}, - unsigned: { - "age": 72, - "transaction_id": "m1212121212.23", - "redacted_because": { - "content": {}, - "origin_server_ts": ts0 + i*1000, - "redacts": "$9999999999999999999999999999999999999999998", - "sender": "@me:here", - "type": "m.room.redaction", - "unsigned": { - "age": 94, - "transaction_id": "m1111111111.1", - }, - "event_id": "$9999999999999999999999999999999999999999998", - "room_id": mockRoom.roomId, - }, - }, - event_id: "$9999999999999999999999999999999999999999999", - room_id: mockRoom.roomId, - })); + matrixEvents.push(mkRedactedEvent(i)); } return matrixEvents; } @@ -165,10 +193,22 @@ describe('export', function() { const events: MatrixEvent[] = mkEvents(); it('checks if the export format is valid', function() { - expect(textForFormat('HTML')).toBeTruthy(); - expect(textForFormat('JSON')).toBeTruthy(); - expect(textForFormat('PLAIN_TEXT')).toBeTruthy(); - expect(() => textForFormat('PDF')).toThrowError("Unknown format"); + function isValidFormat(format: string): boolean { + const options: string[] = Object.values(ExportFormat); + return options.includes(format); + } + expect(isValidFormat("Html")).toBeTruthy(); + expect(isValidFormat("Json")).toBeTruthy(); + expect(isValidFormat("PlainText")).toBeTruthy(); + expect(isValidFormat("Pdf")).toBeFalsy(); + }); + + it("checks if the icons' html corresponds to export regex", function() { + const exporter = new HTMLExporter(mockRoom, ExportType.Beginning, mockExportOptions, null); + const fileRegex = /<span class="mx_MFileBody_info_icon">.*?<\/span>/; + expect(fileRegex.test( + renderToString(exporter.getEventTile(mkFileEvent(), true))), + ).toBeTruthy(); }); it('checks if the export options are valid', function() { From 31c9e5962cc52cc1e4672a81ddb4b0a618d83a44 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 14 Aug 2021 00:03:02 +0530 Subject: [PATCH 162/176] Move export dialog to async-components --- .../views/dialogs/ExportDialog.tsx | 30 +++++++++---------- .../views/right_panel/RoomSummaryCard.tsx | 3 +- src/utils/exportUtils/Exporter.ts | 5 ++-- src/utils/exportUtils/HtmlExport.tsx | 6 ++-- src/utils/exportUtils/JSONExport.ts | 4 +-- src/utils/exportUtils/PlainTextExport.ts | 4 +-- src/utils/exportUtils/exportCSS.ts | 28 ++--------------- 7 files changed, 28 insertions(+), 52 deletions(-) rename src/{components => async-components}/views/dialogs/ExportDialog.tsx (93%) diff --git a/src/components/views/dialogs/ExportDialog.tsx b/src/async-components/views/dialogs/ExportDialog.tsx similarity index 93% rename from src/components/views/dialogs/ExportDialog.tsx rename to src/async-components/views/dialogs/ExportDialog.tsx index f474bcdb70..b61d7975bf 100644 --- a/src/components/views/dialogs/ExportDialog.tsx +++ b/src/async-components/views/dialogs/ExportDialog.tsx @@ -17,27 +17,27 @@ limitations under the License. import React, { useRef, useState } from "react"; import { Room } from "matrix-js-sdk/src"; import { _t } from "../../../languageHandler"; -import { IDialogProps } from "./IDialogProps"; -import BaseDialog from "./BaseDialog"; -import DialogButtons from "../elements/DialogButtons"; -import Field from "../elements/Field"; -import StyledRadioGroup from "../elements/StyledRadioGroup"; -import StyledCheckbox from "../elements/StyledCheckbox"; +import { IDialogProps } from "../../../components/views/dialogs/IDialogProps"; +import BaseDialog from "../../../components/views/dialogs/BaseDialog"; +import DialogButtons from "../../../components/views/elements/DialogButtons"; +import Field from "../../../components/views/elements/Field"; +import StyledRadioGroup from "../../../components/views/elements/StyledRadioGroup"; +import StyledCheckbox from "../../../components/views/elements/StyledCheckbox"; import { ExportFormat, ExportType, textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; -import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; +import withValidation, { IFieldState, IValidationResult } from "../../../components/views/elements/Validation"; import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; import Exporter from "../../../utils/exportUtils/Exporter"; -import Spinner from "../elements/Spinner"; +import Spinner from "../../../components/views/elements/Spinner"; import Modal from "../../../Modal"; -import InfoDialog from "./InfoDialog"; +import InfoDialog from "../../../components/views/dialogs/InfoDialog"; interface IProps extends IDialogProps { room: Room; @@ -52,7 +52,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { const [sizeLimit, setSizeLimit] = useState<number | null>(8); const sizeLimitRef = useRef<Field>(); const messageCountRef = useRef<Field>(); - const exportProgressRef = useRef<HTMLParagraphElement>(); + const [exportProgressText, setExportProgressText] = useState("Processing..."); const [displayCancel, setCancelWarning] = useState(false); const [exportCancelled, setExportCancelled] = useState(false); const [exportSuccessful, setExportSuccessful] = useState(false); @@ -78,7 +78,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, ExportType[exportType], exportOptions, - exportProgressRef, + setExportProgressText, ), ); break; @@ -88,7 +88,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, ExportType[exportType], exportOptions, - exportProgressRef, + setExportProgressText, ), ); break; @@ -98,7 +98,7 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { room, ExportType[exportType], exportOptions, - exportProgressRef, + setExportProgressText, ), ); break; @@ -368,8 +368,8 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { { isExporting ? ( <div className="mx_ExportDialog_progress"> <Spinner w={24} h={24} /> - <p ref={exportProgressRef}> - { _t("Processing...") } + <p> + { exportProgressText } </p> <DialogButtons primaryButton={_t("Cancel")} diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index c1b4112423..b59d664aa2 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -234,8 +234,7 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { }; const onRoomExportClick = async () => { - const { default: ExportDialog } = await import("../dialogs/ExportDialog"); - + const { default: ExportDialog } = await import("../../../async-components/views/dialogs/ExportDialog"); Modal.createTrackedDialog('export room dialog', '', ExportDialog, { room, }); diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 0151836792..7254bdc3a4 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -22,7 +22,6 @@ import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; import { Direction, MatrixClient } from "matrix-js-sdk"; -import { MutableRefObject } from "react"; import JSZip from "jszip"; import { saveAs } from "file-saver"; import { _t } from "../../languageHandler"; @@ -41,7 +40,7 @@ export default abstract class Exporter { protected room: Room, protected exportType: ExportType, protected exportOptions: IExportOptions, - protected exportProgressRef: MutableRefObject<HTMLParagraphElement>, + protected setProgressText: React.Dispatch<React.SetStateAction<string>>, ) { if (exportOptions.maxSize < 1 * 1024 * 1024|| // Less than 1 MB exportOptions.maxSize > 2000 * 1024 * 1024|| // More than ~ 2 GB @@ -60,7 +59,7 @@ export default abstract class Exporter { protected updateProgress(progress: string, log = true, show = true): void { if (log) console.log(progress); - if (show && this.exportProgressRef.current) this.exportProgressRef.current.innerText = progress; + if (show) this.setProgressText(progress); } protected addFile(filePath: string, blob: Blob): void { diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 3608cff1f2..39fa762596 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import React, { MutableRefObject } from "react"; +import React from "react"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; @@ -47,9 +47,9 @@ export default class HTMLExporter extends Exporter { room: Room, exportType: ExportType, exportOptions: IExportOptions, - exportProgressRef: MutableRefObject<HTMLParagraphElement>, + setProgressText: React.Dispatch<React.SetStateAction<string>>, ) { - super(room, exportType, exportOptions, exportProgressRef); + super(room, exportType, exportOptions, setProgressText); this.avatars = new Map<string, boolean>(); this.permalinkCreator = new RoomPermalinkCreator(this.room); this.totalSize = 0; diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index a2273ad918..fe9b81fd0a 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -32,9 +32,9 @@ export default class JSONExporter extends Exporter { room: Room, exportType: ExportType, exportOptions: IExportOptions, - exportProgressRef: MutableRefObject<HTMLParagraphElement>, + setProgressText: React.Dispatch<React.SetStateAction<string>>, ) { - super(room, exportType, exportOptions, exportProgressRef); + super(room, exportType, exportOptions, setProgressText); } protected createJSONString(): string { diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index 23ed6c7bbd..c95866ce9b 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -33,9 +33,9 @@ export default class PlainTextExporter extends Exporter { room: Room, exportType: ExportType, exportOptions: IExportOptions, - exportProgressRef: MutableRefObject<HTMLParagraphElement>, + setProgressText: React.Dispatch<React.SetStateAction<string>>, ) { - super(room, exportType, exportOptions, exportProgressRef); + super(room, exportType, exportOptions, setProgressText); this.totalSize = 0; this.mediaOmitText = !this.exportOptions.attachmentsIncluded ? _t("Media omitted") diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index f19bc1004b..67795830a2 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -101,28 +101,16 @@ const getExportCSS = async (): Promise<string> => { from {bottom: 30px; opacity: 1;} to {bottom: 0; opacity: 0;} } - - .mx_MFileBody_info .mx_MFileBody_info_icon img.mx_export_attach_icon { - content: ''; - background-color: ${theme == 'light' ? "#ffffff": "inherit"}; - width: 13px; - height: 15px; - position: absolute; - top: 8px; - left: 9px; - } - + * { scroll-behavior: smooth !important; } - .mx_Export_EventWrapper:target { background: ${theme == 'light' ? "white" : "#15191E"}; animation: mx_event_highlight_animation 2s linear; } - @keyframes mx_event_highlight_animation { 0%,100% { background: ${theme == 'light' ? "white" : "#15191E"}; @@ -131,26 +119,16 @@ const getExportCSS = async (): Promise<string> => { background: ${theme == 'light' ? "#e3e2df" : "#21262c"}; } } - + .mx_ReplyThread_Export { margin-top: -5px; margin-bottom: 5px; } - - .mx_RedactedBody img.mx_export_trash_icon { - height: 14px; - width: 14px; - background-color: ${theme == 'light' ? "#ffffff": "inherit"}; - content: ''; - position: absolute; - top: 1px; - left: 0; - } .mx_RedactedBody { padding-left: unset; } - + img { white-space: nowrap; overflow: hidden; From 5c78acfca4fb6af193f7479a722c3054b58c500c Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 14 Aug 2021 00:07:13 +0530 Subject: [PATCH 163/176] Remove forExport prop for MemberAvatar --- src/components/views/rooms/EventTile.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 6e94a17388..9dc9f8d484 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -961,7 +961,6 @@ export default class EventTile extends React.Component<IProps, IState> { avatar = ( <div className="mx_EventTile_avatar"> <MemberAvatar - forExport={this.props.forExport} member={member} width={avatarSize} height={avatarSize} From 3efa699b88e2bd3a4e4f29a6fbbe6f7febe4c887 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 14 Aug 2021 00:14:57 +0530 Subject: [PATCH 164/176] Delint --- src/components/views/messages/MAudioBody.tsx | 1 + src/components/views/messages/MFileBody.tsx | 1 + src/components/views/messages/MImageBody.tsx | 3 +- src/components/views/messages/MVideoBody.tsx | 1 + src/i18n/strings/en_EN.json | 37 ++++++++++---------- src/utils/exportUtils/JSONExport.ts | 1 - src/utils/exportUtils/PlainTextExport.ts | 1 - 7 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/components/views/messages/MAudioBody.tsx b/src/components/views/messages/MAudioBody.tsx index 836b1eb79a..6cbd2f2b70 100644 --- a/src/components/views/messages/MAudioBody.tsx +++ b/src/components/views/messages/MAudioBody.tsx @@ -86,6 +86,7 @@ export default class MAudioBody extends React.PureComponent<IBodyProps, IState> if (this.props.forExport) { const content = this.props.mxEvent.getContent(); + // During export, the content url will point to the MSC, which will later point to a local url const contentUrl = content.file?.url || content.url; return ( <span className="mx_MAudioBody"> diff --git a/src/components/views/messages/MFileBody.tsx b/src/components/views/messages/MFileBody.tsx index 3675b14295..49c148c56c 100644 --- a/src/components/views/messages/MFileBody.tsx +++ b/src/components/views/messages/MFileBody.tsx @@ -213,6 +213,7 @@ export default class MFileBody extends React.Component<IProps, IState> { if (this.props.forExport) { const content = this.props.mxEvent.getContent(); + // During export, the content url will point to the MSC, which will later point to a local url return <span className="mx_MFileBody"> <a href={content.file?.url || content.url}> { placeholder } diff --git a/src/components/views/messages/MImageBody.tsx b/src/components/views/messages/MImageBody.tsx index ae82c57a5e..2d402bdc21 100644 --- a/src/components/views/messages/MImageBody.tsx +++ b/src/components/views/messages/MImageBody.tsx @@ -164,7 +164,8 @@ export default class MImageBody extends React.Component<IBodyProps, IState> { protected getContentUrl(): string { const content: IMediaEventContent = this.props.mxEvent.getContent(); - if (this.props.forExport) return content.url || content.file.url; + // During export, the content url will point to the MSC, which will later point to a local url + if (this.props.forExport) return content.url || content.file?.url; if (this.media.isEncrypted) { return this.state.decryptedUrl; } else { diff --git a/src/components/views/messages/MVideoBody.tsx b/src/components/views/messages/MVideoBody.tsx index 3239482515..8cb03bfa7b 100644 --- a/src/components/views/messages/MVideoBody.tsx +++ b/src/components/views/messages/MVideoBody.tsx @@ -78,6 +78,7 @@ export default class MVideoBody extends React.PureComponent<IBodyProps, IState> private getContentUrl(): string|null { const content = this.props.mxEvent.getContent<IMediaEventContent>(); + // During export, the content url will point to the MSC, which will later point to a local url if (this.props.forExport) return content.file?.url || content.url; const media = mediaFromContent(content); if (media.isEncrypted) { diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 090ee23ba8..d62871af23 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2329,25 +2329,6 @@ "There was an error updating your community. The server is unable to process your request.": "There was an error updating your community. The server is unable to process your request.", "Update community": "Update community", "An error has occurred.": "An error has occurred.", - "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", - "Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB", - "Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s", - "Number of messages": "Number of messages", - "MB": "MB", - "Export Cancelled": "Export Cancelled", - "The export was cancelled successfully": "The export was cancelled successfully", - "Export Successful": "Export Successful", - "Your messages were successfully exported": "Your messages were successfully exported", - "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - "Stop": "Stop", - "Exporting your data": "Exporting your data", - "Export Chat": "Export Chat", - "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", - "Format": "Format", - "Size Limit": "Size Limit", - "Include Attachments": "Include Attachments", - "Processing...": "Processing...", - "Export": "Export", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", "Tell us below how you feel about %(brand)s so far.": "Tell us below how you feel about %(brand)s so far.", @@ -3048,6 +3029,24 @@ "Space Autocomplete": "Space Autocomplete", "Users": "Users", "User Autocomplete": "User Autocomplete", + "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", + "Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB", + "Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s", + "Number of messages": "Number of messages", + "MB": "MB", + "Export Cancelled": "Export Cancelled", + "The export was cancelled successfully": "The export was cancelled successfully", + "Export Successful": "Export Successful", + "Your messages were successfully exported": "Your messages were successfully exported", + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + "Stop": "Stop", + "Exporting your data": "Exporting your data", + "Export Chat": "Export Chat", + "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", + "Format": "Format", + "Size Limit": "Size Limit", + "Include Attachments": "Include Attachments", + "Export": "Export", "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.", "For maximum security, this should be different from your account password.": "For maximum security, this should be different from your account password.", "Enter a Security Phrase": "Enter a Security Phrase", diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index fe9b81fd0a..8166920b6a 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -22,7 +22,6 @@ import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { ExportType } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import { EventType } from "matrix-js-sdk/src/@types/event"; -import { MutableRefObject } from "react"; export default class JSONExporter extends Exporter { protected totalSize = 0; diff --git a/src/utils/exportUtils/PlainTextExport.ts b/src/utils/exportUtils/PlainTextExport.ts index c95866ce9b..8e3ba81c4e 100644 --- a/src/utils/exportUtils/PlainTextExport.ts +++ b/src/utils/exportUtils/PlainTextExport.ts @@ -23,7 +23,6 @@ import { haveTileForEvent } from "../../components/views/rooms/EventTile"; import { ExportType } from "./exportUtils"; import { IExportOptions } from "./exportUtils"; import { textForEvent } from "../../TextForEvent"; -import { MutableRefObject } from "react"; export default class PlainTextExporter extends Exporter { protected totalSize: number; From 5dbc1034865328b0bac7b9de6086160807bbe43e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Sat, 14 Aug 2021 11:50:13 +0530 Subject: [PATCH 165/176] Modify font-regex and declare json type --- src/utils/exportUtils/JSONExport.ts | 2 +- src/utils/exportUtils/exportCSS.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/JSONExport.ts b/src/utils/exportUtils/JSONExport.ts index 8166920b6a..4d862e69e3 100644 --- a/src/utils/exportUtils/JSONExport.ts +++ b/src/utils/exportUtils/JSONExport.ts @@ -25,7 +25,7 @@ import { EventType } from "matrix-js-sdk/src/@types/event"; export default class JSONExporter extends Exporter { protected totalSize = 0; - protected messages: any[] = []; + protected messages: Record<string, any>[] = []; constructor( room: Room, diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 67795830a2..965c7d775a 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -36,7 +36,7 @@ const getExportCSS = async (): Promise<string> => { CSS = CSS.replace(fontFaceRegex, ''); CSS = CSS.replace( - /font-family: Inter/g, + /font-family: (Inter|'Inter')/g, `font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif`, ); From 33bc26f0390afb98c76a5ec19822f1a8b7ada4da Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 17 Aug 2021 20:04:28 +0530 Subject: [PATCH 166/176] Change summary tiles order --- src/components/views/right_panel/RoomSummaryCard.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index b59d664aa2..86106f3018 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -280,15 +280,15 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { <Button className="mx_RoomSummaryCard_icon_files" onClick={onRoomFilesClick}> { _t("Show files") } </Button> + <Button className="mx_RoomSummaryCard_icon_export" onClick={onRoomExportClick}> + { _t("Export chat") } + </Button> <Button className="mx_RoomSummaryCard_icon_share" onClick={onShareRoomClick}> { _t("Share room") } </Button> <Button className="mx_RoomSummaryCard_icon_settings" onClick={onRoomSettingsClick}> { _t("Room settings") } </Button> - <Button className="mx_RoomSummaryCard_icon_export" onClick={onRoomExportClick}> - { _t("Export chat") } - </Button> </Group> { SettingsStore.getValue(UIFeature.Widgets) && <AppsSection room={room} /> } From 4dae737922c11473e1bb5d9253860defe1ec561e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Tue, 17 Aug 2021 20:06:09 +0530 Subject: [PATCH 167/176] i18n --- src/i18n/strings/en_EN.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index d62871af23..53654fef80 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1818,9 +1818,9 @@ "%(count)s people|other": "%(count)s people", "%(count)s people|one": "%(count)s person", "Show files": "Show files", + "Export chat": "Export chat", "Share room": "Share room", "Room settings": "Room settings", - "Export chat": "Export chat", "Trusted": "Trusted", "Not trusted": "Not trusted", "%(count)s verified sessions|other": "%(count)s verified sessions", From 7bad0b99d1812adeab376ed8b474ed451daa2cb7 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 18 Aug 2021 08:37:10 +0530 Subject: [PATCH 168/176] Fix links, header and export text --- src/components/views/rooms/EventTile.tsx | 20 ++++++++------- src/utils/exportUtils/HtmlExport.tsx | 31 ++++++++++++++++++------ src/utils/exportUtils/exportCSS.ts | 2 +- 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/components/views/rooms/EventTile.tsx b/src/components/views/rooms/EventTile.tsx index 9dc9f8d484..b4a2e46feb 100644 --- a/src/components/views/rooms/EventTile.tsx +++ b/src/components/views/rooms/EventTile.tsx @@ -443,16 +443,18 @@ export default class EventTile extends React.Component<IProps, IState> { componentDidMount() { this.suppressReadReceiptAnimation = false; const client = this.context; - client.on("deviceVerificationChanged", this.onDeviceVerificationChanged); - client.on("userTrustStatusChanged", this.onUserVerificationChanged); - this.props.mxEvent.on("Event.decrypted", this.onDecrypted); - if (this.props.showReactions) { - this.props.mxEvent.on("Event.relationsCreated", this.onReactionsCreated); - } + if (!this.props.forExport) { + client.on("deviceVerificationChanged", this.onDeviceVerificationChanged); + client.on("userTrustStatusChanged", this.onUserVerificationChanged); + this.props.mxEvent.on("Event.decrypted", this.onDecrypted); + if (this.props.showReactions) { + this.props.mxEvent.on("Event.relationsCreated", this.onReactionsCreated); + } - if (this.shouldShowSentReceipt || this.shouldShowSendingReceipt) { - client.on("Room.receipt", this.onRoomReceipt); - this.isListeningForReceipts = true; + if (this.shouldShowSentReceipt || this.shouldShowSendingReceipt) { + client.on("Room.receipt", this.onRoomReceipt); + this.isListeningForReceipts = true; + } } } diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 39fa762596..124b390293 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -15,17 +15,18 @@ limitations under the License. */ import React from "react"; +import ReactDOM from "react-dom"; import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import { renderToStaticMarkup } from "react-dom/server"; +import { renderToStaticMarkup, renderToString } from "react-dom/server"; import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; import { formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; import { RoomPermalinkCreator } from "../permalinks/Permalinks"; import { _t } from "../../languageHandler"; -import { EventType } from "matrix-js-sdk/src/@types/event"; +import { EventType, MsgType } from "matrix-js-sdk/src/@types/event"; import * as Avatar from "../../Avatar"; import EventTile, { haveTileForEvent } from "../../components/views/rooms/EventTile"; import DateSeparator from "../../components/views/messages/DateSeparator"; @@ -115,7 +116,7 @@ export default class HTMLExporter extends Exporter { { exporterName ? ( <> <b>{ exporterName }</b> - { exporter } + { " (" + exporter + ")" } </> ) : ( <b>{ exporter }</b> @@ -263,6 +264,7 @@ export default class HTMLExporter extends Exporter { replacingEventId={mxEv.replacingEventId()} forExport={true} readReceipts={null} + alwaysShowTimestamps={true} readReceiptMap={null} showUrlPreview={false} checkUnmounting={() => false} @@ -285,10 +287,26 @@ export default class HTMLExporter extends Exporter { protected async getEventTileMarkup(mxEv: MatrixEvent, continuation: boolean, filePath?: string) { const hasAvatar = !!this.getAvatarURL(mxEv); if (hasAvatar) await this.saveAvatarIfNeeded(mxEv); + const EventTile = this.getEventTile(mxEv, continuation); + let eventTileMarkup: string; - const eventTile = this.getEventTile(mxEv, continuation); + if ( + mxEv.getContent().msgtype == MsgType.Emote || + mxEv.getContent().msgtype == MsgType.Notice || + mxEv.getContent().msgtype === MsgType.Text + ) { + // to linkify textual events, we'll need lifecycle methods which won't be invoked in renderToString + // So, we'll have to render the component into a temporary root element + const tempRoot = document.createElement('div'); + ReactDOM.render( + EventTile, + tempRoot, + ); + eventTileMarkup = tempRoot.innerHTML; + } else { + eventTileMarkup = renderToString(EventTile); + } - let eventTileMarkup = renderToStaticMarkup(eventTile); if (filePath) { const mxc = mxEv.getContent().url || mxEv.getContent().file?.url; eventTileMarkup = eventTileMarkup.split(mxc).join(filePath); @@ -390,8 +408,7 @@ export default class HTMLExporter extends Exporter { } public async export() { - this.updateProgress("Starting export process", true, false); - this.updateProgress("Fetching events"); + this.updateProgress("Starting export..."); const fetchStart = performance.now(); const res = await this.getRequiredEvents(); diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 965c7d775a..7f83711fc2 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -121,7 +121,7 @@ const getExportCSS = async (): Promise<string> => { } .mx_ReplyThread_Export { - margin-top: -5px; + margin-top: 0px; margin-bottom: 5px; } From fea9f4a4df552f2e07915eb5a4ac83a00a4a3a54 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 18 Aug 2021 08:38:39 +0530 Subject: [PATCH 169/176] Use staticMarkup instead of string --- src/utils/exportUtils/HtmlExport.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 124b390293..1c39dfe844 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -20,7 +20,7 @@ import Exporter from "./Exporter"; import { mediaFromMxc } from "../../customisations/Media"; import { Room } from "matrix-js-sdk/src/models/room"; import { MatrixEvent } from "matrix-js-sdk/src/models/event"; -import { renderToStaticMarkup, renderToString } from "react-dom/server"; +import { renderToStaticMarkup } from "react-dom/server"; import { Layout } from "../../settings/Layout"; import { shouldFormContinuation } from "../../components/structures/MessagePanel"; import { formatFullDateNoDayNoTime, wantsDateSeparator } from "../../DateUtils"; @@ -304,7 +304,7 @@ export default class HTMLExporter extends Exporter { ); eventTileMarkup = tempRoot.innerHTML; } else { - eventTileMarkup = renderToString(EventTile); + eventTileMarkup = renderToStaticMarkup(EventTile); } if (filePath) { From 98b0642b65fcb5358ddf24a7494620d91c2aaace Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 20 Aug 2021 15:01:48 +0530 Subject: [PATCH 170/176] Split html into multiple files to improve scroll performance --- src/async-components/views/dialogs/ExportDialog.tsx | 6 ++++++ src/utils/exportUtils/HtmlExport.tsx | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/async-components/views/dialogs/ExportDialog.tsx b/src/async-components/views/dialogs/ExportDialog.tsx index b61d7975bf..40c9db0a67 100644 --- a/src/async-components/views/dialogs/ExportDialog.tsx +++ b/src/async-components/views/dialogs/ExportDialog.tsx @@ -260,6 +260,9 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { title: _t("Export Cancelled"), description: <p>{ _t("The export was cancelled successfully") }</p>, hasCloseButton: true, + onFinished: () => { + setExportCancelled(false); + }, }); return null; } else if (exportSuccessful) { @@ -268,6 +271,9 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { title: _t("Export Successful"), description: <p>{ _t("Your messages were successfully exported") }</p>, hasCloseButton: true, + onFinished: () => { + setExportSuccessful(false); + }, }); return null; } else if (displayCancel) { diff --git a/src/utils/exportUtils/HtmlExport.tsx b/src/utils/exportUtils/HtmlExport.tsx index 1c39dfe844..5f8413fad8 100644 --- a/src/utils/exportUtils/HtmlExport.tsx +++ b/src/utils/exportUtils/HtmlExport.tsx @@ -387,10 +387,10 @@ export default class HTMLExporter extends Exporter { return eventTile; } - protected async createHTML(events: MatrixEvent[]) { + protected async createHTML(events: MatrixEvent[], start: number) { let content = ""; let prevEvent = null; - for (let i = 0; i < events.length; i++) { + for (let i = start; i < Math.min(start + 1000, events.length); i++) { const event = events[i]; this.updateProgress(`Processing event ${i + 1} out of ${events.length}`, false, true); if (this.cancelled) return this.cleanUp(); @@ -417,9 +417,11 @@ export default class HTMLExporter extends Exporter { this.updateProgress(`Fetched ${res.length} events in ${(fetchEnd - fetchStart)/1000}s`, true, false); this.updateProgress("Creating HTML..."); - const html = await this.createHTML(res); + for (let page = 0; page < res.length / 1000; page++) { + const html = await this.createHTML(res, page * 1000); + this.addFile(`messages${page ? page + 1 : ""}.html`, new Blob([html])); + } const exportCSS = await getExportCSS(); - this.addFile("index.html", new Blob([html])); this.addFile("css/style.css", new Blob([exportCSS])); this.addFile("js/script.js", new Blob([exportJS])); From b49c8ebf601ececb2f79027b220c98e17ecb4650 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Fri, 20 Aug 2021 17:12:52 +0530 Subject: [PATCH 171/176] Increase max_width for exported html --- src/utils/exportUtils/exportCSS.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 7f83711fc2..46024590a7 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -133,6 +133,10 @@ const getExportCSS = async (): Promise<string> => { white-space: nowrap; overflow: hidden; } + + .mx_MatrixChat{ + max_width: 100%; + } `; return CSS + customCSS; From d1e3d35d40dbba00dd9d767767b9d821159c0244 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 22 Sep 2021 22:17:23 +0530 Subject: [PATCH 172/176] Change export bundle filename format, light theme for all exports and import jszip after export cta --- res/css/views/dialogs/_ExportDialog.scss | 2 +- .../views/dialogs/ExportDialog.tsx | 64 ++++---- .../views/right_panel/RoomSummaryCard.tsx | 2 +- src/i18n/strings/en_EN.json | 2 +- src/utils/exportUtils/Exporter.ts | 6 +- src/utils/exportUtils/exportCSS.ts | 99 +------------ src/utils/exportUtils/exportCustomCSS.css | 138 ++++++++++++++++++ 7 files changed, 178 insertions(+), 135 deletions(-) rename src/{async-components => components}/views/dialogs/ExportDialog.tsx (89%) create mode 100644 src/utils/exportUtils/exportCustomCSS.css diff --git a/res/css/views/dialogs/_ExportDialog.scss b/res/css/views/dialogs/_ExportDialog.scss index f3e418354c..4727ab5f31 100644 --- a/res/css/views/dialogs/_ExportDialog.scss +++ b/res/css/views/dialogs/_ExportDialog.scss @@ -20,7 +20,7 @@ limitations under the License. display: block; font-family: $font-family; font-weight: $font-semi-bold; - color: $primary-fg-color; + color: $accent-fg-color; margin-top: 18px; margin-bottom: 12px; } diff --git a/src/async-components/views/dialogs/ExportDialog.tsx b/src/components/views/dialogs/ExportDialog.tsx similarity index 89% rename from src/async-components/views/dialogs/ExportDialog.tsx rename to src/components/views/dialogs/ExportDialog.tsx index 40c9db0a67..33a14887fb 100644 --- a/src/async-components/views/dialogs/ExportDialog.tsx +++ b/src/components/views/dialogs/ExportDialog.tsx @@ -17,27 +17,26 @@ limitations under the License. import React, { useRef, useState } from "react"; import { Room } from "matrix-js-sdk/src"; import { _t } from "../../../languageHandler"; -import { IDialogProps } from "../../../components/views/dialogs/IDialogProps"; -import BaseDialog from "../../../components/views/dialogs/BaseDialog"; -import DialogButtons from "../../../components/views/elements/DialogButtons"; -import Field from "../../../components/views/elements/Field"; -import StyledRadioGroup from "../../../components/views/elements/StyledRadioGroup"; -import StyledCheckbox from "../../../components/views/elements/StyledCheckbox"; +import { IDialogProps } from "./IDialogProps"; +import BaseDialog from "./BaseDialog"; +import DialogButtons from "../elements/DialogButtons"; +import Field from "../elements/Field"; +import StyledRadioGroup from "../elements/StyledRadioGroup"; +import StyledCheckbox from "../elements/StyledCheckbox"; import { ExportFormat, ExportType, textForFormat, textForType, } from "../../../utils/exportUtils/exportUtils"; -import withValidation, { IFieldState, IValidationResult } from "../../../components/views/elements/Validation"; +import withValidation, { IFieldState, IValidationResult } from "../elements/Validation"; import HTMLExporter from "../../../utils/exportUtils/HtmlExport"; import JSONExporter from "../../../utils/exportUtils/JSONExport"; import PlainTextExporter from "../../../utils/exportUtils/PlainTextExport"; import { useStateCallback } from "../../../hooks/useStateCallback"; import Exporter from "../../../utils/exportUtils/Exporter"; -import Spinner from "../../../components/views/elements/Spinner"; -import Modal from "../../../Modal"; -import InfoDialog from "../../../components/views/dialogs/InfoDialog"; +import Spinner from "../elements/Spinner"; +import InfoDialog from "./InfoDialog"; interface IProps extends IDialogProps { room: Room; @@ -215,11 +214,10 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { }; const confirmCanel = async () => { - await exporter?.cancelExport().then(() => { - setExportCancelled(true); - setExporting(false); - setExporter(null); - }); + await exporter?.cancelExport(); + setExportCancelled(true); + setExporting(false); + setExporter(null); }; const exportFormatOptions = Object.keys(ExportFormat).map((format) => ({ @@ -256,26 +254,26 @@ const ExportDialog: React.FC<IProps> = ({ room, onFinished }) => { if (exportCancelled) { // Display successful cancellation message - Modal.createTrackedDialog("Export Cancelled", "", InfoDialog, { - title: _t("Export Cancelled"), - description: <p>{ _t("The export was cancelled successfully") }</p>, - hasCloseButton: true, - onFinished: () => { - setExportCancelled(false); - }, - }); - return null; + return ( + <InfoDialog + title={_t("Export Successful")} + description={_t("The export was cancelled successfully")} + hasCloseButton={true} + onFinished={onFinished} + /> + ); } else if (exportSuccessful) { // Display successful export message - Modal.createTrackedDialog("Export Successful", "", InfoDialog, { - title: _t("Export Successful"), - description: <p>{ _t("Your messages were successfully exported") }</p>, - hasCloseButton: true, - onFinished: () => { - setExportSuccessful(false); - }, - }); - return null; + return ( + <InfoDialog + title={_t("Export Successful")} + description={_t( + "Your export was successful. Find it in your Downloads folder.", + )} + hasCloseButton={true} + onFinished={onFinished} + /> + ); } else if (displayCancel) { // Display cancel warning return ( diff --git a/src/components/views/right_panel/RoomSummaryCard.tsx b/src/components/views/right_panel/RoomSummaryCard.tsx index db642ead3d..1fe556dde2 100644 --- a/src/components/views/right_panel/RoomSummaryCard.tsx +++ b/src/components/views/right_panel/RoomSummaryCard.tsx @@ -47,6 +47,7 @@ import { useRoomMemberCount } from "../../../hooks/useRoomMembers"; import { Container, MAX_PINNED, WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; import RoomName from "../elements/RoomName"; import UIStore from "../../../stores/UIStore"; +import ExportDialog from "../dialogs/ExportDialog"; interface IProps { room: Room; @@ -241,7 +242,6 @@ const RoomSummaryCard: React.FC<IProps> = ({ room, onClose }) => { }; const onRoomExportClick = async () => { - const { default: ExportDialog } = await import("../../../async-components/views/dialogs/ExportDialog"); Modal.createTrackedDialog('export room dialog', '', ExportDialog, { room, }); diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 9e6c90ec72..e80aabdd61 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -3061,7 +3061,7 @@ "Export Cancelled": "Export Cancelled", "The export was cancelled successfully": "The export was cancelled successfully", "Export Successful": "Export Successful", - "Your messages were successfully exported": "Your messages were successfully exported", + "Your export was successful. Find it in your Downloads folder.": "Your export was successful. Find it in your Downloads folder.", "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", "Stop": "Stop", "Exporting your data": "Exporting your data", diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 7254bdc3a4..becc36449d 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -22,9 +22,9 @@ import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; import { Direction, MatrixClient } from "matrix-js-sdk"; -import JSZip from "jszip"; import { saveAs } from "file-saver"; import { _t } from "../../languageHandler"; +import SdkConfig from "../../SdkConfig"; type BlobFile = { name: string; @@ -71,7 +71,9 @@ export default abstract class Exporter { } protected async downloadZIP(): Promise<string | void> { - const filename = `matrix-export-${formatFullDateNoDay(new Date())}.zip`; + const brand = SdkConfig.get().brand; + const filename = `${brand} - Chat Export -${formatFullDateNoDay(new Date())}.zip`; + const { default: JSZip } = await import('jszip'); const zip = new JSZip(); // Create a writable stream to the directory diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 46024590a7..3bad94d938 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -16,13 +16,12 @@ limitations under the License. /* eslint-disable max-len, camelcase */ -import ThemeWatcher from "../../settings/watchers/ThemeWatcher"; +import customCSS from "!!raw-loader!./exportCustomCSS.css"; const getExportCSS = async (): Promise<string> => { - const theme = new ThemeWatcher().getEffectiveTheme(); const stylesheets: string[] = []; document.querySelectorAll('link[rel="stylesheet"]').forEach((e: any) => { - if (e.href.endsWith("bundle.css") || e.href.endsWith(`theme-${theme}.css`)) { + if (e.href.endsWith("bundle.css") || e.href.endsWith("theme-light.css")) { stylesheets.push(e.href); } }); @@ -45,100 +44,6 @@ const getExportCSS = async (): Promise<string> => { "font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace", ); - const customCSS = ` -#snackbar { - display: flex; - visibility: hidden; - min-width: 250px; - margin-left: -125px; - background-color: #333; - color: #fff; - text-align: center; - position: fixed; - z-index: 1; - left: 50%; - bottom: 30px; - font-size: 17px; - padding: 6px 16px; - font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif; - font-weight: 400; - line-height: 1.43; - border-radius: 4px; - letter-spacing: 0.01071em; - } - - #snackbar.mx_show { - visibility: visible; - -webkit-animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; - animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; - } - - a.mx_reply_anchor{ - cursor: pointer; - color: #238cf5; - } - - a.mx_reply_anchor:hover{ - text-decoration: underline; - } - - @-webkit-keyframes mx_snackbar_fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 30px; opacity: 1;} - } - - @keyframes mx_snackbar_fadein { - from {bottom: 0; opacity: 0;} - to {bottom: 30px; opacity: 1;} - } - - @-webkit-keyframes mx_snackbar_fadeout { - from {bottom: 30px; opacity: 1;} - to {bottom: 0; opacity: 0;} - } - - @keyframes mx_snackbar_fadeout { - from {bottom: 30px; opacity: 1;} - to {bottom: 0; opacity: 0;} - } - - * { - scroll-behavior: smooth !important; - } - - .mx_Export_EventWrapper:target { - background: ${theme == 'light' ? "white" : "#15191E"}; - animation: mx_event_highlight_animation 2s linear; - } - - @keyframes mx_event_highlight_animation { - 0%,100% { - background: ${theme == 'light' ? "white" : "#15191E"}; - } - 50% { - background: ${theme == 'light' ? "#e3e2df" : "#21262c"}; - } - } - - .mx_ReplyThread_Export { - margin-top: 0px; - margin-bottom: 5px; - } - - .mx_RedactedBody { - padding-left: unset; - } - - img { - white-space: nowrap; - overflow: hidden; - } - - .mx_MatrixChat{ - max_width: 100%; - } -`; - return CSS + customCSS; }; diff --git a/src/utils/exportUtils/exportCustomCSS.css b/src/utils/exportUtils/exportCustomCSS.css new file mode 100644 index 0000000000..284f54ac08 --- /dev/null +++ b/src/utils/exportUtils/exportCustomCSS.css @@ -0,0 +1,138 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* + This file is raw-imported (imported as plain text) for the export bundle, which is the reason for the .css format and the colours being hard-coded hard-coded. +*/ + +#snackbar { + display: flex; + visibility: hidden; + min-width: 250px; + margin-left: -125px; + background-color: #333; + color: #fff; + text-align: center; + position: fixed; + z-index: 1; + left: 50%; + bottom: 30px; + font-size: 17px; + padding: 6px 16px; + font-family: -apple-system, BlinkMacSystemFont, avenir next, avenir, + segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, + sans-serif; + font-weight: 400; + line-height: 1.43; + border-radius: 4px; + letter-spacing: 0.01071em; +} + +#snackbar.mx_show { + visibility: visible; + -webkit-animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; + animation: mx_snackbar_fadein 0.5s, mx_snackbar_fadeout 0.5s 2.5s; +} + +a.mx_reply_anchor { + cursor: pointer; + color: #238cf5; +} + +a.mx_reply_anchor:hover { + text-decoration: underline; +} + +@-webkit-keyframes mx_snackbar_fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@keyframes mx_snackbar_fadein { + from { + bottom: 0; + opacity: 0; + } + to { + bottom: 30px; + opacity: 1; + } +} + +@-webkit-keyframes mx_snackbar_fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +@keyframes mx_snackbar_fadeout { + from { + bottom: 30px; + opacity: 1; + } + to { + bottom: 0; + opacity: 0; + } +} + +* { + scroll-behavior: smooth !important; +} + +.mx_Export_EventWrapper:target { + background: white; + animation: mx_event_highlight_animation 2s linear; +} + +@keyframes mx_event_highlight_animation { + 0%, + 100% { + background: white; + } + 50% { + background: #e3e2df; + } +} + +.mx_ReplyThread_Export { + margin-top: 0px; + margin-bottom: 5px; +} + +.mx_RedactedBody { + padding-left: unset; +} + +img { + white-space: nowrap; + overflow: hidden; +} + +.mx_MatrixChat { + max-width: 100%; +} From f35dae8c943e3dc0edeada13f498d19a71e2c414 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 22 Sep 2021 22:22:45 +0530 Subject: [PATCH 173/176] i18n --- src/i18n/strings/en_EN.json | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e80aabdd61..32e8411a26 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -2355,6 +2355,23 @@ "There was an error updating your community. The server is unable to process your request.": "There was an error updating your community. The server is unable to process your request.", "Update community": "Update community", "An error has occurred.": "An error has occurred.", + "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", + "Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB", + "Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s", + "Number of messages": "Number of messages", + "MB": "MB", + "Export Successful": "Export Successful", + "The export was cancelled successfully": "The export was cancelled successfully", + "Your export was successful. Find it in your Downloads folder.": "Your export was successful. Find it in your Downloads folder.", + "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", + "Stop": "Stop", + "Exporting your data": "Exporting your data", + "Export Chat": "Export Chat", + "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", + "Format": "Format", + "Size Limit": "Size Limit", + "Include Attachments": "Include Attachments", + "Export": "Export", "Feedback sent": "Feedback sent", "Rate %(brand)s": "Rate %(brand)s", "Tell us below how you feel about %(brand)s so far.": "Tell us below how you feel about %(brand)s so far.", @@ -3053,24 +3070,6 @@ "Space Autocomplete": "Space Autocomplete", "Users": "Users", "User Autocomplete": "User Autocomplete", - "Enter a number between %(min)s and %(max)s": "Enter a number between %(min)s and %(max)s", - "Size can only be a number between %(min)s MB and %(max)s MB": "Size can only be a number between %(min)s MB and %(max)s MB", - "Number of messages can only be a number between %(min)s and %(max)s": "Number of messages can only be a number between %(min)s and %(max)s", - "Number of messages": "Number of messages", - "MB": "MB", - "Export Cancelled": "Export Cancelled", - "The export was cancelled successfully": "The export was cancelled successfully", - "Export Successful": "Export Successful", - "Your export was successful. Find it in your Downloads folder.": "Your export was successful. Find it in your Downloads folder.", - "Are you sure you want to stop exporting your data? If you do, you'll need to start over.": "Are you sure you want to stop exporting your data? If you do, you'll need to start over.", - "Stop": "Stop", - "Exporting your data": "Exporting your data", - "Export Chat": "Export Chat", - "Select from the options below to export chats from your timeline": "Select from the options below to export chats from your timeline", - "Format": "Format", - "Size Limit": "Size Limit", - "Include Attachments": "Include Attachments", - "Export": "Export", "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.": "We'll store an encrypted copy of your keys on our server. Secure your backup with a Security Phrase.", "For maximum security, this should be different from your account password.": "For maximum security, this should be different from your account password.", "Enter a Security Phrase": "Enter a Security Phrase", From 6ccb7e91452a34eab31eab9a1e92cfa5685b84f6 Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 29 Sep 2021 19:37:21 +0530 Subject: [PATCH 174/176] Space after brand --- src/utils/exportUtils/Exporter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index becc36449d..3209dd085b 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -72,7 +72,7 @@ export default abstract class Exporter { protected async downloadZIP(): Promise<string | void> { const brand = SdkConfig.get().brand; - const filename = `${brand} - Chat Export -${formatFullDateNoDay(new Date())}.zip`; + const filename = `${brand} - Chat Export - ${formatFullDateNoDay(new Date())}.zip`; const { default: JSZip } = await import('jszip'); const zip = new JSZip(); From d264f5f98e8984751dc11cd8abecc3018847d62f Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Wed, 29 Sep 2021 20:51:18 +0530 Subject: [PATCH 175/176] Change js-sdk import style --- src/utils/exportUtils/Exporter.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/exportUtils/Exporter.ts b/src/utils/exportUtils/Exporter.ts index 3209dd085b..128db47390 100644 --- a/src/utils/exportUtils/Exporter.ts +++ b/src/utils/exportUtils/Exporter.ts @@ -21,7 +21,8 @@ import { IExportOptions, ExportType } from "./exportUtils"; import { decryptFile } from "../DecryptFile"; import { mediaFromContent } from "../../customisations/Media"; import { formatFullDateNoDay } from "../../DateUtils"; -import { Direction, MatrixClient } from "matrix-js-sdk"; +import { MatrixClient } from "matrix-js-sdk/src/client"; +import { Direction } from "matrix-js-sdk/src/models/event-timeline"; import { saveAs } from "file-saver"; import { _t } from "../../languageHandler"; import SdkConfig from "../../SdkConfig"; From e0267258a46f1998a0788aaeca399e92b1df9f5e Mon Sep 17 00:00:00 2001 From: Jaiwanth <jaiwanth2011@gmail.com> Date: Thu, 30 Sep 2021 16:24:31 +0530 Subject: [PATCH 176/176] Initialize css string --- src/utils/exportUtils/exportCSS.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/exportUtils/exportCSS.ts b/src/utils/exportUtils/exportCSS.ts index 3bad94d938..f7f471fda3 100644 --- a/src/utils/exportUtils/exportCSS.ts +++ b/src/utils/exportUtils/exportCSS.ts @@ -25,7 +25,7 @@ const getExportCSS = async (): Promise<string> => { stylesheets.push(e.href); } }); - let CSS: string; + let CSS = ""; for (const stylesheet of stylesheets) { const res = await fetch(stylesheet); const innerText = await res.text();