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.
662 lines
12 KiB
662 lines
12 KiB
/* |
|
Specific styles for main app layout. |
|
May have overrides for other components with own stylesheets. |
|
*/ |
|
|
|
/* variables */ |
|
:root { |
|
--header-height: 3.5em; |
|
--right-col-width: 24em; |
|
--video-container-height: calc((9 / 16) * 100vw); |
|
--header-bg-color: rgba(20, 0, 40, 1); |
|
--user-image-width: 10em; |
|
|
|
--novideo-container-height: 16em; |
|
|
|
--owncast-purple: rgba(120, 113, 255, 1); |
|
} |
|
|
|
.no-video, |
|
.single-col.no-video { |
|
--video-container-height: var(--novideo-container-height); |
|
} |
|
|
|
html { |
|
font-size: 14px; |
|
scrollbar-width: none; |
|
} |
|
|
|
#loading-logo { |
|
margin-top: 3%; |
|
margin-left: auto; |
|
margin-right: auto; |
|
height: 80vh; |
|
opacity: 0.2; |
|
} |
|
|
|
a:hover { |
|
text-decoration: underline; |
|
} |
|
|
|
.scrollbar-hidden::-webkit-scrollbar { |
|
width: 0px; |
|
background: transparent; |
|
} |
|
.scrollbar-hidden { |
|
scrollbar-width: none; /* moz only */ |
|
} |
|
|
|
#app-container.config-loading { |
|
visibility: hidden; |
|
} |
|
|
|
button[disabled] { |
|
opacity: 0.5; |
|
pointer-events: none; |
|
} |
|
|
|
/* accessibility things */ |
|
.visually-hidden { |
|
position: absolute !important; |
|
height: 1px; |
|
width: 1px; |
|
overflow: hidden; |
|
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ |
|
clip: rect(1px, 1px, 1px, 1px); |
|
white-space: nowrap; /* added line */ |
|
} |
|
|
|
header { |
|
height: var(--header-height); |
|
background-color: var(--header-bg-color); |
|
display: block; |
|
} |
|
|
|
#logo-container { |
|
background-size: 1.35em; |
|
padding: 1.15rem; |
|
background-image: url(/img/logo.svg); |
|
} |
|
|
|
.chat-menu-options li button { |
|
display: flex; |
|
width: 100%; |
|
height: 100%; |
|
align-items: center; |
|
justify-content: space-between; |
|
border-radius: .25rem; |
|
padding: .5rem .3rem; |
|
color: #dbdbdb; |
|
animation: fadeIn 150ms; |
|
} |
|
|
|
.chat-view li button { |
|
animation: slideInRight 150ms; |
|
} |
|
|
|
.chat-menu-options li button:hover { |
|
background-color: var(--owncast-purple); |
|
} |
|
|
|
|
|
#chat-toggle { |
|
min-width: 3rem; |
|
} |
|
|
|
#user-info-change { |
|
background-color: transparent; |
|
} |
|
|
|
.external-action-button { |
|
max-width: 250px; |
|
} |
|
.external-action-button:hover { |
|
box-shadow: var(--owncast-purple) 0px 0px 5px; |
|
} |
|
.external-action-icon { |
|
margin: 0.25em 0.5em 0.25em 0; |
|
} |
|
.external-action-icon img { |
|
height: 1.5em; |
|
width: 1.5em; |
|
} |
|
.external-action-label { |
|
text-overflow: ellipsis; |
|
overflow: hidden; |
|
} |
|
|
|
#fediverse-follow-button-container .external-action-button { |
|
border: 2px solid var(--owncast-purple); |
|
} |
|
|
|
/* ************************************************ */ |
|
|
|
#video-container { |
|
height: var(--video-container-height); |
|
margin-top: var(--header-height); |
|
position: relative; |
|
width: 100%; |
|
|
|
min-height: 480px; |
|
max-height: calc(100vh - var(--header-height) - 3rem); |
|
background-size: 30%; |
|
} |
|
#video-container #video { |
|
transition: opacity 0.5s; |
|
opacity: 0; |
|
pointer-events: none; |
|
} |
|
.online #video-container #video { |
|
opacity: 1; |
|
pointer-events: auto; |
|
} |
|
|
|
#app-container .custom-thumbnail-image { |
|
transition: opacity 2s; |
|
} |
|
|
|
/* *********** overrides when chat is off ***************************** */ |
|
.chat-disabled #user-options-container { |
|
display: none; |
|
} |
|
|
|
.chat-disabled footer, |
|
.chat-hidden footer { |
|
justify-content: center; |
|
} |
|
|
|
/* hide chat by default */ |
|
#chat-container-wrap { |
|
display: none; |
|
} |
|
|
|
/* *********** overrides when chat is on ***************************** */ |
|
|
|
.chat { |
|
--content-width: calc(100vw - var(--right-col-width)); |
|
} |
|
.chat #chat-container-wrap { |
|
display: block; |
|
} |
|
|
|
.chat main, |
|
.chat footer, |
|
.chat #user-content { |
|
width: var(--content-width); |
|
} |
|
|
|
.user-content-header { |
|
width: 100%; |
|
} |
|
.chat #video-container { |
|
height: calc((9 / 16) * var(--content-width)); |
|
} |
|
|
|
.short-wide.chat #video-container { |
|
height: calc(100vh - var(--header-height) - 3rem); |
|
min-height: auto; |
|
} |
|
|
|
/* display `send` button on mobile */ |
|
.touch-screen #send-message-button { |
|
display: inline-block; |
|
} |
|
|
|
/* *********** single col layout ***************************** */ |
|
|
|
.single-col { |
|
--right-col-width: 0px; |
|
--video-container-height: calc((9 / 16) * 100vw); |
|
} |
|
.single-col main { |
|
position: fixed; |
|
width: 100%; |
|
z-index: 40; |
|
} |
|
.single-col #chat-container { |
|
width: 100%; |
|
} |
|
|
|
.single-col.chat #video-container, |
|
.single-col.chat-disabled #video-container, |
|
.single-col.chat-hidden #video-container, |
|
.single-col #video-container #video, |
|
.single-col.chat #video-container #video { |
|
width: 100vw; |
|
height: var(--video-container-height); |
|
min-height: 212px; |
|
} |
|
.single-col #user-content, |
|
.single-col #chat-container-wrap { |
|
margin-top: calc(var(--video-container-height) + var(--header-height) + 1rem); |
|
} |
|
.single-col #user-content .user-content { |
|
flex-wrap: wrap; |
|
justify-content: flex-start; |
|
} |
|
.single-col.chat #user-content { |
|
display: none; |
|
} |
|
.single-col #messages-container { |
|
flex-grow: 2; |
|
margin-top: calc(var(--video-container-height)); |
|
} |
|
.single-col #message-input-container { |
|
width: 100%; |
|
} |
|
|
|
.single-col #stream-info { |
|
height: 0; |
|
padding: 0; |
|
} |
|
.single-col #stream-info span { |
|
display: none; |
|
} |
|
|
|
.single-col #message-input-wrap { |
|
max-height: 3em; |
|
} |
|
|
|
.single-col .user-logo-icons { |
|
margin-right: 0; |
|
margin-bottom: 1em; |
|
flex-direction: row; |
|
align-items: flex-end; |
|
justify-content: center; |
|
} |
|
.single-col.use-fediverse-follow.user-logo-icons { |
|
align-items: center; |
|
} |
|
|
|
.single-col .social-list { |
|
text-align: left; |
|
} |
|
.single-col .social-actions { |
|
margin-left: 1em; |
|
} |
|
.single-col .follow-icon-list { |
|
justify-content: flex-start; |
|
} |
|
.single-col.use-fediverse-follow #fediverse-button-singlecol { |
|
display: inline-block; |
|
} |
|
|
|
.single-col #external-actions-container { |
|
justify-content: flex-start; |
|
} |
|
.single-col #notify-button-popup { |
|
left: 0px; |
|
} |
|
.single-col #notify-button-popup::before { |
|
left: 24px; |
|
right: auto; |
|
} |
|
|
|
@media screen and (max-height: 500px) { |
|
.single-col.touch-screen:not(.touch-keyboard-active) { |
|
--header-height: 0px; |
|
} |
|
.single-col.touch-screen:not(.touch-keyboard-active) header { |
|
display: none; |
|
} |
|
} |
|
/* ************************************************ */ |
|
|
|
.no-video #video-container { |
|
min-height: var(--video-container-height); |
|
} |
|
|
|
/* ************************************************ */ |
|
|
|
@media screen and (max-width: 860px) { |
|
:root { |
|
--right-col-width: 20em; |
|
} |
|
#video-container { |
|
min-height: 240px; |
|
} |
|
.instance-title { |
|
font-size: 1rem; |
|
} |
|
} |
|
|
|
/* ************************************************ */ |
|
|
|
@media screen and (max-width: 600px) { |
|
#user-info-display { |
|
max-width: none; |
|
} |
|
} |
|
|
|
#external-modal-iframe { |
|
height: 70vh; |
|
} |
|
|
|
/************************** |
|
Basic Modal Styles |
|
**************************/ |
|
/* |
|
External modal styling for use with Micromodal from https://gist.github.com/ghosh/4f94cf497d7090359a5c9f81caf60699 |
|
See external-action-modal.js |
|
*/ |
|
.modal { |
|
z-index: 100; |
|
} |
|
|
|
.modal__overlay { |
|
position: fixed; |
|
top: 0; |
|
left: 0; |
|
right: 0; |
|
bottom: 0; |
|
background: rgba(0, 0, 0, 0.75); |
|
display: flex; |
|
justify-content: center; |
|
align-items: center; |
|
z-index: 10; |
|
} |
|
|
|
.modal__container { |
|
position: relative; |
|
background-color: transparent; |
|
padding: 0px; |
|
max-width: 780px; |
|
width: 60%; |
|
overflow: hidden; |
|
box-sizing: border-box; |
|
} |
|
|
|
@media screen and (max-width: 700px) { |
|
.modal__container { |
|
width: 100%; |
|
} |
|
} |
|
|
|
.modal__close { |
|
background: transparent; |
|
border: 0; |
|
cursor: pointer; |
|
margin: 0px; |
|
padding: 0px; |
|
outline: none; |
|
cursor: pointer !important; |
|
} |
|
.modal__close:before { |
|
content: '\2715'; |
|
font-size: 1.25rem; |
|
} |
|
|
|
@supports (display: flex) { |
|
.modal__header { |
|
display: flex; |
|
justify-content: space-between; |
|
align-items: center; |
|
height: initial; |
|
} |
|
.modal__title { |
|
position: static; |
|
} |
|
.modal__close { |
|
position: static; |
|
} |
|
} |
|
|
|
/************************** |
|
Modal Animation Style |
|
**************************/ |
|
.fadeIn { |
|
animation: mmfadeIn 150ms forwards; |
|
} |
|
|
|
.fadeOut { |
|
animation: mmfadeOut 150ms forwards; |
|
} |
|
|
|
.slideInTop { |
|
animation: mmslideIn 150ms forwards; |
|
} |
|
|
|
.slideOutBottom { |
|
animation: mmslideOut 150ms forwards; |
|
} |
|
|
|
.slideInLeft { |
|
animation: mmslideInLeft 150ms forwards; |
|
} |
|
|
|
.slideInRight { |
|
animation: mmslideInRight 150ms forwards; |
|
} |
|
|
|
|
|
@keyframes mmfadeIn { |
|
from { |
|
opacity: 0; |
|
} |
|
to { |
|
opacity: 1; |
|
} |
|
} |
|
|
|
@keyframes mmfadeOut { |
|
from { |
|
opacity: 1; |
|
} |
|
to { |
|
opacity: 0; |
|
} |
|
} |
|
|
|
|
|
@keyframes mmslideInRight { |
|
from { |
|
transform: translateX(15%); |
|
} |
|
to { |
|
transform: translateX(0); |
|
} |
|
} |
|
|
|
@keyframes mmslideInLeft { |
|
from { |
|
transform: translateX(-15%); |
|
} |
|
to { |
|
transform: translateX(0); |
|
} |
|
} |
|
|
|
@keyframes mmslideIn { |
|
from { |
|
transform: translateY(15%); |
|
} |
|
to { |
|
transform: translateY(0); |
|
} |
|
} |
|
|
|
@keyframes mmslideOut { |
|
from { |
|
transform: translateY(0); |
|
} |
|
to { |
|
transform: translateY(-10%); |
|
} |
|
} |
|
|
|
.micromodal-slide { |
|
display: none; |
|
} |
|
|
|
.micromodal-slide.is-open { |
|
display: block; |
|
} |
|
|
|
.micromodal-slide[aria-hidden='false'] .modal__overlay { |
|
animation: mmfadeIn 0.3s cubic-bezier(0, 0, 0.2, 1); |
|
} |
|
|
|
.micromodal-slide[aria-hidden='false'] .modal__container { |
|
animation: mmslideIn 0.3s cubic-bezier(0, 0, 0.2, 1); |
|
} |
|
|
|
.micromodal-slide[aria-hidden='true'] .modal__overlay { |
|
animation: mmfadeOut 0.3s cubic-bezier(0, 0, 0.2, 1); |
|
} |
|
|
|
.micromodal-slide[aria-hidden='true'] .modal__container { |
|
animation: mmslideOut 0.3s cubic-bezier(0, 0, 0.2, 1); |
|
} |
|
|
|
.micromodal-slide .modal__container, |
|
.micromodal-slide .modal__overlay { |
|
will-change: transform; |
|
} |
|
|
|
/* Miromodal mobile styling */ |
|
@media only screen and (min-device-width: 600px) and (max-device-width: 480px) { |
|
.modal__container { |
|
width: 90% !important; |
|
min-width: 90% !important; |
|
} |
|
@supports (display: flex) { |
|
.modal__container { |
|
width: 90% !important; |
|
min-width: 90% !important; |
|
height: 85vh; |
|
} |
|
} |
|
.modal__content { |
|
-webkit-overflow-scrolling: touch; |
|
} |
|
} |
|
|
|
/************************** |
|
Tab Bar Base Styles |
|
**************************/ |
|
.tab-bar [role='tab'] { |
|
padding: 0.5rem 1rem; |
|
border-radius: 0.25rem 0.25rem 0 0; |
|
font-weight: bold; |
|
} |
|
.tab-bar [role='tab']:hover { |
|
background-color: rgba(255, 255, 255, 0.35); |
|
} |
|
.tab-bar [role='tab'][aria-selected='true'] { |
|
color: var(--owncast-purple); |
|
background-color: white; |
|
} |
|
.tab-bar [role='tabpanel'] { |
|
padding: 1rem 0; |
|
border-top: 1px solid var(--header-bg-color); |
|
min-height: 15rem; |
|
} |
|
|
|
.follower { |
|
width: 20vw; |
|
max-width: 300px; |
|
} |
|
|
|
.following-list-follower { |
|
width: auto; |
|
} |
|
|
|
#follow-loading-spinner-container { |
|
position: absolute; |
|
display: flex; |
|
flex-direction: column; |
|
justify-content: center; |
|
align-items: center; |
|
top: 0px; |
|
left: 0px; |
|
width: 100%; |
|
height: 100%; |
|
opacity: 0.7; |
|
z-index: 100; |
|
} |
|
|
|
#follow-loading-spinner { |
|
width: 100px; |
|
height: 100px; |
|
} |
|
|
|
/* CHECKBOX TOGGLE SWITCH */ |
|
/* @apply rules for documentation, these do not work as inline style */ |
|
.toggle-checkbox:checked { |
|
/* @apply: right-0 #5A67D8; */ |
|
left: 63%; |
|
/* border-color:var(--owncast-purple); */ |
|
} |
|
|
|
#toggle:checked { |
|
background-color: var(--owncast-purple); |
|
} |
|
|
|
.toggle-checkbox:checked + .toggle-label { |
|
outline: 1px solid var(--owncast-purple); |
|
} |
|
|
|
#browser-push-preview-box { |
|
outline-offset: 10px; |
|
outline: 2px dashed #acafb4; |
|
box-shadow: 2px 6px 7px 0px #87898d; |
|
} |
|
|
|
#push-notification-arrow { |
|
position: relative; |
|
-webkit-animation: cubic-bezier(0.785, 0.135, 0.15, 0.86) infinite; |
|
-webkit-animation-name: left-right-bounce; |
|
-webkit-animation-duration: 1.5s; |
|
margin-right: 2px; |
|
} |
|
|
|
@-webkit-keyframes left-right-bounce { |
|
0% { |
|
left: 0; |
|
} |
|
50% { |
|
left: -6px; |
|
} |
|
100% { |
|
left: 0; |
|
} |
|
} |
|
|
|
#notify-button-container #notify-button-popup { |
|
position: absolute; |
|
background-color: var(--owncast-purple); |
|
z-index: 50; |
|
right: 0px; |
|
min-width: 14rem; |
|
bottom: calc(100% + 0.5rem); |
|
opacity: 0; |
|
transform: translateY(0%); |
|
animation: mmfadeIn 300ms forwards; |
|
animation-delay: 1s; |
|
} |
|
|
|
#notify-button-container .external-action-icon { |
|
margin: 0.25em 0.5em 0.25em 0.5em; |
|
} |
|
|
|
#notify-button-container button { |
|
border-color: #b8bbc2; |
|
border-width: 1px; |
|
} |
|
|
|
#notify-button-popup::before { |
|
position: absolute; |
|
z-index: -1; |
|
content: ''; |
|
right: 1.5rem; |
|
top: 100%; |
|
border-style: solid; |
|
border-width: 0.5rem 0.5rem 0rem; |
|
border-color: var(--owncast-purple) transparent transparent; |
|
transition-duration: 0.3s; |
|
transition-property: transform; |
|
} |
|
|
|
#notify-button-popup .popout-close-button { |
|
border-style: none; |
|
}
|
|
|