.file-page { .file-page__video-container + .card, .file-render + .card, .content__cover + .card, .card + .file-render, .card + .file-page__video-container, .card + .content__cover { margin-top: var(--spacing-large); } .card + .file-render { margin-top: var(--spacing-large); } .file-page__md { .card { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } .card + .file-render { margin-top: 0; .card { border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-left-radius: var(--border-radius); border-bottom-right-radius: var(--border-radius); border-top: none; } } } } .file-render { width: 100%; height: 100%; z-index: 1; overflow: hidden; max-height: var(--inline-player-max-height); border-radius: var(--card-radius); } .file-render--embed { border-radius: 0; position: fixed; max-height: none; } .file-render--document { max-height: none; overflow: auto; .content__loading { background-color: transparent; padding: 0; margin: var(--spacing-xlarge) 0; .content__loading-text { color: var(--color-text); } } .markdown-preview { height: 100%; overflow: auto; width: 40em; margin-left: auto; margin-right: auto; max-width: unset; min-width: unset; @media (max-width: $breakpoint-small) { width: 100%; padding: var(--spacing-small); } } } .file-render__header { display: flex; justify-content: space-between; flex-wrap: wrap; } .file-viewer { width: 100%; height: 100%; iframe, webview, img { width: 100%; height: 100%; object-fit: contain; max-height: var(--inline-player-max-height); } video { cursor: pointer; } .video-js.vjs-fullscreen.vjs-user-inactive.vjs-playing { video { cursor: none; } } } .file-render__viewer--comic { position: relative; overflow: hidden; .comic-viewer { width: 100%; height: calc(100vh - var(--header-height) - var(--spacing-medium) * 2); max-height: var(--inline-player-max-height); } } .file-viewer--iframe { display: flex; /*this eliminates extra height from whitespace, if someone edits this with a better technique, tell Jeremy*/ /* ideally iframes would dynamiclly grow, see for a start at this for now, since we don't know size, let's make as large as we can without being larger than available area */ iframe { height: calc(100vh - var(--header-height) - var(--spacing-medium) * 2); } } .file-render__viewer--three { position: relative; overflow: hidden; .three-viewer { height: calc(100vh - var(--header-height) - var(--spacing-medium) * 2); max-height: var(--inline-player-max-height); } } .file-viewer__overlay { position: absolute; left: auto; right: auto; height: 100%; width: 100%; z-index: 2; color: var(--color-white); font-size: var(--font-body); /* put back font size from videojs change*/ background-color: rgba(0, 0, 0, 0.9); display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--spacing-large); @media (max-width: $breakpoint-small) { font-size: var(--font-small); } .button--uri-indicator, .button--link { color: var(--color-white); } } .content__viewer--floating { .file-viewer__overlay-title, .file-viewer__overlay-secondary { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 100%; } } @media (max-width: $breakpoint-small) { .file-viewer__overlay-title, .file-viewer__overlay-secondary { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 100%; } } .file-viewer__overlay-title { text-align: center; font-size: var(--font-large); margin-bottom: var(--spacing-medium); } .file-viewer__overlay-secondary { color: var(--color-text-subtitle); margin-bottom: var(--spacing-medium); } .file-viewer__overlay-actions { .button + .button { margin-left: var(--spacing-medium); } } .file-viewer__overlay-logo { color: var(--color-white); font-weight: bold; .icon { height: 30px; stroke-width: 5px; } } .file-viewer--is-playing:not(:hover) .file-viewer__embedded-title { display: none; } .file-viewer__embedded-title { position: absolute; display: flex; justify-content: space-between; width: 100%; top: 0; z-index: 2; font-size: var(--font-large); overflow-x: hidden; text-overflow: ellipsis; white-space: nowrap; padding: var(--spacing-small); background-repeat: repeat-x; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==); .button { color: var(--color-white); &:hover { color: var(--color-white); } &:first-of-type { max-width: 90%; } } } .file-render__content { width: 100%; height: 100%; overflow: auto; max-width: 100vw; } // // Custom viewers live below here // These either have custom class names that can't be changed or have styles that need to be overridden // // Code-viewer .CodeMirror { @extend .file-render__content; .cm-invalidchar { display: none; } .CodeMirror .CodeMirror-lines { // is there really a .CodeMirror inside a .CodeMirror? padding: var(--spacing-small) 0; } .CodeMirror-code { @include font-mono; letter-spacing: 0.1rem; } .CodeMirror-gutters { background-color: var(--color-gray-1); border-right: 1px solid var(--color-gray-4); padding-right: var(--spacing-medium); } .CodeMirror-line { padding-left: var(--spacing-medium); } .CodeMirror-linenumber { color: var(--color-gray-5); } } .video-js-parent { height: 100%; width: 100%; } .video-js-parent--ios { .vjs-control-bar { display: none; } } // By default no video js play button .vjs-big-play-button { display: none; } .video-js { height: 100%; width: 100%; .vjs-modal-dialog .vjs-modal-dialog-content { position: relative; padding-top: 5rem; // Make sure no videojs message interferes with overlaying buttons pointer-events: none; } .vjs-control-bar { .vjs-remaining-time { display: none; } .vjs-current-time, .vjs-time-divider, .vjs-duration { display: flex; } } } .video-js:hover { .vjs-big-play-button { background-color: var(--color-primary); } } .file-render { .video-js { display: flex; align-items: center; justify-content: center; } .vjs-big-play-button { @extend .button--icon; @extend .button--play; border: none; position: static; z-index: 2; .vjs-icon-placeholder { display: none; } } } .file-render--embed { /* on embeds, do not inject our colors until interaction*/ .video-js.vjs-paused { .vjs-big-play-button { display: block; background-color: rgba(0, 0, 0, 0.6); } } .video-js:hover { .vjs-big-play-button { background-color: var(--color-primary); } } } .file-viewer--ended-embed .vjs-big-play-button { display: none !important; // yes this is dumb, but this was broken and the above CSS was overriding } .autoplay-countdown { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; } .autoplay-countdown__timer { width: 100%; text-align: center; font-size: var(--font-small); } .autoplay-countdown__counter { margin-top: var(--spacing-medium); } .autoplay-countdown__button { /* Border size and color */ border: 3px solid transparent; /* Creates a circle */ border-radius: 50%; /* Circle size */ display: inline-block; height: 86px; width: 86px; /* Use transform to rotate to adjust where opening appears */ transition: border 1s; transform: rotate(45deg); .button { background-color: transparent; transform: rotate(-45deg); &:hover { background-color: var(--color-primary); } } } .autoplay-countdown__button--4 { border-top-color: #fff; } .autoplay-countdown__button--3 { border-top-color: #fff; border-right-color: #fff; } .autoplay-countdown__button--2 { border-top-color: #fff; border-right-color: #fff; border-bottom-color: #fff; } .autoplay-countdown__button--1 { border-color: #fff; }