$placeholder-color: #9e9e9e; $border-radius: 8px; $border-radius-medium: 10px; $border-radius-big: 12px; $button-primary-background: #4EA4F6; $color-green: #4DCD5E; $color-error: #E53935; $color-gray: #707579; $color-blue: #50a2e9; $darkgreen: #50af4f; $color-text-green: $darkgreen; $lightgrey: #dadce0; $light: rgba($color-gray, 0.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: 1rem; $chat-padding-handhelds: .5rem; @mixin respond-to($media) { @if $media == handhelds { @media only screen and (max-width: $small-screen) { @content; } //@media only screen and (orientation: landscape) and (max-device-width: 896px) { @content; } // iPhone 11 Pro Max } @else if $media == small-screens { @media only screen and (min-width: $small-screen + 1) { @content; } } @else if $media == only-small-screens { @media only screen and (min-width: $small-screen + 1) and (max-width: $medium-screen) { @content; } } @else if $media == medium-screens { @media only screen and (min-width: $medium-screen + 1) { @content; } } @else if $media == only-medium-screens { @media only screen and (min-width: $medium-screen + 1) and (max-width: $large-screen) { @content; } } @else if $media == before-medium-screens { @media only screen and (max-width: $medium-screen) { @content; } } @else if $media == large-screens { @media only screen and (min-width: $large-screen + 1) { @content; } } @else if $media == not-handhelds { @media only screen and (min-width: $small-screen + 1) { @content; } } @else if $media == floating-left-sidebar { @media only screen and (min-width: $small-screen + 1) and (max-width: $floating-left-sidebar) { @content; } } @else if $media == until-floating-left-sidebar { @media only screen and (max-width: $floating-left-sidebar) { @content; } } @else if $media == no-floating-left-sidebar { @media only screen and (min-width: $floating-left-sidebar + 1) { @content; } } @else if $media == esg-top { // topbar + chat input + margin bottom + height of ESG @media only screen and (min-height: 570px) and (min-width: $small-screen + 1) { @content; } } @else if $media == esg-bottom { @media only screen and (max-height: 569px) { @content; } } } :root { --vh: 1vh; --z-below: -1; --color-gray: #c4c9cc; --color-gray-hover: rgba(112, 117, 121, .08); --pm-transition: .2s ease-in-out; --layer-transition: .2s ease-in-out; --tabs-transition: .25s ease-in-out; //--layer-transition: .3s cubic-bezier(.33, 1, .68, 1); //--layer-transition: none; --btn-corner-transition: .2s cubic-bezier(.34, 1.56, .64, 1); --message-handhelds-margin: 5.5625rem; --message-beside-button-margin: 2.875rem; --message-time-background: rgba(0, 0, 0, .35); --messages-container-width: #{$messages-container-width}; --messages-text-size: 16px; --messages-secondary-text-size: calc(var(--messages-text-size) - 1px); --esg-sticker-size: 80px; // https://github.com/overtake/TelegramSwift/blob/5cc7d2475fe4738a6aa0486c23eaf80a89d33b97/submodules/TGUIKit/TGUIKit/PresentationTheme.swift#L2054 --peer-avatar-red-top: #ff885e; --peer-avatar-red-bottom: #ff516a; --peer-avatar-orange-top: #ffcd6a; --peer-avatar-orange-bottom: #ffa85c; --peer-avatar-violet-top: #82b1ff; --peer-avatar-violet-bottom: #665fff; --peer-avatar-green-top: #a0de7e; --peer-avatar-green-bottom: #54cb68; --peer-avatar-cyan-top: #53edd6; --peer-avatar-cyan-bottom: #28c9b7; --peer-avatar-blue-top: #72d5fd; --peer-avatar-blue-bottom: #2a9ef1; --peer-avatar-pink-top: #e0a2f3; --peer-avatar-pink-bottom: #d669ed; @include respond-to(handhelds) { --right-column-width: 100vw; --esg-sticker-size: 68px; --chat-input-size: #{$chat-input-handhelds-size}; --chat-input-padding: #{$chat-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}; } @include respond-to(only-medium-screens) { --right-column-width: 25vw; } } @import "partials/ico"; @import "partials/input"; @import "partials/button"; @import "partials/badge"; @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/chatDrop"; @import "partials/sidebar"; @import "partials/leftSidebar"; @import "partials/rightSidebar"; @import "partials/mediaViewer"; @import "partials/ckin"; @import "partials/emojiDropdown"; @import "partials/scrollable"; @import "partials/slider"; @import "partials/selector"; @import "partials/gifsMasonry"; @import "partials/preloader"; @import "partials/ripple"; @import "partials/avatar"; @import "partials/document"; @import "partials/audio"; @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/pages/pages"; @import "partials/pages/authCode"; @import "partials/pages/chats"; @import "partials/pages/password"; /* cyrillic */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; font-display: swap; src: local('Roboto'), local('Roboto-Regular'), url(assets/fonts/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2) format('woff2'); unicode-range:U + 0400-045F, U + 0490-0491, U + 04B0-04B1, U + 2116 } /* latin-ext */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; font-display: swap; src: local('Roboto'), local('Roboto-Regular'), url(assets/fonts/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2) format('woff2'); unicode-range:U + 0100-024F, U + 0259, U + 1E00-1EFF, U + 2020, U + 20A0-20AB, U + 20AD-20CF, U + 2113, U + 2C60-2C7F, U + A720-A7FF } /* latin */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; font-display: swap; src: local('Roboto'), local('Roboto-Regular'), url(assets/fonts/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2) format('woff2'); unicode-range:U + 0000-00FF, 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 } /* cyrillic */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'), url(assets/fonts/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2'); unicode-range:U + 0400-045F, U + 0490-0491, U + 04B0-04B1, U + 2116 } /* latin-ext */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'), url(assets/fonts/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2'); unicode-range:U + 0100-024F, U + 0259, U + 1E00-1EFF, U + 2020, U + 20A0-20AB, U + 20AD-20CF, U + 2113, U + 2C60-2C7F, U + A720-A7FF } /* latin */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'), url(assets/fonts/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2'); unicode-range:U + 0000-00FF, 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 } // !!! FIX FOR [contenteditable] Ctrl+B, due to font-weight: 500; /* cyrillic */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'), url(assets/fonts/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2) format('woff2'); unicode-range:U + 0400-045F, U + 0490-0491, U + 04B0-04B1, U + 2116 } /* latin-ext */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'), url(assets/fonts/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2) format('woff2'); unicode-range:U + 0100-024F, U + 0259, U + 1E00-1EFF, U + 2020, U + 20A0-20AB, U + 20AD-20CF, U + 2113, U + 2C60-2C7F, U + A720-A7FF } /* latin */ @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; font-display: swap; src: local('Roboto Medium'), local('Roboto-Medium'), url(assets/fonts/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2) format('woff2'); unicode-range:U + 0000-00FF, 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 } html, body { height: 100%; width: 100%; margin: 0; padding: 0; @include respond-to(handhelds) { overflow: hidden; 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 { 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; } /* body { position: absolute; top: 0; right: 0; bottom: 0; left: 0; min-height: 0!important; } */ a { color: $color-blue; } 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); } .whole { min-height: 100%; width: 100%; //min-width: 100%; margin: 0 auto; max-width: $large-screen; //@include respond-to(not-handhelds) { height: 100%; //} } .disable-hover/* , .disable-hover * */ { pointer-events: none !important; } @include respond-to(not-handhelds) { .only-handhelds { display: none !important; } } .container { margin: 0 auto; } h1, h2, h3, h4, h5, h6 { font-weight: 500; } 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: $button-primary-background; } input, textarea { -webkit-appearance: none; } .subtitle { /* font-weight: 500; */ color: #707579; line-height: 1.35; } .danger, .danger:before { color: $color-error!important; } .blue, .blue:before { color: $color-blue!important; } .bg-warning { background: #fed85a; } #bubble-contextmenu, #dialogs-contextmenu { position: fixed; right: auto; bottom: auto; width: auto; z-index: 4; } @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; animation: fade-in-opacity-fade-out-opacity 3s linear forwards; z-index: 5; } hr { width: 100%; border: none; border-top: 1px solid #DADCE0; margin: 0; padding-bottom: .5rem; } .user-title, b/* , .user-last-message b */ { color: #000; font-weight: bolder; //font-weight: 500; //font-weight: normal; } .user-last-message b { font-weight: 400; //margin-right: .25rem; } .avatar-edit { position: relative; border-radius: 50%; cursor: pointer; overflow: hidden; &-canvas { max-width: 100%; max-height: 100%; width: 100%; height: 100%; background-color: $color-blue; } .tgico-cameraadd { position: absolute; font-size: 48px; line-height: 48px; 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); } } .select-wrapper { max-height: 23.5rem; /* height: auto; */ position: absolute; width: 100%; top: calc(100% + .5rem); left: 0; overflow: hidden; background-color: #fff; 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: left; display: grid; grid-template-columns: calc(26px + 2rem) 1fr 80px; html.no-touch &:hover { background-color: var(--color-gray-hover); } } // +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: right; } // 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 { display: inline-block; width: 24px; height: 24px; margin-left: .4rem; opacity: .5; transition: .2s; cursor: pointer; font-size: 1.5rem; @include respond-to(handhelds) { margin-top: -14px; } html.no-touch &:hover { opacity: 1; } } span.emoji { display: inline !important; vertical-align: unset !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; line-height: 1 !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; } .overlay::selection { background: transparent; } .crop-component::selection { background: transparent; } /* .crop-blur { -webkit-filter: blur(10px) sepia(0.2); filter: blur(10px) sepia(0.2); } */ .crop-image, .overlay > img { width: auto; height: auto; /* можно явно указать либо ширину, либо высоту */ /* width: 500px; */ /*либо height: 300px;*/ display: block; object-fit: contain; object-position: center; } /*add stretch*/ .crop-image { display: block; position: relative; pointer-events: none; } .crop-component { position: relative; z-index: 999; background-color: white; margin: 0 auto; overflow: hidden; > img { max-width: 100%; } .crop-overlay-color { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0.7); border-radius: $border-radius; } } .overlay { position: absolute; left: 50%; top: 50%; z-index: 999; margin-left: -100px; margin-top: -100px; width: 200px; height: 200px; /* box-shadow: 0 0 0 3px white; */ overflow: hidden; box-sizing: content-box; border-radius: 50%; html.no-touch &:hover, &:active { cursor: move; } > img { position: absolute; display: block; } } [contenteditable=true] { user-select: text; outline: none; cursor: text; } [contenteditable][data-placeholder] { &:empty:before { content: attr(data-placeholder); color: #a2acb4; display: block; /* For Firefox By Ariel Flesler */ pointer-events: none; } } .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 { html.no-touch &:hover { border-radius: 10px; background-color: var(--color-gray-hover); } /* &:nth-child(5n+5) { margin-right: 0; } */ > img, > .rlottie { position: absolute; left: 0; top: 0; width: 100%; height: 100%; } > img { animation: fade-in-opacity .2s ease forwards; object-fit: contain; } } .fade-in-transition { opacity: 1; transition: opacity .2s ease; } .show-more { padding-top: 13px; padding-bottom: 13px; cursor: pointer; user-select: none; position: relative; @include respond-to(not-handhelds) { padding-left: 8px; } .tgico-down { float: left; padding-right: 32px; padding-left: 16px; font-size: 24px; color: #707579; } } // .message .audio .preloader-container { // @include respond-to(handhelds) { // width: 30px; // height: 30px; // left: 2px; // } // } .content-empty { color: #707579; } @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; } } .grid-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; } } } */ } .transition { .transition-item { position: absolute; top: 0; left: 0; width: 100%; height: 100%; animation-fill-mode: forwards!important; &:not(.active):not(.from):not(.to) { display: none !important; // Best performance when animating container } } /* * zoom-fade */ &.zoom-fade { > .from { transform-origin: center; transform: scale(1); opacity: 1; } > .to { transform-origin: center; opacity: 0; } &.animating { > .from { animation: fade-out-opacity .15s ease; } > .to { animation: fade-in-opacity .15s ease, zoom-fade-in-move .15s ease; } } } &.zoom-fade.backwards { > .from { transform: scale(1); } > .to { transform: scale(0.95); } &.animating { > .from { animation: fade-in-backwards-opacity .1s ease, zoom-fade-in-backwards-move .15s ease; } > .to { animation: fade-out-backwards-opacity .15s ease, zoom-fade-out-backwards-move .15s ease; } } } } /* * zoom-fade */ @keyframes zoom-fade-in-move { 0% { transform: scale(1.1); } 100% { transform: scale(1); } } @keyframes zoom-fade-in-backwards-move { 0% { transform: scale(1); } 100% { transform: scale(1.1); } } @keyframes zoom-fade-out-backwards-move { 0% { transform: scale(0.95); } 100% { transform: scale(1); } } /* .zoom-fade { transition: .15s ease-in-out opacity, .15s ease-in-out transform; transform: scale3d(1.1, 1.1, 1); opacity: 0; display: flex; &.active { transform: scale3d(1, 1, 1); transform-origin: center; opacity: 1; } } */ // *: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%; } } .row { min-height: 3.375rem; margin-top: .5rem; position: relative; padding: .5rem .75rem; display: flex; flex-direction: column; justify-content: center; &-with-padding { padding-left: 4.375rem; .row-title.tgico:before { position: absolute; left: .75rem; font-size: 1.5rem; color: #707579; } } &-clickable { cursor: pointer; border-radius: $border-radius-medium; overflow: hidden; } .radio-field { &-main { padding-left: 3.375rem; margin-left: -3.375rem; } } &-subtitle { color: #707579 !important; font-size: 14px !important; } } .hover-effect { html.no-touch &:hover { transition: .2s background-color; background-color: var(--color-gray-hover); } } .rlottie, .rlottie-vector { left: 0; top: 0; bottom: 0; right: 0; position: absolute; max-width: 100%; max-height: 100%; width: 100%; height: 100%; } .rlottie.fade-in { animation: fade-in-opacity .2s ease-in-out forwards; } .rlottie-vector { fill: rgba(0, 0, 0, .08); } .media-photo, .media-video, .media-sticker { position: absolute; top: 0; right: 0; bottom: 0; left: 0; &.fade-in { animation: fade-in-opacity .2s ease-in-out forwards; } &.fade-out { animation: fade-out-opacity .2s ease-in-out forwards; } } .media-video { z-index: 1; // * overflow media-photo } .media-sticker { margin: auto; }