#MediaViewer { position: fixed; top: 0; left: 0; width: 100vw; height: 100%; background: rgba(0, 0, 0, .9); color: #fff; z-index: var(--z-media-viewer); padding: 0.5rem 0; display: grid; grid-template-columns: auto; grid-template-rows: 2.75rem 1fr; grid-column-gap: 0; grid-row-gap: 0; justify-items: stretch; align-items: center; // Potential perf improvement &:not(.shown) { display: block !important; transform: scale(0); } body.ghost-animating & { > .pan-wrapper, > .Transition, > button { display: none; } } body.animation-level-2 & { transition-duration: .3s !important; } &:not(.open), .closing { .SenderInfo { pointer-events: none; transition: none; } } &.zoomed { .navigation { display: none; } .media-viewer-head { z-index: 2; } .media-viewer-content { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; padding: 0; z-index: 1; } } .media-viewer-head { display: flex; grid-area: 1 / 1 / 2 / -2; padding: 0 1.25rem; position: relative; z-index: var(--z-media-viewer-head); min-width: 0; & > .Transition { width: 100%; min-width: 0; } @media (max-width: 600px) { padding: 0 0.5rem; .media-viewer-close { margin-right: 1.5rem; } } } & > .Transition, & > .pan-wrapper { grid-area: 1 / 1 / -1 / -1; } & > .Transition, & > .pan-wrapper .Transition { position: relative; justify-self: center; text-align: center; width: 100%; height: 100%; display: flex; align-items: center; overflow: hidden; } .media-viewer-content { position: relative; z-index: 1; padding: 3.25rem 0; height: 100%; display: inline-flex; justify-content: center; align-items: center; &.has-footer { padding: 7rem 0; @media (min-width: 600px) { min-width: 600px; } @media (max-height: 640px) { padding: 4rem 0; } > img { max-height: calc(100vh - 15rem); @media (max-height: 640px) { max-height: calc(100vh - 10rem); } } } .thumbnail { position: relative; img { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } } > img { max-width: 100vw; max-height: calc(100vh - 8.25rem); object-fit: contain; transition: transform .2s; } .spinner-wrapper { max-width: 100vw; margin: auto; } .Spinner { margin: auto; } } .navigation { position: fixed; top: 4rem; width: 10vw; bottom: 0; border: none; padding: 0; margin: 0; appearance: none; background: transparent no-repeat; background-size: 1.25rem; opacity: 0; transition: opacity .15s; outline: none; cursor: pointer; z-index: 1; @media (max-width: 600px) { width: 20vw; } &:hover, .is-touch-env & { opacity: 1; } &.prev { left: 0; background-image: url("../../assets/media_navigation_previous.svg"); background-position: 1.25rem calc(50% - 2rem); &[dir=rtl] { left: auto; right: 0; transform: scaleX(-1); } } &.next { right: 0; background-image: url("../../assets/media_navigation_next.svg"); background-position: calc(100% - 1.25rem) calc(50% - 2rem); &[dir=rtl]{ left: 0; right: auto; transform: scaleX(-1); } } &.inline { top: calc(50% - 3rem); bottom: unset; height: 6rem; background-position-y: center; @media (max-width: 600px) { opacity: 0; transition: opacity .15s ease-in; pointer-events: none; .video-controls-visible & { opacity: 1; pointer-events: all; } } } } } .ghost { position: absolute; z-index: var(--z-media-viewer); will-change: transform, opacity; overflow: hidden; border-radius: 0; transition: transform .2s ease, opacity .2s ease; &.rounded-corners { border-radius: var(--border-radius-messages); } &.circle { border-radius: 50%; } body.is-ios & { transition: transform .2s ease, opacity .2s ease, border-radius .2s ease !important; } img, video { width: 100%; height: 100%; user-select: none; -webkit-user-select: none; object-fit: cover; } }