Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

2238 lines
45 KiB

/*
* https://github.com/morethanwords/tweb
* Copyright (C) 2019-2021 Eduard Kuzmenko
* https://github.com/morethanwords/tweb/blob/master/LICENSE
*/
$placeholder-color: #9e9e9e;
$border-radius: 8px;
$border-radius-medium: 10px;
$border-radius-big: 12px;
$border-radius-huge: 16px;
$hover-alpha: .08;
//$small-screen: 720px;
$small-screen: 600px;
//$small-screen: 900px;
$medium-screen: 1275px;
$large-screen: 1680px;
//$large-screen: 16800px;
$floating-left-sidebar: 925px;
$messages-container-width: 728px;
$chat-input-size: 3.375rem;
$chat-input-handhelds-size: 2.875rem;
$chat-padding: .8125rem;
$chat-padding-handhelds: .5rem;
$chat-input-inner-padding: .5rem;
$chat-input-inner-padding-handhelds: .25rem;
@function hover-color($color, $alpha: $hover-alpha) {
@return rgba($color, $alpha);
}
@function rgba-to-rgb($rgba, $background: #fff) {
@if $background == true {
$background: #fff;
}
@return mix(rgb(red($rgba), green($rgba), blue($rgba)), $background, alpha($rgba) * 100%);
}
@mixin avatar-color($color, $top, $bottom) {
--peer-avatar-#{$color}-top: #{$top};
--peer-avatar-#{$color}-bottom: #{$bottom};
}
/* @mixin safari-overflow() {
html.is-safari & {
-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
@content;
}
} */
@import "mixins/hover";
@import "mixins/respondTo";
@import "mixins/textOverflow";
@import "mixins/animationLevel";
@import "mixins/premium";
:root {
--vh: 1vh;
--z-below: -1;
--hover-alpha: #{$hover-alpha};
--transition-standard-easing: cubic-bezier(.4, .0, .2, 1);
--transition-standard-in-time: .3s;
--transition-standard-out-time: .25s;
--transition-standard-in: var(--transition-standard-in-time) var(--transition-standard-easing);
--transition-standard-out: var(--transition-standard-out-time) var(--transition-standard-easing);
--pm-transition: .2s ease-in-out;
--layer-transition: .2s cubic-bezier(.4, .0, .2, 1);
--slide-header-transition: .4s ease-in-out;
--tabs-transition: .2s ease-in-out;
--btn-menu-transition: .2s cubic-bezier(.4, 0, .2, 1);
--esg-transition: var(--btn-menu-transition);
--input-transition: .2s ease-out;
--sticker-viewer-open-transition-in: .2s var(--transition-standard-easing);
--sticker-viewer-open-transition-out: .2s var(--transition-standard-easing);
// --sticker-viewer-switch-transition: .2s cubic-bezier(.07,1.21,.56,1.2);
--sticker-viewer-switch-transition: .2s cubic-bezier(.12,1.1,.56,1.2);
--popup-transition-function: cubic-bezier(.4, 0, .2, 1);
--popup-transition-time: .15s;
//--layer-transition: .3s cubic-bezier(.33, 1, .68, 1);
//--layer-transition: none;
--btn-corner-transition: .2s cubic-bezier(.34, 1.56, .64, 1);
--chatlist-badge-transition-in: .25s cubic-bezier(.35,.35,.47,1.34); // 1.34
--chatlist-badge-transition-out: .25s cubic-bezier(.35,.35,.7,1);
--message-handhelds-margin: 5.5625rem;
--message-beside-button-size: 2.375rem;
--message-beside-button-margin: calc((var(--message-beside-button-size) + .5rem) * -1);
--message-time-background: rgba(0, 0, 0, .35);
--message-highlightning-color: hsla(85.5319, 36.9171%, 40.402%, .4);//rgba(77, 142, 80, .4);
--messages-container-width: #{$messages-container-width};
--messages-text-size: 16px;
--messages-line-height: 1.3125;
--messages-secondary-text-size: calc(var(--messages-text-size) - 2px);
--messages-secondary-line-height: calc(var(--messages-secondary-text-size) + 4px);
--messages-time-text-size: calc(var(--messages-text-size) - 4px);
--messages-service-text-size: calc(var(--messages-text-size) - 1px);
--messages-custom-emoji-size: calc(var(--messages-text-size) + 4px);
--bubble-transition-in: transform var(--transition-standard-in), opacity var(--transition-standard-in);
--bubble-transition-out: transform var(--transition-standard-out), opacity var(--transition-standard-out);
--line-height-20: 26px;
--line-height-16: 21px;
--line-height-14: 18px;
--line-height-12: 16px;
--line-height: 1.3125;
--font-size-20: 20px;
--font-size-16: 16px;
--font-size-14: 14px;
--font-size-12: 12px;
--font-size: var(--font-size-16);
--esg-sticker-size: 72px;
--esg-custom-emoji-size: 36px;
--popup-sticker-size: 80px;
--disabled-opacity: .3;
--round-video-size: 280px;
--menu-box-shadow: 0px 0px 10px var(--menu-box-shadow-color);
--menu-backdrop-filter: blur(50px);
--font-monospace: 'Roboto Mono', monospace;
--font-weight-bold: 500;
--font-weight-normal: 400;
--selection-background-color: rgba(var(--primary-color-rgb), .4);
--selection-color: inherit;
--white: #ffffff;
--topbar-floating-scaleX: 1;
--topbar-call-height: 3rem;
--topbar-floating-call-height: 0px;
--call-button-size: 3.375rem;
--call-button-margin: 2rem;
--custom-emoji-size: 1.25rem;
--esg-width: 100%;
// https://github.com/overtake/TelegramSwift/blob/5cc7d2475fe4738a6aa0486c23eaf80a89d33b97/submodules/TGUIKit/TGUIKit/PresentationTheme.swift#L2054
@include avatar-color("red", #FF845E, #D45246);
@include avatar-color("orange", #FEBB5B, #F68136);
@include avatar-color("violet", #B694F9, #6C61DF);
@include avatar-color("green", #9AD164, #46BA43);
@include avatar-color("cyan", #53edd6, #28c9b7);
@include avatar-color("blue", #5BCBE3, #359AD4);
@include avatar-color("pink", #FF8AAC, #D95574);
// @include avatar-color("saved", #69BFFA, #3D9DE0);
@include avatar-color("archive", #B8C2CC, #9EAAB5);
--peer-avatar-saved-top: var(--light-filled-saved-color);
--peer-avatar-saved-bottom: var(--saved-color);
--avatar-color-top: var(--peer-avatar-saved-top);
--avatar-color-bottom: var(--peer-avatar-saved-bottom);
--avatar-border-radius-forum: 37%;
--premium-gradient: linear-gradient(52.62deg, #6B93FF 12.22%, #976FFF 50.25%, #E46ACE 98.83%);
@include respond-to(handhelds) {
--right-column-width: 100vw;
--esg-sticker-size: 68px;
--popup-sticker-size: 68px;
--round-video-size: 240px;
--chat-input-size: #{$chat-input-handhelds-size};
--chat-input-padding: #{$chat-padding-handhelds};
--chat-input-inner-padding: #{$chat-input-inner-padding-handhelds};
}
@include respond-to(not-handhelds) {
--right-column-width: calc(#{$large-screen} / 4);
--chat-input-size: #{$chat-input-size};
--chat-input-padding: #{$chat-padding};
--chat-input-inner-padding: #{$chat-input-inner-padding};
}
@include respond-to(esg-bottom) {
--chat-input-size: #{$chat-input-handhelds-size};
--chat-input-inner-padding: #{$chat-input-inner-padding-handhelds};
}
@include respond-to(esg-top) {
--esg-width: 23.875rem;
}
@include respond-to(only-medium-screens) {
--right-column-width: 25vw;
}
}
@mixin splitColor($property, $color, $light: true, $dark: true, $light-filled: false, $dark-filled: false, $rgb: false, $alpha: $hover-alpha) {
--#{$property}: #{$color};
$lightened: hover-color($color);
@if $light != false {
--light-#{$property}: #{$lightened};
}
@if $light-filled != false {
--light-filled-#{$property}: #{rgba-to-rgb($lightened, $light-filled)};
}
$darkened: darken($color, $alpha * 100);
@if $dark != false {
--dark-#{$property}: #{$darkened};
}
@if $dark-filled != false {
--dark-filled-#{$property}: #{rgba-to-rgb($darkened, $dark-filled)};
}
@if $rgb != false {
--#{$property}-rgb: #{red($color)}, #{green($color)}, #{blue($color)};
}
}
:root {
// * Day theme
--body-background-color: #fff;
--background-color-true: #f4f4f5;
// --background-color: #fff;
--background-color: var(--background-color-true);
--border-color: #dfe1e5;
--scrollbar-color: rgba(0, 0, 0, .2);
--section-box-shadow-color: rgba(0, 0, 0, .06);
--menu-box-shadow-color: rgba(0, 0, 0, .15);
--input-search-background-color: #fff;
--input-search-border-color: #dfe1e5;
--secondary-color: #c4c9cc;
// --avatar-online-color: #0ac630;
--avatar-online-color: var(--primary-color);
// --avatar-color-top: var(--peer-avatar-saved-top);
// --avatar-color-bottom: var(--peer-avatar-saved-bottom);
--chatlist-status-color: var(--avatar-online-color);
--chatlist-pinned-color: #a2abb2;
--badge-text-color: #fff;
--link-color: #00488f;
--ripple-color: rgba(0, 0, 0, #{$hover-alpha});
--poll-circle-color: var(--border-color);
--spoiler-background-color: #e3e5e8;
--spoiler-draft-background-color: #d9d9d9;
--monospace-text-color: var(--danger-color);
--backdrop-opacity: .85;
--menu-background-color: rgba(var(--surface-color-rgb), var(--backdrop-opacity));
--message-time-color: var(--secondary-text-color);
--message-checkbox-color: #61c642;
--message-checkbox-border-color: #fff;
--message-primary-color: var(--primary-color);
--light-filled-message-primary-color: var(--light-filled-primary-color);
--message-secondary-color: var(--secondary-color);
--message-error-color: var(--danger-color);
--message-out-link-color: var(--link-color);
--message-out-status-color: var(--message-out-primary-color);
--message-out-time-color: var(--message-out-status-color);
--message-out-audio-play-button-color: #fff;
--message-out-selection-background-color: var(--selection-background-color);
--gc-background-color: #212121;
--gc-button-leave-color: rgba(255, 89, 90, .3);
--gc-button-unmuted-color: rgba(1, 200, 80, .2);
--gc-button-muted-color: rgba(60, 135, 247, .2);
--gc-button-hand-color: rgba(223, 68, 184, .2);
--gc-button-unmuted-fill-color: #195530;
--gc-button-muted-fill-color: #3C87F7;
--gc-green-color: #195530;
--gc-blue-color: #3C87F7;
--gc-red-color: #643333;
--gc-primary-text-color: #fff;
--gc-secondary-text-color: #aaaaaa;
--gc-green-text-color: #5CC85E;
--gc-blue-text-color: #3390ec;
--gc-red-text-color: #ff595a;
--gc-right-column-width: 26.25rem;
// * Day theme end
}
.night {
//:root {
// * Night theme
--body-background-color: #181818;
--background-color-true: #181818;
// --background-color: #212121;
--background-color: var(--background-color-true);
--border-color: #0f0f0f;
--scrollbar-color: rgba(255, 255, 255, .2);
--section-box-shadow-color: rgba(0, 0, 0, .12);
--input-search-background-color: #181818;
--input-search-border-color: #2f2f2f;
--secondary-color: #707579;
// --avatar-online-color: #0ac630;
--avatar-online-color: var(--primary-color);
// --avatar-color-top: var(--peer-avatar-violet-top);
// --avatar-color-bottom: var(--peer-avatar-violet-bottom);
--chatlist-status-color: var(--primary-color);
--chatlist-pinned-color: var(--secondary-color);
--badge-text-color: #fff;
--link-color: var(--primary-color);
--ripple-color: rgba(255, 255, 255, #{$hover-alpha});
--poll-circle-color: #fff;
--spoiler-background-color: #373e4e;
--spoiler-draft-background-color: #484848;
--monospace-text-color: var(--primary-text-color);
--menu-background-color: rgba(var(--surface-color-rgb), .75);
--message-time-color: var(--secondary-text-color);
--message-checkbox-color: var(--primary-color);
--message-checkbox-border-color: #fff;
--message-secondary-color: var(--secondary-color);
--message-error-color: #fff;
--message-out-link-color: #fff;
--message-out-status-color: #fff;
--message-out-time-color: rgba(255, 255, 255, .6);
--message-out-audio-play-button-color: var(--message-out-background-color);
--message-out-selection-background-color: rgba(var(--surface-color-rgb), .4);
// * Night theme end
}
@import "tgico";
@import "fonts/roboto";
@import "fonts/robotoMono";
@import "partials/input";
@import "partials/button";
@import "partials/animatedIcon";
@import "partials/autocompleteHelper";
@import "partials/autocompletePeerHelper";
@import "partials/badge";
@import "partials/ckin";
@import "partials/checkbox";
@import "partials/chatlist";
@import "partials/chat";
@import "partials/chatTopbar";
@import "partials/chatBubble";
@import "partials/chatPinned";
@import "partials/chatMarkupTooltip";
@import "partials/chatStickersHelper";
@import "partials/chatEmojiHelper";
@import "partials/chatInlineHelper";
@import "partials/chatSearch";
@import "partials/chatDrop";
@import "partials/chatBotCommands";
@import "partials/crop";
@import "partials/sidebar";
@import "partials/profile";
@import "partials/slider";
@import "partials/leftSidebar";
@import "partials/rightSidebar";
@import "partials/mediaViewer";
@import "partials/emojiDropdown";
@import "partials/scrollable";
@import "partials/selector";
@import "partials/gifsMasonry";
@import "partials/preloader";
@import "partials/ripple";
@import "partials/avatar";
@import "partials/document";
@import "partials/audio";
@import "partials/quizHint";
@import "partials/peerTyping";
@import "partials/poll";
@import "partials/transition";
@import "partials/row";
@import "partials/colorPicker";
@import "partials/replyKeyboard";
@import "partials/peopleNearby";
@import "partials/spoiler";
@import "partials/emojiAnimation";
@import "partials/reactions";
@import "partials/reaction";
@import "partials/stackedAvatars";
@import "partials/stickerViewer";
@import "partials/customEmoji";
@import "partials/usernames";
@import "partials/topics";
@import "partials/themes";
@import "partials/popups/popup";
@import "partials/popups/editAvatar";
@import "partials/popups/mediaAttacher";
@import "partials/popups/peer";
@import "partials/popups/stickers";
@import "partials/popups/datePicker";
@import "partials/popups/createPoll";
@import "partials/popups/forward";
@import "partials/popups/instanceDeactivated";
@import "partials/popups/joinChatInvite";
@import "partials/popups/reportMessages";
@import "partials/popups/call";
@import "partials/popups/groupCall";
@import "partials/popups/sponsored";
@import "partials/popups/mute";
@import "partials/popups/reactedList";
@import "partials/popups/payment";
@import "partials/popups/paymentCard";
@import "partials/popups/paymentShippingMethods";
@import "partials/popups/paymentVerification";
@import "partials/popups/paymentCardConfirmation";
@import "partials/popups/limit";
@import "partials/popups/giftPremium";
@import "partials/popups/webApp";
@import "partials/popups/chatlistInvite";
@import "partials/pages/pages";
@import "partials/pages/authCode";
@import "partials/pages/chats";
@import "partials/pages/password";
html,
body {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
overflow: hidden; // + disable overscroll behavior on macOS
@include respond-to(handhelds) {
height: calc(var(--vh, 1vh) * 100);
}
/* @include respond-to(handhelds) {
//overflow-y: auto;
height: 100%;
min-height: 100%;
min-width: 100%;
}
@include respond-to(not-handhelds) {
width: 100%;
height: 100%;
} */
}
html.is-ios {
//&, body {
position: fixed; // fix iOS fullscreen scroll
//}
// disable image longtapping
-webkit-user-select: none;
-webkit-touch-callout: none;
}
html.no-backdrop {
--menu-background-color: var(--surface-color);
--menu-backdrop-filter: none;
}
@supports(padding: unquote('max(0px)')) {
html {
padding: 0 unquote('min(16px, env(safe-area-inset-right))') 0 unquote('min(16px, env(safe-area-inset-left))');
}
}
html {
font-size: 16px;
//overflow: hidden;
-webkit-font-smoothing: antialiased;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
//text-rendering: optimizeSpeed;
}
body {
//touch-action: pan-x pan-y;
background-color: var(--body-background-color);
color: var(--primary-text-color);
}
body.deactivated {
animation: grayscale-in var(--transition-standard-in) forwards;
}
body.deactivated-backwards {
animation: grayscale-out var(--transition-standard-out) forwards;
}
@keyframes grayscale-in {
0% {
filter: grayscale(0);
}
100% {
filter: grayscale(1);
}
}
@keyframes grayscale-out {
0% {
filter: grayscale(1);
}
100% {
filter: grayscale(0);
}
}
/* body {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
min-height: 0!important;
} */
a {
color: var(--link-color);
}
button, input, optgroup, select, textarea, html {
font-family: "Roboto", -apple-system, apple color emoji, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
}
input, textarea, button, select, a, div {
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
pre, code, kbd, samp {
font-family: var(--font-monospace);
}
.whole {
min-height: 100%;
width: 100%;
//min-width: 100%;
margin: 0 auto;
max-width: $large-screen;
//@include respond-to(not-handhelds) {
height: 100%;
//}
}
@include respond-to(not-handhelds) {
.only-handhelds {
display: none !important;
}
}
.container {
margin: 0 auto;
}
h1, h2, h3, h4, h5, h6 {
font-weight: var(--font-weight-bold);
}
h4 {
font-size: 2rem;
//margin: 1.5rem 0 1rem 0;
margin: 22px 0 14px;
line-height: 110%;
@include respond-to(handhelds) {
font-size: 20px;
margin: 2px 0 8px;
}
}
input, [contenteditable=true] {
caret-color: var(--primary-color);
color: var(--primary-text-color);
background-color: transparent;
}
// [contenteditable] [style*="bold"] {
// font-weight: var(--font-weight-bold) !important;
// }
input, textarea {
-webkit-appearance: none;
}
// Possible fix Safari's password autocomplete
input::-webkit-contacts-auto-fill-button,
input::-webkit-credentials-auto-fill-button {
visibility: hidden;
position: absolute;
right: 0;
}
input:-webkit-autofill::first-line {
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Ubuntu, Arial, sans-serif;
font-size: 16px
}
/* input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
transition: background-color 5000s ease-in-out 0s;
} */
.subtitle {
/* font-weight: 500; */
color: var(--secondary-text-color);
line-height: var(--line-height);
}
.danger {
color: var(--danger-color) !important;
.c-ripple__circle {
background-color: var(--light-danger-color);
}
}
.blue,
.primary {
color: var(--primary-color) !important;
.c-ripple__circle {
background-color: var(--light-primary-color);
}
}
.primary-text {
color: var(--primary-text-color) !important;
}
.color-premium {
background: var(--premium-gradient);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.blue:before,
.primary:before,
.danger:before {
color: inherit !important;
}
.bg-warning {
background: #fed85a !important;
}
.contextmenu {
position: fixed !important;
right: auto !important;
bottom: auto !important;
width: auto !important;
z-index: 4 !important;
}
.preloader {
width: 50px;
height: 50px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
// ! do not change it to &-path
.preloader-path {
stroke: var(--primary-color);
}
}
@keyframes thumbnail-fade-in-opacity {
0% {
opacity: 0;
}
to {
opacity: .8;
}
}
@keyframes fade-in-opacity {
0% {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fade-out-opacity {
0% {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes fade-in-backwards-opacity {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes fade-out-backwards-opacity {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes fade-in-opacity-fade-out-opacity {
0% {
opacity: 0;
}
10% {
opacity: 1;
}
50% {
opacity: 1;
}
to {
opacity: 0;
}
}
.toast {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
padding: .5rem 1rem;
background-color: rgba(0, 0, 0, .66);
color: #fff;
font-size: 1rem;
border-radius: $border-radius-medium;
z-index: 5;
max-width: unquote('min(30rem, calc(100vw - 2rem))');
opacity: 0;
backdrop-filter: blur(25px);
&.is-visible {
opacity: 1;
}
@include animation-level(2) {
transition: opacity var(--transition-standard-in);
}
b {
color: inherit;
}
a {
color: #60a5e9!important;
cursor: pointer;
}
}
hr {
width: 100%;
border: none;
border-top: 1px solid var(--border-color);
margin: 0;
padding-bottom: .5rem;
}
b {
// color: var(--primary-text-color);
font-weight: var(--font-weight-bold);
}
.avatar-edit {
position: relative;
border-radius: 50%;
cursor: pointer;
overflow: hidden;
&.is-forum {
border-radius: var(--avatar-border-radius-forum);
}
&-canvas {
max-width: 100%;
max-height: 100%;
width: 100%;
height: 100%;
background: linear-gradient(var(--avatar-color-top), var(--avatar-color-bottom));
}
html.no-touch body.animation-level-2 & {
.tgico-cameraadd {
transform: translateY(-50%) translateX(-50%) scale(1);
transition: transform .2s ease-in-out;
}
&:hover {
.tgico-cameraadd {
transform: translateY(-50%) translateX(-50%) scale(1.2);
}
}
}
.tgico-cameraadd {
position: absolute;
font-size: 3rem;
line-height: 1;
width: 3rem;
height: 3rem;
top: 50%;
left: 50%;
transform: translateY(-50%) translateX(-50%);
z-index: 2;
color: #fff;
}
.avatar-placeholder {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
filter: brightness(0.7);
}
}
.missing-icon {
width: 1.5rem;
height: 1.5rem;
&-path {
fill: currentColor;
}
}
.select-wrapper {
max-height: 23.5rem;
/* height: auto; */
position: absolute;
width: 100%;
top: calc(100% + .5rem);
left: 0;
overflow: hidden;
background-color: var(--surface-color);
z-index: 3;
border-radius: $border-radius-medium;
display: flex;
flex-direction: column;
flex-wrap: wrap;
transition: opacity .2s ease-out, transform .2s ease-out;
transform: scale(.95);
transform-origin: top center;
opacity: 0;
&.active {
transform: scale(1);
opacity: 1;
}
ul {
margin: .5rem 0;
}
li {
/* display: flex; */
align-items: center;
padding: 0 1rem;
justify-content: space-between;
height: 3.5rem;
cursor: pointer;
/* font-weight: 500; */
text-align: start;
display: grid;
grid-template-columns: calc(26px + 2rem) 1fr 80px;
@include hover-background-effect();
}
// +2 px bc of whitespace
.emoji {
height: 26px;
width: 26px;
font-size: 26px;
line-height: 1;
}
.scrollable {
position: relative;
}
}
.phone-code {
color: $placeholder-color;
text-align: end;
}
// this dimensions will be used for monkey business
.auth-image {
width: 166px;
height: 166px;
margin: 0 auto 18px;
position: relative;
@include respond-to(handhelds) {
width: 120px;
height: 120px;
}
}
/* .phone-wrapper {
display: flex;
align-items: ;
} */
.phone-edit {
width: 1.5rem;
height: 1.5rem;
margin-inline-start: .4rem;
opacity: .5;
transition: .2s opacity;
cursor: pointer;
font-size: 1.5rem;
line-height: 1;
@include hover() {
opacity: 1;
}
}
span.emoji {
display: inline !important;
//line-height: 1em;
//font-size: 1em;
font-family: apple color emoji,segoe ui emoji,noto color emoji,android emoji,emojisymbols,emojione mozilla,twemoji mozilla,segoe ui symbol;
vertical-align: unset !important;
line-height: 1 !important;
// vertical-align: text-top !important;
}
// non-Retina device
@media
not screen and (-webkit-min-device-pixel-ratio: 2),
not screen and ( min--moz-device-pixel-ratio: 2),
not screen and ( -o-min-device-pixel-ratio: 2/1),
not screen and ( min-device-pixel-ratio: 2),
not screen and ( min-resolution: 192dpi),
not screen and ( min-resolution: 2dppx) {
html:not(.is-safari) {
span.emoji {
margin-inline-end: 5px !important;
}
avatar-element span.emoji {
margin-inline-end: 0 !important;
}
}
}
img.emoji {
width: 18px;
height: 18px;
// margin: 0 .125rem;
display: inline-block;
/* width: 100%;
height: 100%; */
max-width: 100%;
max-height: 100%;
vertical-align: middle;
}
[contenteditable=true] {
user-select: text;
outline: none;
cursor: text;
white-space: pre-wrap;
.custom-emoji {
display: inline-block;
margin-bottom: -2px; // compensate difference in sizes
// color: transparent;
&:before {
content: none;
// display: inline;
}
}
[style*="markup"] {
font-family: inherit !important;
}
[style*="bold"] {
font-weight: bold;
}
[style*="italic"] {
font-style: italic;
}
[style*="underline"] {
text-decoration-line: underline;
}
[style*="strikethrough"] {
text-decoration-line: line-through;
}
[style*="underline"][style*="strikethrough"] {
text-decoration-line: underline line-through;
}
[style*="monospace"] {
font-family: var(--font-monospace) !important;
}
[style*="spoiler"] {
background-color: var(--spoiler-draft-background-color);
}
}
[contenteditable][data-placeholder] {
&:before {
content: attr(data-placeholder);
color: #a2acb4;
display: block; /* For Firefox By Ariel Flesler */
pointer-events: none;
position: absolute;
opacity: 0;
@include animation-level(2) {
transform: translateX(1.75rem);
transition: opacity var(--input-transition) .01s, transform var(--input-transition) .01s;
}
}
&:empty:before {
opacity: 1;
@include animation-level(2) {
transform: translateX(0);
}
}
}
.sticky_sentinel {
position: absolute;
left: 0;
right: 0; /* needs dimensions */
visibility: hidden;
pointer-events: none;
}
.super-stickers {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fill, var(--esg-sticker-size)); // 64px
// grid-column-gap: 1px;
justify-content: space-between;
}
.super-sticker {
@include hover-background-effect() {
border-radius: $border-radius-medium;
}
/* &:nth-child(5n+5) {
margin-inline-end: 0;
} */
/* > img, > .rlottie {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
}
> img {
object-fit: contain;
@include animation-level(2) {
animation: fade-in-opacity .2s ease forwards;
}
} */
}
.fade-in-transition {
opacity: 1;
@include animation-level(2) {
transition: opacity .2s ease-in-out;
}
}
/* .fade-in-new {
opacity: 1;
transition: opacity .2s ease-in-out;
&.not-yet {
opacity: 0;
}
} */
.show-more {
padding-top: 13px;
padding-bottom: 13px;
cursor: pointer;
user-select: none;
position: relative;
@include respond-to(not-handhelds) {
padding-inline-start: 8px;
}
.tgico-down {
float: left;
padding-inline: 1rem 2rem;
font-size: 24px;
color: var(--secondary-text-color);
}
}
// .message .audio .preloader-container {
// @include respond-to(handhelds) {
// width: 30px;
// height: 30px;
// left: 2px;
// }
// }
.content-empty {
color: var(--secondary-text-color);
}
::selection,
.selection:after {
background: var(--selection-background-color);
}
.selection:after {
content: " ";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.input-something {
display: inline-block;
}
.input-selectable {
position: relative;
}
@keyframes grow-icon {
0% {
transform: scale(.5);
opacity: .8;
}
50% {
transform: scale(1.1);
opacity: 1;
}
100% {
transform: scale(1);
}
}
@keyframes hide-icon {
from {
transform: scale(1);
opacity: .4;
}
to {
transform: scale(.5);
opacity: 0;
}
}
.popup-disable-password, .popup-skip-email {
.popup-description {
max-width: 284px;
}
}
.grid {
width: 100%;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-auto-rows: 1fr;
grid-gap: .25rem;
&-item {
height: 0;
padding-bottom: 100%;
//overflow: hidden;
position: relative;
cursor: pointer;
user-select: none;
&-media {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
}
}
.animated-super {
&-row {
--translateY: 100%;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
transition: transform var(--pm-transition), opacity var(--pm-transition);
body.animation-level-0 & {
transition: none;
}
/* &:not(.is-hiding) {
transform: none !important;
} */
&.is-hiding {
opacity: 0;
&.from-top {
transform: translate3d(0, calc(var(--translateY) * -1), 0);
//transform: translateY(calc(var(--translateY) * -1));
//transform: translateY(-100%);
}
&.from-bottom {
transform: translate3d(0, var(--translateY), 0);
//transform: translateY(var(--translateY));
//transform: translateY(100%);
}
/* &.backwards {
opacity: 1;
transform: translateY(0) !important;
} */
}
}
}
.animated-counter {
display: inline-flex;
&-decimal {
position: relative;
&-placeholder {
color: transparent;
}
&-wrapper {
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
}
/* &:not(:first-child) {
.animated-super {
&-row {
&.is-hiding {
&.from-top {
transform: translateY(100%);
}
&.from-bottom {
transform: translateY(-100%);
}
}
}
}
} */
}
/* &.from-top {
.animated-super-row.is-hiding {
&.from-top {
transform: translateY(100%) !important;
}
}
} */
}
// *:not(input):not(textarea) {
// -webkit-user-select: none; /* disable selection/Copy of UIWebView */
// -webkit-touch-callout: none; /* disable the IOS popup when long-press on a link */
// }
middle-ellipsis-element {
width: 100%;
overflow: hidden;
display: block;
}
.album-item {
&-media {
width: 100%;
height: 100%;
}
}
.hover-effect {
@include hover-background-effect();
}
.progress-ring {
position: absolute;
top: 0;
left: 0;
pointer-events: none;
&__circle {
transition: stroke-dashoffset;
stroke-linecap: round;
}
}
.rlottie,
.rlottie-vector {
left: 0;
top: 0;
bottom: 0;
right: 0;
position: absolute;
max-width: 100%;
max-height: 100%;
width: 100%;
height: 100%;
}
.rlottie-icon {
position: relative;
pointer-events: none;
}
.rlottie.fade-in {
@include animation-level(2) {
animation: fade-in-opacity .2s ease-in-out forwards;
}
}
.rlottie-vector {
fill: rgba(0, 0, 0, $hover-alpha);
}
.canvas-thumbnail {
position: absolute;
width: 100%;
height: 100%;
}
// .shimmer {
// &-canvas {
// position: absolute;
// width: 100%;
// height: 100%;
// }
// }
.media-container-contain {
position: relative;
.media-photo {
object-fit: contain;
max-width: 100%;
max-height: 100%;
}
}
.media-container-cover {
position: relative;
.media-photo {
object-fit: cover;
width: 100%;
height: 100%;
}
}
.fade-in {
@include animation-level(2) {
animation: fade-in-opacity .2s ease-in-out forwards;
}
}
.fade-out {
@include animation-level(2) {
animation: fade-out-opacity .2s ease-in-out forwards;
}
}
.media-photo,
.media-video,
.media-sticker,
.media-round,
.media-poster {
// & ~ & {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
// }
}
.media-video {
z-index: 1; // * overflow media-photo
}
.media-sticker {
margin: auto;
object-fit: contain;
width: 100%;
height: 100%;
max-width: 100%;
max-height: 100%;
&-wrapper {
&.is-premium-sticker {
&:before {
// content: " ";
position: absolute;
bottom: .125rem;
left: 50%;
transform: translateX(-50%);
width: 1.25rem;
height: 1.25rem;
background: rgba(0, 0, 0, .2);
// backdrop-filter: blur(25px) saturate(1.5);
border-radius: 50%;
color: #fff;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
background-image: var(--lock-url);
background-repeat: no-repeat;
background-size: cover;
}
@include premium(true) {
&:before,
&:after {
content: none;
}
}
}
}
}
.media-round {
max-width: var(--round-video-size);
max-height: var(--round-video-size);
z-index: 1;
canvas {
width: 100%;
height: 100%;
border-radius: 50%;
position: relative;
}
.video-time {
padding: 0 .375rem;
background-color: var(--message-highlightning-color) !important;
&:before,
&:after {
margin-inline-start: .25rem;
}
}
&.is-unread .video-time {
&:before {
order: 1;
width: .5rem;
height: .5rem;
background-color: #fff;
border-radius: 50%;
content: " ";
}
}
&.is-paused .video-time {
&:after {
content: $tgico-nosound;
display: flex;
align-items: center;
font-size: 1.125rem;
order: 2;
}
}
}
.gradient-delimiter {
width: 100%;
height: .75rem;
background-color: var(--background-color-true);
position: relative;
&:before {
content: " ";
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, rgba(0, 0, 0, .06) 0%, rgba(0, 0, 0, 0) 20%, rgba(0, 0, 0, 0) 94%, rgba(0, 0, 0, .06) 100%);
}
}
.sidebar-left {
&-section {
background-color: var(--surface-color);
padding: .5rem 0 !important;
margin-bottom: .75rem;
box-shadow: 0px 1px 3px 0px var(--section-box-shadow-color);
&.no-shadow {
box-shadow: none !important;
}
&-name {
padding: .5rem 1rem;
}
&-caption {
margin: -0.1875rem 0 1rem;
font-size: var(--font-size-14);
line-height: var(--line-height-14);
padding: 0 1.5rem;
&:first-child {
margin-top: .8125rem;
margin-bottom: .8125rem;
}
@include respond-to(handhelds) {
padding: 0 1rem;
}
}
&-container {
user-select: none;
a {
cursor: pointer;
}
}
}
}
hr {
display: none !important;
}
// ! TEMPORARY
// .tgico-reply:before,
// .tgico-attach:before,
// .tgico-saved:before,
// .tgico-phone:before,
.tgico-admin:before,
// .tgico-message:before,
.tgico-fontsize:before
// .tgico-forward:before,
// .tgico-reply_filled:before,
// .tgico-forward_filled:before {
{
font-size: 20px !important;
padding: 2px;
}
// ! TEMPORARY
.tgico-endcall_filled,
.tgico-phone_filled {
font-size: 26px !important;
}
.stealthy {
left: 0;
margin: 0;
max-height: 1px;
max-width: 1px;
opacity: 0;
outline: none;
overflow: hidden;
pointer-events: none;
position: absolute;
top: 0;
z-index: -1;
}
.navigable-list {
.active {
background-color: var(--light-secondary-text-color);
border-radius: inherit;
}
}
.super-emojis {
--esg-emoji-size: 2.125rem;
--esg-emoji-total-size: calc(var(--esg-emoji-size) + .5rem);
--custom-emoji-size: var(--esg-emoji-size);
// ! No chrome 56 support
display: grid;
column-gap: 2.44px;
// row-gap: .25rem;
grid-template-columns: repeat(auto-fill, var(--esg-emoji-total-size));
justify-content: space-between;
position: relative;
font-size: var(--esg-emoji-size);
line-height: var(--esg-emoji-size);
// * new
// --esg-emoji-size: 2.25rem;
// --esg-emoji-total-size: var(--esg-emoji-size);
// --custom-emoji-size: var(--esg-emoji-size);
// column-gap: .625rem;
// --esg-emoji-size: 1.875rem;
// --esg-emoji-total-size: calc(var(--esg-emoji-size) + 0.375rem);
// --custom-emoji-size: 2.25rem;
column-gap: .25rem;
--esg-emoji-size: 2.125rem;
--esg-emoji-total-size: 2.625rem;
--custom-emoji-size: 2.25rem;
.super-emoji {
display: inline-block;
margin-inline: .0625rem;
padding: .25rem;
line-height: inherit;
border-radius: $border-radius;
cursor: pointer;
user-select: none;
vertical-align: middle;
width: var(--esg-emoji-total-size);
height: var(--esg-emoji-total-size);
// html:not(.emoji-supported) & {
position: relative;
// }
.emoji-placeholder {
position: absolute;
left: 7px;
top: 7px;
width: 1.75rem;
height: 1.75rem;
border-radius: 50%;
background-color: var(--light-secondary-text-color);
pointer-events: none;
@include animation-level(2) {
opacity: 0;
transition: opacity .2s ease-in-out;
}
}
@include animation-level(2) {
img {
opacity: 1;
transition: opacity .2s ease-in-out;
}
}
.emoji {
width: 100%;
height: 100%;
vertical-align: unset;
margin: 0;
}
&.active {
background-color: var(--light-secondary-text-color);
}
@include hover-background-effect();
}
&.not-local {
.super-emoji {
padding: .1875rem;
}
}
.super-emoji {
margin: 0;
// border-radius: unset;
// @include hover-effect() {
// &:before {
// content: " ";
// border-radius: $border-radius;
// background-color: var(--light-secondary-text-color);
// position: absolute;
// top: -.1875rem;
// right: -.1875rem;
// bottom: -.1875rem;
// left: -.1875rem;
// }
// }
}
&:not(.not-local) {
.super-emoji {
overflow: hidden;
html.native-emoji & {
padding-top: .3125rem;
padding-bottom: .3125rem;
}
}
}
.custom-emoji {
display: block;
&-renderer {
z-index: 1;
}
&:before {
content: none;
}
}
}
.tgico-char {
&:before {
font-family: "Roboto" !important;
font-weight: var(--font-weight-bold);
width: 1.5rem;
text-align: center;
}
&.a:before {
content: "A";
}
// &.w:before {
// content: "W";
// }
}
.sending-status {
&:empty {
display: none;
}
/* &.animating {
.sending-status-icon {
background: var(--background);
}
} */
.tgico-sendingerror {
color: var(--danger-color);
}
&-icon {
position: absolute;
line-height: 1 !important;
}
}
.quick-reaction-title {
display: flex;
align-items: center;
}
.quick-reaction-sticker {
width: 32px !important;
height: 32px !important;
position: relative !important;
margin: 0 .5rem 0 0 !important;
}
.verified-icon {
&-svg {
width: 1rem;
height: 1rem;
}
&-check {
fill: #fff;
}
&-background {
fill: var(--primary-color);
}
}
.verified-icon,
.premium-icon,
.emoji-status {
flex: 0 0 auto;
font-size: 1rem;
display: flex;
align-items: center;
justify-content: center;
margin-inline-start: .125rem;
width: 1.25rem;
height: 1.25rem;
}
.emoji-status {
position: relative;
width: 1.125rem;
height: 1.125rem;
margin-inline-start: .25rem;
}
.premium-icon {
color: var(--primary-color);
margin-top: -.0625rem;
}
.badge-fake {
flex: 0 0 auto;
color: var(--danger-color);
border: 1px solid var(--danger-color);
padding: .125rem .25rem;
border-radius: .185rem;
font-size: .625rem;
font-weight: var(--font-weight-bold);
line-height: 1 !important;
margin-inline: .25rem .25rem;
}
.peer-title {
&.with-icons {
display: flex;
align-items: center;
overflow: hidden;
}
&-inner {
@include text-overflow();
}
}
.limit-line {
height: 2rem;
// border-radius: $border-radius-medium;
font-weight: var(--font-weight-bold);
display: flex;
// background: linear-gradient(84.4deg, #6C93FF -4.85%, #976FFF 51.72%, #DF69D1 110.7%), #F1F3F5;
&-free {
color: #000;
}
&-premium {
color: #fff;
}
&-free {
border-top-left-radius: $border-radius-medium;
border-bottom-left-radius: $border-radius-medium;
background-color: #F1F3F5;
}
&-premium {
border-top-right-radius: $border-radius-medium;
border-bottom-right-radius: $border-radius-medium;
background: linear-gradient(84.4deg, #6C93FF -4.85%, #976FFF 51.72%, #DF69D1 110.7%);
}
&-free,
&-premium {
flex: 1 1 0;
padding: 0 .75rem;
display: flex;
align-items: center;
justify-content: space-between;
}
}
.movable-element {
--size: .5rem;
position: relative;
&-resize-handler {
position: absolute;
&-side-n,
&-side-s {
left: 0;
right: 0;
height: var(--size);
cursor: row-resize;
}
&-side-e,
&-side-w {
top: 0;
bottom: 0;
width: var(--size);
cursor: col-resize;
}
&-side-n {
top: 0;
}
&-side-e {
right: 0;
}
&-side-s {
bottom: 0;
}
&-side-w {
left: 0;
}
// corners
&-side-nw,
&-side-ne,
&-side-sw,
&-side-se {
width: var(--size);
height: var(--size);
z-index: 1;
}
&-side-ne,
&-side-sw {
cursor: nesw-resize;
}
&-side-se,
&-side-nw {
cursor: nwse-resize;
}
&-side-ne {
top: 0;
right: 0;
}
&-side-se {
right: 0;
bottom: 0;
}
&-side-sw {
bottom: 0;
left: 0;
}
&-side-nw {
top: 0;
left: 0;
}
}
}
.chatlist-chat {
&.row-with-padding {
padding-inline-start: 4.5rem !important;
}
span {
@include text-overflow(true);
}
.row {
&-title {
font-size: var(--font-size-16) !important;
line-height: 1.375rem;
&-right-secondary {
margin-top: -.4375rem;
font-size: var(--font-size-12) !important;
line-height: var(--line-height-12) !important;
}
// .peer-title {
// font-weight: var(--font-weight-bold);
// }
}
&-subtitle {
display: block !important; // can drop to none if it's empty
}
&-row {
height: 1.375rem;
}
}
&.chatlist-chat-small {
}
&.chatlist-chat-abitbigger {
.row {
&-subtitle {
margin-top: 0;
}
}
}
&.chatlist-chat-bigger {
.row {
&-subtitle {
margin-top: 0;
font-size: var(--font-size-16) !important;
line-height: 1.375rem;
&-row {
margin-top: .125rem;
}
}
&-title {
.peer-title {
font-weight: var(--font-weight-bold);
}
}
}
}
}
.username-purchase-help {
b {
font-weight: var(--font-weight-normal) !important;
color: var(--danger-color) !important;
}
}
.media-spoiler {
&-container {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
border-radius: inherit;
&.is-revealing {
opacity: 1;
&:not(.backwards) {
opacity: 0;
}
&.animating {
transition: opacity var(--transition-standard-out);
}
}
}
&-thumbnail,
.canvas-thumbnail {
position: absolute;
// top: 0;
// right: 0;
// bottom: 0;
// left: 0;
object-fit: unset !important;
width: 100%;
height: 100%;
}
}
.accordion {
overflow: hidden;
height: 0;
&.is-expanded {
height: var(--max-height);
}
@include animation-level(2) {
transition: height var(--transition-standard-in);
}
&-icon {
transform: rotate(0deg) translateY(4px);
color: var(--secondary-text-color);
font-size: 1.25rem;
display: inline-block;
line-height: 0;
@include animation-level(2) {
transition: transform var(--transition-standard-in);
}
}
&-toggler-expanded {
.accordion-icon {
transform: translateY(4px) rotate(180deg);
}
}
}
.shimmer {
--opacity: .2;
@include animation-level(0) {
&:before {
content: unset;
}
}
&:before {
content: "";
position: absolute;
top: 0;
display: block;
width: 100%;
height: 100%;
background: linear-gradient(to right, transparent 0%, rgba(var(--surface-color-rgb), var(--opacity)) 50%, transparent 100%);
animation: wave 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
@keyframes wave {
0% {
transform: translateX(-100%);
}
50% {
transform: translateX(100%);
}
100% {
transform: translateX(100%);
}
}
}
&-bright {
--opacity: .4;
}
}
.invite-link {
border-radius: $border-radius-medium;
background-color: var(--background-color);
position: relative;
color: var(--primary-text-color);
padding-inline: 1rem .25rem;
height: 3rem;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
&-text {
@include text-overflow();
flex: 1 1 auto;
}
&-container {
padding: 0 .5rem;
}
&-menu {
flex: 0 0 auto;
}
&-button {
margin-top: .5rem;
height: 3rem;
text-transform: uppercase;
}
}
.cant-select {
.checkbox {
&-box {
&-border {
border-style: dotted;
}
}
}
}
.inner-shadow {
--inner-shadow-degree: 90deg;
--inner-shadow-size: 1rem;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
content: " ";
pointer-events: none;
border-radius: inherit;
background: linear-gradient(var(--inner-shadow-degree), var(--surface-color) 0%, rgba(var(--surface-color-rgb), 0) var(--inner-shadow-size), rgba(var(--surface-color-rgb), 0) calc(100% - var(--inner-shadow-size)), var(--surface-color) 100%);
&-inset {
background: linear-gradient(var(--inner-shadow-degree), var(--surface-color) 0%, var(--surface-color) calc(var(--inner-shadow-size) / 2), transparent var(--inner-shadow-size), transparent calc(100% - var(--inner-shadow-size)), var(--surface-color) calc(100% - var(--inner-shadow-size) / 2), var(--surface-color) 100%);
}
}