/* All styles in this sheet are not needed on page load and deferred */ /* Peers */ x-peers.overflowing { background: /* Shadow covers */ linear-gradient(rgb(var(--bg-color)) 30%, rgba(var(--bg-color), 0)), linear-gradient(rgba(var(--bg-color), 0), rgb(var(--bg-color)) 70%) 0 100%, /* Shadows */ radial-gradient(farthest-side at 50% 0, rgba(var(--text-color), .2), rgba(var(--text-color), 0)), radial-gradient(farthest-side at 50% 100%, rgba(var(--text-color), .2), rgba(var(--text-color), 0)) 0 100%; background-repeat: no-repeat; background-size: 100% 40px, 100% 40px, 100% 14px, 100% 14px; /* Opera doesn't support this in the shorthand */ background-attachment: local, local, scroll, scroll; } x-peers:has(> x-peer) { --peers-per-row: 10; } /* peers-per-row if height is too small for 2 rows */ @media screen and (min-height: 538px) and (max-height: 683px) and (max-width: 402px), screen and (min-height: 517px) and (max-height: 664px) and (min-width: 426px) { x-peers:has(> x-peer) { --peers-per-row: 3; } x-peers:has(> x-peer:nth-of-type(7)) { --peers-per-row: 4; } x-peers:has(> x-peer:nth-of-type(10)) { --peers-per-row: 5; } x-peers:has(> x-peer:nth-of-type(13)) { --peers-per-row: 6; } x-peers:has(> x-peer:nth-of-type(16)) { --peers-per-row: 7; } x-peers:has(> x-peer:nth-of-type(19)) { --peers-per-row: 8; } x-peers:has(> x-peer:nth-of-type(22)) { --peers-per-row: 9; } x-peers:has(> x-peer:nth-of-type(25)) { --peers-per-row: 10; } } /* peers-per-row if height is too small for 3 rows */ @media screen and (min-height: 683px) and (max-width: 402px), screen and (min-height: 664px) and (min-width: 426px) { x-peers:has(> x-peer) { --peers-per-row: 3; } x-peers:has(> x-peer:nth-of-type(10)) { --peers-per-row: 4; } x-peers:has(> x-peer:nth-of-type(13)) { --peers-per-row: 5; } x-peers:has(> x-peer:nth-of-type(16)) { --peers-per-row: 6; } x-peers:has(> x-peer:nth-of-type(19)) { --peers-per-row: 7; } x-peers:has(> x-peer:nth-of-type(22)) { --peers-per-row: 8; } x-peers:has(> x-peer:nth-of-type(25)) { --peers-per-row: 9; } x-peers:has(> x-peer:nth-of-type(28)) { --peers-per-row: 10; } } /* Peer */ x-peer { padding: 8px; align-content: start; flex-wrap: wrap; } x-peer label { width: var(--peer-width); touch-action: manipulation; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); position: relative; } x-peer x-icon { --icon-size: 40px; margin-bottom: 4px; transition: transform 150ms; will-change: transform; display: flex; flex-direction: column; } x-peer .icon-wrapper { width: var(--icon-size); padding: 12px; border-radius: 50%; background: var(--primary-color); color: white; display: flex; } x-peer.type-secret .icon-wrapper { background: var(--paired-device-color); } x-peer:not(.type-ip):not(.type-secret).type-public-id .icon-wrapper { background: var(--public-room-color); } x-peer x-icon > .highlight-wrapper { align-self: center; align-items: center; margin: 7px auto 0; height: 6px; } x-peer x-icon > .highlight-wrapper > .highlight { width: 15px; height: 6px; border-radius: 4px; margin-left: 1px; margin-right: 1px; display: none; } x-peer.type-ip x-icon > .highlight-wrapper > .highlight.highlight-room-ip { background-color: var(--primary-color); display: inline; } x-peer.type-secret x-icon > .highlight-wrapper > .highlight.highlight-room-secret { background-color: var(--paired-device-color); display: inline; } x-peer.type-public-id x-icon > .highlight-wrapper > .highlight.highlight-room-public-id { background-color: var(--public-room-color); display: inline; } x-peer:not([status]):hover x-icon, x-peer:not([status]):focus x-icon { transform: scale(1.05); } x-peer[status] x-icon { box-shadow: none; opacity: 0.8; transform: scale(1); } x-peer.ws-peer { margin-top: -1.5px; } x-peer.ws-peer .progress { margin-top: 3px; } x-peer.ws-peer .icon-wrapper{ border: solid 3px var(--ws-peer-color); } x-peer.ws-peer .highlight-wrapper { margin-top: 3px; } #websocket-fallback { opacity: 0.5; } #websocket-fallback > span:nth-of-type(2) { border-bottom: solid 2px var(--ws-peer-color); } .device-descriptor { width: 100%; text-align: center; } .device-descriptor > div { width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; } .status, .device-name, .connection-hash { opacity: 0.7; } .device-name { font-size: 14px; white-space: nowrap; } .connection-hash { font-size: 12px; white-space: nowrap; } x-peer:not([status]) .status, x-peer[status] .device-name { display: none; } x-peer[status] { pointer-events: none; } x-peer x-icon { animation: pop 600ms ease-out 1; } @keyframes pop { 0% { transform: scale(0.7); } 40% { transform: scale(1.2); } } x-peer[drop] x-icon { transform: scale(1.1); } Dialog x-dialog x-background { background: rgba(0, 0, 0, 0.61); z-index: 10; transition: opacity 300ms; will-change: opacity; padding: 15px; overflow: overlay; } x-dialog x-paper { display: flex; flex-direction: column; width: calc(100vw - 10px); z-index: 3; background: white; border-radius: 8px; max-width: 400px; overflow: hidden; box-sizing: border-box; transition: transform 300ms; will-change: transform; } #pair-device-dialog x-paper, #edit-paired-devices-dialog x-paper, #public-room-dialog x-paper, #language-select-dialog x-paper { position: absolute; top: max(50%, 350px); margin-top: -328.5px; } x-paper > .row:first-of-type { background-color: var(--accent-color); border-bottom: solid 4px var(--border-color); margin-bottom: 10px; } x-paper > .row:first-of-type h2 { color: white; } #pair-device-dialog, #edit-paired-devices-dialog { --accent-color: var(--paired-device-color); } #public-room-dialog { --accent-color: var(--public-room-color); } #pair-device-dialog ::-moz-selection, #pair-device-dialog ::selection { color: black; background: var(--paired-device-color); } #public-room-dialog ::-moz-selection, #public-room-dialog ::selection { color: black; background: var(--public-room-color); } x-dialog:not([show]) { pointer-events: none; } x-dialog:not([show]) x-paper { transform: scale(0.1); } x-dialog a { color: var(--primary-color); } /* Pair Devices Dialog & Public Room Dialog */ .input-key-container { width: 100%; display: flex; justify-content: center; margin-top: 10px; } .input-key-container > input { width: 45px; height: 45px; font-size: 30px; padding: 0; text-align: center; text-transform: uppercase; display: -webkit-box !important; display: -webkit-flex !important; display: -moz-flex !important; display: -ms-flexbox !important; display: flex !important; -webkit-justify-content: center; -ms-justify-content: center; justify-content: center; } .input-key-container > input { margin: 0 3px; } .input-key-container.six-chars > input:nth-of-type(4) { margin-left: 5%; } .key { -webkit-user-select: text; -moz-user-select: text; user-select: text; display: inline-block; font-size: 50px; letter-spacing: min(calc((100vw - 80px - 99px) / 100 * 7), 20px); text-indent: calc(0.5 * (11px + min(calc((100vw - 80px - 99px) / 100 * 6), 28px))); margin: 25px 0; } .key-qr-code { margin: 16px; width: fit-content; align-self: center; } .key-instructions { flex-direction: column; } x-dialog h2 { margin-top: 5px; margin-bottom: 0; } x-dialog hr { height: 3px; border: none; width: 100%; background-color: var(--border-color); } .hr-note { margin-top: 10px; margin-bottom: 20px; } .hr-note hr { margin-bottom: -2px; } .hr-note > div { height: 0; transform: translateY(-10px); } .hr-note > div > span { padding: 3px 10px; border-radius: 10px; color: rgb(var(--text-color)); background-color: rgb(var(--bg-color)); border: var(--border-color) solid 3px; text-transform: uppercase; } #pair-device-dialog x-background { padding: 16px!important; } /* Edit Paired Devices Dialog */ .paired-devices-wrapper:empty:before { content: attr(data-empty); } .paired-devices-wrapper:empty { padding: 10px; } .paired-devices-wrapper { border-top: solid 4px var(--paired-device-color); border-bottom: solid 4px var(--paired-device-color); max-height: 65vh; overflow: scroll; background: /* Shadow covers */ linear-gradient(rgb(var(--bg-color)) 30%, rgba(var(--bg-color), 0)), linear-gradient(rgba(var(--bg-color), 0), rgb(var(--bg-color)) 70%) 0 100%, /* Shadows */ radial-gradient(farthest-side at 50% 0, rgba(var(--text-color), .3), rgba(var(--text-color), 0)), radial-gradient(farthest-side at 50% 100%, rgba(var(--text-color), .3), rgba(var(--text-color), 0)) 0 100%; background-repeat: no-repeat; background-size: 100% 80px, 100% 80px, 100% 24px, 100% 24px; /* Opera doesn't support this in the shorthand */ background-attachment: local, local, scroll, scroll; } .paired-device { display: flex; justify-content: space-between; flex-direction: column; align-items: center; } .paired-device:not(:last-child) { border-bottom: solid 4px var(--paired-device-color); } .paired-device > .display-name, .paired-device > .device-name { width: 100%; height: 36px; display: flex; align-items: center; text-align: center; align-self: center; border-bottom: solid 2px rgba(128, 128, 128, 0.5); opacity: 1; } .paired-device span { width: 100%; } .paired-device > .button-wrapper { display: flex; height: 36px; justify-content: space-between; flex-direction: row; align-items: center; width: 100%; } .paired-device > .button-wrapper > label, .paired-device > .button-wrapper > button { display: flex; align-items: center; text-align: center; white-space: nowrap; justify-content: center; width: 50%; padding-left: 6px; padding-right: 6px; height: 36px; } .paired-device > .button-wrapper > :not(:last-child) { border-right: solid 1px rgba(128, 128, 128, 0.5); } .paired-device > .button-wrapper > :not(:first-child) { border-left: solid 1px rgba(128, 128, 128, 0.5); } .paired-device * { overflow: hidden; text-overflow: ellipsis; } /* Receive Dialog */ x-paper > .row { padding: 10px; } /* button row*/ x-paper > .button-row { border-top: solid 3px var(--border-color); height: 50px; margin-top: 10px; } x-paper > .button-row > .button { height: 100%; width: 100%; } html:not([dir="rtl"]) x-paper > .button-row > .button:not(:first-child) { border-right: solid 1.5px var(--border-color); } html:not([dir="rtl"]) x-paper > .button-row > .button:not(:last-child) { border-left: solid 1.5px var(--border-color); } html[dir="rtl"] x-paper > .button-row > .button:not(:first-child) { border-left: solid 1.5px var(--border-color); } html[dir="rtl"] x-paper > .button-row > .button:not(:last-child) { border-right: solid 1.5px var(--border-color); } .language-buttons > button > span { margin: 0 0.3em; } .file-description { max-width: 100%; } .file-description span { display: inline; word-break: normal; } .file-name { font-style: italic; max-width: 100%; margin-top: 5px; } .file-stem { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding-right: 1px; } /* Send Text Dialog */ x-dialog .dialog-subheader { padding-top: 16px; padding-bottom: 16px; } #send-text-dialog .display-name-wrapper { padding-bottom: 0; } #text-input { min-height: 200px; width: 100%; } /* Receive Text Dialog */ #receive-text-dialog #text { width: 100%; word-break: break-all; max-height: calc(100vh - 393px); overflow-x: hidden; overflow-y: auto; -webkit-user-select: text; -moz-user-select: text; user-select: text; white-space: pre-wrap; } #receive-text-dialog #text a { cursor: pointer; } #receive-text-dialog #text a:hover { text-decoration: underline; } #receive-text-dialog h3 { /* Select the received text when double-clicking the dialog */ user-select: none; pointer-events: none; } .row-separator { border-bottom: solid 2.5px var(--border-color); margin: auto -24px; } #base64-paste-btn, #base64-paste-dialog .textarea { width: 100%; height: 40vh; border: solid 12px #438cff; border-radius: 8px; } #base64-paste-dialog .textarea { display: flex; align-items: center; justify-content: center; text-align: center; } #base64-paste-dialog .textarea::before { font-size: 15px; letter-spacing: 0.12em; color: var(--primary-color); font-weight: 700; text-transform: uppercase; white-space: pre-wrap; } /* Peer loading Indicator */ .progress { width: 80px; height: 80px; position: absolute; top: -8px; clip: rect(0px, 80px, 80px, 40px); --progress: rotate(0deg); transition: transform 200ms; } .circle { width: 72px; height: 72px; border: 4px solid var(--primary-color); border-radius: 40px; position: absolute; clip: rect(0px, 40px, 80px, 0px); will-change: transform; transform: var(--progress); } .over50 { clip: rect(auto, auto, auto, auto); } .over50 .circle.right { transform: rotate(180deg); } /* Color Themes */ /* Colored Elements */ x-dialog x-paper { background-color: rgb(var(--bg-color)); } .textarea { color: rgb(var(--text-color)) !important; background-color: var(--bg-color-secondary) !important; } .textarea * { margin: 0 !important; padding: 0 !important; color: unset !important; background: unset !important; border: unset !important; opacity: unset !important; font-family: inherit !important; font-size: inherit !important; font-style: unset !important; font-weight: unset !important; } /* Image/Video/Audio Preview */ .file-preview { margin-bottom: 15px; } .file-preview:empty { display: none; } .file-preview > img, .file-preview > audio, .file-preview > video { max-width: 100%; max-height: 40vh; margin: auto; display: block; }